ATLAS Offline Software
MTCalibPebHypoTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Trigger includes
6 #include "MTCalibPebHypoTool.h"
7 #include "TrigPartialEventBuilding/PEBInfoWriterToolBase.h" // Defines the PEBInfo keys expected by StreamTagMakerTool
8 
9 // Athena includes
10 #include "AthenaKernel/Timeout.h"
12 
13 // System includes
14 #include <random>
15 #include <thread>
16 #include <sstream>
17 #include <algorithm>
18 
19 // Local implementation-specific helper methods
20 namespace {
21  using rng_t = std::mt19937_64;
22  using seed_t = rng_t::result_type;
24  seed_t eventSeed(const EventIDBase& eventID, const std::string& name) {
25  uint64_t evtNum = eventID.event_number();
26  uint64_t runNum = eventID.run_number();
27  uint64_t nameHash = std::hash<std::string>{}(name);
28  uint64_t seed = evtNum ^ (runNum << 10) ^ nameHash;
29  return static_cast<seed_t>(seed);
30  }
32  rng_t& threadLocalGenerator() {
33  static thread_local std::random_device rd; // used only to ensure different seeds for mt19937
34  static thread_local rng_t generator(rd());
35  return generator;
36  }
38  template<typename T> T randomRealNumber(const T min, const T max) {
39  std::uniform_real_distribution<T> distribution(min, max);
40  return distribution(threadLocalGenerator());
41  }
43  template<typename T> T randomInteger(const T min, const T max) {
44  std::uniform_int_distribution<T> distribution(min, max);
45  return distribution(threadLocalGenerator());
46  }
48  bool randomAccept(const double acceptRate) {
49  return (randomRealNumber(0.0, 1.0) < acceptRate);
50  }
53  std::string format(const IROBDataProviderSvc::VROBFRAG& robFragments) {
54  std::ostringstream ss;
55  for (const IROBDataProviderSvc::ROBF* robf : robFragments) {
56  ss << "---> ROB ID = 0x" << std::hex << robf->rob_source_id() << std::dec << std::endl
57  << " ROD ID = 0x" << std::hex << robf->rod_source_id() << std::dec << std::endl
58  << " ROD Level-1 ID = " << robf->rod_lvl1_id() << std::endl;
59  }
60  return ss.str();
61  }
63  template<typename Container>
64  const std::string idsToString(const Container& ids) {
65  std::ostringstream str;
66  for (const uint32_t id : ids)
67  str << "0x" << std::hex << id << std::dec << " ";
68  return str.str();
69  }
71  StatusCode appendPEBInfo(TrigCompositeUtils::Decision* decision,
72  std::set<uint32_t> robIDsToAdd,
73  std::set<uint32_t> subDetIDsToAdd) {
74  // Merge with previous ROBs
75  std::vector<uint32_t> previousRobs;
76  if (decision->getDetail(PEBInfoWriterToolBase::robListKey(), previousRobs)) {
77  robIDsToAdd.insert(previousRobs.begin(), previousRobs.end());
78  }
79 
80  // Merge with previous SubDets
81  std::vector<uint32_t> previousSubDets;
82  if (decision->getDetail(PEBInfoWriterToolBase::subDetListKey(), previousSubDets)) {
83  subDetIDsToAdd.insert(previousSubDets.begin(), previousSubDets.end());
84  }
85 
86  // Attach the PEB Info to the decision
87  std::vector<uint32_t> robVec(robIDsToAdd.begin(), robIDsToAdd.end());
88  if (not decision->setDetail(PEBInfoWriterToolBase::robListKey(), robVec)) {
89  return StatusCode::FAILURE;
90  }
91  std::vector<uint32_t> subDetVec(subDetIDsToAdd.begin(), subDetIDsToAdd.end());
92  if (not decision->setDetail(PEBInfoWriterToolBase::subDetListKey(), subDetVec)) {
93  return StatusCode::FAILURE;
94  }
95  return StatusCode::SUCCESS;
96  }
98  void fillRandomData(xAOD::TrigCompositeContainer& data, unsigned int maxElements) {
99  unsigned int nObjects = randomInteger<unsigned int>(0, maxElements);
100  for (unsigned int iObj=0; iObj<nObjects; ++iObj) {
102  data.push_back(object);
103  object->setName(std::string("object_")+std::to_string(iObj));
104  unsigned int nAuxDataVec = randomInteger<unsigned int>(0, maxElements);
105  for (unsigned int iAuxDataVec=0; iAuxDataVec<nAuxDataVec; ++iAuxDataVec) {
106  xAOD::TrigComposite::Accessor<std::vector<float>> floatVec(std::string("floatVec_")+std::to_string(iAuxDataVec));
107  unsigned int nValues = randomInteger<unsigned int>(0, maxElements);
108  std::vector<float> values;
109  for (unsigned int iValue=0; iValue<nValues; ++iValue) values.push_back( randomRealNumber<float>(0,1) );
110  floatVec(*object) = values;
111  }
112  }
113  }
114 }
115 
116 // =============================================================================
117 // Standard constructor
118 // =============================================================================
119 MTCalibPebHypoTool::MTCalibPebHypoTool(const std::string& type, const std::string& name, const IInterface* parent)
121  m_decisionId (HLT::Identifier::fromToolName(name)) {}
122 
123 // =============================================================================
124 // Standard destructor
125 // =============================================================================
127 
128 // =============================================================================
129 // Implementation of AthAlgTool::initialize
130 // =============================================================================
132  ATH_MSG_INFO("Initialising " << name());
133  ATH_CHECK(m_robDataProviderSvc.retrieve());
134  if (m_doCrunch) ATH_CHECK(m_cpuCrunchSvc.retrieve());
135 
136  // Copy keys from map<string,uint> to WriteHandleKeyArray
138  m_createRandomData.end(),
139  std::back_inserter(m_randomDataWHK),
140  [](const auto& p){return p.first;});
141  ATH_CHECK(m_randomDataWHK.initialize());
142 
143  // Parse and print the ROB request dictionary
144  for (const auto& [instrString,robVec] : m_robAccessDictProp.value()) {
145  m_robAccessDict.emplace_back(ROBRequestInstruction(instrString),robVec);
146  if (m_robAccessDict.back().first.type==ROBRequestInstruction::Type::INVALID) {
147  ATH_MSG_ERROR("Invalid instruction " << instrString);
148  return StatusCode::FAILURE;
149  }
150  }
151  if (msgLvl(MSG::DEBUG)) {
152  if (!m_robAccessDict.empty()) {
153  ATH_MSG_DEBUG(name() << " will execute the following ROB request instructions:");
154  for (const auto& [instr,robVec] : m_robAccessDict) {
155  ATH_MSG_DEBUG("---> Instruction : " << instr.toString());
156  ATH_MSG_DEBUG(" ROB list : " << idsToString(robVec));
157  }
158  }
159  ATH_MSG_DEBUG(name() << " PEBROBList = [" << idsToString(m_pebRobList) << "]");
160  ATH_MSG_DEBUG(name() << " PEBSubDetList = [" << idsToString(m_pebSubDetList) << "]");
161  }
162 
163  return StatusCode::SUCCESS;
164 }
165 
166 // =============================================================================
167 // Implementation of AthAlgTool::finalize
168 // =============================================================================
170  ATH_MSG_INFO("Finalising " << name());
171  ATH_CHECK(m_robDataProviderSvc.release());
172  ATH_CHECK(m_randomDataWHK.initialize());
173  return StatusCode::SUCCESS;
174 }
175 
176 // =============================================================================
178  // Re-seed the static thread-local RNG
179  if (not m_useRandomSeed.value()) {
180  const seed_t seed = eventSeed(input.eventContext.eventID(), name());
181  ATH_MSG_DEBUG("Using seed " << seed << " for event " << input.eventContext.eventID());
182  threadLocalGenerator().seed(seed);
183  }
184 
185  // ---------------------------------------------------------------------------
186  // Burn CPU time
187  // ---------------------------------------------------------------------------
188  for (unsigned int iCycle = 0; iCycle < m_numBurnCycles; ++iCycle) {
189  if (Athena::Timeout::instance(input.eventContext).reached()) {
190  ATH_MSG_ERROR("Timeout reached in CPU time burning cycle # " << iCycle+1);
192  }
193  unsigned int burnTime = m_burnTimeRandomly
194  ? randomInteger<unsigned int>(0, m_burnTimePerCycleMillisec)
195  : m_burnTimePerCycleMillisec.value();
196  ATH_MSG_VERBOSE("CPU time burning cycle # " << iCycle+1 << ", burn time [ms] = " << burnTime);
197  if (m_doCrunch) m_cpuCrunchSvc->crunch_for(std::chrono::milliseconds(burnTime));
198  else std::this_thread::sleep_for(std::chrono::milliseconds(burnTime));
199  }
200 
201  // ---------------------------------------------------------------------------
202  // Prefetch or retrieve ROBs
203  // ---------------------------------------------------------------------------
204  for (const auto& [instr,robVec] : m_robAccessDict) {
205  // Check for timeout
206  if (Athena::Timeout::instance(input.eventContext).reached()) {
207  ATH_MSG_ERROR("Timeout reached in ROB retrieval loop");
209  }
210 
211  // Select a random sample of ROBs from the list, if needed
212  ATH_MSG_DEBUG("Processing instruction " << instr.toString());
213  std::vector<uint32_t> robs;
214  if (instr.isRandom && instr.nRandom < robVec.size()) {
215  std::sample(robVec.begin(),robVec.end(),
216  std::back_inserter(robs),
217  instr.nRandom,
218  threadLocalGenerator());
219  }
220  else robs = robVec;
221 
222  // Execute the ROB requests
223  using ReqType = ROBRequestInstruction::Type;
224  if (instr.type == ReqType::ADD || instr.type == ReqType::ADDGET) {
225  // Prefetch ROBs
226  ATH_MSG_DEBUG("Preloading ROBs: " << idsToString(robs));
227  m_robDataProviderSvc->addROBData(input.eventContext, robs, name()+"-ADD");
228  }
229  if (instr.type == ReqType::GET || instr.type == ReqType::ADDGET) {
230  // Retrieve ROBs
231  ATH_MSG_DEBUG("Retrieving ROBs: " << idsToString(robs));
232  // VROBFRAG is a typedef for std::vector<const eformat::ROBFragment<const uint32_t*>*>
233  IROBDataProviderSvc::VROBFRAG robFragments;
234  m_robDataProviderSvc->getROBData(input.eventContext, robs, robFragments, name()+"-GET");
235  ATH_MSG_DEBUG("Number of ROBs retrieved: " << robFragments.size());
236  if (!robFragments.empty()) {
237  ATH_MSG_DEBUG("List of ROBs found: " << std::endl << format(robFragments));
238  }
239  if (m_checkDataConsistency.value()) {
240  for (const IROBDataProviderSvc::ROBF* rob : robFragments) {
241  try {
242  if (!rob->check_rob() || !rob->check_rod()) {
243  ATH_MSG_ERROR("Data consistency check failed");
244  }
245  }
246  catch (const std::exception& ex) {
247  ATH_MSG_ERROR("Data consistency check failed: " << ex.what());
248  }
249  ATH_MSG_DEBUG("Data consistency check passed for ROB 0x" << std::hex << rob->rob_source_id() << std::dec);
250  }
251  }
252  }
253  if (instr.type == ReqType::COL) {
254  // Event building
255  ATH_MSG_DEBUG("Requesting full event ROBs");
256  int nrobs = m_robDataProviderSvc->collectCompleteEventData(input.eventContext, name()+"-COL");
257  ATH_MSG_DEBUG("Number of ROBs retrieved: " << nrobs);
258  }
259  if (instr.type == ReqType::INVALID) {
260  ATH_MSG_ERROR("Invalid ROB request instruction " << instr.toString());
261  return StatusCode::FAILURE;
262  }
263 
264  // Sleep between ROB requests
265  std::this_thread::sleep_for(std::chrono::milliseconds(m_timeBetweenRobReqMillisec));
266  }
267 
268  // ---------------------------------------------------------------------------
269  // Produce random data
270  // ---------------------------------------------------------------------------
271  {
272  using DataCont = xAOD::TrigCompositeContainer;
273  using AuxCont = xAOD::TrigCompositeAuxContainer;
274  for (const SG::WriteHandleKey<DataCont>& handleKey : m_randomDataWHK) {
275  // Create data and aux container
276  std::unique_ptr<DataCont> data = std::make_unique<DataCont>();
277  std::unique_ptr<AuxCont> aux = std::make_unique<AuxCont>();
278  data->setStore(aux.get());
279  // Record the container in event store
280  SG::WriteHandle<DataCont> handle(handleKey,input.eventContext);
281  ATH_CHECK( handle.record(std::move(data),std::move(aux)) );
282  ATH_MSG_DEBUG("Recorded TrigCompositeContainer " << handleKey.key() << " in event store");
283  // Fill the container with random data
284  unsigned int maxElements = m_createRandomData.value().at(handleKey.key());
285  fillRandomData(*handle,maxElements);
286  }
287  }
288 
289  // ---------------------------------------------------------------------------
290  // Random accept decision with PEB information
291  // ---------------------------------------------------------------------------
292  bool accept = randomAccept(m_acceptRate);
293  if(!accept) {
294  ATH_MSG_DEBUG("Decision " << m_decisionId << " is reject");
295  return StatusCode::SUCCESS;
296  }
297 
298  ATH_MSG_DEBUG("Decision " << m_decisionId << " is accept");
300 
301  if (m_pebRobList.empty() && m_pebSubDetList.empty()) {
302  ATH_MSG_VERBOSE("Not configured to write any PEBInfo, nothing will be attached to the decision");
303  }
304  else {
305  ATH_MSG_DEBUG("Attaching ROBs=[" << idsToString(m_pebRobList) << "] and SubDets=["
306  << idsToString(m_pebSubDetList) << "] to the decision object");
307  ATH_CHECK(appendPEBInfo(input.decision,m_pebRobList,m_pebSubDetList));
308  }
309 
310  return StatusCode::SUCCESS;
311 }
312 
313 // =============================================================================
315  // Work around a bug in clang 9.
316 #if __clang_major__ == 9
317  std::string str (strv.begin(), strv.end());
318 #else
319  const std::string_view& str = strv;
320 #endif
321  if (str.find(":ADD:")!=std::string_view::npos) type = ROBRequestInstruction::ADD;
322  else if (str.find(":GET:")!=std::string_view::npos) type = ROBRequestInstruction::GET;
323  else if (str.find(":ADDGET:")!=std::string_view::npos) type = ROBRequestInstruction::ADDGET;
324  else if (str.find(":COL:")!=std::string_view::npos) type = ROBRequestInstruction::COL;
325  if (size_t pos=str.find(":RND"); pos!=std::string_view::npos) {
326  size_t firstDigit=pos+4;
327  size_t lastDigit=str.find_first_of(":",firstDigit);
328  size_t num = std::stoul(str.substr(firstDigit,lastDigit).data());
329  isRandom = true;
330  nRandom = num;
331  }
332 }
333 
334 // =============================================================================
336  std::string s;
337  s += "type=";
338  if (type==INVALID) s+="INVALID";
339  else if (type==ADD) s+="ADD";
340  else if (type==GET) s+="GET";
341  else if (type==ADDGET) s+="ADDGET";
342  else if (type==COL) s+="COL";
343  s += ", isRandom=";
344  s += isRandom ? "true" : "false";
345  s += ", nRandom=";
346  s += std::to_string(nRandom);
347  return s;
348 }
MTCalibPebHypoTool::m_pebSubDetList
Gaudi::Property< std::set< uint32_t > > m_pebSubDetList
Definition: MTCalibPebHypoTool.h:108
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
xAOD::TrigComposite_v1::setDetail
bool setDetail(const std::string &name, const TYPE &value)
Set an TYPE detail on the object.
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
MTCalibPebHypoTool::ROBRequestInstruction::GET
@ GET
Definition: MTCalibPebHypoTool.h:55
max
#define max(a, b)
Definition: cfImp.cxx:41
MTCalibPebHypoTool::~MTCalibPebHypoTool
virtual ~MTCalibPebHypoTool()
Standard destructor.
Definition: MTCalibPebHypoTool.cxx:126
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
vtune_athena.format
format
Definition: vtune_athena.py:14
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MTCalibPebHypoTool::m_acceptRate
Gaudi::Property< double > m_acceptRate
Definition: MTCalibPebHypoTool.h:67
xAOD::TrigComposite
TrigComposite_v1 TrigComposite
Declare the latest version of the class.
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:16
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
MTCalibPebHypoTool::decide
StatusCode decide(const Input &input) const
Decides whether to accept the event.
Definition: MTCalibPebHypoTool.cxx:177
MTCalibPebHypoTool::m_decisionId
HLT::Identifier m_decisionId
The decision id of the tool instance.
Definition: MTCalibPebHypoTool.h:125
MTCalibPebHypoTool::MTCalibPebHypoTool
MTCalibPebHypoTool(const std::string &type, const std::string &name, const IInterface *parent)
Standard constructor.
Definition: MTCalibPebHypoTool.cxx:119
CutsMETMaker::accept
StatusCode accept(const xAOD::Muon *mu)
Definition: CutsMETMaker.cxx:18
TrigCompositeUtils::addDecisionID
void addDecisionID(DecisionID id, Decision *d)
Appends the decision (given as ID) to the decision object.
Definition: TrigCompositeUtilsRoot.cxx:61
PEBInfoWriterToolBase::robListKey
static std::string robListKey()
Returns the key used to record/retrieve the ROB list.
Definition: PEBInfoWriterToolBase.h:61
MTCalibPebHypoTool.h
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
xAOD::TrigCompositeAuxContainer
TrigCompositeAuxContainer_v2 TrigCompositeAuxContainer
Declare the latest version of the container.
Definition: TrigCompositeAuxContainer.h:16
MTCalibPebHypoTool::m_useRandomSeed
Gaudi::Property< bool > m_useRandomSeed
Definition: MTCalibPebHypoTool.h:63
MTCalibPebHypoTool::m_doCrunch
Gaudi::Property< bool > m_doCrunch
Definition: MTCalibPebHypoTool.h:83
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
skel.runNum
runNum
Definition: skel.ABtoEVGEN.py:137
MTCalibPebHypoTool::ROBRequestInstruction::isRandom
bool isRandom
Flag switching requests of a random sub-sample of the ROB list.
Definition: MTCalibPebHypoTool.h:57
CxxUtils::INVALID
@ INVALID
Definition: CachedValue.h:28
MTCalibPebHypoTool::ROBRequestInstruction::ADD
@ ADD
Definition: MTCalibPebHypoTool.h:55
MTCalibPebHypoTool::m_checkDataConsistency
Gaudi::Property< bool > m_checkDataConsistency
Definition: MTCalibPebHypoTool.h:87
MTCalibPebHypoTool::m_randomDataWHK
SG::WriteHandleKeyArray< xAOD::TrigCompositeContainer > m_randomDataWHK
WriteHandleKey array for collections specified in the CreateRandomData property.
Definition: MTCalibPebHypoTool.h:127
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:805
MTCalibPebHypoTool::ROBRequestInstruction::ADDGET
@ ADDGET
Definition: MTCalibPebHypoTool.h:55
MTCalibPebHypoTool::m_burnTimePerCycleMillisec
Gaudi::Property< unsigned int > m_burnTimePerCycleMillisec
Definition: MTCalibPebHypoTool.h:71
Container
storage of the time histories of all the cells
PEBInfoWriterToolBase.h
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
Generate_dsid_ranseed.seed
seed
Definition: Generate_dsid_ranseed.py:10
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:116
HLT
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
Definition: HLTResultReader.h:26
MTCalibPebHypoTool::ROBRequestInstruction::ROBRequestInstruction
ROBRequestInstruction(std::string_view str)
Constructor from string key in the ROBAccessDict property.
Definition: MTCalibPebHypoTool.cxx:314
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MTCalibPebHypoTool::m_robDataProviderSvc
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
Definition: MTCalibPebHypoTool.h:120
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
GET
#define GET(n)
Definition: MD5.cxx:153
python.HLT.CommonSequences.EventBuildingSequences.robs
robs
Definition: EventBuildingSequences.py:401
MTCalibPebHypoTool::m_timeBetweenRobReqMillisec
Gaudi::Property< unsigned int > m_timeBetweenRobReqMillisec
Definition: MTCalibPebHypoTool.h:100
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
calibdata.exception
exception
Definition: calibdata.py:496
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
MTCalibPebHypoTool::ROBRequestInstruction::nRandom
size_t nRandom
Size of random request.
Definition: MTCalibPebHypoTool.h:59
test_pyathena.parent
parent
Definition: test_pyathena.py:15
PEBInfoWriterToolBase::subDetListKey
static std::string subDetListKey()
Returns the key used to record/retrieve the SubDet list.
Definition: PEBInfoWriterToolBase.h:63
MTCalibPebHypoTool::ROBRequestInstruction::toString
const std::string toString() const
String form for debug print-outs.
Definition: MTCalibPebHypoTool.cxx:335
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IROBDataProviderSvc::VROBFRAG
std::vector< const ROBF * > VROBFRAG
Definition: IROBDataProviderSvc.h:27
isRandom
bool isRandom()
Definition: TBPatternUnitHelper.h:38
MTCalibPebHypoTool::m_pebRobList
Gaudi::Property< std::set< uint32_t > > m_pebRobList
Definition: MTCalibPebHypoTool.h:104
Athena::Timeout::instance
static Timeout & instance()
Get reference to Timeout singleton.
Definition: Timeout.h:64
MTCalibPebHypoTool::ROBRequestInstruction
ROB request instruction description.
Definition: MTCalibPebHypoTool.h:49
xAOD::TrigComposite_v1
Class used to describe composite objects in the HLT.
Definition: TrigComposite_v1.h:52
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Athena::Timeout::reached
bool reached() const
Check if the timeout was reached.
Definition: Timeout.h:45
min
#define min(a, b)
Definition: cfImp.cxx:40
MTCalibPebHypoTool::m_burnTimeRandomly
Gaudi::Property< bool > m_burnTimeRandomly
Definition: MTCalibPebHypoTool.h:79
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
MTCalibPebHypoTool::ROBRequestInstruction::COL
@ COL
Definition: MTCalibPebHypoTool.h:55
MTCalibPebHypoTool::m_robAccessDictProp
Gaudi::Property< std::map< std::string, std::vector< uint32_t > > > m_robAccessDictProp
Definition: MTCalibPebHypoTool.h:91
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
xAOD::TrigCompositeContainer
TrigCompositeContainer_v1 TrigCompositeContainer
Declare the latest version of the container.
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigCompositeContainer.h:17
Athena::Status::TIMEOUT
@ TIMEOUT
Timeout during event processing.
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Timeout.h
Timeout singleton.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
MTCalibPebHypoTool::ROBRequestInstruction::Type
Type
Type of instruction.
Definition: MTCalibPebHypoTool.h:55
mc.generator
generator
Configure Herwig7 These are the commands corresponding to what would go into the regular Herwig infil...
Definition: mc.MGH7_FxFx_H71-DEFAULT_test.py:18
MTCalibPebHypoTool::m_numBurnCycles
Gaudi::Property< unsigned int > m_numBurnCycles
Definition: MTCalibPebHypoTool.h:75
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
MTCalibPebHypoTool::m_createRandomData
Gaudi::Property< std::map< std::string, unsigned int > > m_createRandomData
Definition: MTCalibPebHypoTool.h:112
python.CaloScaleNoiseConfig.str
str
Definition: CaloScaleNoiseConfig.py:78
MTCalibPebHypoTool::initialize
virtual StatusCode initialize() override
Definition: MTCalibPebHypoTool.cxx:131
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
MTCalibPebHypoTool::m_robAccessDict
std::vector< std::pair< ROBRequestInstruction, std::vector< uint32_t > > > m_robAccessDict
Ordered map of ROB request instructions filled from ROBAccessDict property at initialisation.
Definition: MTCalibPebHypoTool.h:129
DEBUG
#define DEBUG
Definition: page_access.h:11
MTCalibPebHypoTool::m_cpuCrunchSvc
ServiceHandle< ICPUCrunchSvc > m_cpuCrunchSvc
Definition: MTCalibPebHypoTool.h:121
str
Definition: BTagTrackIpAccessor.cxx:11
AthAlgTool
Definition: AthAlgTool.h:26
xAOD::TrigComposite_v1::getDetail
bool getDetail(const std::string &name, TYPE &value) const
Get an TYPE detail from the object.
MTCalibPebHypoTool::ROBRequestInstruction::type
enum MTCalibPebHypoTool::ROBRequestInstruction::Type type
AthStatusCode.h
MTCalibPebHypoTool::finalize
virtual StatusCode finalize() override
Definition: MTCalibPebHypoTool.cxx:169
ADD
#define ADD(NAME)
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
MTCalibPebHypoTool::Input
Definition: MTCalibPebHypoTool.h:35
Identifier
Definition: IdentifierFieldParser.cxx:14