Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:07:44

0001 #ifndef L1TDTTF_H
0002 #define L1TDTTF_H
0003 
0004 /*
0005  * \file L1TDTTF.h
0006  *
0007  * \author J. Berryhill
0008  *
0009  */
0010 
0011 // system include files
0012 #include <string>
0013 
0014 // user include files
0015 #include "FWCore/Framework/interface/Event.h"
0016 
0017 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h"
0018 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTTrackContainer.h"
0019 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0020 //
0021 // class declaration
0022 //
0023 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0024 #include "DQMServices/Core/interface/DQMStore.h"
0025 
0026 class L1MuDTTrackCand;
0027 class L1MuRegionalCand;
0028 
0029 class L1TDTTF : public DQMEDAnalyzer {
0030 public:
0031   // Constructor
0032   L1TDTTF(const edm::ParameterSet& ps);
0033 
0034   // Destructor
0035   ~L1TDTTF() override;
0036 
0037 protected:
0038   // Analyze
0039   void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0040 
0041   // BeginJob
0042   void dqmBeginRun(edm::Run const&, edm::EventSetup const&) override;
0043   void bookHistograms(DQMStore::IBooker& i, edm::Run const&, edm::EventSetup const&) override;
0044 
0045 private:
0046   void fillMEs(std::vector<L1MuDTTrackCand> const* trackContainer, std::vector<L1MuRegionalCand>& gmtDttfCands);
0047   void setWheelLabel(MonitorElement* me);
0048   void setQualLabel(MonitorElement* me, int axis);
0049   void bookEta(int wh, int& nbins, float& start, float& stop);
0050 
0051   // ----------member data ---------------------------
0052   edm::InputTag dttpgSource_;
0053   edm::InputTag gmtSource_;
0054   edm::InputTag muonCollectionLabel_;
0055   std::string l1tsubsystemfolder_;
0056   bool online_;
0057   bool verbose_;
0058   std::string outputFile_;  //file name for ROOT ouput
0059   edm::InputTag trackInputTag_;
0060 
0061   MonitorElement* dttf_nTracksPerEvent_wheel[6];
0062   MonitorElement* dttf_quality_wheel_2ndTrack[6];
0063   MonitorElement* dttf_quality_summary_wheel_2ndTrack[6];
0064   MonitorElement* dttf_phi_eta_fine_wheel[6];
0065   MonitorElement* dttf_phi_eta_coarse_wheel[6];
0066   MonitorElement* dttf_phi_eta_wheel_2ndTrack[6];
0067   MonitorElement* dttf_eta_wheel_2ndTrack[6];
0068   MonitorElement* dttf_phi_wheel_2ndTrack[6];
0069   MonitorElement* dttf_pt_wheel_2ndTrack[6];
0070   MonitorElement* dttf_q_wheel_2ndTrack[6];
0071 
0072   MonitorElement* dttf_nTracksPerEv[6][12];
0073   MonitorElement* dttf_bx[6][12];
0074   MonitorElement* dttf_bx_2ndTrack[6][12];
0075   MonitorElement* dttf_qual[6][12];
0076   MonitorElement* dttf_eta_fine_fraction[6][12];
0077   MonitorElement* dttf_eta[6][12];
0078   MonitorElement* dttf_phi[6][12];
0079   MonitorElement* dttf_pt[6][12];
0080   MonitorElement* dttf_q[6][12];
0081 
0082   MonitorElement* dttf_nTracksPerEvent_integ;
0083   MonitorElement* dttf_spare;
0084 
0085   MonitorElement* dttf_gmt_match;
0086   MonitorElement* dttf_gmt_missed;
0087   MonitorElement* dttf_gmt_ghost;
0088 
0089   // MonitorElement* dttf_gmt_ghost_phys;
0090 
0091   int nev_;              // Number of events processed
0092   int nev_dttf_;         //Number of events with at least one DTTF track
0093   int nev_dttf_track2_;  //Number of events with at least one DTTF 2nd track
0094   int numTracks[6][12];
0095 
0096   //define Token(-s)
0097   edm::EDGetTokenT<L1MuDTTrackContainer> trackInputToken_;
0098   edm::EDGetTokenT<reco::MuonCollection> muonCollectionToken_;
0099   edm::EDGetTokenT<L1MuGMTReadoutCollection> gmtSourceToken_;
0100 };
0101 
0102 #endif