CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
L1TSync_Offline Class Reference

#include <L1TSync_Offline.h>

Inheritance diagram for L1TSync_Offline:
DQMOneEDAnalyzer< edm::LuminosityBlockCache< ltso::LSValid > > edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Types

enum  BeamMode {
  NOMODE = 1, SETUP = 2, INJPILOT = 3, INJINTR = 4,
  INJNOMN = 5, PRERAMP = 6, RAMP = 7, FLATTOP = 8,
  QUEEZE = 9, ADJUST = 10, STABLE = 11, UNSTABLE = 12,
  BEAMDUMP = 13, RAMPDOWN = 14, RECOVERY = 15, INJDUMP = 16,
  CIRCDUMP = 17, ABORT = 18, CYCLING = 19, WBDUMP = 20,
  NOBEAM = 21
}
 
enum  Errors {
  UNKNOWN = 1, WARNING_DB_CONN_FAILED = 2, WARNING_DB_QUERY_FAILED = 3, WARNING_DB_INCORRECT_NBUNCHES = 4,
  ERROR_UNABLE_RETRIVE_PRODUCT = 5, ERROR_TRIGGERALIAS_NOTVALID = 6, ERROR_LSBLOCK_NOTVALID = 7
}
 
- Public Types inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< ltso::LSValid > >
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

 L1TSync_Offline (const edm::ParameterSet &ps)
 
 ~L1TSync_Offline () override
 
- Public Member Functions inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< ltso::LSValid > >
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
 DQMOneEDAnalyzer ()
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 
void bookHistograms (DQMStore::IBooker &ibooker, const edm::Run &, const edm::EventSetup &) override
 BeginRun. More...
 
void dqmBeginRun (const edm::Run &, const edm::EventSetup &) override
 
std::shared_ptr< ltso::LSValidglobalBeginLuminosityBlock (edm::LuminosityBlock const &lumiBlock, edm::EventSetup const &c) const final
 
void globalEndLuminosityBlock (edm::LuminosityBlock const &lumiBlock, edm::EventSetup const &c) final
 
- Protected Member Functions inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< ltso::LSValid > >
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
virtual void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)=0
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &)
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Private Member Functions

void getBeamConfOffline (const edm::Event &)
 

Private Attributes

const std::vector< std::vector< int > > * ListsPrescaleFactors
 
std::map< std::string, bool > m_algoAutoSelect
 
std::map< TString, int > m_algoBit
 
std::map< TString, MonitorElement * > m_algoCertification
 
std::map< TString, MonitorElement * > m_algoVsBunchStructure
 
L1TBeamConfiguration m_beamConfig
 
std::map< TString, unsigned int > m_certFirstLS
 
std::map< TString, unsigned int > m_certLastLS
 
MonitorElementm_ErrorMonitor
 
edm::EDGetTokenT< L1GlobalTriggerReadoutRecordm_l1GtDataDaqInputTag
 
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecordm_l1GtEvmSource
 
L1GtUtils m_l1GtUtils
 
unsigned int m_lhcFill
 
edm::ParameterSet m_parameters
 
int m_refPrescaleSet
 
std::map< std::string, std::string > m_selectedTriggers
 
bool m_verbose
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Attributes inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< ltso::LSValid > >
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Description: offline DQM module for L1Trigger/bunchStructure synchronization

Implementation: <TODO: enter implementation details>

Author
: Pietro Vischia - LIP Lisbon pietr.nosp@m.o.vi.nosp@m.schia.nosp@m.@gma.nosp@m.il.co.nosp@m.m

Changelog: 2012/08/10 11:01:01: First creation. Dummy module with actual code commented.

Todo:

Definition at line 68 of file L1TSync_Offline.h.

Member Enumeration Documentation

Enumerator
NOMODE 
SETUP 
INJPILOT 
INJINTR 
INJNOMN 
PRERAMP 
RAMP 
FLATTOP 
QUEEZE 
ADJUST 
STABLE 
UNSTABLE 
BEAMDUMP 
RAMPDOWN 
RECOVERY 
INJDUMP 
CIRCDUMP 
ABORT 
CYCLING 
WBDUMP 
NOBEAM 

Definition at line 70 of file L1TSync_Offline.h.

70  {
71  NOMODE = 1,
72  SETUP = 2,
73  INJPILOT = 3,
74  INJINTR = 4,
75  INJNOMN = 5,
76  PRERAMP = 6,
77  RAMP = 7,
78  FLATTOP = 8,
79  QUEEZE = 9,
80  ADJUST = 10,
81  STABLE = 11,
82  UNSTABLE = 12,
83  BEAMDUMP = 13,
84  RAMPDOWN = 14,
85  RECOVERY = 15,
86  INJDUMP = 16,
87  CIRCDUMP = 17,
88  ABORT = 18,
89  CYCLING = 19,
90  WBDUMP = 20,
91  NOBEAM = 21
92  };
Enumerator
UNKNOWN 
WARNING_DB_CONN_FAILED 
WARNING_DB_QUERY_FAILED 
WARNING_DB_INCORRECT_NBUNCHES 
ERROR_UNABLE_RETRIVE_PRODUCT 
ERROR_TRIGGERALIAS_NOTVALID 
ERROR_LSBLOCK_NOTVALID 

