19 declareProperty(
"CaloEntryVolumeString",
21 "VolumeName in TrackRecords in CaloEntryLayer");
22 declareProperty(
"MuonEntryVolumeString",
24 "VolumeName in TrackRecords in MuonEntryLayer");
25 declareProperty(
"MuonExitVolumeString",
27 "VolumeName in TrackRecords in MuonExitLayer");
39 m_geoIDSvcQuick = &(*m_geoIDSvc);
42 ATH_CHECK ( m_particleFilterHandle.retrieve() );
44 m_numParticleFilters = m_particleFilterHandle.size();
46 for (
size_t curFilter = 0; curFilter<m_numParticleFilters; curFilter++) {
48 m_particleFilter[curFilter] = &(*m_particleFilterHandle[curFilter]);
52 return StatusCode::SUCCESS;
59 for (
size_t curFilter=0; pass && (curFilter<m_numParticleFilters); curFilter++) {
61 pass = m_particleFilter[curFilter]->passFilter(
particle);
81 if ( onIDSurface && onCaloSurface ) {
91 if (onCaloSurface && onMSSurface) {
95 else if (onMSSurface) {
117 layerHit = identifyEntryLayer(
particle);
124 "adding it to '" << (*m_collectionHolder.get())[layerHit]->Name() <<
"' TrackRecord collection");
128 CLHEP::Hep3Vector hepPos(
pos.x(),
pos.y(),
pos.z() );
129 CLHEP::Hep3Vector hepMom(
mom.x(),
mom.y(),
mom.z() );
136 auto truthBinding =
particle.getTruthBinding();
137 auto generationZeroGenParticle = truthBinding ? truthBinding->getGenerationZeroGenParticle() :
nullptr;
140 const int status = generationZeroGenParticle ? generationZeroGenParticle->status() :
particle.status();
142 (*m_collectionHolder.get())[layerHit]->Emplace(
particle.pdgCode(),
150 m_volumeName[layerHit] );
160 auto* collectionArray = m_collectionHolder.get();
161 if (not collectionArray) {
163 auto* temp =
new std::array<TrackRecordCollection*, ISF::fNumAtlasEntryLayers>;
164 m_collectionHolder.set(temp);
165 collectionArray = m_collectionHolder.get();
167 (*collectionArray)[
layer]=collection;
168 return StatusCode::SUCCESS;