00001 #ifndef HLTJETS_H
00002 #define HLTJETS_H
00003
00004 #include "TH1.h"
00005 #include "TH2.h"
00006 #include "TFile.h"
00007 #include "TNamed.h"
00008 #include <vector>
00009 #include <map>
00010 #include "TROOT.h"
00011 #include "TChain.h"
00012
00013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00014
00015 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00016 #include "DataFormats/JetReco/interface/PFJetCollection.h"
00017 #include "DataFormats/JetReco/interface/GenJetCollection.h"
00018
00019 #include "DataFormats/METReco/interface/CaloMET.h"
00020 #include "DataFormats/METReco/interface/CaloMETCollection.h"
00021
00022 #include "DataFormats/METReco/interface/PFMETCollection.h"
00023 #include "DataFormats/METReco/interface/PFMET.h"
00024
00025 #include "DataFormats/METReco/interface/GenMET.h"
00026 #include "DataFormats/METReco/interface/GenMETCollection.h"
00027 #include "DataFormats/METReco/interface/METCollection.h"
00028
00029 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00030 #include "DataFormats/Candidate/interface/Candidate.h"
00031 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00032
00033 #include "DataFormats/TauReco/interface/HLTTau.h"
00034 #include "DataFormats/TauReco/interface/PFTau.h"
00035 #include "DataFormats/TauReco/interface/PFTauFwd.h"
00036
00037 #include "HLTrigger/HLTanalyzers/interface/JetUtil.h"
00038 #include "HLTrigger/HLTanalyzers/interface/CaloTowerBoundries.h"
00039
00040 #include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
00041
00042 #include "RecoJets/JetProducers/interface/JetIDHelper.h"
00043
00044 typedef std::vector<std::string> MyStrings;
00045
00053 class GetPtGreater {
00054 public:
00055 template <typename T> bool operator () (const T& i, const T& j) {
00056 return (i.getPt() > j.getPt());
00057 }
00058 };
00059
00060 class GetPFPtGreater {
00061 public:
00062 template <typename T> bool operator () (const T& i, const T& j) {
00063 return (i.pt() > j.pt());
00064 }
00065 };
00066
00067 class HLTJets {
00068 public:
00069 HLTJets();
00070
00071 void setup(const edm::ParameterSet& pSet, TTree* tree);
00072
00074 void analyze(edm::Event const& iEvent,
00075 const edm::Handle<reco::CaloJetCollection> & ohjets,
00076 const edm::Handle<reco::CaloJetCollection> & ohcorjets,
00077 const edm::Handle<reco::CaloJetCollection> & ohcorL1L2L3jets,
00078 const edm::Handle<reco::CaloJetCollection> & recojets,
00079 const edm::Handle<reco::CaloJetCollection> & recocorjets,
00080 const edm::Handle<reco::GenJetCollection> & gjets,
00081 const edm::Handle<reco::CaloMETCollection> & rmets,
00082 const edm::Handle<reco::GenMETCollection> & gmets,
00083 const edm::Handle<reco::METCollection> & ht,
00084 const edm::Handle<reco::HLTTauCollection> & myHLTTau,
00085 const edm::Handle<reco::PFTauCollection> & myHLTPFTau,
00086 const edm::Handle<reco::PFTauCollection> & myHLTPFTauTightCone,
00087 const edm::Handle<reco::PFJetCollection> & myHLTPFJets,
00088 const edm::Handle<reco::PFTauCollection> & myRecoPFTau,
00089 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCOnePercent,
00090 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCHalfPercent,
00091 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCQuarterPercent,
00092 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCTenthPercent,
00093 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByIsolation,
00094 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrAgainstElec,
00095 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrAgainstMuon,
00096 const edm::Handle<reco::PFJetCollection> & recoPFJets,
00097 const edm::Handle<CaloTowerCollection> & caloTowers,
00098 const edm::Handle<reco::PFMETCollection> & pfmets,
00099 double thresholdForSavingTowers,
00100 double minPtCH,
00101 double minPtGamma,
00102 TTree * tree);
00103
00104 private:
00105
00106
00107 float *jhcalpt, *jhcalphi, *jhcaleta, *jhcale, *jhcalemf, *jhcaln90, *jhcaln90hits;
00108 float *jhcorcalpt, *jhcorcalphi, *jhcorcaleta, *jhcorcale, *jhcorcalemf, *jhcorcaln90, *jhcorcaln90hits;
00109 float *jhcorL1L2L3calpt, *jhcorL1L2L3calphi, *jhcorL1L2L3caleta, *jhcorL1L2L3cale, *jhcorL1L2L3calemf, *jhcorL1L2L3caln90, *jhcorL1L2L3caln90hits;
00110
00111 float *jrcalpt, *jrcalphi, *jrcaleta, *jrcale, *jrcalemf, *jrcaln90, *jrcaln90hits;
00112 float *jrcorcalpt, *jrcorcalphi, *jrcorcaleta, *jrcorcale, *jrcorcalemf, *jrcorcaln90, *jrcorcaln90hits;
00113
00114 float *jgenpt, *jgenphi, *jgeneta, *jgene;
00115 float *towet, *toweta, *towphi, *towen, *towem, *towhd, *towoe;
00116 float mcalmet,mcalphi,mcalsum;
00117 float htcalet,htcalphi,htcalsum;
00118 float mgenmet,mgenphi,mgensum;
00119
00120 float pfmet,pfsumet,pfmetphi;
00121
00122 int njetgen,ntowcal;
00123 int nhjetcal,nhcorjetcal,nhcorL1L2L3jetcal;
00124 int nrjetcal,nrcorjetcal;
00125
00126
00127 float *l2tauemiso, *l25tauPt;
00128 int *l3tautckiso;
00129 int nohtau;
00130 float *tauEta, *tauPt, *tauPhi;
00131
00132 int nohPFTau;
00133 int *ohpfTauProngs;
00134 float *ohpfTauEta,*ohpfTauPhi,*ohpfTauPt,*ohpfTauJetPt,*ohpfTauLeadTrackPt,*ohpfTauLeadPionPt;
00135 float *ohpfTauTrkIso, *ohpfTauGammaIso;
00136
00137 int nohPFTauTightCone;
00138 int *ohpfTauTightConeProngs;
00139 float *ohpfTauTightConeEta,*ohpfTauTightConePhi,*ohpfTauTightConePt,*ohpfTauTightConeJetPt,*ohpfTauTightConeLeadTrackPt,*ohpfTauTightConeLeadPionPt;
00140 float *ohpfTauTightConeTrkIso, *ohpfTauTightConeGammaIso;
00141
00142 float pfHT;
00143 float pfMHT;
00144 int nohPFJet;
00145 float *pfJetEta, *pfJetPhi, *pfJetPt, *pfJetE;
00146
00147 int nRecoPFTau;
00148 float *recopfTauEta,*recopfTauPhi,*recopfTauPt,*recopfTauJetPt,*recopfTauLeadTrackPt,*recopfTauLeadPionPt;
00149 int *recopfTauTrkIso, *recopfTauGammaIso;
00150 float *recopfTauDiscrByTancOnePercent,*recopfTauDiscrByTancHalfPercent, *recopfTauDiscrByTancQuarterPercent, *recopfTauDiscrByTancTenthPercent, *recopfTauDiscrByIso, *recopfTauDiscrAgainstMuon, *recopfTauDiscrAgainstElec;
00151
00152 float *jpfrecopt, *jpfrecoe,*jpfrecophi, *jpfrecoeta, *jpfreconeutralHadronFraction, *jpfreconeutralEMFraction, *jpfrecochargedHadronFraction, *jpfrecochargedEMFraction;
00153 int *jpfreconeutralMultiplicity, *jpfrecochargedMultiplicity;
00154 int nrpj;
00155
00156
00157
00158 int noRecoPFTausSignal;
00159 int *signalTrToPFTauMatch;
00160 float *recoPFTauSignalTrDz;
00161 float *recoPFTauSignalTrPt;
00162
00163 int noRecoPFTausIso;
00164 int *isoTrToPFTauMatch;
00165 float *recoPFTauIsoTrDz;
00166 float *recoPFTauIsoTrPt;
00167
00168 int noHLTPFTausSignal;
00169 int *hltpftauSignalTrToPFTauMatch;
00170 float *HLTPFTauSignalTrDz;
00171 float *HLTPFTauSignalTrPt;
00172
00173 int noHLTPFTausIso;
00174 int *hltpftauIsoTrToPFTauMatch;
00175 float *HLTPFTauIsoTrDz;
00176 float *HLTPFTauIsoTrPt;
00177
00178 reco::helper::JetIDHelper *jetID;
00179
00180
00181
00182 bool _Monte,_Debug;
00183 float _CalJetMin, _GenJetMin;
00184
00185 int evtCounter;
00186
00187 static float etaBarrel() { return 1.4; }
00188
00189
00190 TString gjetpfx, rjetpfx,gmetpfx, rmetpfx,calopfx;
00191
00192 };
00193
00194 #endif