Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 13:10:30

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