CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/HLTrigger/HLTanalyzers/interface/HLTJets.h

Go to the documentation of this file.
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     // Tree variables
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     // Taus
00127     float *l2tauemiso, *l25tauPt;
00128     int *l3tautckiso;
00129     int nohtau;
00130     float *tauEta, *tauPt, *tauPhi; 
00131     //PFTau
00132     int nohPFTau;
00133     int *ohpfTauProngs;
00134     float *ohpfTauEta,*ohpfTauPhi,*ohpfTauPt,*ohpfTauJetPt,*ohpfTauLeadTrackPt,*ohpfTauLeadPionPt;
00135     float *ohpfTauTrkIso, *ohpfTauGammaIso;
00136     //PFTau with tight cone
00137     int nohPFTauTightCone;
00138     int *ohpfTauTightConeProngs;
00139     float *ohpfTauTightConeEta,*ohpfTauTightConePhi,*ohpfTauTightConePt,*ohpfTauTightConeJetPt,*ohpfTauTightConeLeadTrackPt,*ohpfTauTightConeLeadPionPt;
00140     float *ohpfTauTightConeTrkIso, *ohpfTauTightConeGammaIso;
00141     //PFJets
00142     float pfHT;
00143     float pfMHT;    
00144     int nohPFJet;
00145     float *pfJetEta, *pfJetPhi, *pfJetPt, *pfJetE;
00146     //Reco PFTau
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     //Reco PF jets
00152     float *jpfrecopt, *jpfrecoe,*jpfrecophi, *jpfrecoeta, *jpfreconeutralHadronFraction, *jpfreconeutralEMFraction, *jpfrecochargedHadronFraction, *jpfrecochargedEMFraction;
00153     int  *jpfreconeutralMultiplicity, *jpfrecochargedMultiplicity;
00154     int nrpj;
00155 
00156   
00157     // isolation/signal cands for recoPFTau and HLTPFtau
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     // input variables
00182     bool _Monte,_Debug;
00183     float _CalJetMin, _GenJetMin;
00184     
00185     int evtCounter;
00186     
00187     static float etaBarrel() { return 1.4; }
00188     
00189     //create maps linking histogram pointers to HCAL Channel hits and digis
00190     TString gjetpfx, rjetpfx,gmetpfx, rmetpfx,calopfx;
00191     
00192 };
00193 
00194 #endif