59 G4ClassificationOfNewTrack classification = fUrgent;
62 G4cout<<
"StackingAction: ClassifyNewtrack "<<aTrack->GetTrackID()<<
63 " "<<aTrack->GetDefinition()->GetParticleName()<<G4endl;
64 G4StackManager* SM = G4EventManager::GetEventManager()->GetStackManager();
65 G4cout<<
"N total, waiting, urgent, postponed tracks: "
66 << std::setw(6) << SM->GetNTotalTrack() <<
" : "
67 << std::setw(6) << SM->GetNWaitingTrack() <<
" : "
68 << std::setw(6) << SM->GetNUrgentTrack() <<
" : "
69 << std::setw(6) << SM->GetNPostponedTrack()
72 G4int pdgCode = aTrack->GetParticleDefinition()->GetPDGEncoding();
73 if ( (aTrack->GetKineticEnergy() < minimumEK) && (particlesToExcludeFromCuts.count(pdgCode) == 0) )
74 {classification = fKill;}
78 {classification = fKill;}
83 G4int pdgNr = std::abs(pdgCode);
84 if( pdgNr == 12 || pdgNr == 14 || pdgNr == 16)
85 {classification = fKill;}
90 {classification = fKill;}
96 if (classification == fKill)
98 G4VPhysicalVolume* pv = aTrack->GetVolume();
101 G4VSensitiveDetector* sd = pv->GetLogicalVolume()->GetSensitiveDetector();
105 {ecSD->ProcessHitsTrack(aTrack,
nullptr);}
106#if G4VERSION_NUMBER > 1029
107 else if (
auto mSD =
dynamic_cast<G4MultiSensitiveDetector*
>(sd))
109 for (G4int i=0; i < (G4int)mSD->GetSize(); ++i)
112 {ecSD2->ProcessHitsTrack(aTrack,
nullptr);}
114 {egSD->ProcessHitsTrack(aTrack,
nullptr);}
117 for (G4int j=0; j < (G4int)mSDO->GetSize(); ++j)
120 {ecSD3->ProcessHitsTrack(aTrack,
nullptr);}
131 for (G4int i=0; i < (G4int)mSDO->GetSize(); ++i)
134 {ecSD2->ProcessHitsTrack(aTrack,
nullptr);}
139 {energyKilled += aTrack->GetTotalEnergy();}
142 {energyKilled += aTrack->GetTotalEnergy();}
145 {energyKilled += aTrack->GetTotalEnergy();}
148 return classification;