Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:10:04

0001 /* HLTJetMET Path Validation Analyzer
0002    Migrated to use DQMEDAnalyzer by: Jyothsna Rani Komaragiri, Oct 2014
0003 */
0004 
0005 #ifndef HLTJetMETValidation_h
0006 #define HLTJetMETValidation_h
0007 
0008 #include "DataFormats/Math/interface/LorentzVector.h"
0009 #include "FWCore/Framework/interface/Event.h"
0010 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0011 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0012 #include "FWCore/ServiceRegistry/interface/Service.h"
0013 
0014 #include "DataFormats/Common/interface/TriggerResults.h"
0015 #include "DataFormats/HLTReco/interface/TriggerEventWithRefs.h"
0016 #include "DataFormats/HLTReco/interface/TriggerRefsCollections.h"
0017 
0018 #include "DataFormats/L1Trigger/interface/L1EmParticle.h"
0019 #include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h"
0020 #include "DataFormats/L1Trigger/interface/L1JetParticle.h"
0021 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
0022 #include "DataFormats/L1Trigger/interface/L1MuonParticle.h"
0023 #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h"
0024 
0025 #include "DataFormats/JetReco/interface/CaloJet.h"
0026 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
0027 #include "DataFormats/JetReco/interface/GenJet.h"
0028 #include "DataFormats/JetReco/interface/PFJet.h"
0029 #include "DataFormats/JetReco/interface/PFJetCollection.h"
0030 
0031 #include "DataFormats/METReco/interface/CaloMET.h"
0032 #include "DataFormats/METReco/interface/CaloMETCollection.h"
0033 
0034 #include "DataFormats/METReco/interface/GenMET.h"
0035 #include "DataFormats/METReco/interface/GenMETCollection.h"
0036 
0037 #include "DataFormats/EgammaCandidates/interface/Electron.h"
0038 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
0039 // Include DQM core
0040 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0041 #include "DQMServices/Core/interface/DQMStore.h"
0042 
0043 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
0044 
0045 #include "TPRegexp.h"
0046 #include <string>
0047 #include <vector>
0048 
0049 namespace edm {
0050   class TriggerNames;
0051 }
0052 
0053 class HLTJetMETValidation : public DQMEDAnalyzer {
0054 public:
0055   explicit HLTJetMETValidation(const edm::ParameterSet &);
0056   ~HLTJetMETValidation() override;
0057 
0058 private:
0059   void analyze(const edm::Event &, const edm::EventSetup &) override;
0060   void bookHistograms(DQMStore::IBooker &, edm::Run const &iRun, edm::EventSetup const &iSetup) override;
0061   void dqmBeginRun(edm::Run const &iRun, edm::EventSetup const &iSetup) override;
0062 
0063   void getHLTResults(const edm::TriggerResults &, const edm::TriggerNames &triggerNames);
0064 
0065   /// InputTag of TriggerEventWithRefs to analyze
0066   edm::EDGetTokenT<trigger::TriggerEventWithRefs> triggerEventObject_;
0067   edm::EDGetTokenT<reco::PFJetCollection> PFJetAlgorithm;
0068   edm::EDGetTokenT<reco::GenJetCollection> GenJetAlgorithm;
0069   edm::EDGetTokenT<reco::CaloMETCollection> CaloMETColl;
0070   edm::EDGetTokenT<reco::GenMETCollection> GenMETColl;
0071   edm::EDGetTokenT<edm::TriggerResults> HLTriggerResults;
0072 
0073   // Just a tag for better file organization
0074   std::string triggerTag_, patternJetTrg_, patternMetTrg_, patternMuTrg_;
0075 
0076   std::vector<MonitorElement *> _meHLTJetPt;
0077   std::vector<MonitorElement *> _meHLTJetPtTrgMC;
0078   std::vector<MonitorElement *> _meHLTJetPtTrg;
0079   std::vector<MonitorElement *> _meHLTJetPtTrgLow;
0080   std::vector<MonitorElement *> _meHLTJetEta;
0081   std::vector<MonitorElement *> _meHLTJetEtaTrgMC;
0082   std::vector<MonitorElement *> _meHLTJetEtaTrg;
0083   std::vector<MonitorElement *> _meHLTJetEtaTrgLow;
0084   std::vector<MonitorElement *> _meHLTJetPhi;
0085   std::vector<MonitorElement *> _meHLTJetPhiTrgMC;
0086   std::vector<MonitorElement *> _meHLTJetPhiTrg;
0087   std::vector<MonitorElement *> _meHLTJetPhiTrgLow;
0088 
0089   std::vector<MonitorElement *> _meGenJetPt;
0090   std::vector<MonitorElement *> _meGenJetPtTrgMC;
0091   std::vector<MonitorElement *> _meGenJetPtTrg;
0092   std::vector<MonitorElement *> _meGenJetPtTrgLow;
0093   std::vector<MonitorElement *> _meGenJetEta;
0094   std::vector<MonitorElement *> _meGenJetEtaTrgMC;
0095   std::vector<MonitorElement *> _meGenJetEtaTrg;
0096   std::vector<MonitorElement *> _meGenJetEtaTrgLow;
0097   std::vector<MonitorElement *> _meGenJetPhi;
0098   std::vector<MonitorElement *> _meGenJetPhiTrgMC;
0099   std::vector<MonitorElement *> _meGenJetPhiTrg;
0100   std::vector<MonitorElement *> _meGenJetPhiTrgLow;
0101 
0102   std::vector<MonitorElement *> _meHLTMET;
0103   std::vector<MonitorElement *> _meHLTMETTrgMC;
0104   std::vector<MonitorElement *> _meHLTMETTrg;
0105   std::vector<MonitorElement *> _meHLTMETTrgLow;
0106   std::vector<MonitorElement *> _meGenMET;
0107   std::vector<MonitorElement *> _meGenMETTrgMC;
0108   std::vector<MonitorElement *> _meGenMETTrg;
0109   std::vector<MonitorElement *> _meGenMETTrgLow;
0110 
0111   MonitorElement *_triggerResults;
0112 
0113   // Define Numbers
0114   int evtCnt;
0115 
0116   HLTConfigProvider hltConfig_;
0117   std::vector<std::string> hltTrgJet;
0118   std::vector<std::string> hltTrgJetLow;
0119   std::vector<std::string> hltTrgMet;
0120   std::vector<std::string> hltTrgMetLow;
0121 
0122   // store hlt information in a map
0123   std::vector<bool> hlttrigs;
0124   std::map<std::string, bool> hltTriggerMap;
0125   std::map<std::string, bool>::iterator trig_iter;
0126 
0127   bool HLTinit_;
0128 
0129   bool writeFile_;
0130 };
0131 #endif