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/GenMET.h"
00023 #include "DataFormats/METReco/interface/GenMETCollection.h"
00024 #include "DataFormats/METReco/interface/METCollection.h"
00025
00026 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00027 #include "DataFormats/Candidate/interface/Candidate.h"
00028 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00029
00030 #include "DataFormats/TauReco/interface/HLTTau.h"
00031 #include "DataFormats/TauReco/interface/PFTau.h"
00032 #include "DataFormats/TauReco/interface/PFTauFwd.h"
00033
00034 #include "HLTrigger/HLTanalyzers/interface/JetUtil.h"
00035 #include "HLTrigger/HLTanalyzers/interface/CaloTowerBoundries.h"
00036
00037 #include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
00038
00039 typedef std::vector<std::string> MyStrings;
00040
00048 class GetPtGreater {
00049 public:
00050 template <typename T> bool operator () (const T& i, const T& j) {
00051 return (i.getPt() > j.getPt());
00052 }
00053 };
00054
00055 class GetPFPtGreater {
00056 public:
00057 template <typename T> bool operator () (const T& i, const T& j) {
00058 return (i.pt() > j.pt());
00059 }
00060 };
00061
00062 class HLTJets {
00063 public:
00064 HLTJets();
00065
00066 void setup(const edm::ParameterSet& pSet, TTree* tree);
00067
00069 void analyze(const edm::Handle<reco::CaloJetCollection> & recojets,
00070 const edm::Handle<reco::CaloJetCollection> & corjets,
00071 const edm::Handle<reco::GenJetCollection> & gjets,
00072 const edm::Handle<reco::CaloMETCollection> & rmets,
00073 const edm::Handle<reco::GenMETCollection> & gmets,
00074 const edm::Handle<reco::METCollection> & ht,
00075 const edm::Handle<reco::HLTTauCollection> & myHLTTau,
00076 const edm::Handle<reco::PFTauCollection> & myHLTPFTau,
00077 const edm::Handle<reco::PFJetCollection> & myHLTPFJets,
00078 const edm::Handle<reco::PFTauCollection> & myRecoPFTau,
00079 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCOnePercent,
00080 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCHalfPercent,
00081 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCQuarterPercent,
00082 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCTenthPercent,
00083 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByIsolation,
00084 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrAgainstElec,
00085 const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrAgainstMuon,
00086 const edm::Handle<reco::PFJetCollection> & recoPFJets,
00087 const edm::Handle<CaloTowerCollection> & caloTowers,
00088 double thresholdForSavingTowers,
00089 double minPtCH,
00090 double minPtGamma,
00091 TTree * tree);
00092
00093 private:
00094
00095
00096 float *jcalpt, *jcalphi, *jcaleta, *jcale, *jcalemf, *jcaln90;
00097 float *jcorcalpt, *jcorcalphi, *jcorcaleta, *jcorcale, *jcorcalemf, *jcorcaln90;
00098 float *jgenpt, *jgenphi, *jgeneta, *jgene;
00099 float *towet, *toweta, *towphi, *towen, *towem, *towhd, *towoe;
00100 float mcalmet,mcalphi,mcalsum;
00101 float htcalet,htcalphi,htcalsum;
00102 float mgenmet,mgenphi,mgensum;
00103 int njetcal,ncorjetcal,njetgen,ntowcal;
00104
00105
00106 float *l2tauemiso, *l25tauPt;
00107 int *l3tautckiso;
00108 int nohtau;
00109 float *tauEta, *tauPt, *tauPhi;
00110
00111 int nohPFTau;
00112 float *ohpfTauEta,*ohpfTauPhi,*ohpfTauPt,*ohpfTauJetPt,*ohpfTauLeadTrackPt,*ohpfTauLeadPionPt;
00113 float *ohpfTauTrkIso, *ohpfTauGammaIso;
00114
00115 float pfMHT;
00116 int nohPFJet;
00117 float *pfJetEta, *pfJetPhi, *pfJetPt;
00118
00119 int nRecoPFTau;
00120 float *recopfTauEta,*recopfTauPhi,*recopfTauPt,*recopfTauJetPt,*recopfTauLeadTrackPt,*recopfTauLeadPionPt;
00121 int *recopfTauTrkIso, *recopfTauGammaIso;
00122 float *recopfTauDiscrByTancOnePercent,*recopfTauDiscrByTancHalfPercent, *recopfTauDiscrByTancQuarterPercent, *recopfTauDiscrByTancTenthPercent, *recopfTauDiscrByIso, *recopfTauDiscrAgainstMuon, *recopfTauDiscrAgainstElec;
00123
00124 float *jpfrecopt, *jpfrecophi, *jpfrecoeta, *jpfreconeutralHadronFraction, *jpfreconeutralEMFraction, *jpfrecochargedHadronFraction, *jpfrecochargedEMFraction;
00125 int *jpfreconeutralMultiplicity, *jpfrecochargedMultiplicity;
00126 int nrpj;
00127
00128
00129
00130 bool _Monte,_Debug;
00131 float _CalJetMin, _GenJetMin;
00132
00133 int evtCounter;
00134
00135 const float etaBarrel() {return 1.4;}
00136
00137
00138 TString gjetpfx, rjetpfx,gmetpfx, rmetpfx,calopfx;
00139
00140 };
00141
00142 #endif