11 #include "G4StepPoint.hh"
12 #include "G4TouchableHistory.hh"
25 m_isInitialized(false),
26 m_volumeCollectionMap(volCollMap)
37 " recording envelopes:");
40 ATH_MSG_DEBUG(
" " << volCollPair.first <<
", " << volCollPair.second);
50 " not found in geometry!");
53 " will NOT be recorded");
79 recEnvelope.BeginOfEvent(eventInfo->GetHitCollectionMap()->Find<
TrackRecordCollection>(recEnvelope.GetTrackRecordCollectionName()));
93 G4StepPoint* preStep = aStep->GetPreStepPoint();
94 G4StepPoint* postStep = aStep->GetPostStepPoint();
96 G4VPhysicalVolume* preVol = preStep->GetPhysicalVolume();
97 G4VPhysicalVolume* postVol = postStep->GetPhysicalVolume();
99 if (preVol == postVol)
return;
101 const G4TouchableHistory* preTHist =
static_cast<const G4TouchableHistory*
>(preStep->GetTouchable());
102 const G4TouchableHistory* postTHist =
static_cast<const G4TouchableHistory*
>(postStep->GetTouchable());
103 const int preStepVolDepth = preTHist->GetHistoryDepth();
104 const int postStepVolDepth = postTHist->GetHistoryDepth();
108 const int envelopeLevel = recEnvelope.GetLevel();
109 if (envelopeLevel <= preStepVolDepth)
112 const G4LogicalVolume* logicalVolume1 =
113 preTHist->GetVolume(preStepVolDepth-envelopeLevel)->GetLogicalVolume();
114 if (logicalVolume1 != recEnvelope.GetLogicalVolume())
continue;
116 if (envelopeLevel <= postStepVolDepth &&
117 logicalVolume1 == postTHist->GetVolume(postStepVolDepth-envelopeLevel)
118 ->GetLogicalVolume())
125 recEnvelope.AddTrackRecord(aStep);