File indexing completed on 2024-04-06 12:27:19
0001 #ifndef RecoParticleFlow_Benchmark_PFTauElecRejectionBenchmark_h
0002 #define RecoParticleFlow_Benchmark_PFTauElecRejectionBenchmark_h
0003
0004 #include "DataFormats/TauReco/interface/PFTau.h"
0005 #include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
0006 #include "DataFormats/TauReco/interface/PFTauDiscriminatorByIsolation.h"
0007
0008 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
0009 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0010
0011 #include "Math/GenVector/VectorUtil.h"
0012 #include "Math/GenVector/PxPyPzE4D.h"
0013 #include "TLorentzVector.h"
0014
0015 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0016 #include "TH1F.h"
0017 #include "TH2F.h"
0018 #include <string>
0019 #include <TFile.h>
0020
0021 #include "DQMServices/Core/interface/DQMStore.h"
0022
0023 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
0024
0025 class PFTauElecRejectionBenchmark;
0026
0027 class PFTauElecRejectionBenchmark {
0028 public:
0029 typedef dqm::legacy::DQMStore DQMStore;
0030 typedef dqm::legacy::MonitorElement MonitorElement;
0031
0032 PFTauElecRejectionBenchmark();
0033 virtual ~PFTauElecRejectionBenchmark();
0034
0035 void setup(std::string Filename,
0036 std::string benchmarkLabel,
0037 double maxDeltaR,
0038 double minRecoPt,
0039 double maxRecoAbsEta,
0040 double minMCPt,
0041 double maxMCAbsEta,
0042 std::string sGenMatchObjectLabel,
0043 bool applyEcalCrackCut,
0044 DQMStore *db_store);
0045 void process(edm::Handle<edm::HepMCProduct> mcevt,
0046 edm::Handle<reco::PFTauCollection> pfTaus,
0047 edm::Handle<reco::PFTauDiscriminator> pfTauIsoDiscr,
0048 edm::Handle<reco::PFTauDiscriminator> pfTauElecDiscr);
0049 void write();
0050
0051 private:
0052 bool isInEcalCrack(double eta) const;
0053
0054 TFile *file_;
0055 std::string outputFile_;
0056 std::string benchmarkLabel_;
0057 double maxDeltaR_;
0058 double minMCPt_;
0059 double maxMCAbsEta_;
0060 double minRecoPt_;
0061 double maxRecoAbsEta_;
0062 std::string sGenMatchObjectLabel_;
0063 bool applyEcalCrackCut_;
0064
0065
0066 TH1F *hEoverP;
0067 TH1F *hHoverP;
0068 TH1F *hEmfrac;
0069
0070 TH1F *hEoverP_barrel;
0071 TH1F *hHoverP_barrel;
0072 TH1F *hEmfrac_barrel;
0073
0074 TH1F *hEoverP_endcap;
0075 TH1F *hHoverP_endcap;
0076 TH1F *hEmfrac_endcap;
0077
0078 TH1F *hEoverP_preid0;
0079 TH1F *hHoverP_preid0;
0080 TH1F *hEmfrac_preid0;
0081
0082 TH1F *hEoverP_preid1;
0083 TH1F *hHoverP_preid1;
0084 TH1F *hEmfrac_preid1;
0085
0086 TH1F *hElecPreID;
0087 TH1F *hElecMVA;
0088 TH1F *hTauElecDiscriminant;
0089
0090 TH2F *hHoPvsEoP;
0091 TH2F *hHoPvsEoP_preid0;
0092 TH2F *hHoPvsEoP_preid1;
0093
0094 TH2F *hEmfracvsEoP;
0095 TH2F *hEmfracvsEoP_preid0;
0096 TH2F *hEmfracvsEoP_preid1;
0097
0098 TH1F *hpfcand_deltaEta;
0099 TH1F *hpfcand_deltaEta_weightE;
0100 TH1F *hpfcand_deltaPhiOverQ;
0101 TH1F *hpfcand_deltaPhiOverQ_weightE;
0102
0103 TH1F *hleadTk_pt;
0104 TH1F *hleadTk_eta;
0105 TH1F *hleadTk_phi;
0106
0107
0108 TH1F *hleadGsfTk_pt;
0109 TH1F *hleadGsfTk_eta;
0110 TH1F *hleadGsfTk_phi;
0111
0112 std::vector<TLorentzVector> _GenObjects;
0113
0114 protected:
0115 DQMStore *db_;
0116 };
0117
0118 #endif