CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
L1TriggerJSONMonitoring.h
Go to the documentation of this file.
1 #ifndef JSONMonitoring_L1TriggerJSONMonitoring_h
2 #define JSONMonitoring_L1TriggerJSONMonitoring_h
3 
22 
28 
31 
37 
38 #include <atomic>
39 
40 namespace l1Json {
41  //Struct for storing variables that must be written and reset every lumi section
42  struct lumiVars {
43 
44  unsigned int prescaleIndex; // Prescale index for each lumi section
45 
46  std::string baseRunDir; //Base directory from EvFDaqDirector
47 
49  jsoncollector::HistoJ<unsigned int> *L1AlgoAccept; // # of events accepted by L1T[i]
50  jsoncollector::HistoJ<unsigned int> *L1AlgoAcceptPhysics; // # of Physics events accepted by L1T[i]
51  jsoncollector::HistoJ<unsigned int> *L1AlgoAcceptCalibration; // # of Calibration events accepted by L1T[i]
52  jsoncollector::HistoJ<unsigned int> *L1AlgoAcceptRandom; // # of Random events accepted by L1T[i]
53  jsoncollector::HistoJ<unsigned int> *L1Global; // Global # of Phyics, Cailibration and Random L1 triggers
54 
55  std::string stL1Jsd; //Definition file name for JSON with L1 rates
57  };
58  //End lumi struct
59  //Struct for storing variable written once per run
60  struct runVars{
61  mutable std::atomic<bool> wroteFiles;
63  };
64 }//End l1Json namespace
65 
66 //
67 // class declaration
68 //
69 class L1TriggerJSONMonitoring : public edm::stream::EDAnalyzer <edm::RunCache<l1Json::runVars>, edm::LuminosityBlockSummaryCache<l1Json::lumiVars>>
70 {
71  public:
74  static void fillDescriptions(edm::ConfigurationDescriptions & descriptions);
75 
76  void analyze(edm::Event const&,
77  edm::EventSetup const&);
78 
79  void beginRun(edm::Run const&,
80  edm::EventSetup const&);
81 
82  static std::shared_ptr<l1Json::runVars> globalBeginRun(edm::Run const&, edm::EventSetup const&, void const*){
83  std::shared_ptr<l1Json::runVars> rv(new l1Json::runVars);
84  if (edm::Service<evf::EvFDaqDirector>().isAvailable()) {
85  rv->streamL1Destination = edm::Service<evf::EvFDaqDirector>()->getStreamDestinations("streamL1Rates");
86  }
87  rv->wroteFiles = false;
88  return rv;
89  }
90 
91  static void globalEndRun(edm::Run const& iRun, edm::EventSetup const&, RunContext const* iContext){ }
92 
94 
95  static std::shared_ptr<l1Json::lumiVars> globalBeginLuminosityBlockSummary(edm::LuminosityBlock const&,
96  edm::EventSetup const&,
97  LuminosityBlockContext const*);
98 
100  edm::EventSetup const&,
101  l1Json::lumiVars*) const;
102 
103 
105  edm::EventSetup const&,
106  LuminosityBlockContext const*,
108 
109  void resetLumi(); //Reset all counters
110 
112 
113  //Variables from cfg and associated tokens
114  edm::InputTag level1Results_; // Input tag for L1 Global collection
116 
117  //Variables that change at most once per run
118  std::string baseRunDir_; //Base directory from EvFDaqDirector
119 
120  std::vector<std::string> L1AlgoNames_; // name of each L1 algorithm trigger
121  std::vector<int> L1AlgoBitNumber_; // bit number of each L1 algo trigger
122  std::vector<std::string> L1GlobalType_; // experimentType: Physics, Calibration, Random
123 
124  std::string stL1Jsd_; //Definition file name for JSON with L1 rates
125 
126  //Variables that need to be reset at lumi section boundaries
127  unsigned int processed_; // # of events processed
128  unsigned int prescaleIndex_; //Prescale index for each lumi section
129 
130  std::vector<unsigned int> L1AlgoAccept_; // # of events accepted by L1T[i]
131  std::vector<unsigned int> L1AlgoAcceptPhysics_; // # of Physics events accepted by L1T[i]
132  std::vector<unsigned int> L1AlgoAcceptCalibration_; // # of Calibration events accepted by L1T[i]
133  std::vector<unsigned int> L1AlgoAcceptRandom_; // # of Random events accepted by L1T[i]
134  std::vector<unsigned int> L1Global_; // Global # of Physics, Calibration and Random L1 triggers
135 
136  //Variables for confirming that prescale index did not change
137  unsigned int oldLumi;
138  unsigned int oldPrescaleIndex;
139 
140  private:
141 
142 };
143 #endif
LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache > LuminosityBlockContext
Definition: EDAnalyzer.h:46
void endLuminosityBlockSummary(edm::LuminosityBlock const &, edm::EventSetup const &, l1Json::lumiVars *) const
static void globalEndRun(edm::Run const &iRun, edm::EventSetup const &, RunContext const *iContext)
std::vector< unsigned int > L1AlgoAcceptRandom_
std::vector< unsigned int > L1AlgoAccept_
void writeL1DefJson(std::string path)
jsoncollector::HistoJ< unsigned int > * L1AlgoAcceptCalibration
std::string streamL1Destination
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::atomic< bool > wroteFiles
std::vector< std::string > L1AlgoNames_
std::vector< unsigned int > L1Global_
void analyze(edm::Event const &, edm::EventSetup const &)
edm::EDGetTokenT< GlobalAlgBlkBxCollection > level1ResultsToken_
std::vector< std::string > L1GlobalType_
std::vector< unsigned int > L1AlgoAcceptPhysics_
std::vector< unsigned int > L1AlgoAcceptCalibration_
void beginRun(edm::Run const &, edm::EventSetup const &)
jsoncollector::HistoJ< unsigned int > * L1Global
void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
jsoncollector::HistoJ< unsigned int > * L1AlgoAccept
jsoncollector::HistoJ< unsigned int > * processed
jsoncollector::HistoJ< unsigned int > * L1AlgoAcceptRandom
static std::shared_ptr< l1Json::runVars > globalBeginRun(edm::Run const &, edm::EventSetup const &, void const *)
L1TriggerJSONMonitoring(const edm::ParameterSet &)
static void globalEndLuminosityBlockSummary(edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, l1Json::lumiVars *)
jsoncollector::HistoJ< unsigned int > * L1AlgoAcceptPhysics
std::vector< int > L1AlgoBitNumber_
static std::shared_ptr< l1Json::lumiVars > globalBeginLuminosityBlockSummary(edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
Definition: Run.h:43