CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
L1TGlobalSummary Class Reference
Inheritance diagram for L1TGlobalSummary:
edm::one::EDAnalyzer< edm::one::WatchRuns > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginRun (Run const &, EventSetup const &) override
 
void endRun (Run const &, EventSetup const &) override
 
 L1TGlobalSummary (const edm::ParameterSet &)
 
 ~L1TGlobalSummary () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::WatchRuns >
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () 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
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Attributes

InputTag algInputTag_
 
EDGetToken algToken_
 
std::vector< int > decisionCount_
 
bool dumpRecord_
 
bool dumpTriggerResults_
 
bool dumpTriggerSummary_
 
InputTag extInputTag_
 
EDGetToken extToken_
 
std::vector< int > finalCount_
 
int finalOrCount
 
L1TGlobalUtilgtUtil_
 
std::vector< int > intermCount_
 
int maxBx_
 
int minBx_
 
bool readPrescalesFromFile_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 30 of file L1TGlobalSummary.cc.

Constructor & Destructor Documentation

◆ L1TGlobalSummary()

L1TGlobalSummary::L1TGlobalSummary ( const edm::ParameterSet iConfig)
explicit

Definition at line 58 of file L1TGlobalSummary.cc.

References edm::ParameterSet::getParameter(), l1t::Run, l1t::RunAndEvent, and AlCaHLTBitMon_QueryRunRegistry::string.

58  {
59  algInputTag_ = iConfig.getParameter<InputTag>("AlgInputTag");
60  extInputTag_ = iConfig.getParameter<InputTag>("ExtInputTag");
61  algToken_ = consumes<BXVector<GlobalAlgBlk>>(algInputTag_);
62  extToken_ = consumes<BXVector<GlobalExtBlk>>(extInputTag_);
63  dumpRecord_ = iConfig.getParameter<bool>("DumpRecord");
64  dumpTriggerResults_ = iConfig.getParameter<bool>("DumpTrigResults");
65  dumpTriggerSummary_ = iConfig.getParameter<bool>("DumpTrigSummary");
66  readPrescalesFromFile_ = iConfig.getParameter<bool>("ReadPrescalesFromFile");
67  minBx_ = iConfig.getParameter<int>("MinBx");
68  maxBx_ = iConfig.getParameter<int>("MaxBx");
71  useEventSetupIn = l1t::UseEventSetupIn::RunAndEvent;
72  }
73  gtUtil_ = new L1TGlobalUtil(iConfig, consumesCollector(), *this, algInputTag_, extInputTag_, useEventSetupIn);
74  finalOrCount = 0;
75 
77  std::string preScaleFileName = iConfig.getParameter<std::string>("psFileName");
78  unsigned int preScColumn = iConfig.getParameter<int>("psColumn");
79  gtUtil_->OverridePrescalesAndMasks(preScaleFileName, preScColumn);
80  }
81 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
void OverridePrescalesAndMasks(std::string filename, unsigned int psColumn=1.)
L1TGlobalUtil * gtUtil_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
UseEventSetupIn
Definition: L1TGlobalUtil.h:42

◆ ~L1TGlobalSummary()

L1TGlobalSummary::~L1TGlobalSummary ( )
inlineoverride

Definition at line 33 of file L1TGlobalSummary.cc.

33 {};

Member Function Documentation

◆ analyze()

void L1TGlobalSummary::analyze ( const edm::Event iEvent,
const edm::EventSetup evSetup 
)
overridevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 164 of file L1TGlobalSummary.cc.

References gather_cfg::cout, TauDecayModes::dec, edm::first(), mps_fire::i, iEvent, edm::HandleBase::isValid(), LogDebug, gpuClustering::pixelStatus::mask, Skims_PA_cff::name, hltrates_dqm_sourceclient-live_cfg::prescales, edm::second(), and AlCaHLTBitMon_QueryRunRegistry::string.