Definition at line 94 of file L1TSync_Offline.h.

Constructor & Destructor Documentation

L1TSync_Offline::L1TSync_Offline ( const edm::ParameterSet ps)

Definition at line 61 of file L1TSync_Offline.cc.

References L1TSync_cfi::Categories, L1TSync_cfi::doGlobalAutoSelection, L1TSync_cfi::forceGlobalParameters, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), m_algoAutoSelect, m_l1GtDataDaqInputTag, m_l1GtEvmSource, m_parameters, m_refPrescaleSet, m_selectedTriggers, m_verbose, and muonDTDigis_cfi::pset.

61  : m_l1GtUtils(pset, consumesCollector(), false, *this) {
63 
64  // Mapping parameter input variables
65  m_l1GtDataDaqInputTag = consumes<L1GlobalTriggerReadoutRecord>(pset.getParameter<InputTag>("inputTagL1GtDataDaq"));
66  m_l1GtEvmSource = consumes<L1GlobalTriggerEvmReadoutRecord>(pset.getParameter<InputTag>("inputTagtEvmSource"));
67  m_verbose = pset.getUntrackedParameter<bool>("verbose", false);
68  m_refPrescaleSet = pset.getParameter<int>("refPrescaleSet");
69 
70  // Getting which categories to monitor
71  ParameterSet Categories = pset.getParameter<ParameterSet>("Categories");
72 
73  bool forceGlobalParameters = Categories.getParameter<bool>("forceGlobalParameters");
74  bool doGlobalAutoSelection = Categories.getParameter<bool>("doGlobalAutoSelection");
75 
76  ParameterSet CatBPTX = Categories.getParameter<ParameterSet>("BPTX");
77  ParameterSet CatMu = Categories.getParameter<ParameterSet>("Mu");
78  ParameterSet CatEG = Categories.getParameter<ParameterSet>("EG");
79  ParameterSet CatIsoEG = Categories.getParameter<ParameterSet>("IsoEG");
80  ParameterSet CatJet = Categories.getParameter<ParameterSet>("Jet");
81  ParameterSet CatCenJet = Categories.getParameter<ParameterSet>("CenJet");
82  ParameterSet CatForJet = Categories.getParameter<ParameterSet>("ForJet");
83  ParameterSet CatTauJet = Categories.getParameter<ParameterSet>("TauJet");
84  ParameterSet CatETM = Categories.getParameter<ParameterSet>("ETT");
85  ParameterSet CatETT = Categories.getParameter<ParameterSet>("ETM");
86  ParameterSet CatHTT = Categories.getParameter<ParameterSet>("HTT");
87  ParameterSet CatHTM = Categories.getParameter<ParameterSet>("HTM");
88 
89  // --> Setting parameters related to which algos to monitor
90  // If global parameters are forced they take precedence over algo-by-algo parameters
92  // If global automatic selection if enable all categories set to be monitored will have
93  // their algos auto selected (the lowest prescale algo will be selected)
95  if (CatMu.getParameter<bool>("monitor")) {
96  m_algoAutoSelect["Mu"] = true;
97  } else {
98  m_algoAutoSelect["Mu"] = false;
99  }
100  if (CatEG.getParameter<bool>("monitor")) {
101  m_algoAutoSelect["EG"] = true;
102  } else {
103  m_algoAutoSelect["EG"] = false;
104  }
105  if (CatIsoEG.getParameter<bool>("monitor")) {
106  m_algoAutoSelect["IsoEG"] = true;
107  } else {
108  m_algoAutoSelect["IsoEG"] = false;
109  }
110  if (CatJet.getParameter<bool>("monitor")) {
111  m_algoAutoSelect["Jet"] = true;
112  } else {
113  m_algoAutoSelect["Jet"] = false;
114  }
115  if (CatCenJet.getParameter<bool>("monitor")) {
116  m_algoAutoSelect["CenJet"] = true;
117  } else {
118  m_algoAutoSelect["CenJet"] = false;
119  }
120  if (CatForJet.getParameter<bool>("monitor")) {
121  m_algoAutoSelect["ForJet"] = true;
122  } else {
123  m_algoAutoSelect["ForJet"] = false;
124  }
125  if (CatTauJet.getParameter<bool>("monitor")) {
126  m_algoAutoSelect["TauJet"] = true;
127  } else {
128  m_algoAutoSelect["TauJet"] = false;
129  }
130  if (CatETM.getParameter<bool>("monitor")) {
131  m_algoAutoSelect["ETM"] = true;
132  } else {
133  m_algoAutoSelect["ETM"] = false;
134  }
135  if (CatETT.getParameter<bool>("monitor")) {
136  m_algoAutoSelect["ETT"] = true;
137  } else {
138  m_algoAutoSelect["ETT"] = false;
139  }
140  if (CatHTM.getParameter<bool>("monitor")) {
141  m_algoAutoSelect["HTM"] = true;
142  } else {
143  m_algoAutoSelect["HTM"] = false;
144  }
145  if (CatHTT.getParameter<bool>("monitor")) {
146  m_algoAutoSelect["HTT"] = true;
147  } else {
148  m_algoAutoSelect["HTT"] = false;
149  }
150 
151  // If global non-automatic selection is enable all categories set to be monitored will use
152  // user defined algos
153  } else {
154  m_algoAutoSelect["Mu"] = false;
155  m_algoAutoSelect["EG"] = false;
156  m_algoAutoSelect["IsoEG"] = false;
157  m_algoAutoSelect["Jet"] = false;
158  m_algoAutoSelect["CenJet"] = false;
159  m_algoAutoSelect["ForJet"] = false;
160  m_algoAutoSelect["TauJet"] = false;
161  m_algoAutoSelect["ETM"] = false;
162  m_algoAutoSelect["ETT"] = false;
163  m_algoAutoSelect["HTM"] = false;
164  m_algoAutoSelect["HTT"] = false;
165 
166  if (CatMu.getParameter<bool>("monitor")) {
167  m_selectedTriggers["Mu"] = CatMu.getParameter<string>("algo");
168  }
169  if (CatEG.getParameter<bool>("monitor")) {
170  m_selectedTriggers["EG"] = CatEG.getParameter<string>("algo");
171  }
172  if (CatIsoEG.getParameter<bool>("monitor")) {
173  m_selectedTriggers["IsoEG"] = CatIsoEG.getParameter<string>("algo");
174  }
175  if (CatJet.getParameter<bool>("monitor")) {
176  m_selectedTriggers["Jet"] = CatJet.getParameter<string>("algo");
177  }
178  if (CatCenJet.getParameter<bool>("monitor")) {
179  m_selectedTriggers["CenJet"] = CatCenJet.getParameter<string>("algo");
180  }
181  if (CatForJet.getParameter<bool>("monitor")) {
182  m_selectedTriggers["CatForJet"] = CatForJet.getParameter<string>("algo");
183  }
184  if (CatTauJet.getParameter<bool>("monitor")) {
185  m_selectedTriggers["TauJet"] = CatTauJet.getParameter<string>("algo");
186  }
187  if (CatETM.getParameter<bool>("monitor")) {
188  m_selectedTriggers["ETM"] = CatETM.getParameter<string>("algo");
189  }
190  if (CatETT.getParameter<bool>("monitor")) {
191  m_selectedTriggers["ETT"] = CatETT.getParameter<string>("algo");
192  }
193  if (CatHTM.getParameter<bool>("monitor")) {
194  m_selectedTriggers["HTM"] = CatHTM.getParameter<string>("algo");
195  }
196  if (CatHTT.getParameter<bool>("monitor")) {
197  m_selectedTriggers["HTT"] = CatHTT.getParameter<string>("algo");
198  }
199  }
200 
201  // If we are using algo-by-algo parametes we get them and set what is needed
202  } else {
203  if (CatBPTX.getParameter<bool>("monitor")) {
204  m_selectedTriggers["BPTX"] = CatBPTX.getParameter<string>("algo");
205  }
206 
207  if (CatMu.getParameter<bool>("monitor")) {
208  m_algoAutoSelect["Mu"] = CatMu.getParameter<bool>("doAutoSelection");
209  if (!m_algoAutoSelect["Mu"]) {
210  m_selectedTriggers["Mu"] = CatMu.getParameter<string>("algo");
211  }
212  } else {
213  m_algoAutoSelect["Mu"] = false;
214  }
215 
216  if (CatEG.getParameter<bool>("monitor")) {
217  m_algoAutoSelect["EG"] = CatEG.getParameter<bool>("doAutoSelection");
218  if (!m_algoAutoSelect["EG"]) {
219  m_selectedTriggers["EG"] = CatEG.getParameter<string>("algo");
220  }
221  } else {
222  m_algoAutoSelect["EG"] = false;
223  }
224 
225  if (CatIsoEG.getParameter<bool>("monitor")) {
226  m_algoAutoSelect["IsoEG"] = CatIsoEG.getParameter<bool>("doAutoSelection");
227  if (!m_algoAutoSelect["IsoEG"]) {
228  m_selectedTriggers["IsoEG"] = CatIsoEG.getParameter<string>("algo");
229  }
230  } else {
231  m_algoAutoSelect["IsoEG"] = false;
232  }
233 
234  if (CatJet.getParameter<bool>("monitor")) {
235  m_algoAutoSelect["Jet"] = CatJet.getParameter<bool>("doAutoSelection");
236  if (!m_algoAutoSelect["Jet"]) {
237  m_selectedTriggers["Jet"] = CatJet.getParameter<string>("algo");
238  }
239  } else {
240  m_algoAutoSelect["Jet"] = false;
241  }
242 
243  if (CatCenJet.getParameter<bool>("monitor")) {
244  m_algoAutoSelect["CenJet"] = CatCenJet.getParameter<bool>("doAutoSelection");
245  if (!m_algoAutoSelect["CenJet"]) {
246  m_selectedTriggers["CenJet"] = CatCenJet.getParameter<string>("algo");
247  }
248  } else {
249  m_algoAutoSelect["CenJet"] = false;
250  }
251 
252  if (CatForJet.getParameter<bool>("monitor")) {
253  m_algoAutoSelect["CatForJet"] = CatForJet.getParameter<bool>("doAutoSelection");
254  if (!m_algoAutoSelect["CatForJet"]) {
255  m_selectedTriggers["CatForJet"] = CatForJet.getParameter<string>("algo");
256  }
257  } else {
258  m_algoAutoSelect["CatForJet"] = false;
259  }
260 
261  if (CatTauJet.getParameter<bool>("monitor")) {
262  m_algoAutoSelect["TauJet"] = CatTauJet.getParameter<bool>("doAutoSelection");
263  if (!m_algoAutoSelect["TauJet"]) {
264  m_selectedTriggers["TauJet"] = CatTauJet.getParameter<string>("algo");
265  }
266  } else {
267  m_algoAutoSelect["TauJet"] = false;
268  }
269 
270  if (CatETM.getParameter<bool>("monitor")) {
271  m_algoAutoSelect["ETM"] = CatETM.getParameter<bool>("doAutoSelection");
272  if (!m_algoAutoSelect["ETM"]) {
273  m_selectedTriggers["ETM"] = CatETM.getParameter<string>("algo");
274  }
275  } else {
276  m_algoAutoSelect["ETM"] = false;
277  }
278 
279  if (CatETT.getParameter<bool>("monitor")) {
280  m_algoAutoSelect["ETT"] = CatETT.getParameter<bool>("doAutoSelection");
281  if (!m_algoAutoSelect["ETT"]) {
282  m_selectedTriggers["ETT"] = CatETT.getParameter<string>("algo");
283  }
284  } else {
285  m_algoAutoSelect["ETT"] = false;
286  }
287 
288  if (CatHTM.getParameter<bool>("monitor")) {
289  m_algoAutoSelect["HTM"] = CatHTM.getParameter<bool>("doAutoSelection");
290  if (!m_algoAutoSelect["HTM"]) {
291  m_selectedTriggers["HTM"] = CatHTM.getParameter<string>("algo");
292  }
293  } else {
294  m_algoAutoSelect["HTM"] = false;
295  }
296 
297  if (CatHTT.getParameter<bool>("monitor")) {
298  m_algoAutoSelect["HTT"] = CatHTT.getParameter<bool>("doAutoSelection");
299  if (!m_algoAutoSelect["HTT"]) {
300  m_selectedTriggers["HTT"] = CatHTT.getParameter<string>("algo");
301  }
302  } else {
303  m_algoAutoSelect["HTT"] = false;
304  }
305  }
306 }
L1GtUtils m_l1GtUtils
edm::ParameterSet m_parameters
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::map< std::string, bool > m_algoAutoSelect
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > m_l1GtDataDaqInputTag
std::map< std::string, std::string > m_selectedTriggers
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > m_l1GtEvmSource
L1TSync_Offline::~L1TSync_Offline ( )
override

