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<double> & rho,
00079 const edm::Handle<reco::CaloJetCollection> & recojets,
00080 const edm::Handle<reco::CaloJetCollection> & recocorjets,
00081 const edm::Handle<reco::GenJetCollection> & gjets,
00082 const edm::Handle<reco::CaloMETCollection> & rmets,
00083 const edm::Handle<reco::GenMETCollection> & gmets,
00084 const edm::Handle<reco::METCollection> & ht,
00085 const edm::Handle<reco::CaloJetCollection> & myHLTL2Tau,
00086 const edm::Handle<reco::HLTTauCollection> & myHLTTau,
00087 const edm::Handle<reco::PFTauCollection> & myHLTPFTau,
00088 const edm::Handle<reco::PFTauCollection> & myHLTPFTauTightCone,
00089 const edm::Handle<reco::PFJetCollection> & myHLTPFJets,
00090 const edm::Handle<reco::PFTauCollection> & myRecoPFTau,
00091 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCOnePercent,
00092 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCHalfPercent,
00093 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCQuarterPercent,
00094 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCTenthPercent,
00095 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByIsolation,
00096 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrAgainstElec,
00097 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrAgainstMuon,
00098 const edm::Handle<reco::PFJetCollection> & recoPFJets,
00099 const edm::Handle<CaloTowerCollection> & caloTowers,
00100 const edm::Handle<CaloTowerCollection> & caloTowersCleanerUpperR45,
00101 const edm::Handle<CaloTowerCollection> & caloTowersCleanerLowerR45,
00102 const edm::Handle<CaloTowerCollection> & caloTowersCleanerNoR45,
00103 const edm::Handle<reco::PFMETCollection> & pfmets,
00104 double thresholdForSavingTowers,
00105 double minPtCH,
00106 double minPtGamma,
00107 TTree * tree);
00108
00109 private:
00110
00111
00112 float *jhcalpt, *jhcalphi, *jhcaleta, *jhcale, *jhcalemf, *jhcaln90, *jhcaln90hits;
00113 float *jhcorcalpt, *jhcorcalphi, *jhcorcaleta, *jhcorcale, *jhcorcalemf, *jhcorcaln90, *jhcorcaln90hits;
00114 float *jhcorL1L2L3calpt, *jhcorL1L2L3calphi, *jhcorL1L2L3caleta, *jhcorL1L2L3cale, *jhcorL1L2L3calemf, *jhcorL1L2L3caln90, *jhcorL1L2L3caln90hits;
00115 double jrho;
00116
00117 float *jrcalpt, *jrcalphi, *jrcaleta, *jrcale, *jrcalemf, *jrcaln90, *jrcaln90hits;
00118 float *jrcorcalpt, *jrcorcalphi, *jrcorcaleta, *jrcorcale, *jrcorcalemf, *jrcorcaln90, *jrcorcaln90hits;
00119
00120 float *jgenpt, *jgenphi, *jgeneta, *jgene;
00121 float *towet, *toweta, *towphi, *towen, *towem, *towhd, *towoe;
00122 int *towR45upper, *towR45lower, *towR45none;
00123 float mcalmet,mcalphi,mcalsum;
00124 float htcalet,htcalphi,htcalsum;
00125 float mgenmet,mgenphi,mgensum;
00126
00127 float pfmet,pfsumet,pfmetphi;
00128
00129 int njetgen,ntowcal;
00130 int nhjetcal,nhcorjetcal,nhcorL1L2L3jetcal;
00131 int nrjetcal,nrcorjetcal;
00132
00133
00134 float *l2tauPt, *l2tauEta, *l2tauPhi, *l2tauemiso, *l25tauPt;
00135 int *l3tautckiso;
00136 int nohl2tau, nohtau;
00137 float *tauEta, *tauPt, *tauPhi;
00138
00139 int nohPFTau;
00140 int *ohpfTauProngs;
00141 float *ohpfTauEta,*ohpfTauPhi,*ohpfTauPt,*ohpfTauJetPt,*ohpfTauLeadTrackPt,*ohpfTauLeadTrackVtxZ,*ohpfTauLeadPionPt;
00142 float *ohpfTauTrkIso, *ohpfTauGammaIso;
00143
00144 int nohPFTauTightCone;
00145 int *ohpfTauTightConeProngs;
00146 float *ohpfTauTightConeEta,*ohpfTauTightConePhi,*ohpfTauTightConePt,*ohpfTauTightConeJetPt,*ohpfTauTightConeLeadTrackPt,*ohpfTauTightConeLeadPionPt;
00147 float *ohpfTauTightConeTrkIso, *ohpfTauTightConeGammaIso;
00148
00149 float pfHT;
00150 float pfMHT;
00151 int nohPFJet;
00152 float *pfJetEta, *pfJetPhi, *pfJetPt, *pfJetE, *pfJetneutralHadronEnergyFraction, *pfJetchargedHadronFraction, *pfJetneutralMultiplicity, *pfJetchargedMultiplicity, *pfJetneutralEMFraction, *pfJetchargedEMFraction;
00153
00154 int nRecoPFTau;
00155 float *recopfTauEta,*recopfTauPhi,*recopfTauPt,*recopfTauJetPt,*recopfTauLeadTrackPt,*recopfTauLeadPionPt;
00156 int *recopfTauTrkIso, *recopfTauGammaIso;
00157 float *recopfTauDiscrByTancOnePercent,*recopfTauDiscrByTancHalfPercent, *recopfTauDiscrByTancQuarterPercent, *recopfTauDiscrByTancTenthPercent, *recopfTauDiscrByIso, *recopfTauDiscrAgainstMuon, *recopfTauDiscrAgainstElec;
00158
00159 float *jpfrecopt, *jpfrecoe,*jpfrecophi, *jpfrecoeta, *jpfreconeutralHadronFraction, *jpfreconeutralEMFraction, *jpfrecochargedHadronFraction, *jpfrecochargedEMFraction;
00160 int *jpfreconeutralMultiplicity, *jpfrecochargedMultiplicity;
00161 int nrpj;
00162
00163
00164
00165 int noRecoPFTausSignal;
00166 int *signalTrToPFTauMatch;
00167 float *recoPFTauSignalTrDz;
00168 float *recoPFTauSignalTrPt;
00169
00170 int noRecoPFTausIso;
00171 int *isoTrToPFTauMatch;
00172 float *recoPFTauIsoTrDz;
00173 float *recoPFTauIsoTrPt;
00174
00175 int noHLTPFTausSignal;
00176 int *hltpftauSignalTrToPFTauMatch;
00177 float *HLTPFTauSignalTrDz;
00178 float *HLTPFTauSignalTrPt;
00179
00180 int noHLTPFTausIso;
00181 int *hltpftauIsoTrToPFTauMatch;
00182 float *HLTPFTauIsoTrDz;
00183 float *HLTPFTauIsoTrPt;
00184
00185 reco::helper::JetIDHelper *jetID;
00186
00187
00188
00189 bool _Monte,_Debug;
00190 float _CalJetMin, _GenJetMin;
00191
00192 int evtCounter;
00193
00194 static float etaBarrel() { return 1.4; }
00195
00196
00197 TString gjetpfx, rjetpfx,gmetpfx, rmetpfx,calopfx;
00198
00199 };
00200
00201 #endif