ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
PixelDigitizationTool Class Reference

#include <PixelDigitizationTool.h>

Inheritance diagram for PixelDigitizationTool:
Collaboration diagram for PixelDigitizationTool:

Public Member Functions

 PixelDigitizationTool (const std::string &type, const std::string &name, const IInterface *pIID)
 
virtual StatusCode initialize () override
 
virtual StatusCode processAllSubEvents (const EventContext &ctx) override
 
virtual StatusCode finalize () override
 
virtual StatusCode prepareEvent (const EventContext &ctx, unsigned int) override
 
StatusCode digitizeEvent (const EventContext &ctx)
 
virtual StatusCode mergeEvent (const EventContext &ctx) override
 
virtual StatusCode processBunchXing (int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents) override final
 

Protected Member Functions

void addSDO (SiChargedDiodeCollection *collection)
 

Protected Attributes

ServiceHandle< IAthRNGSvcm_rndmSvc
 Random number service. More...
 
ServiceHandle< PileUpMergeSvcm_mergeSvc
 
Gaudi::Property< bool > m_createNoiseSDO
 

Private Member Functions

 PixelDigitizationTool ()
 
 PixelDigitizationTool (const PixelDigitizationTool &)
 
PixelDigitizationTooloperator= (const PixelDigitizationTool &)
 

Private Attributes

std::vector< SiHitCollection * > m_hitCollPtrs
 
Gaudi::Property< bool > m_onlyUseContainerName
 
SG::ReadHandleKey< SiHitCollectionm_hitsContainerKey
 
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_pixelDetEleCollKey
 
std::string m_inputObjectName
 
SG::WriteHandleKey< PixelRDO_Containerm_rdoContainerKey
 
SG::WriteHandle< PixelRDO_Containerm_rdoContainer {}
 
SG::WriteHandleKey< InDetSimDataCollectionm_simDataCollKey
 
SG::WriteHandle< InDetSimDataCollectionm_simDataColl {}
 
Gaudi::Property< int > m_HardScatterSplittingMode
 
bool m_HardScatterSplittingSkipper
 
Gaudi::Property< bool > m_onlyHitElements
 
const PixelIDm_detID {}
 
Gaudi::Property< std::string > m_pixelIDName {this, "PixelIDName", "PixelID", "Pixel ID name"}
 
TimedHitCollection< SiHit > * m_timedHits {}
 
ToolHandleArray< SensorSimToolm_chargeTool
 
ToolHandleArray< FrontEndSimToolm_fesimTool
 
ToolHandle< EnergyDepositionToolm_energyDepositionTool
 

structors and AlgTool implementation

Gaudi::Property< int > m_firstXing
 
Gaudi::Property< int > m_lastXing
 
Gaudi::Property< int > m_vetoPileUpTruthLinks
 
bool m_filterPassed {true}
 
virtual bool toProcess (int bunchXing) const override
 the method this base class helps implementing More...
 
virtual StatusCode processAllSubEvents (const EventContext &ctx)=0
 dummy implementation to allow compilation while all Digitization packages are migrated to use this new interface. More...
 
virtual bool filterPassed () const override
 dummy implementation of passing filter More...
 
virtual void resetFilter () override
 dummy implementation of filter reset More...
 

Detailed Description

Definition at line 38 of file PixelDigitizationTool.h.

Constructor & Destructor Documentation

◆ PixelDigitizationTool() [1/3]

PixelDigitizationTool::PixelDigitizationTool ( const std::string &  type,
const std::string &  name,
const IInterface *  pIID 
)

Definition at line 16 of file PixelDigitizationTool.cxx.

18  :
19  PileUpToolBase(type, name, pIID) {
20 }

◆ PixelDigitizationTool() [2/3]

PixelDigitizationTool::PixelDigitizationTool ( )
private

◆ PixelDigitizationTool() [3/3]

PixelDigitizationTool::PixelDigitizationTool ( const PixelDigitizationTool )
private

