ATLAS Offline Software
TgcDigitizationTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "TgcDigitizationTool.h"
6 
9 
10 // Other includes
12 #include "Identifier/Identifier.h"
13 
14 // TGC includes
19 #include "PileUpTools/IPileUpTool.h" // for SubEventIterator
20 #include "TgcDigitMaker.h"
22 
24  const std::string& name,
25  const IInterface* parent)
27 
28 //--------------------------------------------
30  // retrieve MuonDetctorManager from DetectorStore
32  ATH_MSG_DEBUG("Retrieved MuonDetectorManager from DetectorStore.");
33 
35  ATH_CHECK(m_mergeSvc.retrieve());
36  }
37 
38  // initialize the TgcIdHelper
40  if (!m_idHelper) {
41  ATH_MSG_WARNING("tgcIdHelper could not be retrieved.");
42  return StatusCode::FAILURE;
43  }
44 
45  // TgcHitIdHelper
47 
48  // check the input object name
49  if (m_hitsContainerKey.key().empty()) {
50  ATH_MSG_FATAL("Property InputObjectName not set !");
51  return StatusCode::FAILURE;
52  }
55  ATH_MSG_DEBUG("Input objects in container : '" << m_inputHitCollectionName
56  << "'");
57 
58  // Initialize Read(Cond)HandleKey
59  ATH_CHECK(m_hitsContainerKey.initialize(true));
61  ATH_CHECK(
63  ATH_CHECK(
65 
66  // initialize the output WriteHandleKeys
69  ATH_MSG_DEBUG("Output Digits: '" << m_outputDigitCollectionKey.key()
70  << "'");
71 
72  ATH_MSG_DEBUG("IncludePileUpTruth: " << m_includePileUpTruth);
73  ATH_MSG_DEBUG("VetoPileUpTruthLinks: " << m_vetoPileUpTruthLinks);
74 
75  // initialize class to execute digitization
78  m_digitizer->setLevel(static_cast<MSG::Level>(msgLevel()));
79  ATH_CHECK(m_rndmSvc.retrieve());
80 
82 
83  return StatusCode::SUCCESS;
84 }
85 
86 //--------------------------------------------
87 StatusCode TgcDigitizationTool::prepareEvent(const EventContext& /*ctx*/,
88  unsigned int) {
89  m_TGCHitCollList.clear();
91 
92  return StatusCode::SUCCESS;
93 }
94 
95 //--------------------------------------------
97  SubEventIterator bSubEvents,
98  SubEventIterator eSubEvents) {
99  ATH_MSG_DEBUG("TgcDigitizationTool::processBunchXing() " << bunchXing);
100 
102  TimedHitCollList;
103  TimedHitCollList hitCollList;
104 
105  if (!(m_mergeSvc
106  ->retrieveSubSetEvtData(m_inputHitCollectionName, hitCollList,
107  bunchXing, bSubEvents, eSubEvents)
108  .isSuccess()) &&
109  hitCollList.empty()) {
110  ATH_MSG_ERROR("Could not fill TimedHitCollList");
111  return StatusCode::FAILURE;
112  } else {
113  ATH_MSG_VERBOSE(hitCollList.size()
114  << " TGCSimHitCollection with key "
115  << m_inputHitCollectionName << " found");
116  }
117 
118  TimedHitCollList::iterator iColl(hitCollList.begin());
119  TimedHitCollList::iterator endColl(hitCollList.end());
120 
121  // Iterating over the list of collections
122  for (; iColl != endColl; ++iColl) {
123 
124  TGCSimHitCollection* hitCollPtr =
125  new TGCSimHitCollection(*iColl->second);
126  PileUpTimeEventIndex timeIndex(iColl->first);
127 
128  ATH_MSG_DEBUG("TGCSimHitCollection found with " << hitCollPtr->size()
129  << " hits");
130  ATH_MSG_VERBOSE("time index info. time: "
131  << timeIndex.time() << " index: " << timeIndex.index()
132  << " type: " << timeIndex.type());
133 
134  m_thpcTGC->insert(timeIndex, hitCollPtr);
135  m_TGCHitCollList.push_back(hitCollPtr);
136  }
137 
138  return StatusCode::SUCCESS;
139 }
140 
141 //--------------------------------------------
142 StatusCode TgcDigitizationTool::mergeEvent(const EventContext& ctx) {
143  ATH_MSG_DEBUG("TgcDigitizationTool::mergeEvent()");
144 
145  ATH_CHECK(digitizeCore(ctx));
146  // reset the pointer (delete null pointer should be safe)
147  delete m_thpcTGC;
148  m_thpcTGC = nullptr;
149 
151  m_TGCHitCollList.begin();
153  m_TGCHitCollList.end();
154  while (TGCHitColl != TGCHitCollEnd) {
155  delete (*TGCHitColl);
156  ++TGCHitColl;
157  }
158  m_TGCHitCollList.clear();
159 
160  return StatusCode::SUCCESS;
161 }
162 
163 //_____________________________________________________________________________
165  ATH_MSG_DEBUG("TgcDigitizationTool::processAllSubEvents()");
166  // merging of the hit collection in getNextEvent method
167  if (!m_thpcTGC) {
168  ATH_CHECK(getNextEvent(ctx));
169  }
170  ATH_CHECK(digitizeCore(ctx));
171  // reset the pointer (delete null pointer should be safe)
172  delete m_thpcTGC;
173  m_thpcTGC = nullptr;
174  return StatusCode::SUCCESS;
175 }
176 
177 //_____________________________________________________________________________
179  ATH_MSG_DEBUG("finalize.");
180 
181  delete m_digitizer;
182  m_digitizer = nullptr;
183 
184  return StatusCode::SUCCESS;
185 }
186 
187 //_____________________________________________________________________________
188 // Get next event and extract collection of hit collections:
190  // initialize pointer
191  m_thpcTGC = nullptr;
192 
193  // get the container(s)
194  using TimedHitCollList =
196 
197  // In case of single hits container just load the collection using read
198  // handles
199  if (!m_onlyUseContainerName) {
201  ctx);
202  if (!hitCollection.isValid()) {
203  ATH_MSG_ERROR("Could not get TGCSimHitCollection container "
204  << hitCollection.name() << " from store "
205  << hitCollection.store());
206  return StatusCode::FAILURE;
207  }
208 
209  // create a new hits collection
211  m_thpcTGC->insert(0, hitCollection.cptr());
212  ATH_MSG_DEBUG("TGCSimHitCollection found with " << hitCollection->size()
213  << " hits");
214 
215  return StatusCode::SUCCESS;
216  }
217 
218  // this is a list<pair<time_t, DataLink<TGCSimHitCollection> > >
219  TimedHitCollList hitCollList;
220 
221  if (!(m_mergeSvc->retrieveSubEvtsData(m_inputHitCollectionName, hitCollList)
222  .isSuccess())) {
223  ATH_MSG_FATAL("Could not fill TimedHitCollList");
224  return StatusCode::FAILURE;
225  }
226  if (hitCollList.empty()) {
227  ATH_MSG_FATAL("TimedHitCollList has size 0");
228  return StatusCode::FAILURE;
229  } else {
230  ATH_MSG_DEBUG(hitCollList.size()
231  << " TGCSimHitCollections with key "
232  << m_inputHitCollectionName << " found");
233  }
234 
235  // create a new hits collection
237 
238  // now merge all collections into one
239  TimedHitCollList::iterator iColl = hitCollList.begin();
240  TimedHitCollList::iterator endColl = hitCollList.end();
241  while (iColl != endColl) {
242  const TGCSimHitCollection* p_collection = iColl->second;
243  m_thpcTGC->insert(iColl->first, p_collection);
244  ATH_MSG_DEBUG("TGCSimHitCollection found with "
245  << p_collection->size()
246  << " hits"); // loop on the hit collections
247  ++iColl;
248  }
249  return StatusCode::SUCCESS;
250 }
251 
253 
254  ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this);
255  rngWrapper->setSeed(name(), ctx);
256  CLHEP::HepRandomEngine* rndmEngine = rngWrapper->getEngine(ctx);
257 
258  // create and record the Digit container in StoreGate
259  SG::WriteHandle<TgcDigitContainer> digitContainer(
261  ATH_CHECK(digitContainer.record(
262  std::make_unique<TgcDigitContainer>(m_idHelper->module_hash_max())));
263  ATH_MSG_DEBUG("TgcDigitContainer recorded in StoreGate.");
264 
265  // Create and record the SDO container in StoreGate
268  ATH_CHECK(sdoContainer.record(std::make_unique<MuonSimDataCollection>()));
269  ATH_MSG_DEBUG("TgcSDOCollection recorded in StoreGate.");
270 
271  // get the iterator pairs for this DetEl
272  // iterate over hits and fill id-keyed drift time map
273  IdContext tgcContext = m_idHelper->module_context();
274 
275  // Read needed conditions data
276  const TgcDigitASDposData* ASDpos{};
277  if (!m_readCondKey_ASDpos.empty()) {
278  SG::ReadCondHandle<TgcDigitASDposData> readHandle_ASDpos{
279  m_readCondKey_ASDpos, ctx};
280  ASDpos = readHandle_ASDpos.cptr();
281  } else {
283  "ASD Position parameters /TGC/DIGIT/ASDPOS must be available for "
284  "TGC_Digitization. Check the configuration!");
285  }
286  const TgcDigitTimeOffsetData* TOffset{};
288  SG::ReadCondHandle<TgcDigitTimeOffsetData> readHandle_TimeOffset{
290  TOffset = readHandle_TimeOffset.cptr();
291  } else {
293  "Timing Offset parameters /TGC/DIGIT/TOFFSET must be available for "
294  "TGC_Digitization. Check the configuration!");
295  }
296  const TgcDigitCrosstalkData* Crosstalk{};
298  SG::ReadCondHandle<TgcDigitCrosstalkData> readHandle_Crosstalk{
300  Crosstalk = readHandle_Crosstalk.cptr();
301  } else {
303  "/TGC/DIGIT/XTALK is not provided. Probabilities of TGC channel "
304  "crosstalk will be zero.");
305  }
306 
307  std::vector<std::unique_ptr<TgcDigitCollection> > collections;
308 
310  while (m_thpcTGC->nextDetectorElement(i, e)) {
311  ATH_MSG_DEBUG("TgcDigitizationTool::digitizeCore next element");
312 
313  // Loop over the hits:
314  while (i != e) {
315  TimedHitPtr<TGCSimHit> phit = *i++;
316  const TGCSimHit& hit = *phit;
317  double globalHitTime = hitTime(phit);
318  double tof = phit->globalTime();
320  &hit, globalHitTime, ASDpos, TOffset, Crosstalk, rndmEngine);
321 
322  if (!digiHits)
323  continue;
324 
326  for (it_digiHits = digiHits->begin();
327  it_digiHits != digiHits->end(); ++it_digiHits) {
328 
337  Identifier newDigiId = (*it_digiHits)->identify();
338  uint16_t newBcTag = (*it_digiHits)->bcTag();
339  Identifier elemId = m_idHelper->elementID(newDigiId);
340 
341  TgcDigitCollection* digitCollection = nullptr;
342 
343  IdentifierHash coll_hash;
344  if (m_idHelper->get_hash(elemId, coll_hash, &tgcContext)) {
346  "Unable to get TGC hash id from TGC Digit collection "
347  << "context begin_index = " << tgcContext.begin_index()
348  << " context end_index = " << tgcContext.end_index()
349  << " the identifier is ");
350  elemId.show();
351  }
352 
353  // make new TgcDigit and record it in StoreGate
354  auto newDigit = std::make_unique<TgcDigit>(newDigiId, newBcTag);
355 
356  // record the digit container in StoreGate
357  bool duplicate = false;
358  if (coll_hash >= collections.size()) {
359  collections.resize(coll_hash + 1);
360  }
361  digitCollection = collections[coll_hash].get();
362  if (nullptr == digitCollection) {
363  collections[coll_hash] =
364  std::make_unique<TgcDigitCollection>(elemId, coll_hash);
365  digitCollection = collections[coll_hash].get();
366  ATH_MSG_DEBUG("Digit Id(1st) = "
367  << m_idHelper->show_to_string(newDigiId)
368  << " BC tag = " << newBcTag
369  << " Coll. key = " << coll_hash);
370  digitCollection->push_back(std::move(newDigit));
371  } else {
372  // to avoid to store digits with identical id
374  for (it_tgcDigit = digitCollection->begin();
375  it_tgcDigit != digitCollection->end(); ++it_tgcDigit) {
376  if (newDigiId == (*it_tgcDigit)->identify() &&
377  newBcTag == (*it_tgcDigit)->bcTag()) {
378  duplicate = true;
379  IdContext context = m_idHelper->channel_context();
380  ATH_MSG_DEBUG("Duplicate digit(removed) = "
382  newDigiId, &context)
383  << " BC tag = " << newBcTag);
384  newDigit.reset();
385  break;
386  }
387  }
388  if (!duplicate) {
389  digitCollection->push_back(std::move(newDigit));
390  ATH_MSG_DEBUG("Digit Id= "
391  << m_idHelper->show_to_string(newDigiId)
392  << " BC tag = " << newBcTag);
393  }
394  }
395 
396  if (!duplicate) {
397  static const double invalid_pos = -99999.;
398  Amg::Vector3D gpos(invalid_pos, invalid_pos, invalid_pos);
399  const MuonGM::TgcReadoutElement* tgcChamber =
400  m_mdManager->getTgcReadoutElement(newDigiId);
401  if (tgcChamber) {
402  gpos = tgcChamber->localToGlobalTransf(newDigiId) * hit.localPosition();
403  }
404 
405  // fill the SDO collection in StoreGate if not pile-up
406  if (!m_includePileUpTruth &&
407  HepMC::ignoreTruthLink(phit->particleLink(),
409  continue;
410  }
411 
412  // link to MC info
413  // create here deposit for MuonSimData, link and tof
414  std::vector<MuonSimData::Deposit> deposits;
415  deposits.emplace_back(
416  HepMcParticleLink::getRedirectedLink(phit->particleLink(), phit.eventId(), ctx), // This link should now correctly resolve to the TruthEvent McEventCollection in the main StoreGateSvc.
417  MuonMCData(tof, 0));
418  MuonSimData simData(deposits, 0);
419  simData.setPosition(gpos);
420  simData.setTime(hitTime(phit));
421  sdoContainer->insert(std::make_pair(newDigiId, simData));
422  }
423  }
424  delete digiHits;
425  digiHits = nullptr;
426  } // while(i != e)
427  } // while(m_thpcTGC->nextDetectorElement(i, e))
428 
429  for (size_t coll_hash = 0; coll_hash < collections.size(); ++coll_hash) {
430  if (collections[coll_hash]) {
431  ATH_CHECK(digitContainer->addCollection(
432  collections[coll_hash].release(), coll_hash));
433  }
434  }
435 
436  return StatusCode::SUCCESS;
437 }
TgcDigitMaker
Definition: TgcDigitMaker.h:40
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
ATHRNG::RNGWrapper::setSeed
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition: RNGWrapper.h:169
TgcDigitMaker.h
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
IdentifiableContainerMT::addCollection
virtual StatusCode addCollection(const T *coll, IdentifierHash hashId) override final
insert collection into container with id hash if IDC should not take ownership of collection,...
Definition: IdentifiableContainerMT.h:300
TgcDigitTimeOffsetData
Definition: TgcDigitTimeOffsetData.h:20
TgcDigitizationTool::m_readCondKey_ASDpos
SG::ReadCondHandleKey< TgcDigitASDposData > m_readCondKey_ASDpos
Definition: TgcDigitizationTool.h:104
MuonIdHelper::channel_context
IdContext channel_context() const
id for channel
Definition: MuonIdHelper.cxx:741
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
SG::VarHandleBase::name
const std::string & name() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:75
IdContext::end_index
size_type end_index() const
Definition: IdContext.h:46
AtlasHitsVector
Definition: AtlasHitsVector.h:33
TGCSimHitCollection
AtlasHitsVector< TGCSimHit > TGCSimHitCollection
Definition: TGCSimHitCollection.h:15
TgcDigitizationTool::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: TgcDigitizationTool.h:83
TgcDigitCrosstalkData
Definition: TgcDigitCrosstalkData.h:22
TgcDigitizationTool::m_hitIdHelper
const TgcHitIdHelper * m_hitIdHelper
Definition: TgcDigitizationTool.h:87
PileUpTimeEventIndex::index
index_type index() const
the index of the component event in PileUpEventInfo
Definition: PileUpTimeEventIndex.cxx:76
TimedHitPtr< TGCSimHit >
TgcDigitizationTool::mergeEvent
virtual StatusCode mergeEvent(const EventContext &ctx) override final
called at the end of the subevts loop.
Definition: TgcDigitizationTool.cxx:142
TgcDigitizationTool::processBunchXing
virtual StatusCode processBunchXing(int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents) override final
called for each active bunch-crossing to process current SubEvents bunchXing is in ns
Definition: TgcDigitizationTool.cxx:96
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
HepMC::ignoreTruthLink
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
Definition: MagicNumbers.h:332
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
TimedHitCollection::nextDetectorElement
bool nextDetectorElement(const_iterator &b, const_iterator &e)
sets an iterator range with the hits of current detector element returns a bool when done
TgcDigitizationTool::m_TGCHitCollList
std::list< TGCSimHitCollection * > m_TGCHitCollList
Definition: TgcDigitizationTool.h:92
PileUpToolBase::m_vetoPileUpTruthLinks
Gaudi::Property< int > m_vetoPileUpTruthLinks
Definition: PileUpToolBase.h:58
TgcDigitizationTool::m_readCondKey_Crosstalk
SG::ReadCondHandleKey< TgcDigitCrosstalkData > m_readCondKey_Crosstalk
Definition: TgcDigitizationTool.h:110
PileUpMergeSvc::TimedList::type
std::list< value_t > type
type of the collection of timed data object
Definition: PileUpMergeSvc.h:75
MuonGM::MuonDetectorManager::getTgcReadoutElement
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:247
TGCSimHit::localPosition
const Amg::Vector3D & localPosition() const
Definition: TGCSimHit.h:43
TgcDigitMaker::initialize
StatusCode initialize()
Initializes TgcHitIdHelper, TgcIdHelper and random number of a stream for the digitization.
Definition: TgcDigitMaker.cxx:59
TgcDigitizationTool::m_mdManager
const MuonGM::MuonDetectorManager * m_mdManager
Definition: TgcDigitizationTool.h:89
AthMessaging::setLevel
void setLevel(MSG::Level lvl)
Change the current logging level.
Definition: AthMessaging.cxx:28
TgcDigitizationTool::m_digitizer
TgcDigitMaker * m_digitizer
Definition: TgcDigitizationTool.h:90
IdContext::begin_index
size_type begin_index() const
Definition: IdContext.h:45
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TimedHitCollection::insert
void insert(const PileUpTimeEventIndex &timeEventIndex, const AtlasHitsVector< HIT > *inputCollection)
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TgcDigitizationTool::m_mergeSvc
ServiceHandle< PileUpMergeSvc > m_mergeSvc
Definition: TgcDigitizationTool.h:81
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TgcDigitizationTool::m_doFourBunchDigitization
Gaudi::Property< bool > m_doFourBunchDigitization
Definition: TgcDigitizationTool.h:98
TgcDigitCollection
Definition: TgcDigitCollection.h:17
SG::VarHandleBase::store
std::string store() const
Return the name of the store holding the object we are proxying.
Definition: StoreGate/src/VarHandleBase.cxx:376
MuonGM::TgcReadoutElement
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/TgcReadoutElement.h:42
test_pyathena.parent
parent
Definition: test_pyathena.py:15
IPileUpTool.h
a call-back interface for tools that merge pileup events information An IPileUpTool is called back fo...
TgcDigitizationTool.h
implementation of IPileUpTool to produce TgcDigit objects from TGCSimHit
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
TgcHitIdHelper::GetHelper
static const TgcHitIdHelper * GetHelper()
Definition: TgcHitIdHelper.cxx:23
TgcDigitizationTool::m_hitsContainerKey
SG::ReadHandleKey< TGCSimHitCollection > m_hitsContainerKey
Definition: TgcDigitizationTool.h:101
TgcDigitASDposData
Definition: TgcDigitASDposData.h:24
Identifier::show
void show() const
Print out in hex form.
Definition: Identifier.cxx:30
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
MuonGM::TgcReadoutElement::localToGlobalTransf
const Amg::Transform3D & localToGlobalTransf(const Identifier &id) const
Returns the local -> global transformation x-axis: Parallel to the wires (strips) if the Identifier b...
TgcDigitizationTool::digitizeCore
StatusCode digitizeCore(const EventContext &ctx)
Core part of digitization used by processAllSubEvents and mergeEvent.
Definition: TgcDigitizationTool.cxx:252
PileUpToolBase
Definition: PileUpToolBase.h:18
TgcIdHelper::elementID
Identifier elementID(int stationName, int stationEta, int stationPhi) const
Definition: TgcIdHelper.cxx:556
TgcDigitizationTool::TgcDigitizationTool
TgcDigitizationTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: TgcDigitizationTool.cxx:23
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
MuonGM::MuonDetectorManager::tgcIdHelper
const TgcIdHelper * tgcIdHelper() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:238
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
PileUpTimeEventIndex::time
time_type time() const
bunch xing time in ns
Definition: PileUpTimeEventIndex.cxx:71
errorcheck.h
Helpers for checking error return status codes and reporting errors.
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TgcDigitizationTool::initialize
virtual StatusCode initialize() override final
Initialize.
Definition: TgcDigitizationTool.cxx:29
MuonSimData
Definition: MuonSimData.h:62
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
TgcDigitizationTool::m_thpcTGC
TimedHitCollection< TGCSimHit > * m_thpcTGC
Definition: TgcDigitizationTool.h:91
MuonDetectorManager.h
MuonIdHelper::module_hash_max
size_type module_hash_max() const
the maximum hash value
Definition: MuonIdHelper.cxx:748
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
RNGWrapper.h
TGCSimHit
Definition: TGCSimHit.h:19
EventInfo.h
TgcDigitizationTool::m_inputHitCollectionName
std::string m_inputHitCollectionName
Definition: TgcDigitizationTool.h:103
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
TgcDigitMaker::executeDigi
TgcDigitCollection * executeDigi(const TGCSimHit *hit, const double globalHitTime, const TgcDigitASDposData *ASDpos, const TgcDigitTimeOffsetData *TOffset, const TgcDigitCrosstalkData *Crosstalk, CLHEP::HepRandomEngine *rndmEngine)
A single hit can be digitized in the two directions independently: R and phi directions.
Definition: TgcDigitMaker.cxx:88
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
AtlasDetectorID::show_to_string
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:574
TgcDigitizationTool::prepareEvent
virtual StatusCode prepareEvent(const EventContext &ctx, unsigned int) override final
Definition: TgcDigitizationTool.cxx:87
TimedHitPtr::eventId
unsigned short eventId() const
the index of the component event in PileUpEventInfo.
Definition: TimedHitPtr.h:45
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonIdHelper::get_hash
virtual int get_hash(const Identifier &id, IdentifierHash &hash_id, const IdContext *context=0) const override
Create hash id from compact id (return == 0 for OK)
Definition: MuonIdHelper.cxx:144
TgcDigitizationTool::processAllSubEvents
virtual StatusCode processAllSubEvents(const EventContext &ctx) override final
alternative interface which uses the PileUpMergeSvc to obtain all the required SubEvents.
Definition: TgcDigitizationTool.cxx:164
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TgcDigitizationTool::m_outputSDO_CollectionKey
SG::WriteHandleKey< MuonSimDataCollection > m_outputSDO_CollectionKey
Definition: TgcDigitizationTool.h:117
MuonIdHelper::module_context
IdContext module_context() const
id for module
Definition: MuonIdHelper.cxx:731
TgcDigitizationTool::m_idHelper
const TgcIdHelper * m_idHelper
Definition: TgcDigitizationTool.h:88
TgcDigitizationTool::m_includePileUpTruth
Gaudi::Property< bool > m_includePileUpTruth
Definition: TgcDigitizationTool.h:123
AtlasHitsVector::size
size_type size() const
Definition: AtlasHitsVector.h:143
SubEventIterator
std::vector< xAOD::EventInfo::SubEvent >::const_iterator SubEventIterator
Definition: IPileUpTool.h:22
TgcReadoutElement.h
TgcIdHelper.h
simData
constexpr bool simData
Definition: constants.h:36
hitTime
float hitTime(const AFP_SIDSimHit &hit)
Definition: AFP_SIDSimHit.h:39
TgcDigitizationTool::m_outputDigitCollectionKey
SG::WriteHandleKey< TgcDigitContainer > m_outputDigitCollectionKey
Definition: TgcDigitizationTool.h:113
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
TgcDigitizationTool::getNextEvent
StatusCode getNextEvent(const EventContext &ctx)
Get next event and extract collection of hit collections.
Definition: TgcDigitizationTool.cxx:189
TgcDigitizationTool::m_onlyUseContainerName
Gaudi::Property< bool > m_onlyUseContainerName
Definition: TgcDigitizationTool.h:94
PileUpTimeEventIndex
a struct encapsulating the identifier of a pile-up event
Definition: PileUpTimeEventIndex.h:12
TgcDigitizationTool::m_readCondKey_TimeOffset
SG::ReadCondHandleKey< TgcDigitTimeOffsetData > m_readCondKey_TimeOffset
Definition: TgcDigitizationTool.h:107
PileUpTimeEventIndex::type
PileUpType type() const
the pileup type - minbias, cavern, beam halo, signal?
Definition: PileUpTimeEventIndex.cxx:81
IdContext
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition: IdContext.h:26
TimedHitCollection< TGCSimHit >
TgcHitIdHelper.h
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
MuonMCData
Definition: MuonSimData.h:42
TgcDigitizationTool::finalize
virtual StatusCode finalize() override final
Finalize.
Definition: TgcDigitizationTool.cxx:178
Identifier
Definition: IdentifierFieldParser.cxx:14