Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef DQM_L1TMONITOR_L1TRATE_H
0002 #define DQM_L1TMONITOR_L1TRATE_H
0003 
0004 /*
0005  * \file L1TRate.h
0006  *
0007  * \author J. Pela
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 #include "FWCore/Framework/interface/Event.h"
0018 #include "FWCore/Framework/interface/LuminosityBlock.h"
0019 #include "FWCore/Framework/interface/MakerMacros.h"
0020 
0021 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0022 
0023 #include "DQMServices/Core/interface/DQMStore.h"
0024 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0025 
0026 #include "DataFormats/Scalers/interface/LumiScalers.h"
0027 #include "DataFormats/Scalers/interface/Level1TriggerRates.h"
0028 #include "DataFormats/Scalers/interface/Level1TriggerScalers.h"
0029 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
0030 
0031 #include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
0032 
0033 #include "L1Trigger/GlobalTriggerAnalyzer/interface/L1GtUtils.h"
0034 
0035 #include "DQM/L1TMonitor/interface/L1TMenuHelper.h"
0036 
0037 #include <TString.h>
0038 
0039 #include <iostream>
0040 #include <fstream>
0041 #include <vector>
0042 
0043 //
0044 // class declaration
0045 //
0046 
0047 class L1TRate : public DQMOneEDAnalyzer<edm::one::WatchLuminosityBlocks> {
0048 public:
0049   L1TRate(const edm::ParameterSet& ps);  // Constructor
0050   ~L1TRate() override;                   // Destructor
0051 
0052 protected:
0053   void analyze(const edm::Event& e, const edm::EventSetup& c) override;  // Analyze
0054   //void beginJob();                                                   // BeginJob
0055   //void endJob  ();                                                   // EndJob
0056   void bookHistograms(DQMStore::IBooker& ibooker, const edm::Run&, const edm::EventSetup&) override;
0057   //void dqmEndRun  (const edm::Run& run, const edm::EventSetup& iSetup);
0058 
0059   void beginLuminosityBlock(edm::LuminosityBlock const& lumiBlock, edm::EventSetup const& c) override;
0060   void endLuminosityBlock(edm::LuminosityBlock const& lumiBlock, edm::EventSetup const& c) override;
0061   void dqmBeginRun(edm::Run const&, edm::EventSetup const&) override;
0062 
0063   // Private methods
0064 private:
0065   bool getXSexFitsOMDS(const edm::ParameterSet& ps);
0066   bool getXSexFitsPython(const edm::ParameterSet& ps);
0067 
0068   // Private variables
0069 private:
0070   // bool
0071   bool m_verbose;
0072 
0073   // int
0074   int m_refPrescaleSet;  // What is the reference prescale index to use for trigger choice
0075   int m_maxNbins;        // Maximum number of bins for MonitorElement
0076   int m_lsShiftGTRates;  // What shift (if any) to be applied to GT Rates LS number
0077 
0078   // string
0079   std::string m_outputFile;  // External output file name (for testiting)
0080 
0081   // Vectors
0082   const std::vector<std::vector<int> >* m_listsPrescaleFactors;  // Collection os all sets of prescales
0083 
0084   // Maps
0085   std::map<int, int> m_lsPrescaleIndex;                         // Map of precale index for each LS
0086   std::map<int, double> m_lsLuminosity;                         // Map of luminosity recorded for each LS
0087   std::map<int, std::map<TString, double> > m_lsRates;          // Map of rates (by bit) recorded for each LS
0088   std::map<TString, int> m_algoBit;                             // Map of bit associated with a L1 Algo alias
0089   std::map<std::string, bool> m_inputCategories;                // Map of categories to monitor
0090   std::map<std::string, std::string> m_selectedTriggers;        // Map of what trigger to monitor for each category
0091   std::map<TString, MonitorElement*> m_xSecObservedToExpected;  // Monitor Elements for Observed to Expected Algo XSec
0092   std::map<TString, MonitorElement*> m_xSecVsInstLumi;          // Monitor Elements for Algo XSec vs Instant Luminosity
0093   std::map<TString, TF1*> m_templateFunctions;                  // For each trigger template f(InstLumi)=XSec
0094 
0095   // Input tags
0096   edm::EDGetTokenT<LumiScalersCollection> m_scalersSource_colLScal;                 // Where to get L1 Scalers
0097   edm::EDGetTokenT<Level1TriggerScalersCollection> m_scalersSource_triggerScalers;  // Where to get L1 Scalers
0098   edm::EDGetTokenT<L1GlobalTriggerReadoutRecord> m_l1GtDataDaqInputTag;             // Where to get L1 GT Data DAQ
0099   const edm::ESGetToken<L1GtTriggerMenu, L1GtTriggerMenuRcd> m_menuToken;
0100   const edm::ESGetToken<L1GtPrescaleFactors, L1GtPrescaleFactorsAlgoTrigRcd> m_l1GtPfAlgoToken;
0101   L1TMenuHelper::Tokens m_helperTokens;
0102 
0103   // ParameterSet
0104   edm::ParameterSet m_parameters;
0105 
0106   // MonitorElement
0107   MonitorElement* m_ErrorMonitor;
0108 
0109   // Others
0110   //DQMStore* dbe;  // The DQM Service Handle
0111 
0112   L1GtUtils m_l1GtUtils;
0113 };
0114 
0115 #endif