Member Function Documentation

◆ addSDO()

void PixelDigitizationTool::addSDO ( SiChargedDiodeCollection collection)
protected

Definition at line 279 of file PixelDigitizationTool.cxx.

279  {
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 }

◆ digitizeEvent()

StatusCode PixelDigitizationTool::digitizeEvent ( const EventContext &  ctx)

Definition at line 120 of file PixelDigitizationTool.cxx.

120  {
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 }

◆ filterPassed()

virtual bool PileUpToolBase::filterPassed ( ) const
inlineoverridevirtualinherited

dummy implementation of passing filter

Definition at line 49 of file PileUpToolBase.h.

49 { return m_filterPassed; }

◆ finalize()

StatusCode PixelDigitizationTool::finalize ( )
overridevirtual

Definition at line 59 of file PixelDigitizationTool.cxx.

59  {
60  return StatusCode::SUCCESS;
61 }

◆ initialize()

StatusCode PixelDigitizationTool::initialize ( )
overridevirtual

Reimplemented from PileUpToolBase.

Definition at line 25 of file PixelDigitizationTool.cxx.

25  {
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));
50  ATH_CHECK(m_rdoContainerKey.initialize());
52 
53  return StatusCode::SUCCESS;
54 }

◆ mergeEvent()

StatusCode PixelDigitizationTool::mergeEvent ( const EventContext &  ctx)
overridevirtual

Definition at line 355 of file PixelDigitizationTool.cxx.

355  {
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 }

◆ operator=()

PixelDigitizationTool& PixelDigitizationTool::operator= ( const PixelDigitizationTool )
private

◆ prepareEvent()

StatusCode PixelDigitizationTool::prepareEvent ( const EventContext &  ctx,
unsigned int   
)
overridevirtual

Definition at line 332 of file PixelDigitizationTool.cxx.

332  {
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 }

◆ processAllSubEvents() [1/2]

StatusCode PixelDigitizationTool::processAllSubEvents ( const EventContext &  ctx)
overridevirtual

Reimplemented from PileUpToolBase.

Definition at line 66 of file PixelDigitizationTool.cxx.

66  {
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 }

◆ processAllSubEvents() [2/2]

virtual StatusCode IPileUpTool::processAllSubEvents
inherited

dummy implementation to allow compilation while all Digitization packages are migrated to use this new interface.

◆ processBunchXing()

StatusCode PixelDigitizationTool::processBunchXing ( int  bunchXing,
SubEventIterator  bSubEvents,
SubEventIterator  eSubEvents 
)
finaloverridevirtual

Reimplemented from PileUpToolBase.

Definition at line 373 of file PixelDigitizationTool.cxx.

374  {
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 }

◆ resetFilter()

virtual void PileUpToolBase::resetFilter ( )
inlineoverridevirtualinherited

dummy implementation of filter reset

Reimplemented in MergeTruthJetsTool.

Definition at line 51 of file PileUpToolBase.h.

51 { m_filterPassed=true; }

◆ toProcess()

virtual bool PileUpToolBase::toProcess ( int  bunchXing) const
inlineoverridevirtualinherited

the method this base class helps implementing

Reimplemented in MergeHijingParsTool, and MergeTrackRecordCollTool.

Definition at line 32 of file PileUpToolBase.h.

32  {
33  //closed interval [m_firstXing,m_lastXing]
34  return !((m_firstXing > bunchXing) || (bunchXing > m_lastXing));
35  }

Member Data Documentation

◆ m_chargeTool

ToolHandleArray<SensorSimTool> PixelDigitizationTool::m_chargeTool
private
Initial value:
{
this, "ChargeTools", {}, "List of charge tools"
}

Definition at line 96 of file PixelDigitizationTool.h.

◆ m_createNoiseSDO

Gaudi::Property<bool> PixelDigitizationTool::m_createNoiseSDO
protected
Initial value:
{
this, "CreateNoiseSDO", false, "Set create noise SDO flag"
}

