Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:09:26

0001 #ifndef DQMPFCandidateAnalyzer_H
0002 #define DQMPFCandidateAnalyzer_H
0003 
0004 /** \class JetMETAnalyzer
0005  *
0006  *  DQM jetMET analysis monitoring
0007  *
0008  *  \author F. Chlebana - Fermilab
0009  *          K. Hatakeyama - Rockefeller University
0010  *
0011  *          Jan. '14: modified by
0012  *
0013  *          M. Artur Weber
0014  *          R. Schoefbeck
0015  *          V. Sordini
0016  */
0017 
0018 #include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
0019 #include <memory>
0020 #include <fstream>
0021 #include "FWCore/Framework/interface/Frameworkfwd.h"
0022 #include "FWCore/Framework/interface/Event.h"
0023 #include "FWCore/Framework/interface/MakerMacros.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0025 #include "FWCore/ServiceRegistry/interface/Service.h"
0026 
0027 #include "DataFormats/Common/interface/TriggerResults.h"
0028 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
0029 #include "DataFormats/HLTReco/interface/TriggerObject.h"
0030 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
0031 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
0032 #include "CommonTools/TriggerUtils/interface/GenericTriggerEventFlag.h"
0033 #include "FWCore/Utilities/interface/EDGetToken.h"
0034 
0035 #include "DQMOffline/JetMET/interface/JetMETDQMDCSFilter.h"
0036 #include "DataFormats/VertexReco/interface/Vertex.h"
0037 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0038 
0039 #include "DataFormats/Scalers/interface/DcsStatus.h"
0040 
0041 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenuFwd.h"
0042 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenu.h"
0043 #include "CondFormats/DataRecord/interface/L1GtTriggerMenuRcd.h"
0044 
0045 #include "DataFormats/ParticleFlowReco/interface/PFBlock.h"
0046 #include "DataFormats/ParticleFlowReco/interface/PFBlockElementTrack.h"
0047 #include "DataFormats/ParticleFlowReco/interface/PFBlockElementCluster.h"
0048 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
0049 
0050 #include "DataFormats/PatCandidates/interface/PackedCandidate.h"
0051 
0052 #include <map>
0053 #include <string>
0054 
0055 //namespace jetAnalysis {
0056 //class TrackPropagatorToCalo;
0057 //class StripSignalOverNoiseCalculator;
0058 //}
0059 
0060 class DQMPFCandidateAnalyzer : public DQMOneEDAnalyzer<> {
0061 public:
0062   /// Constructor
0063   DQMPFCandidateAnalyzer(const edm::ParameterSet&);
0064 
0065   /// Destructor
0066   ~DQMPFCandidateAnalyzer() override;
0067 
0068   /// Inizialize parameters for histo binning
0069   //  void beginJob(void);
0070   void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0071   /// Get the analysis
0072   void analyze(const edm::Event&, const edm::EventSetup&) override;
0073 
0074   /// Initialize run-based parameters
0075   void dqmBeginRun(const edm::Run&, const edm::EventSetup&) override;
0076 
0077 private:
0078   // ----------member data ---------------------------
0079   static bool jetSortingRule(reco::Jet x, reco::Jet y) { return x.pt() > y.pt(); }
0080 
0081   //try to put one collection as start
0082 
0083   edm::InputTag vertexTag_;
0084   edm::EDGetTokenT<std::vector<reco::Vertex>> vertexToken_;
0085 
0086   edm::InputTag mInputCollection_;
0087   edm::InputTag theTriggerResultsLabel_;
0088   edm::InputTag hbheNoiseFilterResultTag_;
0089   edm::EDGetTokenT<bool> hbheNoiseFilterResultToken_;
0090   std::string HBHENoiseStringMiniAOD;
0091 
0092   HLTConfigProvider FilterhltConfig_;
0093   edm::InputTag METFilterMiniAODLabel_;
0094   edm::EDGetTokenT<edm::TriggerResults> METFilterMiniAODToken_;
0095   edm::InputTag METFilterMiniAODLabel2_;  //needed for RECO and reRECO differntiation
0096   edm::EDGetTokenT<edm::TriggerResults> METFilterMiniAODToken2_;
0097 
0098   bool hbhenoifilterdecision;  //we only care about HBHENoiseFilter here
0099   int miniaodfilterindex;      //-1 if not found/RECO, else put to a number >=0
0100   //needed to decide which filterresults are supposed to be called
0101   int miniaodfilterdec;  //if RECO set to 0, if reRECO set to 1, else to -1
0102 
0103   edm::EDGetTokenT<std::vector<reco::PFCandidate>> pflowToken_;
0104   edm::EDGetTokenT<std::vector<pat::PackedCandidate>> pflowPackedToken_;
0105 
0106   std::string candidateType_;
0107 
0108   bool isMiniAO_;
0109 
0110   // DCS filter
0111   JetMETDQMDCSFilter* DCSFilter_;
0112 
0113   edm::ParameterSet cleaningParameters_;
0114   std::vector<edm::ParameterSet> diagnosticsParameters_;
0115 
0116   double ptMinCand_;  //pt min of candidates
0117   // Smallest raw HCAL energy linked to the track
0118   double hcalMin_;
0119 
0120   MonitorElement* m_HOverTrackP_trackPtVsEta;
0121   MonitorElement* m_HOverTrackPVsTrackP_Barrel;
0122   MonitorElement* m_HOverTrackPVsTrackP_EndCap;
0123 
0124   MonitorElement* m_HOverTrackPVsTrackPt_Barrel;
0125   MonitorElement* m_HOverTrackPVsTrackPt_EndCap;
0126 
0127   MonitorElement* m_HOverTrackPVsEta_hPt_1_10;
0128   MonitorElement* m_HOverTrackPVsEta_hPt_10_20;
0129   MonitorElement* m_HOverTrackPVsEta_hPt_20_50;
0130   MonitorElement* m_HOverTrackPVsEta_hPt_50;
0131 
0132   MonitorElement* m_HOverTrackP_Barrel_hPt_1_10;
0133   MonitorElement* m_HOverTrackP_Barrel_hPt_10_20;
0134   MonitorElement* m_HOverTrackP_Barrel_hPt_20_50;
0135   MonitorElement* m_HOverTrackP_Barrel_hPt_50;
0136 
0137   MonitorElement* m_HOverTrackP_EndCap_hPt_1_10;
0138   MonitorElement* m_HOverTrackP_EndCap_hPt_10_20;
0139   MonitorElement* m_HOverTrackP_EndCap_hPt_20_50;
0140   MonitorElement* m_HOverTrackP_EndCap_hPt_50;
0141 
0142   MonitorElement* mProfileIsoPFChHad_HadPtCentral;
0143   MonitorElement* mProfileIsoPFChHad_HadPtEndcap;
0144   MonitorElement* mProfileIsoPFChHad_EMPtCentral;
0145   MonitorElement* mProfileIsoPFChHad_EMPtEndcap;
0146   MonitorElement* mProfileIsoPFChHad_TrackPt;
0147 
0148   MonitorElement* mProfileIsoPFChHad_HcalOccupancyCentral;
0149   MonitorElement* mProfileIsoPFChHad_HcalOccupancyEndcap;
0150   MonitorElement* mProfileIsoPFChHad_EcalOccupancyCentral;
0151   MonitorElement* mProfileIsoPFChHad_EcalOccupancyEndcap;
0152   MonitorElement* mProfileIsoPFChHad_TrackOccupancy;
0153 
0154   //PFcandidate maps
0155   std::vector<MonitorElement*> occupancyPFCand_, ptPFCand_, multiplicityPFCand_;
0156   std::vector<std::string> occupancyPFCand_name_, ptPFCand_name_, multiplicityPFCand_name_;
0157   std::vector<MonitorElement*> occupancyPFCand_puppiNolepWeight_, ptPFCand_puppiNolepWeight_;
0158   std::vector<std::string> occupancyPFCand_name_puppiNolepWeight_, ptPFCand_name_puppiNolepWeight_;
0159   std::vector<double> etaMinPFCand_, etaMaxPFCand_;
0160   std::vector<int> typePFCand_, countsPFCand_;
0161 
0162   //PFcandidate maps
0163   std::vector<MonitorElement*> occupancyPFCandRECO_, ptPFCandRECO_, multiplicityPFCandRECO_;
0164   std::vector<std::string> occupancyPFCand_nameRECO_, ptPFCand_nameRECO_, multiplicityPFCand_nameRECO_;
0165   std::vector<double> etaMinPFCandRECO_, etaMaxPFCandRECO_;
0166   std::vector<int> typePFCandRECO_, countsPFCandRECO_;
0167 
0168   int numPV_;
0169   int verbose_;
0170 
0171   int LSBegin_;
0172   int LSEnd_;
0173 
0174   bool bypassAllPVChecks_;
0175   bool bypassAllDCSChecks_;
0176 
0177   std::map<std::string, MonitorElement*> map_of_MEs;
0178 
0179   bool isMiniAOD_;
0180 };
0181 #endif