164  {
166  iEvent.getByToken(algToken_, alg);
167 
169  iEvent.getByToken(extToken_, ext);
170 
171  LogDebug("l1t|Global") << "retrieved L1 GT data blocks" << endl;
172 
174  //Fill the L1 result maps
175  gtUtil_->retrieveL1(iEvent, evSetup, algToken_);
176 
177  LogDebug("l1t|Global") << "retrieved L1 data from GT Util" << endl;
178 
179  // grab the map for the final decisions
180  const std::vector<std::pair<std::string, bool>> initialDecisions = gtUtil_->decisionsInitial();
181  const std::vector<std::pair<std::string, bool>> intermDecisions = gtUtil_->decisionsInterm();
182  const std::vector<std::pair<std::string, bool>> finalDecisions = gtUtil_->decisionsFinal();
183  const std::vector<std::pair<std::string, double>> prescales = gtUtil_->prescales();
184  const std::vector<std::pair<std::string, std::vector<int>>> masks = gtUtil_->masks();
185 
186  if ((decisionCount_.size() != gtUtil_->decisionsInitial().size()) ||
187  (intermCount_.size() != gtUtil_->decisionsInterm().size()) ||
188  (finalCount_.size() != gtUtil_->decisionsFinal().size())) {
189  LogError("l1t|Global") << "gtUtil sizes inconsistent across run." << endl;
190  return;
191  }
192 
193  if (dumpTriggerResults_) {
194  cout << "\n===================================== Trigger Results for BX=0 "
195  "=============================================\n"
196  << endl;
197  cout << " Bit Algorithm Name Init aBXM Final PS Factor Num Bx "
198  "Masked"
199  << endl;
200  cout << "========================================================================================================"
201  "===="
202  << endl;
203  }
204  for (unsigned int i = 0; i < initialDecisions.size(); i++) {
205  // get the name and trigger result
206  std::string name = (initialDecisions.at(i)).first;
207  if (name == "NULL")
208  continue;
209 
210  bool resultInit = (initialDecisions.at(i)).second;
211 
212  // get prescaled and final results (need some error checking here)
213  bool resultInterm = (intermDecisions.at(i)).second;
214  bool resultFin = (finalDecisions.at(i)).second;
215 
216  // get the prescale and mask (needs some error checking here)
217  double prescale = (prescales.at(i)).second;
218  std::vector<int> mask = (masks.at(i)).second;
219 
220  if (resultInit)
221  decisionCount_[i]++;
222  if (resultInterm)
223  intermCount_[i]++;
224  if (resultFin)
225  finalCount_[i]++;
226 
227  //cout << i << " " << decisionCount_[i] << "\n";
228 
229  if (dumpTriggerResults_) {
230  cout << std::dec << setfill(' ') << " " << setw(5) << i << " " << setw(40) << name.c_str() << " "
231  << setw(7) << resultInit << setw(7) << resultInterm << setw(7) << resultFin << setw(10) << prescale
232  << setw(11) << mask.size() << endl;
233  }
234  }
235  bool finOR = gtUtil_->getFinalOR();
236  if (finOR)
237  finalOrCount++;
238  if (dumpTriggerResults_) {
239  cout << " FinalOR = " << finOR << endl;
240  cout << "========================================================================================================"
241  "==="
242  << endl;
243  }
244  }
245 
246  if (dumpRecord_) {
247  //int i = 0; // now now just printing BX=0...
248  for (int i = minBx_; i <= maxBx_; i++) {
249  // Dump the coutput record
250  cout << " ------ Bx= " << i << " ext ----------" << endl;
251  if (ext.isValid()) {
252  if (i >= ext->getFirstBX() && i <= ext->getLastBX()) {
253  for (std::vector<GlobalExtBlk>::const_iterator extBlk = ext->begin(i); extBlk != ext->end(i); ++extBlk) {
254  extBlk->print(cout);
255  cout << std::dec;
256  }
257  } else {
258  cout << "No Ext Conditions stored for this bx " << i << endl;
259  }
260  } else {
261  LogError("L1TGlobalSummary") << "No ext Data in this event " << endl;
262  }
263 
264  // Dump the coutput record
265  cout << " ------ Bx= " << i << " alg ----------" << endl;
266  if (alg.isValid()) {
267  if (i >= alg->getFirstBX() && i <= alg->getLastBX()) {
268  for (std::vector<GlobalAlgBlk>::const_iterator algBlk = alg->begin(i); algBlk != alg->end(i); ++algBlk) {
269  algBlk->print(cout);
270  cout << std::dec;
271  }
272  } else {
273  cout << "No Alg Decisions stored for this bx " << i << endl;
274  }
275  } else {
276  LogError("L1TGlobalSummary") << "No alg Data in this event " << endl;
277  }
278  }
279  }
280 }
bool getFinalOR() const
const std::vector< std::pair< std::string, double > > & prescales()
L1TGlobalUtil * gtUtil_
Log< level::Error, false > LogError
constexpr uint32_t mask
Definition: gpuClustering.h:26
U second(std::pair< T, U > const &p)
int iEvent
Definition: GenABIO.cc:224
const std::vector< std::pair< std::string, bool > > & decisionsInterm()
std::vector< int > finalCount_
const std::vector< std::pair< std::string, bool > > & decisionsInitial()
std::vector< int > decisionCount_
bool isValid() const
Definition: HandleBase.h:70
const std::vector< std::pair< std::string, bool > > & decisionsFinal()
const std::vector< std::pair< std::string, std::vector< int > > > & masks()
Definition: memstream.h:15
std::vector< int > intermCount_
void retrieveL1(const edm::Event &iEvent, const edm::EventSetup &evSetup)
initialize the class (mainly reserve)
#define LogDebug(id)

