Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef DQMOffline_Alignment_TkAlCaRecoMonitor_H
0002 #define DQMOffline_Alignment_TkAlCaRecoMonitor_H
0003 
0004 // -*- C++ -*-
0005 //
0006 // Package:    TkAlCaRecoMonitor
0007 // Class:      TkAlCaRecoMonitor
0008 //
0009 /**\class TkAlCaRecoMonitor TkAlCaRecoMonitor.cc
0010    DQM/TrackerMonitorTrack/src/TkAlCaRecoMonitor.cc
0011    Monitoring special quantities related to Tracker Alignment AlCaReco Production.
0012 */
0013 
0014 #include <algorithm>
0015 #include <fstream>
0016 #include <map>
0017 #include <memory>
0018 #include <vector>
0019 
0020 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0021 #include "DQMServices/Core/interface/DQMStore.h"
0022 #include "DataFormats/JetReco/interface/CaloJet.h"
0023 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0024 #include "FWCore/Framework/interface/Event.h"
0025 #include "FWCore/Framework/interface/Frameworkfwd.h"
0026 #include "FWCore/Framework/interface/MakerMacros.h"
0027 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0028 #include "FWCore/ServiceRegistry/interface/Service.h"
0029 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0030 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0031 #include "MagneticField/Engine/interface/MagneticField.h"
0032 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0033 
0034 class TkAlCaRecoMonitor : public DQMEDAnalyzer {
0035 public:
0036   explicit TkAlCaRecoMonitor(const edm::ParameterSet &);
0037   ~TkAlCaRecoMonitor() override = default;
0038 
0039   static void fillDescriptions(edm::ConfigurationDescriptions &);
0040 
0041   void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
0042   void analyze(const edm::Event &, const edm::EventSetup &) override;
0043 
0044 private:
0045   static constexpr const double kMuonMass_ = 0.1056583755;  //GeV from PDG
0046 
0047   void fillHitmaps(const reco::Track &track, const TrackerGeometry &geometry);
0048   void fillRawIdMap(const TrackerGeometry &geometry);
0049 
0050   // ----------member data ---------------------------
0051   const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tkGeomToken_;
0052   const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> mfToken_;
0053 
0054   const edm::EDGetTokenT<reco::TrackCollection> trackProducer_;
0055   const edm::EDGetTokenT<reco::TrackCollection> referenceTrackProducer_;
0056   const edm::EDGetTokenT<reco::CaloJetCollection> jetCollection_;
0057 
0058   const double daughterMass_;
0059   const double maxJetPt_;
0060   const bool fillInvariantMass_;
0061   const bool fillRawIdMap_;
0062   const bool runsOnReco_;
0063   const bool useSignedR_;
0064 
0065   edm::ParameterSet conf_;
0066 
0067   // 1D
0068   MonitorElement *invariantMass_;
0069   MonitorElement *sumCharge_;
0070   MonitorElement *TrackQuality_;
0071   MonitorElement *jetPt_;
0072   MonitorElement *minJetDeltaR_;
0073   MonitorElement *minTrackDeltaR_;
0074   MonitorElement *AlCaRecoTrackEfficiency_;
0075   MonitorElement *Hits_perDetId_;
0076   MonitorElement *TrackPtPositive_;
0077   MonitorElement *TrackPtNegative_;
0078   MonitorElement *TrackCurvature_;
0079   // 2D
0080   MonitorElement *Hits_ZvsR_;
0081   MonitorElement *Hits_XvsY_;
0082 
0083   std::map<int, int> binByRawId_;
0084 };
0085 #endif