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
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () 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
 
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)
 
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)
 
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 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)
 

Detailed Description

Definition at line 32 of file L1TGlobalSummary.cc.

Constructor & Destructor Documentation

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

Definition at line 60 of file L1TGlobalSummary.cc.

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

60  {
61  algInputTag_ = iConfig.getParameter<InputTag>("AlgInputTag");
62  extInputTag_ = iConfig.getParameter<InputTag>("ExtInputTag");
63  algToken_ = consumes<BXVector<GlobalAlgBlk>>(algInputTag_);
64  extToken_ = consumes<BXVector<GlobalExtBlk>>(extInputTag_);
65  dumpRecord_ = iConfig.getParameter<bool>("DumpRecord");
66  dumpTriggerResults_ = iConfig.getParameter<bool>("DumpTrigResults");
67  dumpTriggerSummary_ = iConfig.getParameter<bool>("DumpTrigSummary");
68  readPrescalesFromFile_ = iConfig.getParameter<bool>("ReadPrescalesFromFile");
69  minBx_ = iConfig.getParameter<int>("MinBx");
70  maxBx_ = iConfig.getParameter<int>("MaxBx");
71  gtUtil_ = new L1TGlobalUtil(iConfig, consumesCollector(), *this, algInputTag_, extInputTag_);
72  finalOrCount = 0;
73 
74  if (readPrescalesFromFile_){
75  std::string preScaleFileName = iConfig.getParameter<std::string>("psFileName");
76  unsigned int preScColumn = iConfig.getParameter<int>("psColumn");
77  gtUtil_ ->OverridePrescalesAndMasks(preScaleFileName,preScColumn);
78  }
79 
80 }
T getParameter(std::string const &) const
L1TGlobalUtil * gtUtil_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
L1TGlobalSummary::~L1TGlobalSummary ( )
inlineoverride

Definition at line 35 of file L1TGlobalSummary.cc.

References analyze(), Ecal2004TBTDCRanges_v1_cff::endRun, and fillDescriptions().

35 {};

Member Function Documentation

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

Definition at line 155 of file L1TGlobalSummary.cc.

References gather_cfg::cout, TauDecayModes::dec, DEFINE_FWK_MODULE, edm::first(), edm::Event::getByToken(), mps_fire::i, edm::HandleBase::isValid(), LogDebug, RecoTauDiscriminantConfiguration::mask, masks, dataset::name, edm::second(), and AlCaHLTBitMon_QueryRunRegistry::string.

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

Definition at line 100 of file L1TGlobalSummary.cc.

References lumiContext::fill, and findQualityFiles::size.

100  {
101  decisionCount_.clear();
102  intermCount_.clear();
103  finalCount_.clear();
104 
105  finalOrCount = 0;
106  gtUtil_->retrieveL1Setup(evSetup);
107 
108  int size = gtUtil_->decisionsInitial().size();
109  decisionCount_.resize(size);
110  intermCount_ .resize(size);
111  finalCount_ .resize(size);
112  std::fill(decisionCount_.begin(), decisionCount_.end(), 0);
113  std::fill(intermCount_.begin(), intermCount_.end(), 0);
114  std::fill(finalCount_.begin(), finalCount_.end(), 0);
115 }
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_
void L1TGlobalSummary::endRun ( Run const &  ,
EventSetup const &   
)
override

Definition at line 117 of file L1TGlobalSummary.cc.

References TauDecayModes::dec, mps_fire::i, RecoTauDiscriminantConfiguration::mask, masks, dataset::name, and MillePedeFileConverter_cfg::out.

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

Definition at line 82 of file L1TGlobalSummary.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and AlCaHLTBitMon_QueryRunRegistry::string.

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

Member Data Documentation

InputTag L1TGlobalSummary::algInputTag_
private

Definition at line 42 of file L1TGlobalSummary.cc.

EDGetToken L1TGlobalSummary::algToken_
private

Definition at line 44 of file L1TGlobalSummary.cc.

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

Definition at line 54 of file L1TGlobalSummary.cc.

bool L1TGlobalSummary::dumpRecord_
private

Definition at line 46 of file L1TGlobalSummary.cc.

bool L1TGlobalSummary::dumpTriggerResults_
private

Definition at line 47 of file L1TGlobalSummary.cc.

bool L1TGlobalSummary::dumpTriggerSummary_
private

Definition at line 48 of file L1TGlobalSummary.cc.

InputTag L1TGlobalSummary::extInputTag_
private

Definition at line 43 of file L1TGlobalSummary.cc.

EDGetToken L1TGlobalSummary::extToken_
private

Definition at line 45 of file L1TGlobalSummary.cc.

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

Definition at line 56 of file L1TGlobalSummary.cc.

int L1TGlobalSummary::finalOrCount
private

Definition at line 57 of file L1TGlobalSummary.cc.

L1TGlobalUtil* L1TGlobalSummary::gtUtil_
private

Definition at line 52 of file L1TGlobalSummary.cc.

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

Definition at line 55 of file L1TGlobalSummary.cc.

int L1TGlobalSummary::maxBx_
private

Definition at line 51 of file L1TGlobalSummary.cc.

int L1TGlobalSummary::minBx_
private

Definition at line 50 of file L1TGlobalSummary.cc.

bool L1TGlobalSummary::readPrescalesFromFile_
private

Definition at line 49 of file L1TGlobalSummary.cc.