Definition at line 310 of file L1TSync_Offline.cc.

310 {}

Member Function Documentation

void L1TSync_Offline::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprotected

Definition at line 405 of file L1TSync_Offline.cc.

References a, funct::abs(), L1TBeamConfiguration::beam1, L1TBeamConfiguration::beam2, L1GtfeExtWord::beamMode(), L1TBeamConfiguration::bxConfig(), gather_cfg::cout, ERROR_UNABLE_RETRIVE_PRODUCT, getBeamConfOffline(), edm::Event::getByToken(), edm::Event::getLuminosityBlock(), dqm::impl::MonitorElement::getTH1(), L1GlobalTriggerReadoutRecord::gtFdlVector(), L1GlobalTriggerEvmReadoutRecord::gtfeWord(), mps_fire::i, edm::LuminosityBlock::index(), L1TBeamConfiguration::isValid(), edm::HandleBase::isValid(), L1GtfeExtWord::lhcFillNumber(), m_algoBit, m_algoVsBunchStructure, m_beamConfig, m_ErrorMonitor, m_l1GtDataDaqInputTag, m_l1GtEvmSource, m_lhcFill, m_selectedTriggers, m_verbose, and STABLE.

405  {
406  if (m_verbose) {
407  cout << "[L1TSync_Offline] Called analyze." << endl;
408  }
409 
410  // We only start analyzing if current LS is still valid
411  auto& currentLSValid = luminosityBlockCache(iEvent.getLuminosityBlock().index())->lsIsValid;
412  if (currentLSValid) {
413  if (m_verbose) {
414  cout << "[L1TSync_Offline] -> currentLSValid=" << currentLSValid << endl;
415  }
416 
417  // Retriving information from GT
419  iEvent.getByToken(m_l1GtEvmSource, gtEvmReadoutRecord);
420 
421  // Determining beam mode and fill number
422  if (gtEvmReadoutRecord.isValid()) {
423  const L1GtfeExtWord& gtfeEvmWord = gtEvmReadoutRecord->gtfeWord();
424  unsigned int lhcBeamMode = gtfeEvmWord.beamMode(); // Updating beam mode
425 
426  if (m_lhcFill == 0) {
427  m_lhcFill = gtfeEvmWord.lhcFillNumber(); // Getting LHC Fill Number from GT
428 
429  //I AM HERE
430  getBeamConfOffline(iEvent); // Getting Beam Configuration from OMDS
431  // no OMDS //
432  /* (Savannah ticket https://savannah.cern.ch/task/?31857 )
433  Purged the OMDS helper from the module, since apparently we don't have access to that information from Offline.
434  The comparison with the closest BPTX trigger will be performed via conditions objects which are being implemented by Joao Pela.
435  In the meantime, for being able to test the module, he suggested to pass the correct bunch structure by hand for the specific run which is run during the test.
436  The idea of the temporary fix is setting the vector variable that stores the bunch structure either by hand or filling it with the BPTX fires (that is check for the event the BX's where tech0 fired and set those as true in the vector.
437  */
438  // no OMDS // m_beamConfig = myOMDSHelper.getBeamConfiguration(m_lhcFill,errorRetrieve); Yuhuuu!!!OB asked Joao Pela how to fetch that
439  }
440 
441  if (lhcBeamMode != STABLE) {
442  currentLSValid = false;
443  if (m_verbose) {
444  cout << "[L1TSync_Offline] -> currentLSValid=" << currentLSValid << "because beams mode not stable, being "
445  << lhcBeamMode << endl;
446  }
447  } // If Beams are not stable we invalidate this LS
448  } else {
449  int eCount = m_ErrorMonitor->getTH1()->GetBinContent(ERROR_UNABLE_RETRIVE_PRODUCT);
450  eCount++;
451  m_ErrorMonitor->getTH1()->SetBinContent(ERROR_UNABLE_RETRIVE_PRODUCT, eCount);
452  }
453  } else {
454  if (m_verbose) {
455  cout << "[L1TSync_Offline] -> currentLSValid=" << currentLSValid << endl;
456  }
457  }
458 
459  // Commenting out un-necessary print outs (S.Dutta)
460  /* for(size_t l=0; l<m_beamConfig.beam1.size(); l++){
461  cout << "Beam 1: element " << l << " is in state " << m_beamConfig.beam1[l] << " --- Beam 2: element " << l << " is in state " << m_beamConfig.beam2[l] << endl;
462  }*/
463  //------------------------------------------------------------------------------
464  // If current LS is valid and Beam Configuration is Valid we analyse this event
465  //------------------------------------------------------------------------------
466  if (currentLSValid && m_beamConfig.isValid()) {
467  // Getting Final Decision Logic (FDL) Data from GT
468  edm::Handle<L1GlobalTriggerReadoutRecord> gtReadoutRecordData;
469  iEvent.getByToken(m_l1GtDataDaqInputTag, gtReadoutRecordData);
470 
471  if (gtReadoutRecordData.isValid()) {
472  const vector<L1GtFdlWord>& gtFdlVectorData = gtReadoutRecordData->gtFdlVector();
473 
474  // Running over selected triggers
475  for (map<string, string>::const_iterator i = m_selectedTriggers.begin(); i != m_selectedTriggers.end(); i++) {
476  string tTrigger = (*i).second;
477 
478  // Analyse only defined triggers
479  if (tTrigger != "Undefined" && tTrigger != "Undefined (Wrong Name)") {
480  bool beamSingleConfig = false; // Single beam configured for this event
481  bool firedAlgo = false; // Algo fired in this event
482  unsigned int eventBx = ~0;
483 
484  // Running over FDL results to get which bits fired
485  for (unsigned int a = 0; a < gtFdlVectorData.size(); a++) {
486  // Selecting the FDL that triggered
487  if (gtFdlVectorData[a].bxInEvent() == 0) {
488  eventBx = gtFdlVectorData[a].localBxNr();
489  if (gtFdlVectorData[a].gtDecisionWord()[m_algoBit[tTrigger]]) {
490  firedAlgo = true;
491  }
492  }
493  }
494 
495  // Checking beam configuration
496  if (m_beamConfig.beam1.size() > eventBx && m_beamConfig.beam2.size() > eventBx) {
497  if (m_beamConfig.beam1[eventBx] && !m_beamConfig.beam2[eventBx]) {
498  beamSingleConfig = true;
499  }
500  if (!m_beamConfig.beam1[eventBx] && m_beamConfig.beam2[eventBx]) {
501  beamSingleConfig = true;
502  }
503  }
504  // Analyse only if this trigger fired in this event
505  // NOTE: Veto cases where a single beam is configured since
506  // for this cases this could be a real-satelite bunch collision
507  // -> Calculate the minimum bx diference between this event and a configured bx
508  if (firedAlgo && !beamSingleConfig) {
509  int DifAlgoVsBunchStructure = 9999; // Majorated
510 
511  for (unsigned int a = 0; a < gtFdlVectorData.size(); a++) {
512  int bxFDL = gtFdlVectorData[a].localBxNr();
513  int bxInEvent = gtFdlVectorData[a].bxInEvent();
514 
515  if (m_beamConfig.bxConfig(bxFDL) && abs(bxInEvent) < abs(DifAlgoVsBunchStructure)) {
516  DifAlgoVsBunchStructure = -1 * bxInEvent;
517  }
518  }
519 
520  m_algoVsBunchStructure[tTrigger]->Fill(0 /*m_currentLS*/, DifAlgoVsBunchStructure);
521  }
522  }
523  }
524  } else {
525  int eCount = m_ErrorMonitor->getTH1()->GetBinContent(ERROR_UNABLE_RETRIVE_PRODUCT);
526  eCount++;
527  m_ErrorMonitor->getTH1()->SetBinContent(ERROR_UNABLE_RETRIVE_PRODUCT, eCount);
528  }
529  }
530 }
void getBeamConfOffline(const edm::Event &)
MonitorElement * m_ErrorMonitor
const L1GtfeExtWord gtfeWord() const
get / set GTFE word (record) in the GT readout record
const std::vector< L1GtFdlWord > gtFdlVector() const
get the vector of L1GtFdlWord
int iEvent
Definition: GenABIO.cc:224
unsigned int m_lhcFill
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isValid() const
Definition: HandleBase.h:70
std::map< TString, int > m_algoBit
bool bxConfig(unsigned iBx)
std::map< TString, MonitorElement * > m_algoVsBunchStructure
std::vector< bool > beam2
const cms_uint32_t lhcFillNumber() const
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > m_l1GtDataDaqInputTag
double a
Definition: hdecay.h:119
std::map< std::string, std::string > m_selectedTriggers
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > m_l1GtEvmSource
std::vector< bool > beam1
const cms_uint16_t beamMode() const
L1TBeamConfiguration m_beamConfig
void L1TSync_Offline::bookHistograms ( DQMStore::IBooker ibooker,
const edm::Run iRun,
const edm::EventSetup iSetup 
)
overrideprotected

