Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 // -*-c++-*-
0002 //
0003 // Client class for L1 Scalers module.
0004 //
0005 
0006 #ifndef L1ScalersCLIENT_H
0007 #define L1ScalersCLIENT_H
0008 
0009 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0010 #include "FWCore/Framework/interface/Frameworkfwd.h"
0011 
0012 #include "DQMServices/Core/interface/DQMStore.h"
0013 
0014 #include "FWCore/Utilities/interface/InputTag.h"
0015 
0016 // HARD CODE THE NUMBER OF HISTOGRAMS TO 200, LENGTH OF MONITOR to 2000
0017 // segments
0018 #define MAX_ALGOS 140
0019 #define MAX_TT 80
0020 #define MAX_LUMI_SEG 2000
0021 
0022 class L1ScalersClient
0023     : public edm::one::EDAnalyzer<edm::one::SharedResources, edm::one::WatchRuns, edm::one::WatchLuminosityBlocks> {
0024 public:
0025   typedef dqm::legacy::MonitorElement MonitorElement;
0026   typedef dqm::legacy::DQMStore DQMStore;
0027 
0028   /// Constructors
0029   L1ScalersClient(const edm::ParameterSet &ps);
0030 
0031   /// BeginJob
0032   void beginJob(void) override;
0033 
0034   /// BeginRun
0035   void beginRun(const edm::Run &run, const edm::EventSetup &c) override;
0036 
0037   /// EndRun
0038   void endRun(const edm::Run &run, const edm::EventSetup &c) override;
0039 
0040   /// End LumiBlock
0041   /// DQM Client Diagnostic should be performed here
0042   void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c) override {}
0043   void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c) override;
0044 
0045   // unused
0046   void analyze(const edm::Event &e, const edm::EventSetup &c) override;
0047 
0048 private:
0049   DQMStore *dbe_;
0050 
0051   int nev_;    // Number of events processed
0052   int nLumi_;  // number of lumi blocks
0053   int currentRun_;
0054 
0055   float totAlgoPrevCount;
0056   float totTtPrevCount;
0057 
0058   unsigned long int l1AlgoScalerCounters_[MAX_ALGOS];
0059   MonitorElement *l1AlgoCurrentRate_;
0060   MonitorElement *l1AlgoRateHistories_[MAX_ALGOS];  // HARD CODE FOR NOW
0061   MonitorElement *l1AlgoCurrentRatePerAlgo_[MAX_ALGOS];
0062   MonitorElement *totalAlgoRate_;
0063 
0064   unsigned long int l1TechTrigScalerCounters_[MAX_TT];
0065   MonitorElement *l1TechTrigCurrentRate_;
0066   MonitorElement *l1TechTrigRateHistories_[MAX_TT];  // HARD CODE FOR NOW
0067   MonitorElement *l1TechTrigCurrentRatePerAlgo_[MAX_TT];
0068   MonitorElement *totalTtRate_;
0069 
0070   // this is a selected list of guys
0071   MonitorElement *selected_;
0072   MonitorElement *bxSelected_;
0073   std::vector<int> algoSelected_;
0074   std::vector<int> techSelected_;
0075   std::string folderName_;
0076   int numSelected_;
0077 
0078   int currentLumiBlockNumber_;
0079   bool first_algo;
0080   bool first_tt;
0081 };
0082 
0083 #endif  // L1ScalersCLIENT_H