CMS 3D CMS Logo

HLTPrescaler.cc
Go to the documentation of this file.
1 //
3 // HLTPrescaler
4 // ------------
5 //
6 // 04/25/2008 Philipp Schieferdecker <philipp.schieferdecker@cern.ch>
8 
18 
20 // initialize static member variables
22 
23 const unsigned int HLTPrescaler::prescaleSeed_ = 65537;
24 
26 // construction/destruction
28 
29 //_____________________________________________________________________________
31  : prescaleSet_(0),
32  prescaleFactor_(1),
33  eventCount_(0),
34  acceptCount_(0),
35  offsetCount_(0),
36  offsetPhase_(iConfig.getParameter<unsigned int>("offset")),
37  prescaleService_(nullptr),
38  newLumi_(true),
39  gtDigiTag_(iConfig.getParameter<edm::InputTag>("L1GtReadoutRecordTag")),
40  gtDigi1Token_(consumes<L1GlobalTriggerReadoutRecord>(gtDigiTag_)),
41  gtDigi2Token_(consumes<GlobalAlgBlkBxCollection>(gtDigiTag_)) {
44  else
45  LogDebug("NoPrescaleService") << "PrescaleService unavailable, prescaleFactor=1!";
46 }
47 
48 //_____________________________________________________________________________
49 HLTPrescaler::~HLTPrescaler() = default;
50 
52 // implementation of member functions
54 
57  desc.add<unsigned int>("offset", 0);
58  desc.add<edm::InputTag>("L1GtReadoutRecordTag", edm::InputTag("hltGtStage2Digis"));
59  descriptions.add("hltPrescaler", desc);
60 }
61 
62 //______________________________________________________________________________
64  newLumi_ = true;
65 }
66 
67 //_____________________________________________________________________________
69  // during the first event of a LumiSection, read from the GT the prescale index for this
70  // LumiSection and get the corresponding prescale factor from the PrescaleService
71  if (newLumi_) {
72  newLumi_ = false;
73 
74  bool needsInit(eventCount_ == 0);
75 
76  if (prescaleService_) {
77  std::string const& pathName = iEvent.moduleCallingContext()->placeInPathContext()->pathContext()->pathName();
78  const unsigned int oldSet(prescaleSet_);
79  const unsigned int oldPrescale(prescaleFactor_);
80 
82  iEvent.getByToken(gtDigi2Token_, handle2);
83  if (handle2.isValid()) {
84  if (handle2->begin(0) != handle2->end(0)) {
85  prescaleSet_ = static_cast<unsigned int>(handle2->begin(0)->getPreScColumn());
87  } else {
88  edm::LogWarning("HLT")
89  << "Cannot read prescale column index from GT2 data: using default as defined by configuration or DAQ";
91  }
92  } else {
94  iEvent.getByToken(gtDigi1Token_, handle1);
95  if (handle1.isValid()) {
97  // gtPrescaleFactorIndexTech() is also available
98  // by construction, they should always return the same index
100  } else {
101  edm::LogWarning("HLT")
102  << "Cannot read prescale column index from GT1 data: using default as defined by configuration or DAQ";
104  }
105  }
106 
107  if (prescaleSet_ != oldSet) {
108  edm::LogInfo("ChangedPrescale") << "lumiBlockNb = " << iEvent.getLuminosityBlock().id().luminosityBlock()
109  << ", set = " << prescaleSet_ << " [" << oldSet << "]"
110  << ", path = " << pathName << ": " << prescaleFactor_ << " [" << oldPrescale
111  << "]";
112  // reset the prescale counter
113  needsInit = true;
114  }
115  }
116 
117  if (needsInit && (prescaleFactor_ != 0)) {
118  // initialize the prescale counter to the first event number multiplied by a big "seed"
120  }
121  }
122 
123  const bool result((prescaleFactor_ == 0) ? false : ((eventCount_ + offsetCount_) % prescaleFactor_ == 0));
124 
125  ++eventCount_;
126  if (result)
127  ++acceptCount_;
128  return result;
129 }
130 
131 //_____________________________________________________________________________
133  //since these are std::atomic, it is safe to increment them
134  // even if multiple endStreams are being called.
135  globalCache()->eventCount_ += eventCount_;
136  globalCache()->acceptCount_ += acceptCount_;
137  return;
138 }
139 
140 //_____________________________________________________________________________
142  unsigned int accept(efficiency->acceptCount_);
143  unsigned int event(efficiency->eventCount_);
144  edm::LogInfo("PrescaleSummary") << accept << "/" << event << " ("
145  << 100. * accept / static_cast<double>(std::max(1u, event))
146  << "% of events accepted).";
147  return;
148 }
149 
ConfigurationDescriptions.h
HLTPrescaler::gtDigi2Token_
edm::EDGetTokenT< GlobalAlgBlkBxCollection > gtDigi2Token_
Definition: HLTPrescaler.h:91
HLTPrescaler::newLumi_
bool newLumi_
check for (re)initialization of the prescale
Definition: HLTPrescaler.h:86
ModuleCallingContext.h
HLTPrescaler::endStream
void endStream() override
Definition: HLTPrescaler.cc:132
MessageLogger.h
edm::service::PrescaleService::getPrescale
unsigned int getPrescale(std::string const &prescaledPath) const
Definition: PrescaleService.cc:133
L1GtFdlWord::gtPrescaleFactorIndexAlgo
const cms_uint16_t gtPrescaleFactorIndexAlgo() const
Definition: L1GtFdlWord.h:195
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
HLTPrescaler.h
PlaceInPathContext.h
LuminosityBlock.h
edm
HLT enums.
Definition: AlignableModifier.h:19
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
TriggerFilterObjectWithRefs.h
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
L1TObjectsTimingClient_cff.efficiency
efficiency
Definition: L1TObjectsTimingClient_cff.py:10
edm::Handle
Definition: AssociativeIterator.h:50
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
HLTPrescaler::prescaleSet_
unsigned int prescaleSet_
l1 prescale set index
Definition: HLTPrescaler.h:67
L1GlobalTriggerReadoutRecord
Definition: L1GlobalTriggerReadoutRecord.h:46
BXVector
Definition: BXVector.h:15
HLTPrescaler::acceptCount_
unsigned int acceptCount_
accept counter
Definition: HLTPrescaler.h:76
accept
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:31
MakerMacros.h
HLTPrescaler::offsetPhase_
unsigned int offsetPhase_
Definition: HLTPrescaler.h:80
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
hltMonBTagIPClient_cfi.pathName
pathName
Definition: hltMonBTagIPClient_cfi.py:5
Service.h
HLTPrescaler::globalEndJob
static void globalEndJob(const trigger::Efficiency *efficiency)
Definition: HLTPrescaler.cc:141
HLTPrescaler::prescaleService_
edm::service::PrescaleService * prescaleService_
prescale service
Definition: HLTPrescaler.h:83
HLTPrescaler::gtDigi1Token_
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > gtDigi1Token_
Definition: HLTPrescaler.h:90
BXVector::begin
const_iterator begin(int bx) const
eventCount_
example_stream int eventCount_
Definition: DQMEDAnalyzer.cc:66
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
funct::true
true
Definition: Factorize.h:173
HLTPrescaler::HLTPrescaler
HLTPrescaler(edm::ParameterSet const &iConfig, const trigger::Efficiency *efficiency)
Definition: HLTPrescaler.cc:30
BXVector::end
const_iterator end(int bx) const
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
trigger::Efficiency
Definition: HLTPrescaler.h:33
HLTPrescaler::prescaleSeed_
static const unsigned int prescaleSeed_
"seed" used to initialize the prescale counter
Definition: HLTPrescaler.h:94
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
HLTPrescaler::~HLTPrescaler
~HLTPrescaler() override
edmPickEvents.event
event
Definition: edmPickEvents.py:273
edm::Service
Definition: Service.h:30
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
HLTPrescaler::beginLuminosityBlock
void beginLuminosityBlock(edm::LuminosityBlock const &lb, edm::EventSetup const &iSetup) override
Definition: HLTPrescaler.cc:63
edm::EventSetup
Definition: EventSetup.h:58
PathContext.h
HLTPrescaler::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: HLTPrescaler.cc:55
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
HLTPrescaler::filter
bool filter(edm::Event &iEvent, edm::EventSetup const &iSetup) override
Definition: HLTPrescaler.cc:68
HLTPrescaler
Definition: HLTPrescaler.h:40
cond::uint64_t
unsigned long long uint64_t
Definition: Time.h:13
mps_fire.result
result
Definition: mps_fire.py:311
HLTPrescaler::eventCount_
unsigned int eventCount_
event counter
Definition: HLTPrescaler.h:73
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
HLTPrescaler::offsetCount_
unsigned int offsetCount_
initial offset
Definition: HLTPrescaler.h:79
L1GlobalTriggerReadoutRecord::gtFdlWord
const L1GtFdlWord gtFdlWord(int bxInEventValue) const
get / set FDL word (record) in the GT readout record
Definition: L1GlobalTriggerReadoutRecord.cc:372
edm::InputTag
Definition: InputTag.h:15
HLTPrescaler::prescaleFactor_
unsigned int prescaleFactor_
accept one in prescaleFactor_; 0 means never to accept an event
Definition: HLTPrescaler.h:70