Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 //
0004 /**\class dEdxAnalyzer dEdxAnalyzer.cc 
0005 Monitoring source for general quantities related to track dEdx.
0006 */
0007 // Original Author: Loic Quertenmont 2012/07/25
0008 
0009 #include <memory>
0010 #include <fstream>
0011 
0012 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0013 #include "DQMServices/Core/interface/DQMStore.h"
0014 #include "DataFormats/TrackReco/interface/DeDxData.h"
0015 #include "DataFormats/TrackReco/interface/Track.h"
0016 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0017 #include "FWCore/Framework/interface/ConsumesCollector.h"
0018 #include "FWCore/Framework/interface/Event.h"
0019 #include "FWCore/Framework/interface/EventSetup.h"
0020 #include "FWCore/Framework/interface/Frameworkfwd.h"
0021 #include "FWCore/Framework/interface/MakerMacros.h"
0022 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0023 #include "FWCore/ServiceRegistry/interface/Service.h"
0024 #include "FWCore/Utilities/interface/EDGetToken.h"
0025 
0026 class GenericTriggerEventFlag;
0027 
0028 class dEdxAnalyzer : public DQMEDAnalyzer {
0029 public:
0030   explicit dEdxAnalyzer(const edm::ParameterSet&);
0031   ~dEdxAnalyzer() override;
0032 
0033   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0034 
0035   void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) override;
0036   double mass(double P, double I);
0037 
0038   void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0039 
0040 private:
0041   // ----------member data ---------------------------
0042   DQMStore* dqmStore_;
0043   edm::ParameterSet fullconf_;
0044   edm::ParameterSet conf_;
0045 
0046   bool doAllPlots_;
0047   bool doDeDxPlots_;
0048 
0049   struct dEdxMEs {
0050     MonitorElement* ME_MipDeDx;
0051     MonitorElement* ME_MipDeDxNHits;
0052     MonitorElement* ME_MipDeDxNSatHits;
0053     MonitorElement* ME_MipDeDxMass;
0054     MonitorElement* ME_HipDeDxMass;
0055     MonitorElement* ME_MipHighPtDeDx;
0056     MonitorElement* ME_MipHighPtDeDxNHits;
0057 
0058     dEdxMEs()
0059         : ME_MipDeDx(nullptr),
0060           ME_MipDeDxNHits(nullptr),
0061           ME_MipDeDxNSatHits(nullptr),
0062           ME_MipDeDxMass(nullptr),
0063           ME_HipDeDxMass(nullptr),
0064           ME_MipHighPtDeDx(nullptr),
0065           ME_MipHighPtDeDxNHits(nullptr) {}
0066   };
0067 
0068   double TrackHitMin, HIPdEdxMin, HighPtThreshold;
0069   double dEdxK, dEdxC;
0070 
0071   edm::InputTag trackInputTag_;
0072   edm::EDGetTokenT<reco::TrackCollection> trackToken_;
0073 
0074   std::vector<std::string> dEdxInputList_;
0075   std::vector<edm::EDGetTokenT<reco::DeDxDataValueMap> > dEdxTokenList_;
0076 
0077   std::string TrackName;
0078   std::vector<std::string> AlgoNames;
0079   std::vector<dEdxMEs> dEdxMEsVector;
0080   std::string histname;  //for naming the histograms according to algorithm used
0081 
0082   GenericTriggerEventFlag* genTriggerEventFlag_;
0083 };