BeginRun.

Definition at line 318 of file L1TSync_Offline.cc.

References ecalcalib_dqm_sourceclient-live_cfg::algo, dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::book2D(), gather_cfg::cout, ERROR_LSBLOCK_NOTVALID, ERROR_TRIGGERALIAS_NOTVALID, ERROR_UNABLE_RETRIVE_PRODUCT, edm::EventSetup::get(), L1TMenuHelper::getLUSOTrigger(), L1GtTriggerMenu::gtAlgorithmAliasMap(), mps_fire::i, m_algoAutoSelect, m_algoBit, m_algoCertification, m_algoVsBunchStructure, m_certFirstLS, m_certLastLS, m_ErrorMonitor, m_l1GtUtils, m_lhcFill, m_refPrescaleSet, m_selectedTriggers, m_verbose, optionsL1T::menu, edm::ESHandle< T >::product(), L1GtUtils::retrieveL1EventSetup(), dqm::impl::MonitorElement::setBinLabel(), dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), L1TMenuHelper::testAlgos(), UNKNOWN, WARNING_DB_CONN_FAILED, WARNING_DB_INCORRECT_NBUNCHES, and WARNING_DB_QUERY_FAILED.

318  {
319  if (m_verbose) {
320  cout << "[L1TSync_Offline] Called beginRun." << endl;
321  }
322 
323  // Initializing variables
324  int maxNbins = 2501;
325 
326  // Reseting run dependent variables
327  m_lhcFill = 0;
328  m_certFirstLS.clear();
329  m_certLastLS.clear();
330 
331  // Getting Trigger menu from GT
333  iSetup.get<L1GtTriggerMenuRcd>().get(menuRcd);
334  const L1GtTriggerMenu* menu = menuRcd.product();
335 
336  // Filling Alias-Bit Map
337  for (CItAlgo algo = menu->gtAlgorithmAliasMap().begin(); algo != menu->gtAlgorithmAliasMap().end(); ++algo) {
338  m_algoBit[(algo->second).algoAlias()] = (algo->second).algoBitNumber();
339  }
340 
341  // Getting fill number for this run
342  //Handle<ConditionsInRunBlock> runConditions;
343  //iRun.getByType(runConditions);
344  //int lhcFillNumber = runConditions->lhcFillNumber;
345  //
346  //ESHandle<L1GtPrescaleFactors> l1GtPfAlgo;
347  //iSetup.get<L1GtPrescaleFactorsAlgoTrigRcd>().get(l1GtPfAlgo);
348  //const L1GtPrescaleFactors* m_l1GtPfAlgo = l1GtPfAlgo.product();
349 
350  L1TMenuHelper myMenuHelper = L1TMenuHelper(iSetup);
351 
353 
355  map<string, string> tAutoSelTrig = myMenuHelper.getLUSOTrigger(m_algoAutoSelect, m_refPrescaleSet, m_l1GtUtils);
356  m_selectedTriggers.insert(tAutoSelTrig.begin(), tAutoSelTrig.end());
357 
358  // Initializing DQM Monitor Elements
359  ibooker.setCurrentFolder("L1T/L1TSync");
360  m_ErrorMonitor = ibooker.book1D("ErrorMonitor", "ErrorMonitor", 7, 0, 7);
361  m_ErrorMonitor->setBinLabel(UNKNOWN, "UNKNOWN");
362  m_ErrorMonitor->setBinLabel(WARNING_DB_CONN_FAILED, "WARNING_DB_CONN_FAILED"); // Errors from L1TOMDSHelper
363  m_ErrorMonitor->setBinLabel(WARNING_DB_QUERY_FAILED, "WARNING_DB_QUERY_FAILED"); // Errors from L1TOMDSHelper
365  "WARNING_DB_INCORRECT_NBUNCHES"); // Errors from L1TOMDSHelper
366  m_ErrorMonitor->setBinLabel(ERROR_UNABLE_RETRIVE_PRODUCT, "ERROR_UNABLE_RETRIVE_PRODUCT");
367  m_ErrorMonitor->setBinLabel(ERROR_TRIGGERALIAS_NOTVALID, "ERROR_TRIGGERALIAS_NOTVALID");
368  m_ErrorMonitor->setBinLabel(ERROR_LSBLOCK_NOTVALID, "ERROR_LSBLOCK_NOTVALID");
369 
370  // Looping over selected triggers
371  for (map<string, string>::const_iterator i = m_selectedTriggers.begin(); i != m_selectedTriggers.end(); i++) {
372  string tCategory = (*i).first;
373  string tTrigger = (*i).second;
374 
375  // Initializing LS blocks for certification
376  m_certFirstLS[(*i).second] = 0;
377  m_certLastLS[(*i).second] = 0;
378 
379  // Initializing DQM Monitors
380  ibooker.setCurrentFolder("L1T/L1TSync/AlgoVsBunchStructure/");
381  m_algoVsBunchStructure[tTrigger] = ibooker.book2D(
382  tCategory, "min #Delta(" + tTrigger + ",Bunch)", maxNbins, -0.5, double(maxNbins) - 0.5, 5, -2.5, 2.5);
383  m_algoVsBunchStructure[tTrigger]->setAxisTitle("Lumi Section", 1);
384 
385  ibooker.setCurrentFolder("L1T/L1TSync/Certification/");
386  m_algoCertification[tTrigger] =
387  ibooker.book1D(tCategory, "fraction of in sync: " + tTrigger, maxNbins, -0.5, double(maxNbins) - 0.5);
388  m_algoCertification[tTrigger]->setAxisTitle("Lumi Section", 1);
389  }
390 }
MonitorElement * m_ErrorMonitor
std::map< TString, MonitorElement * > m_algoCertification
L1GtUtils m_l1GtUtils
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
unsigned int m_lhcFill
void retrieveL1EventSetup(const edm::EventSetup &)
retrieve all the relevant L1 trigger event setup records and cache them to improve the speed ...
Definition: L1GtUtils.cc:112
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
std::map< TString, int > m_algoBit
std::map< std::string, std::string > testAlgos(const std::map< std::string, std::string > &)
std::map< std::string, bool > m_algoAutoSelect
std::map< TString, MonitorElement * > m_algoVsBunchStructure
T get() const
Definition: EventSetup.h:73
std::map< std::string, std::string > m_selectedTriggers
std::map< TString, unsigned int > m_certFirstLS
const AlgorithmMap & gtAlgorithmAliasMap() const
get / set the algorithm map (by alias)
T const * product() const
Definition: ESHandle.h:86
std::map< TString, unsigned int > m_certLastLS
std::map< std::string, std::string > getLUSOTrigger(const std::map< std::string, bool > &iCategories, int IndexRefPrescaleFactors, L1GtUtils const &myUtils)
void L1TSync_Offline::dqmBeginRun ( const edm::Run ,
const edm::EventSetup  
)
overrideprotected