◆ beginRun()

void L1TGlobalSummary::beginRun ( Run const &  ,
EventSetup const &  evSetup 
)
override

Definition at line 104 of file L1TGlobalSummary.cc.

References ntuplemaker::fill.

104  {
105  decisionCount_.clear();
106  intermCount_.clear();
107  finalCount_.clear();
108 
109  finalOrCount = 0;
110  gtUtil_->retrieveL1Setup(evSetup);
111 
112  int size = gtUtil_->decisionsInitial().size();
113  decisionCount_.resize(size);
114  intermCount_.resize(size);
115  finalCount_.resize(size);
116  std::fill(decisionCount_.begin(), decisionCount_.end(), 0);
117  std::fill(intermCount_.begin(), intermCount_.end(), 0);
118  std::fill(finalCount_.begin(), finalCount_.end(), 0);
119 }
size
Write out results.
L1TGlobalUtil * gtUtil_
std::vector< int > finalCount_
const std::vector< std::pair< std::string, bool > > & decisionsInitial()
std::vector< int > decisionCount_
void retrieveL1Setup(const edm::EventSetup &evSetup)
std::vector< int > intermCount_

◆ endRun()

void L1TGlobalSummary::endRun ( Run const &  ,
EventSetup const &   
)
override

Definition at line 121 of file L1TGlobalSummary.cc.

References TauDecayModes::dec, mps_fire::i, gpuClustering::pixelStatus::mask, Skims_PA_cff::name, MillePedeFileConverter_cfg::out, and hltrates_dqm_sourceclient-live_cfg::prescales.

121  {
122  if (dumpTriggerSummary_) {
123  LogVerbatim out("L1TGlobalSummary");
124  if (gtUtil_->valid()) {
125  out << "================== L1 Trigger Report "
126  "=====================================================================\n";
127  out << '\n';
128  out << " L1T menu Name : " << gtUtil_->gtTriggerMenuName() << '\n';
129  out << " L1T menu Version: " << gtUtil_->gtTriggerMenuVersion() << '\n';
130  out << " L1T menu Comment: " << gtUtil_->gtTriggerMenuComment() << '\n';
131  out << '\n';
132  out << " Bit Algorithm Name Init PScd Final PS Factor Num Bx "
133  "Masked\n";
134  out << "========================================================================================================="
135  "===\n";
136  auto const& prescales = gtUtil_->prescales();
137  auto const& masks = gtUtil_->masks();
138  for (unsigned int i = 0; i < prescales.size(); i++) {
139  // get the prescale and mask (needs some error checking here)
140  int resultInit = decisionCount_[i];
141  int resultPre = intermCount_[i];
142  int resultFin = finalCount_[i];
143 
144  auto const& name = prescales.at(i).first;
145  if (name != "NULL") {
146  double prescale = prescales.at(i).second;
147  auto const& mask = masks.at(i).second;
148  out << std::dec << setfill(' ') << " " << setw(5) << i << " " << setw(40) << name << " " << setw(7)
149  << resultInit << setw(7) << resultPre << setw(7) << resultFin << setw(10) << prescale << setw(11)
150  << mask.size() << '\n';
151  }
152  }
153  out << " Final OR Count = " << finalOrCount << '\n';
154  out << "========================================================================================================="
155  "===\n";
156  } else {
157  out << "================== No Level-1 Trigger menu "
158  "===============================================================\n";
159  }
160  }
161 }
const std::vector< std::pair< std::string, double > > & prescales()
L1TGlobalUtil * gtUtil_
const std::string & gtTriggerMenuName() const
constexpr uint32_t mask
Definition: gpuClustering.h:26
const std::string & gtTriggerMenuComment() const
std::vector< int > finalCount_
std::vector< int > decisionCount_
const std::string & gtTriggerMenuVersion() const
bool valid() const
check that the L1TGlobalUtil has been properly initialised
const std::vector< std::pair< std::string, std::vector< int > > > & masks()
std::vector< int > intermCount_

