15 aTrack->SetUserInformation(trkInfo);
19 auto motherInfo =
static_cast<const TrackInformation *
>(mother.GetUserInformation());
21 LogDebug(
"SimG4CoreApplication") <<
"MCTruthUtil called for " << aTrack->GetTrackID() <<
" mother " 22 << motherInfo->isPrimary() <<
" flag " <<
flag;
26 trkInfo->setPrimary(
true);
27 trkInfo->setGenParticlePID(aTrack->GetDefinition()->GetPDGEncoding());
28 trkInfo->setGenParticleP(aTrack->GetMomentum().mag());
30 trkInfo->setGenParticlePID(motherInfo->genParticlePID());
31 trkInfo->setGenParticleP(motherInfo->genParticleP());
36 trkInfo->setStoreTrack();
37 trkInfo->putInHistory();
38 trkInfo->setIDonCaloSurface(aTrack->GetTrackID(),
39 motherInfo->getIDCaloVolume(),
40 motherInfo->getIDLastVolume(),
41 aTrack->GetDefinition()->GetPDGEncoding(),
42 aTrack->GetMomentum().mag());
45 trkInfo->setIDonCaloSurface(motherInfo->getIDonCaloSurface(),
46 motherInfo->getIDCaloVolume(),
47 motherInfo->getIDLastVolume(),
48 motherInfo->caloSurfaceParticlePID(),
49 motherInfo->caloSurfaceParticleP());
53 if (motherInfo->hasCastorHit()) {
54 trkInfo->setCastorHitPID(motherInfo->getCastorHitPID());
59 if ((motherInfo->storeTrack() && motherInfo->isFromTtoBTL()) || motherInfo->isBTLdaughter()) {
60 trkInfo->setBTLdaughter();
61 trkInfo->setIdAtBTLentrance(motherInfo->idAtBTLentrance());
62 LogDebug(
"SimG4CoreApplication") <<
"NewTrackAction: secondary in BTL " << trkInfo->isBTLdaughter()
63 <<
" from mother ID " << trkInfo->idAtBTLentrance();
67 aTrack->SetUserInformation(trkInfo);
72 G4String
tName(aTrack->GetVolume()->GetLogicalVolume()->GetRegion()->GetName());
73 if (
tName ==
"FastTimerRegionBTL" ||
tName ==
"FastTimerRegionSensBTL") {
static void secondary(G4Track *aSecondary, const G4Track &mother, int)
static bool isInBTL(const G4Track *)
static void primary(G4Track *aPrimary)