Definition at line 113 of file PixelDigitizationTool.h.

◆ m_detID

const PixelID* PixelDigitizationTool::m_detID {}
private

Definition at line 90 of file PixelDigitizationTool.h.

◆ m_energyDepositionTool

ToolHandle<EnergyDepositionTool> PixelDigitizationTool::m_energyDepositionTool
private
Initial value:
{
this, "EnergyDepositionTool", "EnergyDepositionTool", "Energy deposition tool"
}

Definition at line 102 of file PixelDigitizationTool.h.

◆ m_fesimTool

ToolHandleArray<FrontEndSimTool> PixelDigitizationTool::m_fesimTool
private
Initial value:
{
this, "FrontEndSimTools", {}, "List of Front-End simulation tools"
}

Definition at line 99 of file PixelDigitizationTool.h.

◆ m_filterPassed

bool PileUpToolBase::m_filterPassed {true}
protectedinherited

Definition at line 60 of file PileUpToolBase.h.

◆ m_firstXing

Gaudi::Property<int> PileUpToolBase::m_firstXing
protectedinherited
Initial value:
{this, "FirstXing", -999,
"First bunch-crossing in which det is live"}

Definition at line 54 of file PileUpToolBase.h.

◆ m_HardScatterSplittingMode

Gaudi::Property<int> PixelDigitizationTool::m_HardScatterSplittingMode
private
Initial value:
{
this, "HardScatterSplittingMode", 0, "Control pileup & signal splitting"
}

Definition at line 80 of file PixelDigitizationTool.h.

◆ m_HardScatterSplittingSkipper

bool PixelDigitizationTool::m_HardScatterSplittingSkipper
private
Initial value:
{
false
}

Definition at line 83 of file PixelDigitizationTool.h.

◆ m_hitCollPtrs

std::vector<SiHitCollection*> PixelDigitizationTool::m_hitCollPtrs
private

Definition at line 58 of file PixelDigitizationTool.h.

◆ m_hitsContainerKey

SG::ReadHandleKey<SiHitCollection> PixelDigitizationTool::m_hitsContainerKey
private
Initial value:
{
this, "InputObjectName", "", "Input HITS collection name"
}

Definition at line 63 of file PixelDigitizationTool.h.

◆ m_inputObjectName

std::string PixelDigitizationTool::m_inputObjectName
private
Initial value:
{
""
}

Definition at line 69 of file PixelDigitizationTool.h.

◆ m_lastXing

Gaudi::Property<int> PileUpToolBase::m_lastXing
protectedinherited
Initial value:
{this, "LastXing", 999,
"Last bunch-crossing in which det is live"}

Definition at line 56 of file PileUpToolBase.h.

◆ m_mergeSvc

ServiceHandle<PileUpMergeSvc> PixelDigitizationTool::m_mergeSvc
protected
Initial value:
{
this, "PileUpMergeSvc", "PileUpMergeSvc", ""
}

Definition at line 109 of file PixelDigitizationTool.h.

◆ m_onlyHitElements

Gaudi::Property<bool> PixelDigitizationTool::m_onlyHitElements
private
Initial value:
{
this, "OnlyHitElements", false, "Process only elements with hits"
}

Definition at line 86 of file PixelDigitizationTool.h.

◆ m_onlyUseContainerName

Gaudi::Property<bool> PixelDigitizationTool::m_onlyUseContainerName
private
Initial value:
{
this, "OnlyUseContainerName", true, "Don't use the ReadHandleKey directly. Just extract the container name from it."
}

Definition at line 60 of file PixelDigitizationTool.h.

◆ m_pixelDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> PixelDigitizationTool::m_pixelDetEleCollKey
private
Initial value:
{
this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"
}

Definition at line 66 of file PixelDigitizationTool.h.

◆ m_pixelIDName

Gaudi::Property<std::string> PixelDigitizationTool::m_pixelIDName {this, "PixelIDName", "PixelID", "Pixel ID name"}
private