◆ fillDescriptions()

void L1TGlobalSummary::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 83 of file L1TGlobalSummary.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, ProducerED_cfi::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

83  {
85  // These parameters are part of the L1T/HLT interface, avoid changing if possible::
86  desc.add<edm::InputTag>("AlgInputTag", edm::InputTag(""))
87  ->setComment("InputTag for uGT Algorithm Block (required parameter: default value is invalid)");
88  desc.add<edm::InputTag>("ExtInputTag", edm::InputTag(""))
89  ->setComment("InputTag for uGT External Block (required parameter: default value is invalid)");
90  // These parameters have well defined default values and are not currently
91  // part of the L1T/HLT interface. They can be cleaned up or updated at will:
92  desc.add<int>("MinBx", 0);
93  desc.add<int>("MaxBx", 0);
94  desc.add<bool>("DumpTrigResults", false);
95  desc.add<bool>("DumpRecord", false);
96  desc.add<bool>("DumpTrigSummary", true);
97  desc.add<bool>("ReadPrescalesFromFile", false);
98  desc.add<std::string>("psFileName", "prescale_L1TGlobal.csv")
99  ->setComment("File should be located in directory: L1Trigger/L1TGlobal/data/Luminosity/startup");
100  desc.add<int>("psColumn", 0);
101  descriptions.add("L1TGlobalSummary", desc);
102 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

◆ algInputTag_

InputTag L1TGlobalSummary::algInputTag_
private

Definition at line 40 of file L1TGlobalSummary.cc.

◆ algToken_

EDGetToken L1TGlobalSummary::algToken_
private

Definition at line 42 of file L1TGlobalSummary.cc.

◆ decisionCount_

std::vector<int> L1TGlobalSummary::decisionCount_
private

Definition at line 52 of file L1TGlobalSummary.cc.

◆ dumpRecord_

bool L1TGlobalSummary::dumpRecord_
private

Definition at line 44 of file L1TGlobalSummary.cc.

◆ dumpTriggerResults_

bool L1TGlobalSummary::dumpTriggerResults_
private

Definition at line 45 of file L1TGlobalSummary.cc.

◆ dumpTriggerSummary_

bool L1TGlobalSummary::dumpTriggerSummary_
private

Definition at line 46 of file L1TGlobalSummary.cc.

◆ extInputTag_

InputTag L1TGlobalSummary::extInputTag_
private

Definition at line 41 of file L1TGlobalSummary.cc.

◆ extToken_

EDGetToken L1TGlobalSummary::extToken_
private

Definition at line 43 of file L1TGlobalSummary.cc.

◆ finalCount_

std::vector<int> L1TGlobalSummary::finalCount_
private

Definition at line 54 of file L1TGlobalSummary.cc.

◆ finalOrCount

int L1TGlobalSummary::finalOrCount
private

Definition at line 55 of file L1TGlobalSummary.cc.

◆ gtUtil_

L1TGlobalUtil* L1TGlobalSummary::gtUtil_
private

Definition at line 50 of file L1TGlobalSummary.cc.

◆ intermCount_

std::vector<int> L1TGlobalSummary::intermCount_
private

Definition at line 53 of file L1TGlobalSummary.cc.

◆ maxBx_

int L1TGlobalSummary::maxBx_
private

Definition at line 49 of file L1TGlobalSummary.cc.

◆ minBx_

int L1TGlobalSummary::minBx_
private

Definition at line 48 of file L1TGlobalSummary.cc.

◆ readPrescalesFromFile_

bool L1TGlobalSummary::readPrescalesFromFile_
private

Definition at line 47 of file L1TGlobalSummary.cc.