Definition at line 314 of file L1TSync_Offline.cc.

314 {}
void L1TSync_Offline::getBeamConfOffline ( const edm::Event iEvent)
private

Definition at line 537 of file L1TSync_Offline.cc.

References a, L1TBeamConfiguration::beam1, L1TBeamConfiguration::beam2, DEFINE_FWK_MODULE, edm::Event::getByToken(), L1GlobalTriggerReadoutRecord::gtFdlVector(), edm::HandleBase::isValid(), m_algoBit, m_beamConfig, m_l1GtDataDaqInputTag, m_selectedTriggers, and L1TBeamConfiguration::m_valid.

Referenced by analyze().

537  {
538  //Getting connection parameters
539  // [11:21:35] Pietro Vischia: pathCondDB and oracleDB are available in offline?
540  // [11:21:51] Joao Pela: no
541  // [11:21:56] Pietro Vischia: cool
542  // [11:21:58] Pietro Vischia: tks
543  // [11:22:00] Joao Pela: well
544  // [11:22:02] Joao Pela: maybe
545  // [11:22:05] Joao Pela: but assume no
546  // [11:22:22] Joao Pela: definitely assume no
547  // *** UPDATE: now we have a DB for Rate parameters, it would be useful to have s.th also for L1TSync
548 
549  // string oracleDB = m_parameters.getParameter<string>("oracleDB");
550  // string pathCondDB = m_parameters.getParameter<string>("pathCondDB");
551 
552  // m_beamConfig = myOMDSHelper.getBeamConfiguration(m_lhcFill,errorRetrieve);
553  // m_lhcFill -> lhcFillNumber
554  // errorRetrieve -> error
555  // m_beamConfig -> bConfig
556 
557  // No error codes at the moment. Taking info from BPTX fires
558  // int errorRetrieve = 0; // NO_ERROR;
559  m_beamConfig.m_valid = true;
560 
561  // bool beamSingleConfig = false; // Single beam configured for this event
562  bool firedAlgo = false; // Algo fired in this event
563  // int eventBx = -1;
564 
565  // Running over FDL results to get which bits fired for BPTX (temporary fix Savannah ticket https://savannah.cern.ch/task/?31857 )
566  // Getting Final Decision Logic (FDL) Data from GT
567  edm::Handle<L1GlobalTriggerReadoutRecord> gtReadoutRecordData;
568  iEvent.getByToken(m_l1GtDataDaqInputTag, gtReadoutRecordData);
569 
570  if (gtReadoutRecordData.isValid()) {
571  const vector<L1GtFdlWord>& gtFdlVectorData = gtReadoutRecordData->gtFdlVector();
572 
573  for (unsigned int a = 0; a < gtFdlVectorData.size(); a++) {
574  // Selecting the FDL that triggered
575  if (gtFdlVectorData[a].bxInEvent() == 0) {
576  //eventBx = gtFdlVectorData[a].localBxNr();
577  if (gtFdlVectorData[a].gtDecisionWord()[m_algoBit[m_selectedTriggers["BPTX"]]]) {
578  firedAlgo = true;
579  }
580  }
581 
582  // Fill beam status with BPTX fires
583  if (firedAlgo) {
584  m_beamConfig.beam1.push_back(true);
585  m_beamConfig.beam2.push_back(true);
586  } else {
587  m_beamConfig.beam1.push_back(false);
588  m_beamConfig.beam2.push_back(false);
589  }
590  // End fill beam status with BPTX fires
591  } // End loop on FDL
592  } // End if readout is valid
593 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
const std::vector< L1GtFdlWord > gtFdlVector() const
get the vector of L1GtFdlWord
bool isValid() const
Definition: HandleBase.h:70
std::map< TString, int > m_algoBit
std::vector< bool > beam2
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > m_l1GtDataDaqInputTag
double a
Definition: hdecay.h:119
std::map< std::string, std::string > m_selectedTriggers
std::vector< bool > beam1
L1TBeamConfiguration m_beamConfig
std::shared_ptr< ltso::LSValid > L1TSync_Offline::globalBeginLuminosityBlock ( edm::LuminosityBlock const &  lumiBlock,
edm::EventSetup const &  c 
) const
finalprotected

Definition at line 395 of file L1TSync_Offline.cc.

References gather_cfg::cout, and m_verbose.

396  {
397  if (m_verbose) {
398  cout << "[L1TSync_Offline] Called beginLuminosityBlock." << endl;
399  }
400 
401  return std::make_shared<ltso::LSValid>();
402 }
void L1TSync_Offline::globalEndLuminosityBlock ( edm::LuminosityBlock const &  lumiBlock,
edm::EventSetup const &  c 
)
inlinefinalprotected

Definition at line 114 of file L1TSync_Offline.h.

References bookHistograms().

114 {}

Member Data Documentation

const std::vector<std::vector<int> >* L1TSync_Offline::ListsPrescaleFactors
private

Definition at line 141 of file L1TSync_Offline.h.

std::map<std::string, bool> L1TSync_Offline::m_algoAutoSelect
private

Definition at line 149 of file L1TSync_Offline.h.

Referenced by bookHistograms(), and L1TSync_Offline().

std::map<TString, int> L1TSync_Offline::m_algoBit
private

Definition at line 144 of file L1TSync_Offline.h.

Referenced by analyze(), bookHistograms(), and getBeamConfOffline().

std::map<TString, MonitorElement*> L1TSync_Offline::m_algoCertification
private

Definition at line 147 of file L1TSync_Offline.h.

Referenced by bookHistograms().

std::map<TString, MonitorElement*> L1TSync_Offline::m_algoVsBunchStructure
private

Definition at line 148 of file L1TSync_Offline.h.

Referenced by analyze(), and bookHistograms().

L1TBeamConfiguration L1TSync_Offline::m_beamConfig
private

Definition at line 138 of file L1TSync_Offline.h.

Referenced by analyze(), and getBeamConfOffline().

std::map<TString, unsigned int> L1TSync_Offline::m_certFirstLS
private

Definition at line 145 of file L1TSync_Offline.h.

Referenced by bookHistograms().

std::map<TString, unsigned int> L1TSync_Offline::m_certLastLS
private

Definition at line 146 of file L1TSync_Offline.h.

Referenced by bookHistograms().

MonitorElement* L1TSync_Offline::m_ErrorMonitor
private

Definition at line 153 of file L1TSync_Offline.h.

Referenced by analyze(), and bookHistograms().

edm::EDGetTokenT<L1GlobalTriggerReadoutRecord> L1TSync_Offline::m_l1GtDataDaqInputTag
private

Definition at line 157 of file L1TSync_Offline.h.

Referenced by analyze(), getBeamConfOffline(), and L1TSync_Offline().

edm::EDGetTokenT<L1GlobalTriggerEvmReadoutRecord> L1TSync_Offline::m_l1GtEvmSource
private

Definition at line 156 of file L1TSync_Offline.h.

Referenced by analyze(), and L1TSync_Offline().

L1GtUtils L1TSync_Offline::m_l1GtUtils
private

Definition at line 159 of file L1TSync_Offline.h.

Referenced by bookHistograms().

unsigned int L1TSync_Offline::m_lhcFill
private

Definition at line 135 of file L1TSync_Offline.h.

Referenced by analyze(), and bookHistograms().

edm::ParameterSet L1TSync_Offline::m_parameters
private

Definition at line 127 of file L1TSync_Offline.h.

Referenced by L1TSync_Offline().

int L1TSync_Offline::m_refPrescaleSet
private

Definition at line 133 of file L1TSync_Offline.h.

Referenced by bookHistograms(), and L1TSync_Offline().

std::map<std::string, std::string> L1TSync_Offline::m_selectedTriggers
private

Definition at line 150 of file L1TSync_Offline.h.

Referenced by analyze(), bookHistograms(), getBeamConfOffline(), and L1TSync_Offline().

bool L1TSync_Offline::m_verbose
private