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) {
108 if ( !passesFilters(particle) ) {
117 layerHit = identifyEntryLayer( particle);
123 ATH_MSG_VERBOSE(
"Particle >>" << particle <<
"<< hit boundary surface, "
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() );
131 double mass = particle.mass();
136 auto truthBinding = particle.getTruthBinding();
137 auto generationZeroGenParticle = truthBinding ? truthBinding->getGenerationZeroGenParticle() :
nullptr;
139 const int id = generationZeroGenParticle ?
HepMC::uniqueID(generationZeroGenParticle) : particle.id();
140 const int status = generationZeroGenParticle ? generationZeroGenParticle->status() : particle.status();
142 (*m_collectionHolder.get())[layerHit]->Emplace(particle.pdgCode(),
147 particle.timeStamp(),
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;