ATLAS Offline Software
PixelDigitizationTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 #include "CLHEP/Random/RandomEngine.h"
12 
13 #include <limits>
14 #include <cstdint>
15 
17  const std::string& name,
18  const IInterface* pIID) :
19  PileUpToolBase(type, name, pIID) {
20 }
21 
22 //=======================================
23 // I N I T I A L I Z E
24 //=======================================
26  ATH_MSG_DEBUG("PixelDigitizationTool::Initialize()");
27 
29  ATH_CHECK(m_mergeSvc.retrieve());
30  }
31  ATH_CHECK(m_rndmSvc.retrieve());
32 
34  ATH_MSG_DEBUG("Pixel ID helper retrieved");
35 
36  ATH_CHECK(m_chargeTool.retrieve());
37  ATH_CHECK(m_fesimTool.retrieve());
39 
40  // check the input object name
41  if (m_hitsContainerKey.key().empty()) {
42  ATH_MSG_FATAL("Property InputObjectName not set !");
43  return StatusCode::FAILURE;
44  }
46  ATH_MSG_DEBUG("Input objects in container : '" << m_inputObjectName << "'");
47 
48  ATH_CHECK(m_hitsContainerKey.initialize(true));
52 
53  return StatusCode::SUCCESS;
54 }
55 
56 //=======================================
57 // F I N A L I Z E
58 //=======================================
60  return StatusCode::SUCCESS;
61 }
62 
63 //=======================================
64 // P R O C E S S S U B E V E N T S
65 //=======================================
67  // Prepare event
68  ATH_MSG_DEBUG("Prepare event");
69  ATH_CHECK(prepareEvent(ctx, 0));
70 
71  // Get the container(s)
72  using TimedHitCollList = PileUpMergeSvc::TimedList<SiHitCollection>::type;
73  // In case of single hits container just load the collection using read handles
76  if (!hitCollection.isValid()) {
78  "Could not get Pixel SiHitCollection container " << hitCollection.name() << " from store " <<
79  hitCollection.store());
80  return StatusCode::FAILURE;
81  }
82 
83  // create a new hits collection
84  m_timedHits->reserve(1);
85  m_timedHits->insert(0, hitCollection.cptr());
86  ATH_MSG_DEBUG("SiHitCollection found with " << hitCollection->size() << " hits");
87  } else {
88  TimedHitCollList hitCollList;
89  unsigned int numberOfSiHits(0);
90  ATH_CHECK(m_mergeSvc->retrieveSubEvtsData(m_inputObjectName, hitCollList, numberOfSiHits));
92  // Now merge all collections into one
93  for (auto & iColl : hitCollList) {
94  // Decide if this event will be processed depending on HardScatterSplittingMode
97  continue;
98  }
100  continue;
101  }
104  }
105  const SiHitCollection* p_collection(iColl.second);
106  m_timedHits->insert(iColl.first, p_collection);
107  ATH_MSG_DEBUG("SiTrackerHitCollection found with" << p_collection->size() << " hits"); // loop on the hit collections
108  }
109  }
110  // Digitize hits
111  ATH_CHECK(digitizeEvent(ctx));
112 
113  ATH_MSG_DEBUG("Digitize success!");
114  return StatusCode::SUCCESS;
115 }
116 
117 //=======================================
118 // D I G I T I Z E E V E N T (main)
119 //=======================================
121  ATH_MSG_VERBOSE("PixelDigitizationTool::digitizeEvent()");
122 
124  const InDetDD::SiDetectorElementCollection* elements(*pixelDetEleHandle);
125  if (not pixelDetEleHandle.isValid() or elements == nullptr) {
126  ATH_MSG_FATAL(m_pixelDetEleCollKey.fullKey() << " is not available.");
127  return StatusCode::FAILURE;
128  }
129 
130  std::unique_ptr<SiChargedDiodeCollection> chargedDiodes = std::make_unique<SiChargedDiodeCollection>();
131  std::vector<std::pair<double, double> > trfHitRecord;
132  std::vector<double> initialConditions;
133 
134  std::vector<bool> processedElements;
135  processedElements.resize(m_detID->wafer_hash_max(), false);
136 
137  // Set the RNG to use for this event.
138  ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this);
139  rngWrapper->setSeed(name(), ctx);
140  CLHEP::HepRandomEngine* rndmEngine = rngWrapper->getEngine(ctx);
141 
143 
145  // **** Loop over the Detectors with hits ****
147  while (m_timedHits->nextDetectorElement(firstHit, lastHit)) {
148  // Create the identifier for the collection
149  ATH_MSG_DEBUG("create ID for the hit collection");
150  Identifier id = m_detID->wafer_id((*firstHit)->getBarrelEndcap(),
151  (*firstHit)->getLayerDisk(),
152  (*firstHit)->getPhiModule(), (*firstHit)->getEtaModule());
153  IdentifierHash wafer_hash = m_detID->wafer_hash(id);
154 
155  // Get the det element from the manager
156  const InDetDD::SiDetectorElement* sielement = elements->getDetectorElement(wafer_hash);
157 
158  if (sielement == nullptr) {
160  " Barrel=" << (*firstHit)->getBarrelEndcap() << " Layer=" << (*firstHit)->getLayerDisk() << " Eta=" <<
161  (*firstHit)->getEtaModule() << " Phi=" << (*firstHit)->getPhiModule());
162  ATH_MSG_ERROR("detector manager could not find element with id = " << id);
163  break;
164  }
165 
166  // Create the charged diodes collection
167  chargedDiodes->setDetectorElement(sielement);
168  const InDetDD::PixelModuleDesign* p_design = static_cast<const InDetDD::PixelModuleDesign*>(&(sielement->design()));
169 
171  // **** Loop over the hits and created charged diodes ****
173  for (TimedHitCollection<SiHit>::const_iterator phit = firstHit; phit != lastHit; ++phit) {
174  //skip hits which are more than 10us away
175  if (std::abs((*phit)->meanTime()) < 10000.0 * CLHEP::ns) {
176  ATH_MSG_DEBUG("HASH = " <<
177  m_detID->wafer_hash(m_detID->wafer_id((*phit)->getBarrelEndcap(), (*phit)->getLayerDisk(),
178  (*phit)->getPhiModule(), (*phit)->getEtaModule())));
179 
180  // Apply charge collection tools
181  ATH_MSG_DEBUG("Running sensor simulation.");
182 
183  //Deposit energy in sensor
184  ATH_CHECK(m_energyDepositionTool->depositEnergy(*phit, *sielement, trfHitRecord, initialConditions,
185  rndmEngine, ctx));
186 
187  //Create signal in sensor, loop over collection of loaded sensorTools
188  for (unsigned int itool = 0; itool < m_chargeTool.size(); itool++) {
189  ATH_MSG_DEBUG("Executing tool " << m_chargeTool[itool]->name());
190  if (m_chargeTool[itool]->induceCharge(*phit, *chargedDiodes, *sielement, *p_design, trfHitRecord,
191  initialConditions, rndmEngine, ctx) == StatusCode::FAILURE) {
192  break;
193  }
194  }
195  initialConditions.clear();
196  trfHitRecord.clear();
197  ATH_MSG_DEBUG("charges filled!");
198  }
199  }
200 
201  ATH_MSG_DEBUG("Hit collection ID=" << m_detID->show_to_string(chargedDiodes->identify()));
202  ATH_MSG_DEBUG("in digitize elements with hits: ec - layer - eta - phi " <<
203  m_detID->barrel_ec(chargedDiodes->identify()) << " - " << m_detID->layer_disk(
204  chargedDiodes->identify()) << " - " << m_detID->eta_module(
205  chargedDiodes->identify()) << " - " << m_detID->phi_module(chargedDiodes->identify()));
206 
207  IdentifierHash idHash = chargedDiodes->identifyHash();
208 
209  assert(idHash < processedElements.size());
210  processedElements[idHash] = true;
211 
213  // *** Create and store RDO and SDO ****
215  PixelRDO_Collection* RDOColl = new PixelRDO_Collection(chargedDiodes->identifyHash());
216  RDOColl->setIdentifier(chargedDiodes->identify());
217  for (unsigned int itool = 0; itool < m_fesimTool.size(); itool++) {
218  ATH_MSG_DEBUG("Executing tool " << m_fesimTool[itool]->name());
219  m_fesimTool[itool]->process(*chargedDiodes, *RDOColl, rndmEngine);
220  }
221  ATH_CHECK(m_rdoContainer->addCollection(RDOColl, RDOColl->identifyHash()));
222 
223  ATH_MSG_DEBUG("Pixel RDOs '" << RDOColl->identifyHash() << "' added to container");
224  addSDO(chargedDiodes.get());
225  chargedDiodes->clear();
226  }
227  delete m_timedHits;
228  m_timedHits = nullptr;
229  ATH_MSG_DEBUG("hits processed");
230 
232  // *** Loop over the Detectors without hits ****
234  if (!m_onlyHitElements) {
235  ATH_MSG_DEBUG("processing elements without hits");
236  for (unsigned int i = 0; i < processedElements.size(); i++) {
237  if (!processedElements[i]) {
238  IdentifierHash idHash = i;
239  if (!idHash.is_valid()) {
240  ATH_MSG_ERROR("PixelDetector element id hash is invalid = " << i);
241  }
242 
243  const InDetDD::SiDetectorElement* element = elements->getDetectorElement(idHash);
244  if (element) {
245  ATH_MSG_DEBUG("In digitize of untouched elements: layer - phi - eta " <<
246  m_detID->layer_disk(element->identify()) << " - " << m_detID->phi_module(
247  element->identify()) << " - " << m_detID->eta_module(
248  element->identify()) << " - " << "size: " << processedElements.size());
249 
250  chargedDiodes->setDetectorElement(element);
251  ATH_MSG_DEBUG("Digitize non hit element");
252 
253  // Create and store RDO and SDO
254  PixelRDO_Collection* RDOColl = new PixelRDO_Collection(chargedDiodes->identifyHash());
255  RDOColl->setIdentifier(chargedDiodes->identify());
256  for (unsigned int itool = 0; itool < m_fesimTool.size(); itool++) {
257  ATH_MSG_DEBUG("Executing tool " << m_fesimTool[itool]->name());
258  m_fesimTool[itool]->process(*chargedDiodes, *RDOColl, rndmEngine);
259  }
260  ATH_CHECK(m_rdoContainer->addCollection(RDOColl, RDOColl->identifyHash()));
261 
262  ATH_MSG_DEBUG("Pixel RDOs '" << RDOColl->identifyHash() << "' added to container");
263  addSDO(chargedDiodes.get());
264  chargedDiodes->clear();
265  }
266  }
267  }
268  }
269  ATH_MSG_DEBUG("non-hits processed");
270 
271  return StatusCode::SUCCESS;
272 }
273 
274 //=======================================
275 // A D D S D O
276 //=======================================
277 // Convert a SiTotalCharge to a InDetSimData, and store it. (this needs working...)
278 //-----------------------------------------------------------------------------------------------
280  using list_t = SiTotalCharge::list_t;
281 
282  std::vector<InDetSimData::Deposit> deposits;
283  deposits.reserve(5); // no idea what a reasonable number for this would be with pileup
284 
285  // loop over the charged diodes
286  SiChargedDiodeIterator EndOfDiodeCollection = collection->end();
287  for (SiChargedDiodeIterator i_chargedDiode = collection->begin(); i_chargedDiode != EndOfDiodeCollection;
288  ++i_chargedDiode) {
289  deposits.clear();
290  const list_t& charges = (*i_chargedDiode).second.totalCharge().chargeComposition();
291 
292  bool real_particle_hit = false;
293  // loop over the list
294  list_t::const_iterator EndOfChargeList = charges.end();
295  for (list_t::const_iterator i_ListOfCharges = charges.begin(); i_ListOfCharges != EndOfChargeList;
296  ++i_ListOfCharges) {
297  const HepMcParticleLink& trkLink = i_ListOfCharges->particleLink();
299  continue;
300  }
301  if (!real_particle_hit) {
302  real_particle_hit = trkLink.isValid();
303  }
304  // check if this track number has been already used.
305  std::vector<InDetSimData::Deposit>::reverse_iterator theDeposit = deposits.rend(); //dummy value
306  std::vector<InDetSimData::Deposit>::reverse_iterator depositsR_end = deposits.rend();
307  std::vector<InDetSimData::Deposit>::reverse_iterator i_Deposit = deposits.rbegin();
308  for (; i_Deposit != depositsR_end; ++i_Deposit) {
309  if ((*i_Deposit).first == trkLink) {
310  theDeposit = i_Deposit;
311  break;
312  }
313  }
314 
315  // if the charge has already hit the Diode add it to the deposit
316  if (theDeposit != depositsR_end) (*theDeposit).second += i_ListOfCharges->charge();
317  else { // create a new deposit
318  deposits.emplace_back(trkLink, i_ListOfCharges->charge());
319  }
320  }
321  // add the simdata object to the map:
322  if (real_particle_hit || m_createNoiseSDO) {
323  m_simDataColl->try_emplace(collection->getId((*i_chargedDiode).first),
324  std::move(deposits), (*i_chargedDiode).second.flag());
325  }
326  }
327 }
328 
329 //=======================================
330 // P R E P A R E E V E N T
331 //=======================================
332 StatusCode PixelDigitizationTool::prepareEvent(const EventContext& ctx, unsigned int) {
333  ATH_MSG_VERBOSE("PixelDigitizationTool::prepareEvent()");
334 
335  // Prepare event
337  ATH_CHECK(m_rdoContainer.record(std::make_unique<PixelRDO_Container>(m_detID->wafer_hash_max())));
338  ATH_MSG_DEBUG("PixelRDO_Container " << m_rdoContainer.name() << " registered in StoreGate");
339 
341  ATH_CHECK(m_simDataColl.record(std::make_unique<InDetSimDataCollection>()));
342  ATH_MSG_DEBUG("InDetSimDataCollection " << m_simDataColl.name() << " registered in StoreGate");
343 
344  // Create hit collection
345  if (m_timedHits) delete m_timedHits;
347 
349  return StatusCode::SUCCESS;
350 }
351 
352 //=======================================
353 // M E R G E E V E N T
354 //=======================================
356  ATH_MSG_VERBOSE("PixelDigitizationTool::mergeEvent()");
357 
358  // Digitize hits
359  ATH_CHECK(digitizeEvent(ctx));
360 
361  for (auto & hitCollPtr : m_hitCollPtrs) {
362  hitCollPtr->Clear();
363  delete hitCollPtr;
364  }
365  m_hitCollPtrs.clear();
366 
367  return StatusCode::SUCCESS;
368 }
369 
370 //=======================================
371 // P R O C E S S B U N C H X I N G
372 //=======================================
374  SubEventIterator eSubEvents) {
375  ATH_MSG_VERBOSE("PixelDigitizationTool::processBunchXing() " << bunchXing);
376  //decide if this event will be processed depending on HardScatterSplittingMode & bunchXing
379  return StatusCode::SUCCESS;
380  }
382  return StatusCode::SUCCESS;
383  }
386  }
387 
388  using TimedHitCollList = PileUpMergeSvc::TimedList<SiHitCollection>::type;
389  TimedHitCollList hitCollList;
390 
391  if (!(m_mergeSvc->retrieveSubSetEvtData(m_inputObjectName, hitCollList, bunchXing,
392  bSubEvents, eSubEvents).isSuccess()) &&
393  hitCollList.empty()) {
394  ATH_MSG_ERROR("Could not fill TimedHitCollList");
395  return StatusCode::FAILURE;
396  } else {
397  ATH_MSG_VERBOSE(hitCollList.size() << " SiHitCollections with key " << m_inputObjectName << " found");
398  }
399 
400  TimedHitCollList::iterator iColl(hitCollList.begin());
401  TimedHitCollList::iterator endColl(hitCollList.end());
402 
403  for (; iColl != endColl; ++iColl) {
404  SiHitCollection* hitCollPtr = new SiHitCollection(*iColl->second);
405  PileUpTimeEventIndex timeIndex(iColl->first);
406  ATH_MSG_DEBUG("SiHitCollection found with " << hitCollPtr->size() << " hits");
408  "time index info. time: " << timeIndex.time() << " index: " << timeIndex.index() << " type: " <<
409  timeIndex.type());
410  m_timedHits->insert(timeIndex, hitCollPtr);
411  m_hitCollPtrs.push_back(hitCollPtr);
412  }
413  return StatusCode::SUCCESS;
414 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
PixelDigitizationTool::m_hitsContainerKey
SG::ReadHandleKey< SiHitCollection > m_hitsContainerKey
Definition: PixelDigitizationTool.h:63
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
PixelDigitizationTool::m_fesimTool
ToolHandleArray< FrontEndSimTool > m_fesimTool
Definition: PixelDigitizationTool.h:99
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
PixelDigitizationTool::digitizeEvent
StatusCode digitizeEvent(const EventContext &ctx)
Definition: PixelDigitizationTool.cxx:120
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
PixelDigitizationTool::m_mergeSvc
ServiceHandle< PileUpMergeSvc > m_mergeSvc
Definition: PixelDigitizationTool.h:109
PixelDigitizationTool::m_simDataColl
SG::WriteHandle< InDetSimDataCollection > m_simDataColl
Definition: PixelDigitizationTool.h:79
InDetRawDataCollection::setIdentifier
void setIdentifier(Identifier id)
InDetDD::SiDetectorElementCollection
Definition: SiDetectorElementCollection.h:30
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
InDetDD::PixelModuleDesign
Definition: PixelModuleDesign.h:48
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
PixelID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: PixelID.h:619
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
SiChargedDiodeCollection::identifyHash
virtual IdentifierHash identifyHash() const override final
Definition: SiChargedDiodeCollection.h:236
PixelDigitizationTool::m_inputObjectName
std::string m_inputObjectName
Definition: PixelDigitizationTool.h:69
SG::VarHandleBase::name
const std::string & name() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:75
PixelDigitizationTool::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Random number service.
Definition: PixelDigitizationTool.h:106
PixelDigitizationTool::m_timedHits
TimedHitCollection< SiHit > * m_timedHits
Definition: PixelDigitizationTool.h:94
AtlasHitsVector
Definition: AtlasHitsVector.h:33
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:206
SiChargedDiodeCollection::end
SiChargedDiodeIterator end()
Definition: SiChargedDiodeCollection.h:253
PixelDigitizationTool::m_onlyHitElements
Gaudi::Property< bool > m_onlyHitElements
Definition: PixelDigitizationTool.h:86
PileUpTimeEventIndex::index
index_type index() const
the index of the component event in PileUpEventInfo
Definition: PileUpTimeEventIndex.cxx:76
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
HepMC::ignoreTruthLink
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
Definition: MagicNumbers.h:345
SiTotalCharge::list_t
std::vector< SiCharge > list_t
Definition: SiTotalCharge.h:31
PixelDigitizationTool::m_HardScatterSplittingSkipper
bool m_HardScatterSplittingSkipper
Definition: PixelDigitizationTool.h:83
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
SiChargedDiodeCollection::begin
SiChargedDiodeIterator begin()
Definition: SiChargedDiodeCollection.h:248
PixelID::wafer_id
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
Definition: PixelID.h:364
PixelDigitizationTool::initialize
virtual StatusCode initialize() override
Definition: PixelDigitizationTool.cxx:25
PileUpToolBase::m_vetoPileUpTruthLinks
Gaudi::Property< int > m_vetoPileUpTruthLinks
Definition: PileUpToolBase.h:58
SiChargedDiodeIterator
SiChargedDiodeMap::iterator SiChargedDiodeIterator
Definition: SiChargedDiodeCollection.h:70
PileUpMergeSvc::TimedList::type
std::list< value_t > type
type of the collection of timed data object
Definition: PileUpMergeSvc.h:75
InDetRawDataCollection::identifyHash
virtual IdentifierHash identifyHash() const override final
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
PixelDigitizationTool::processBunchXing
virtual StatusCode processBunchXing(int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents) override final
Definition: PixelDigitizationTool.cxx:373
PixelDigitizationTool::m_HardScatterSplittingMode
Gaudi::Property< int > m_HardScatterSplittingMode
Definition: PixelDigitizationTool.h:80
SiChargedDiodeCollection::getId
Identifier getId(const InDetDD::SiCellId &id) const
Definition: SiChargedDiodeCollection.h:144
PixelDigitizationTool::m_chargeTool
ToolHandleArray< SensorSimTool > m_chargeTool
Definition: PixelDigitizationTool.h:96
PixelID::wafer_hash
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
Definition: PixelID.h:387
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TimedHitCollection::insert
void insert(const PileUpTimeEventIndex &timeEventIndex, const AtlasHitsVector< HIT > *inputCollection)
SiChargedDiodeCollection
Definition: SiChargedDiodeCollection.h:109
SiChargedDiodeCollection::setDetectorElement
void setDetectorElement(const InDetDD::SolidStateDetectorElementBase *SiElement)
Definition: SiChargedDiodeCollection.h:207
lumiFormat.i
int i
Definition: lumiFormat.py:85
PixelDigitizationTool.h
TimedHitCollection::reserve
void reserve(unsigned int numberOfHits)
reserve a timed vector numberOfHits in size.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
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
PixelDigitizationTool::m_createNoiseSDO
Gaudi::Property< bool > m_createNoiseSDO
Definition: PixelDigitizationTool.h:113
PixelDigitizationTool::m_onlyUseContainerName
Gaudi::Property< bool > m_onlyUseContainerName
Definition: PixelDigitizationTool.h:60
PixelDigitizationTool::m_simDataCollKey
SG::WriteHandleKey< InDetSimDataCollection > m_simDataCollKey
Definition: PixelDigitizationTool.h:76
SiChargedDiodeCollection::clear
void clear()
Definition: SiChargedDiodeCollection.cxx:45
InDetRawDataCollection
Definition: InDetRawDataCollection.h:31
PixelDigitizationTool::m_pixelDetEleCollKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
Definition: PixelDigitizationTool.h:66
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
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
PileUpToolBase
Definition: PileUpToolBase.h:18
PixelDigitizationTool::addSDO
void addSDO(SiChargedDiodeCollection *collection)
Definition: PixelDigitizationTool.cxx:279
IdentifierHash::is_valid
bool is_valid() const
Check if id is in a valid state.
PixelDigitizationTool::prepareEvent
virtual StatusCode prepareEvent(const EventContext &ctx, unsigned int) override
Definition: PixelDigitizationTool.cxx:332
PixelID::layer_disk
int layer_disk(const Identifier &id) const
Definition: PixelID.h:626
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
PixelID::eta_module
int eta_module(const Identifier &id) const
Definition: PixelID.h:651
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
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
PixelDigitizationTool::m_rdoContainer
SG::WriteHandle< PixelRDO_Container > m_rdoContainer
Definition: PixelDigitizationTool.h:75
PixelRDO_Collection
InDetRawDataCollection< PixelRDORawData > PixelRDO_Collection
Definition: PixelRDO_Collection.h:20
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
PixelID::wafer_hash_max
size_type wafer_hash_max(void) const
Definition: PixelID.cxx:831
xAOD::EgammaHelpers::numberOfSiHits
std::size_t numberOfSiHits(const xAOD::TrackParticle *tp)
return the number of Si hits in the track particle
Definition: ElectronxAODHelpers.cxx:66
SiDetectorElement.h
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
PixelDigitizationTool::mergeEvent
virtual StatusCode mergeEvent(const EventContext &ctx) override
Definition: PixelDigitizationTool.cxx:355
SiHitCollection
AtlasHitsVector< SiHit > SiHitCollection
Definition: SiHitCollection.h:14
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
PixelModuleDesign.h
PixelDigitizationTool::finalize
virtual StatusCode finalize() override
Definition: PixelDigitizationTool.cxx:59
PixelDigitizationTool::m_rdoContainerKey
SG::WriteHandleKey< PixelRDO_Container > m_rdoContainerKey
Definition: PixelDigitizationTool.h:72
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
PixelDigitizationTool::m_hitCollPtrs
std::vector< SiHitCollection * > m_hitCollPtrs
Definition: PixelDigitizationTool.h:58
PixelDigitizationTool::m_pixelIDName
Gaudi::Property< std::string > m_pixelIDName
Definition: PixelDigitizationTool.h:92
AtlasHitsVector::size
size_type size() const
Definition: AtlasHitsVector.h:143
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
SubEventIterator
std::vector< xAOD::EventInfo::SubEvent >::const_iterator SubEventIterator
Definition: IPileUpTool.h:22
PixelDigitizationTool::PixelDigitizationTool
PixelDigitizationTool()
PixelDigitizationTool::processAllSubEvents
virtual StatusCode processAllSubEvents(const EventContext &ctx) override
Definition: PixelDigitizationTool.cxx:66
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
PixelDigitizationTool::m_detID
const PixelID * m_detID
Definition: PixelDigitizationTool.h:90
InDetDD::SiDetectorElement::design
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
PixelID::phi_module
int phi_module(const Identifier &id) const
Definition: PixelID.h:644
PileUpTimeEventIndex
a struct encapsulating the identifier of a pile-up event
Definition: PileUpTimeEventIndex.h:12
PileUpTimeEventIndex::type
PileUpType type() const
the pileup type - minbias, cavern, beam halo, signal?
Definition: PileUpTimeEventIndex.cxx:81
PixelDigitizationTool::m_energyDepositionTool
ToolHandle< EnergyDepositionTool > m_energyDepositionTool
Definition: PixelDigitizationTool.h:102
InDetDD::SiDetectorElementCollection::getDetectorElement
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const
Definition: SiDetectorElementCollection.cxx:15
TimedHitCollection
Definition: TimedHitCollection.h:15
InDetDD::SolidStateDetectorElementBase::identify
virtual Identifier identify() const override final
identifier of this detector element (inline)
SiChargedDiodeCollection.h
SiChargedDiodeCollection::identify
virtual Identifier identify() const override final
Definition: SiChargedDiodeCollection.h:230
Identifier
Definition: IdentifierFieldParser.cxx:14