Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef L1TCSCTF_H
0002 #define L1TCSCTF_H
0003 
0004 /*
0005  * \file L1TCSCTF.h
0006  *
0007  * \author J. Berryhill
0008  *
0009 */
0010 
0011 // system include files
0012 #include <memory>
0013 #include <unistd.h>
0014 
0015 // user include files
0016 #include "FWCore/Framework/interface/Frameworkfwd.h"
0017 
0018 #include "FWCore/Framework/interface/Event.h"
0019 #include "FWCore/Framework/interface/MakerMacros.h"
0020 
0021 #include "FWCore/Framework/interface/ESHandle.h"
0022 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0023 
0024 #include "DQMServices/Core/interface/DQMStore.h"
0025 #include "FWCore/ServiceRegistry/interface/Service.h"
0026 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0027 
0028 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h"
0029 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTCand.h"
0030 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTExtendedCand.h"
0031 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h"
0032 
0033 // Sector Receiver LUT class to transform wire/strip numbers to eta/phi observables
0034 #include "L1Trigger/CSCTrackFinder/interface/CSCSectorReceiverLUT.h"
0035 
0036 #include "CondFormats/L1TObjects/interface/L1MuTriggerScales.h"
0037 #include "CondFormats/DataRecord/interface/L1MuTriggerScalesRcd.h"
0038 #include "CondFormats/L1TObjects/interface/L1MuTriggerPtScale.h"
0039 #include "CondFormats/DataRecord/interface/L1MuTriggerPtScaleRcd.h"
0040 
0041 #include "DataFormats/L1CSCTrackFinder/interface/L1CSCStatusDigiCollection.h"
0042 #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
0043 #include "DataFormats/L1CSCTrackFinder/interface/L1CSCTrackCollection.h"
0044 #include "DataFormats/L1CSCTrackFinder/interface/CSCTriggerContainer.h"
0045 #include "DataFormats/L1CSCTrackFinder/interface/TrackStub.h"
0046 
0047 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0048 
0049 #include <iostream>
0050 #include <fstream>
0051 #include <vector>
0052 
0053 //
0054 // class decleration
0055 //
0056 
0057 class L1TCSCTF : public DQMEDAnalyzer {
0058 public:
0059   // Constructor
0060   L1TCSCTF(const edm::ParameterSet& ps);
0061 
0062   // Destructor
0063   ~L1TCSCTF() override;
0064 
0065 protected:
0066   // Analyze
0067   void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0068   void bookHistograms(DQMStore::IBooker& ibooker, edm::Run const&, edm::EventSetup const&) override;
0069 
0070 private:
0071   // ----------member data ---------------------------
0072 
0073   MonitorElement* csctfntrack;
0074   MonitorElement* csctfbx;
0075   MonitorElement* csctfbx_H;
0076 
0077   MonitorElement* csctferrors;
0078   MonitorElement* csctfoccupancies;
0079   MonitorElement* csctfoccupancies_H;
0080 
0081   MonitorElement* csctferrors_mpc;
0082   MonitorElement* cscWireStripOverflow;
0083 
0084   //MonitorElement* runId_;
0085   //MonitorElement* lumisecId_;
0086 
0087   //MonitorElement* haloDelEta112;
0088   //MonitorElement* haloDelEta12;
0089   //MonitorElement* haloDelEta113;
0090   //MonitorElement* haloDelEta13;
0091 
0092   MonitorElement* csctfChamberOccupancies;
0093   MonitorElement* csctfTrackPhi;       //all tracks but halo
0094   MonitorElement* csctfTrackEta;       //all tracks but halo
0095   MonitorElement* csctfTrackEtaLowQ;   //all tracks but halo
0096   MonitorElement* csctfTrackEtaHighQ;  //all tracks but halo
0097   MonitorElement* csctfTrackPhi_H;     //halo tracks only
0098   MonitorElement* csctfTrackEta_H;     //halo tracks only
0099   MonitorElement* cscTrackStubNumbers;
0100   MonitorElement* csctfTrackM;
0101   MonitorElement* trackModeVsQ;
0102   MonitorElement* csctfAFerror;
0103 
0104   // NEW: CSC EVENT LCT PLOTS
0105   MonitorElement* csctflcts;
0106 
0107   // PLOTS SPECIFICALLY FOR ME1/1
0108   MonitorElement* me11_lctStrip;
0109   MonitorElement* me11_lctWire;
0110   MonitorElement* me11_lctLocalPhi;
0111   MonitorElement* me11_lctPackedPhi;
0112   MonitorElement* me11_lctGblPhi;
0113   MonitorElement* me11_lctGblEta;
0114 
0115   // PLOTS SPECIFICALLY FOR ME4/2
0116   MonitorElement* me42_lctGblPhi;
0117   MonitorElement* me42_lctGblEta;
0118 
0119   // WG AND STRIP PLOTS FOR ALL CHAMBERS
0120   MonitorElement* csc_strip_MEplus11;
0121   MonitorElement* csc_strip_MEplus12;
0122   MonitorElement* csc_strip_MEplus13;
0123   MonitorElement* csc_strip_MEplus21;
0124   MonitorElement* csc_strip_MEplus22;
0125   MonitorElement* csc_strip_MEplus31;
0126   MonitorElement* csc_strip_MEplus32;
0127   MonitorElement* csc_strip_MEplus41;
0128   MonitorElement* csc_strip_MEplus42;
0129 
0130   MonitorElement* csc_strip_MEminus11;
0131   MonitorElement* csc_strip_MEminus12;
0132   MonitorElement* csc_strip_MEminus13;
0133   MonitorElement* csc_strip_MEminus21;
0134   MonitorElement* csc_strip_MEminus22;
0135   MonitorElement* csc_strip_MEminus31;
0136   MonitorElement* csc_strip_MEminus32;
0137   MonitorElement* csc_strip_MEminus41;
0138   MonitorElement* csc_strip_MEminus42;
0139 
0140   MonitorElement* csc_wire_MEplus11;
0141   MonitorElement* csc_wire_MEplus12;
0142   MonitorElement* csc_wire_MEplus13;
0143   MonitorElement* csc_wire_MEplus21;
0144   MonitorElement* csc_wire_MEplus22;
0145   MonitorElement* csc_wire_MEplus31;
0146   MonitorElement* csc_wire_MEplus32;
0147   MonitorElement* csc_wire_MEplus41;
0148   MonitorElement* csc_wire_MEplus42;
0149 
0150   MonitorElement* csc_wire_MEminus11;
0151   MonitorElement* csc_wire_MEminus12;
0152   MonitorElement* csc_wire_MEminus13;
0153   MonitorElement* csc_wire_MEminus21;
0154   MonitorElement* csc_wire_MEminus22;
0155   MonitorElement* csc_wire_MEminus31;
0156   MonitorElement* csc_wire_MEminus32;
0157   MonitorElement* csc_wire_MEminus41;
0158   MonitorElement* csc_wire_MEminus42;
0159 
0160   // 1-> 6 plus endcap
0161   // 7->12 minus endcap
0162   MonitorElement* DTstubsTimeTrackMenTimeArrival[12];
0163   int BxInEvent_;   //bx of the CSC muon candidate
0164   bool isCSCcand_;  //does GMT readout window have a CSC cand?
0165 
0166   int L1ABXN;
0167 
0168   int nev_;                 // Number of events processed
0169   std::string outputFile_;  //file name for ROOT ouput
0170   bool verbose_;
0171   bool monitorDaemon_;
0172   std::ofstream logFile_;
0173   edm::InputTag gmtProducer, lctProducer, trackProducer, statusProducer, mbProducer;
0174   bool gangedME11a_;  // needed this be set false for Run2
0175 
0176   CSCSectorReceiverLUT* srLUTs_[5][2][6];
0177 
0178   const L1MuTriggerScales* ts;
0179   const L1MuTriggerPtScale* tpts;
0180   unsigned long long m_scalesCacheID;
0181   unsigned long long m_ptScaleCacheID;
0182 
0183   //define Token(-s)
0184   edm::EDGetTokenT<L1MuGMTReadoutCollection> gmtProducerToken_;
0185   edm::EDGetTokenT<L1CSCStatusDigiCollection> statusToken_;
0186   edm::EDGetTokenT<CSCCorrelatedLCTDigiCollection> corrlctsToken_;
0187   edm::EDGetTokenT<L1CSCTrackCollection> tracksToken_;
0188   edm::EDGetTokenT<CSCTriggerContainer<csctf::TrackStub> > dtStubsToken_;
0189   edm::EDGetTokenT<L1CSCTrackCollection> mbtracksToken_;
0190   edm::ESGetToken<L1MuTriggerScales, L1MuTriggerScalesRcd> l1muTscalesToken_;
0191   edm::ESGetToken<L1MuTriggerPtScale, L1MuTriggerPtScaleRcd> ptscalesToken_;
0192 };
0193 
0194 #endif