Definition at line 91 of file PixelDigitizationTool.h.

◆ m_rdoContainer

SG::WriteHandle<PixelRDO_Container> PixelDigitizationTool::m_rdoContainer {}
private

Definition at line 75 of file PixelDigitizationTool.h.

◆ m_rdoContainerKey

SG::WriteHandleKey<PixelRDO_Container> PixelDigitizationTool::m_rdoContainerKey
private
Initial value:
{
this, "RDOCollName", "PixelRDOs", "RDO collection name"
}

Definition at line 72 of file PixelDigitizationTool.h.

◆ m_rndmSvc

ServiceHandle<IAthRNGSvc> PixelDigitizationTool::m_rndmSvc
protected
Initial value:
{
this, "RndmSvc", "AthRNGSvc", ""
}

Random number service.

Definition at line 106 of file PixelDigitizationTool.h.

◆ m_simDataColl

SG::WriteHandle<InDetSimDataCollection> PixelDigitizationTool::m_simDataColl {}
private

Definition at line 79 of file PixelDigitizationTool.h.

◆ m_simDataCollKey

SG::WriteHandleKey<InDetSimDataCollection> PixelDigitizationTool::m_simDataCollKey
private
Initial value:
{
this, "SDOCollName", "PixelSDO_Map", "SDO collection name"
}

Definition at line 76 of file PixelDigitizationTool.h.

◆ m_timedHits

TimedHitCollection<SiHit>* PixelDigitizationTool::m_timedHits {}
private

Definition at line 94 of file PixelDigitizationTool.h.

◆ m_vetoPileUpTruthLinks

Gaudi::Property<int> PileUpToolBase::m_vetoPileUpTruthLinks
protectedinherited
Initial value:
{this, "VetoPileUpTruthLinks", true,
"Ignore links to suppressed pile-up truth"}

Definition at line 58 of file PileUpToolBase.h.


The documentation for this class was generated from the following files:
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
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
PileUpToolBase::m_filterPassed
bool m_filterPassed
Definition: PileUpToolBase.h:60
InDetDD::PixelModuleDesign
Definition: PixelModuleDesign.h:48
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
SiChargedDiodeCollection::end
SiChargedDiodeIterator end()
Definition: SiChargedDiodeCollection.h:253
PixelDigitizationTool::m_onlyHitElements
Gaudi::Property< bool > m_onlyHitElements
Definition: PixelDigitizationTool.h:86
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
PileUpToolBase::m_lastXing
Gaudi::Property< int > m_lastXing
Definition: PileUpToolBase.h:56
HepMC::ignoreTruthLink
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
Definition: MagicNumbers.h:296
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
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:269
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::setDetectorElement
void setDetectorElement(const InDetDD::SolidStateDetectorElementBase *SiElement)
Definition: SiChargedDiodeCollection.h:207
lumiFormat.i
int i
Definition: lumiFormat.py:92
TimedHitCollection::reserve
void reserve(unsigned int numberOfHits)
reserve a timed vector numberOfHits in size.
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
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
PileUpToolBase::PileUpToolBase
PileUpToolBase(const std::string &type, const std::string &name, const IInterface *parent)
Definition: PileUpToolBase.cxx:7
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
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:195
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
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:912
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
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
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
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
PileUpToolBase::m_firstXing
Gaudi::Property< int > m_firstXing
Definition: PileUpToolBase.h:54
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
IdentifierHash
Definition: IdentifierHash.h:38
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
PixelDigitizationTool::m_energyDepositionTool
ToolHandle< EnergyDepositionTool > m_energyDepositionTool
Definition: PixelDigitizationTool.h:102
TimedHitCollection
Definition: TimedHitCollection.h:15
InDetDD::SolidStateDetectorElementBase::identify
virtual Identifier identify() const override final
identifier of this detector element (inline)
SiChargedDiodeCollection::identify
virtual Identifier identify() const override final
Definition: SiChargedDiodeCollection.h:230