CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_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<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     // Tree variables
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     // Taus
00134     float *l2tauPt, *l2tauEta, *l2tauPhi, *l2tauemiso, *l25tauPt;
00135     int *l3tautckiso;
00136     int nohl2tau, nohtau;
00137     float *tauEta, *tauPt, *tauPhi; 
00138     //PFTau
00139     int nohPFTau;
00140     int *ohpfTauProngs;
00141     float *ohpfTauEta,*ohpfTauPhi,*ohpfTauPt,*ohpfTauJetPt,*ohpfTauLeadTrackPt,*ohpfTauLeadTrackVtxZ,*ohpfTauLeadPionPt;
00142     float *ohpfTauTrkIso, *ohpfTauGammaIso;
00143     //PFTau with tight cone
00144     int nohPFTauTightCone;
00145     int *ohpfTauTightConeProngs;
00146     float *ohpfTauTightConeEta,*ohpfTauTightConePhi,*ohpfTauTightConePt,*ohpfTauTightConeJetPt,*ohpfTauTightConeLeadTrackPt,*ohpfTauTightConeLeadPionPt;
00147     float *ohpfTauTightConeTrkIso, *ohpfTauTightConeGammaIso;
00148     //PFJets
00149     float pfHT;
00150     float pfMHT;    
00151     int nohPFJet;
00152     float *pfJetEta, *pfJetPhi, *pfJetPt, *pfJetE, *pfJetneutralHadronEnergyFraction, *pfJetchargedHadronFraction, *pfJetneutralMultiplicity, *pfJetchargedMultiplicity, *pfJetneutralEMFraction, *pfJetchargedEMFraction;
00153     //Reco PFTau
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     //Reco PF jets
00159     float *jpfrecopt, *jpfrecoe,*jpfrecophi, *jpfrecoeta, *jpfreconeutralHadronFraction, *jpfreconeutralEMFraction, *jpfrecochargedHadronFraction, *jpfrecochargedEMFraction;
00160     int  *jpfreconeutralMultiplicity, *jpfrecochargedMultiplicity;
00161     int nrpj;
00162 
00163   
00164     // isolation/signal cands for recoPFTau and HLTPFtau
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     // input variables
00189     bool _Monte,_Debug;
00190     float _CalJetMin, _GenJetMin;
00191     
00192     int evtCounter;
00193     
00194     static float etaBarrel() { return 1.4; }
00195     
00196     //create maps linking histogram pointers to HCAL Channel hits and digis
00197     TString gjetpfx, rjetpfx,gmetpfx, rmetpfx,calopfx;
00198     
00199 };
00200 
00201 #endif