|
ATLAS Offline Software
|
#include <StripDigitizationTool.h>
|
StatusCode | initServices () |
| initialize the required services More...
|
|
StatusCode | initFrontEndTool () |
| Initialize the StripFrontEnd AlgTool. More...
|
|
StatusCode | initDisabledCells () |
| Initialize the StripRandomDisabledCellGenerator AlgTool. More...
|
|
StatusCode | initSurfaceChargesGeneratorTool () |
| Initialize the StripSurfaceChargesGenerator AlgTool. More...
|
|
StatusCode | createAndStoreRDO (SiChargedDiodeCollection *chDiodeCollection, SG::WriteHandle< SCT_RDO_Container > *rdoContainer) const |
| RDO and SDO methods. More...
|
|
std::unique_ptr< SCT_RDO_Collection > | createRDO (SiChargedDiodeCollection *collection) const |
| Create RDOs from the SiChargedDiodeCollection for the current wafer. More...
|
|
StatusCode | getNextEvent (const EventContext &ctx) |
|
void | digitizeAllHits (const EventContext &ctx, SG::WriteHandle< SCT_RDO_Container > *rdoContainer, SG::WriteHandle< InDetSimDataCollection > *simDataCollMap, std::vector< bool > *processedElements, TimedHitCollection< SiHit > *thpcsi, CLHEP::HepRandomEngine *rndmEngine) |
| digitize all hits More...
|
|
void | digitizeNonHits (const EventContext &ctx, SG::WriteHandle< SCT_RDO_Container > *rdoContainer, SG::WriteHandle< InDetSimDataCollection > *simDataCollMap, const std::vector< bool > *processedElements, CLHEP::HepRandomEngine *rndmEngine) const |
| digitize SCT without hits More...
|
|
void | SetupRdoOutputType (Gaudi::Details::PropertyBase &) |
| Called when m_WriteSCT1_RawData is altered. More...
|
|
|
FloatProperty | m_tfix {this, "FixedTime", -999., "Fixed time for Cosmics run selection"} |
|
BooleanProperty | m_enableHits {this, "EnableHits", true, "Enable hits"} |
|
BooleanProperty | m_onlyHitElements {this, "OnlyHitElements", false, "Process only elements with hits"} |
|
BooleanProperty | m_cosmicsRun {this, "CosmicsRun", false, "Cosmics run selection"} |
|
BooleanProperty | m_barrelonly {this, "BarrelOnly", false, "Only Barrel layers"} |
|
BooleanProperty | m_randomDisabledCells {this, "RandomDisabledCells", false, "Use Random disabled cells, default no"} |
|
BooleanProperty | m_createNoiseSDO {this, "CreateNoiseSDO", false, "Create SDOs for strips with only noise hits (huge increase in SDO collection size"} |
|
IntegerProperty | m_HardScatterSplittingMode {this, "HardScatterSplittingMode", 0, "Control pileup & signal splitting. Process all SiHit or just those from signal or background events"} |
|
BooleanProperty | m_WriteSCT1_RawData {this, "WriteSCT1_RawData", false, "Write out SCT1_RawData rather than SCT3_RawData"} |
|
BooleanProperty | m_onlyUseContainerName {this, "OnlyUseContainerName", true, "Don't use the ReadHandleKey directly. Just extract the container name from it."} |
|
SG::ReadHandleKey< SiHitCollection > | m_hitsContainerKey {this, "InputObjectName", "StripHits", "Input HITS collection name"} |
|
std::string | m_inputObjectName {""} |
|
SG::WriteHandleKey< SCT_RDO_Container > | m_rdoContainerKey {this, "OutputObjectName", "SCT_RDOs", "Output Object name"} |
|
SG::WriteHandle< SCT_RDO_Container > | m_rdoContainer |
| RDO container handle. More...
|
|
SG::WriteHandleKey< InDetSimDataCollection > | m_simDataCollMapKey {this, "OutputSDOName", "StripSDO_Map", "Output SDO container name"} |
|
SG::WriteHandle< InDetSimDataCollection > | m_simDataCollMap |
| SDO Map handle. More...
|
|
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > | m_stripDetEleCollKey {this, "StripDetEleCollKey", "ITkStripDetectorElementCollection", "Key of SiDetectorElementCollection for SCT"} |
|
ToolHandle< IFrontEnd > | m_sct_FrontEnd {this, "FrontEnd", "StripFrontEnd", "Handle the Front End Electronic tool"} |
|
ToolHandle< ISurfaceChargesGenerator > | m_sct_SurfaceChargesGenerator {this, "SurfaceChargesGenerator", "StripSurfaceChargesGenerator", "Choice of using a more detailed charge drift model"} |
|
ToolHandle< IRandomDisabledCellGenerator > | m_sct_RandomDisabledCellGenerator {this, "RandomDisabledCellGenerator", "StripRandomDisabledCellGenerator", ""} |
|
ServiceHandle< IAthRNGSvc > | m_rndmSvc {this, "RndmSvc", "AthRNGSvc", ""} |
| Random number service. More...
|
|
ServiceHandle< PileUpMergeSvc > | m_mergeSvc {this, "MergeSvc", "PileUpMergeSvc", "Merge service used in Pixel & SCT digitization"} |
|
const SCT_ID * | m_detID {nullptr} |
| Handle to the ID helper. More...
|
|
std::unique_ptr< TimedHitCollection< SiHit > > | m_thpcsi {nullptr} |
|
std::vector< ISiChargedDiodesProcessorTool * > | m_diodeCollectionTools |
|
std::vector< bool > | m_processedElements |
| vector of processed elements - set by digitizeHits() */ More...
|
|
std::vector< std::unique_ptr< SiHitCollection > > | m_hitCollPtrs |
|
bool | m_HardScatterSplittingSkipper {false} |
|
Definition at line 58 of file StripDigitizationTool.h.
◆ StripDigitizationTool()
ITk::StripDigitizationTool::StripDigitizationTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~StripDigitizationTool()
ITk::StripDigitizationTool::~StripDigitizationTool |
( |
| ) |
|
|
virtualdefault |
◆ addSDO()
Definition at line 871 of file StripDigitizationTool.cxx.
874 std::vector<InDetSimData::Deposit> deposits;
881 const list_t& charges{(*i_chargedDiode).second.totalCharge().chargeComposition()};
883 bool real_particle_hit{
false};
885 list_t::const_iterator EndOfChargeList{charges.end()};
886 for (list_t::const_iterator i_ListOfCharges{charges.begin()}; i_ListOfCharges != EndOfChargeList; ++i_ListOfCharges) {
891 if (not real_particle_hit) {
902 real_particle_hit =
true;
906 std::vector<InDetSimData::Deposit>::reverse_iterator theDeposit{deposits.rend()};
907 std::vector<InDetSimData::Deposit>::reverse_iterator depositsR_end{deposits.rend()};
908 std::vector<InDetSimData::Deposit>::reverse_iterator i_Deposit{deposits.rbegin()};
909 for (; i_Deposit != depositsR_end; ++i_Deposit) {
910 if ((*i_Deposit).first == trkLink) {
911 theDeposit = i_Deposit;
917 if (theDeposit != depositsR_end) {
918 (*theDeposit).second += i_ListOfCharges->charge();
920 deposits.emplace_back(trkLink, i_ListOfCharges->charge());
927 int strip{roCell.strip()};
930 int row2D{sctDesign.
row(strip)};
935 int strip2D{sctDesign.strip(strip)};
938 (*simDataCollMap)->try_emplace(id_readout, std::move(deposits), (*i_chargedDiode).second.flag());
◆ applyProcessorTools()
void ITk::StripDigitizationTool::applyProcessorTools |
( |
SiChargedDiodeCollection * |
chargedDiodes, |
|
|
CLHEP::HepRandomEngine * |
rndmEngine |
|
) |
| const |
|
protected |
◆ createAndStoreRDO()
RDO and SDO methods.
Create RDOs from the SiChargedDiodeCollection for the current wafer and save to StoreGate
- Parameters
-
chDiodeCollection | list of the SiChargedDiodes on the current wafer |
Definition at line 641 of file StripDigitizationTool.cxx.
644 std::unique_ptr<SCT_RDO_Collection> RDOColl{
createRDO(chDiodeCollection)};
652 if ((*rdoContainer)->addCollection(RDOColl.release(), identifyHash).isFailure()) {
653 ATH_MSG_FATAL(
"SCT RDO collection could not be added to container!");
654 return StatusCode::FAILURE;
659 return StatusCode::SUCCESS;
◆ createRDO()
Create RDOs from the SiChargedDiodeCollection for the current wafer.
- Parameters
-
collection | list of the SiChargedDiodes on the current wafer |
Definition at line 665 of file StripDigitizationTool.cxx.
668 std::unique_ptr<SCT_RDO_Collection> p_rdocoll;
674 p_rdocoll = std::make_unique<SCT_RDO_Collection>(idHash_de);
675 }
catch (
const std::bad_alloc&) {
676 ATH_MSG_FATAL(
"Could not create a new SCT_RDORawDataCollection !");
684 for (; i_chargedDiode != i_chargedDiode_end; ++i_chargedDiode) {
685 unsigned int flagmask{
static_cast<unsigned int>((*i_chargedDiode).second.flag() & 0xFE)};
692 int strip{roCell.strip()};
693 if (strip > 0xffff) {
695 ATH_MSG_FATAL(
"Strip number too big for SCT1 raw data format.");
700 const unsigned int strip_rdo{
static_cast<unsigned int>((
strip & 0xFFFF) << 16)};
705 unsigned int size_rdo{
static_cast<unsigned int>(
size & 0xFFFF)};
712 for (; it2 != i_chargedDiode_end; ++it2) {
714 if (cluscounter >=
size) {
717 if (it2->second.flag() & 0xDE) {
718 int tmp{cluscounter};
719 while ((it2 != i_chargedDiode_end) and (cluscounter <
size - 1) and (it2->
second.
flag() & 0xDE)) {
723 if ((it2 != collection->
end()) and !(it2->second.flag() & 0xDE)) {
728 size_rdo =
tmp & 0xFFFF;
733 unsigned int StripWord{strip_rdo | size_rdo};
744 static const std::vector<int> dummyvector;
745 for (; i_chargedDiode != i_chargedDiode_end; ++i_chargedDiode) {
746 unsigned int flagmask{
static_cast<unsigned int>((*i_chargedDiode).second.flag() & 0xFE)};
752 int strip{roCell.strip()};
754 int row2D{sctDesign.
row(strip)};
759 int strip2D{sctDesign.strip(strip)};
774 if (cluscounter >=
size) {
775 ATH_MSG_WARNING(
"Cluster size reached while neighbouring strips still defined.");
778 if (diode->flag() & 0xDE) {
779 int tmp{cluscounter};
780 while ((cluscounter <
size - 1) and (diode->flag() & 0xDE)) {
781 diode = diode->nextInCluster();
784 if (diode and !(diode->flag() & 0xDE)) {
791 diode = diode->nextInCluster();
795 int stripIn11bits{
strip & 0x7ff};
796 if (stripIn11bits != strip) {
797 ATH_MSG_DEBUG(
"Strip number " << strip <<
" doesn't fit into 11 bits - will be truncated");
800 unsigned int StripWord{
static_cast<unsigned int>(groupSize | (stripIn11bits << 11) | (tbin << 22) | (ERRORS << 25))};
◆ digitizeAllHits()
digitize all hits
Definition at line 297 of file StripDigitizationTool.cxx.
313 ATH_MSG_DEBUG(
"Digitizing "<<chargedDiodesMap.size()<<
" Element(s)");
323 ATH_MSG_DEBUG(
"in digitize elements with hits: ec - layer - eta - phi "
328 <<
" processing hit number " << hitcount);
335 assert(idHash < processedElements->
size());
336 (*processedElements)[idHash] =
true;
340 if (not chargedDiodes.
empty()) {
342 if (
sc.isSuccess()) {
344 addSDO(&chargedDiodes, simDataCollMap);
348 chargedDiodes.
clear();
◆ digitizeElement()
Definition at line 403 of file StripDigitizationTool.cxx.
404 if (
nullptr == thpcsi) {
410 chargedDiodesMap.clear();
422 int barrel{firstHit->getBarrelEndcap()};
424 firstHit->getLayerDisk(),
425 firstHit->getPhiModule(),
426 firstHit->getEtaModule(),
427 firstHit->getSide())};
433 if (elements==
nullptr) {
441 if (sielement ==
nullptr) {
442 ATH_MSG_DEBUG(
"Barrel=" << barrel <<
" layer=" << firstHit->getLayerDisk() <<
" Eta=" << firstHit->getEtaModule() <<
" Phi=" << firstHit->getPhiModule() <<
" Side=" << firstHit->getSide());
443 ATH_MSG_ERROR(
"detector manager could not find element with id = " <<
id);
454 std::map<int, const InDetDD::SCT_ModuleSideDesign *>
children;
466 for (
const std::pair <const int, const InDetDD::SCT_ModuleSideDesign *> &subDesign :
children){
475 firstHit->getPhiModule(), firstHit->getEtaModule()+subDesign.first,
476 firstHit->getSide())};
484 std::unique_ptr<SiChargedDiodeCollection> thisChargedDiode(std::make_unique<SiChargedDiodeCollection>());
485 int i_index = subDesign.first;
486 thisChargedDiode->setDetectorElement(sielement_child);
487 chargedDiodesMap.insert({i_index,std::move(thisChargedDiode)});
491 else ATH_MSG_ERROR(
"detector manager could not find element with id = "<<id_child<<
" Barrel=" << firstHit->getBarrelEndcap() <<
" layer=" <<
492 firstHit->getLayerDisk() <<
" Eta=" << firstHit->getEtaModule()+subDesign.first <<
" Phi=" << firstHit->getPhiModule()
493 <<
" Side=" <<firstHit->getSide());
502 if (std::abs(phit->meanTime()) < 10000. *
CLHEP::ns) {
504 phit->getLayerDisk(),
505 phit->getPhiModule(),
506 phit->getEtaModule(),
513 if(chargedDiodesMap.size()>1) {
514 ATH_MSG_WARNING(
"More DiodesCollections("<<chargedDiodesMap.size()<<
") than expected (1). Please check your configuration!");
517 SiDigitizationSurfaceChargeInserter inserter(sielement,chargedDiodesMap[0].
get());
523 MultiElementChargeInserter inserter(chargedDiodesMap,motherDesign);
◆ digitizeNonHits()
digitize SCT without hits
Definition at line 355 of file StripDigitizationTool.cxx.
359 if (elements==
nullptr) {
367 for (
unsigned int i{0};
i < processedElements->size();
i++) {
368 if (not (*processedElements)[
i]) {
370 if (not idHash.is_valid()) {
376 ATH_MSG_DEBUG(
"In digitize of untouched elements: layer - phi - eta "
380 <<
"size: " << processedElements->size());
388 if (not chargedDiodes.
empty()) {
390 if (
sc.isSuccess()) {
392 addSDO(&chargedDiodes, simDataCollMap);
396 chargedDiodes.
clear();
◆ getNextEvent()
StatusCode ITk::StripDigitizationTool::getNextEvent |
( |
const EventContext & |
ctx | ) |
|
|
private |
Definition at line 814 of file StripDigitizationTool.cxx.
823 if (!hitCollection.isValid()) {
824 ATH_MSG_ERROR(
"Could not get SCT SiHitCollection container " << hitCollection.name() <<
" from store " << hitCollection.store());
825 return StatusCode::FAILURE;
829 m_thpcsi = std::make_unique<TimedHitCollection<SiHit>>(1);
830 m_thpcsi->insert(0, hitCollection.cptr());
831 ATH_MSG_DEBUG(
"SiHitCollection found with " << hitCollection->size() <<
" hits");
833 return StatusCode::SUCCESS;
836 TimedHitCollList hitCollList;
840 return StatusCode::FAILURE;
862 m_thpcsi->insert(iColl->first, p_collection);
863 ATH_MSG_DEBUG(
"SiTrackerHitCollection found with " << p_collection->size() <<
" hits");
865 return StatusCode::SUCCESS;
◆ initDisabledCells()
StatusCode ITk::StripDigitizationTool::initDisabledCells |
( |
| ) |
|
|
private |
Initialize the StripRandomDisabledCellGenerator AlgTool.
Definition at line 209 of file StripDigitizationTool.cxx.
216 return StatusCode::SUCCESS;
◆ initFrontEndTool()
StatusCode ITk::StripDigitizationTool::initFrontEndTool |
( |
| ) |
|
|
private |
◆ initialize()
StatusCode ITk::StripDigitizationTool::initialize |
( |
| ) |
|
|
finaloverridevirtual |
◆ initServices()
StatusCode ITk::StripDigitizationTool::initServices |
( |
| ) |
|
|
private |
◆ initSurfaceChargesGeneratorTool()
StatusCode ITk::StripDigitizationTool::initSurfaceChargesGeneratorTool |
( |
| ) |
|
|
private |
◆ interfaceID()
const InterfaceID & ITk::StripDigitizationTool::interfaceID |
( |
| ) |
|
|
inlinestatic |
◆ mergeEvent()
StatusCode ITk::StripDigitizationTool::mergeEvent |
( |
const EventContext & |
ctx | ) |
|
|
finaloverridevirtual |
◆ prepareEvent()
StatusCode ITk::StripDigitizationTool::prepareEvent |
( |
const EventContext & |
ctx, |
|
|
unsigned int |
|
|
) |
| |
|
finaloverridevirtual |
Called before processing physics events.
Definition at line 251 of file StripDigitizationTool.cxx.
265 m_thpcsi = std::make_unique<TimedHitCollection<SiHit>>();
267 return StatusCode::SUCCESS;
◆ processAllSubEvents()
StatusCode ITk::StripDigitizationTool::processAllSubEvents |
( |
const EventContext & |
ctx | ) |
|
|
finaloverridevirtual |
Definition at line 219 of file StripDigitizationTool.cxx.
221 return StatusCode::FAILURE;
226 CLHEP::HepRandomEngine *rndmEngine = rngWrapper->
getEngine(ctx);
245 return StatusCode::SUCCESS;
◆ processBunchXing()
Definition at line 554 of file StripDigitizationTool.cxx.
557 ATH_MSG_VERBOSE(
"StripDigitizationTool::processBunchXing() " << bunchXing);
562 return StatusCode::SUCCESS;
565 return StatusCode::SUCCESS;
572 TimedHitCollList hitCollList;
575 bSubEvents, eSubEvents).isSuccess())) and
576 hitCollList.empty()) {
578 return StatusCode::FAILURE;
586 std::unique_ptr<SiHitCollection> hitCollPtr{std::make_unique<SiHitCollection>(*iColl->second)};
588 ATH_MSG_DEBUG(
"SiHitCollection found with " << hitCollPtr->size() <<
591 <<
" index: " << timeIndex.index()
592 <<
" type: " << timeIndex.type());
593 m_thpcsi->insert(timeIndex, hitCollPtr.get());
597 return StatusCode::SUCCESS;
◆ SetupRdoOutputType()
void ITk::StripDigitizationTool::SetupRdoOutputType |
( |
Gaudi::Details::PropertyBase & |
| ) |
|
|
private |
◆ storeTool()
◆ m_barrelonly
BooleanProperty ITk::StripDigitizationTool::m_barrelonly {this, "BarrelOnly", false, "Only Barrel layers"} |
|
private |
◆ m_cosmicsRun
BooleanProperty ITk::StripDigitizationTool::m_cosmicsRun {this, "CosmicsRun", false, "Cosmics run selection"} |
|
private |
◆ m_createNoiseSDO
BooleanProperty ITk::StripDigitizationTool::m_createNoiseSDO {this, "CreateNoiseSDO", false, "Create SDOs for strips with only noise hits (huge increase in SDO collection size"} |
|
private |
◆ m_detID
const SCT_ID* ITk::StripDigitizationTool::m_detID {nullptr} |
|
private |
◆ m_diodeCollectionTools
◆ m_enableHits
BooleanProperty ITk::StripDigitizationTool::m_enableHits {this, "EnableHits", true, "Enable hits"} |
|
private |
◆ m_HardScatterSplittingMode
IntegerProperty ITk::StripDigitizationTool::m_HardScatterSplittingMode {this, "HardScatterSplittingMode", 0, "Control pileup & signal splitting. Process all SiHit or just those from signal or background events"} |
|
private |
◆ m_HardScatterSplittingSkipper
bool ITk::StripDigitizationTool::m_HardScatterSplittingSkipper {false} |
|
private |
◆ m_hitCollPtrs
std::vector<std::unique_ptr<SiHitCollection> > ITk::StripDigitizationTool::m_hitCollPtrs |
|
private |
◆ m_hitsContainerKey
◆ m_inputObjectName
std::string ITk::StripDigitizationTool::m_inputObjectName {""} |
|
private |
◆ m_mergeSvc
◆ m_onlyHitElements
BooleanProperty ITk::StripDigitizationTool::m_onlyHitElements {this, "OnlyHitElements", false, "Process only elements with hits"} |
|
private |
◆ m_onlyUseContainerName
BooleanProperty ITk::StripDigitizationTool::m_onlyUseContainerName {this, "OnlyUseContainerName", true, "Don't use the ReadHandleKey directly. Just extract the container name from it."} |
|
private |
◆ m_processedElements
std::vector<bool> ITk::StripDigitizationTool::m_processedElements |
|
private |
◆ m_randomDisabledCells
BooleanProperty ITk::StripDigitizationTool::m_randomDisabledCells {this, "RandomDisabledCells", false, "Use Random disabled cells, default no"} |
|
private |
◆ m_rdoContainer
◆ m_rdoContainerKey
◆ m_rndmSvc
◆ m_sct_FrontEnd
ToolHandle<IFrontEnd> ITk::StripDigitizationTool::m_sct_FrontEnd {this, "FrontEnd", "StripFrontEnd", "Handle the Front End Electronic tool"} |
|
private |
◆ m_sct_RandomDisabledCellGenerator
ToolHandle<IRandomDisabledCellGenerator> ITk::StripDigitizationTool::m_sct_RandomDisabledCellGenerator {this, "RandomDisabledCellGenerator", "StripRandomDisabledCellGenerator", ""} |
|
private |
◆ m_sct_SurfaceChargesGenerator
◆ m_simDataCollMap
◆ m_simDataCollMapKey
◆ m_stripDetEleCollKey
◆ m_tfix
FloatProperty ITk::StripDigitizationTool::m_tfix {this, "FixedTime", -999., "Fixed time for Cosmics run selection"} |
|
private |
◆ m_thpcsi
◆ m_WriteSCT1_RawData
BooleanProperty ITk::StripDigitizationTool::m_WriteSCT1_RawData {this, "WriteSCT1_RawData", false, "Write out SCT1_RawData rather than SCT3_RawData"} |
|
private |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
void setIdentifier(Identifier id)
virtual IdentifierHash identifyHash() const override final
const SCT_ModuleSideDesign * getMother() const
SiChargedDiodeIterator end()
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
int phi_module(const Identifier &id) const
#define ATH_MSG_VERBOSE(x)
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
std::vector< SiCharge > list_t
bool nextDetectorElement(const_iterator &b, const_iterator &e)
sets an iterator range with the hits of current detector element returns a bool when done
SiChargedDiodeIterator begin()
SiChargedDiodeMap::iterator SiChargedDiodeIterator
std::list< value_t > type
type of the collection of timed data object
virtual int row(int stripId1Dim) const
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
a link optimized in size for a GenParticle in a McEventCollection
const std::map< int, const SCT_ModuleSideDesign * > & getChildren() const
void setDetectorElement(const InDetDD::SolidStateDetectorElementBase *SiElement)
::StatusCode StatusCode
StatusCode definition for legacy code.
static int GetTimeBin(SiChargedDiode &chDiode)
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
static void ClusterUsed(SiChargedDiode &chDiode, bool flag)
size_type wafer_hash_max(void) const
A wrapper class for event-slot-local random engines.
int layer_disk(const Identifier &id) const
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
std::size_t numberOfSiHits(const xAOD::TrackParticle *tp)
return the number of Si hits in the track particle
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
static int GetStripNum(SiChargedDiode &chDiode)
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
#define ATH_MSG_WARNING(x)
int eta_module(const Identifier &id) const
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
static void SetStripNum(SiChargedDiode &chDiode, int nstrip, MsgStream *log=nullptr)
SiChargedDiode * nextInCluster()
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
a struct encapsulating the identifier of a pile-up event
bool no_truth_link(const T &p)
Method to establish if a if the object is linked to something which was never saved to the HepMC Trut...
const InDetDD::DetectorDesign & design() const
virtual Identifier identify() const override final
Identifier strip_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side, int strip) const
For an individual strip.