60 G4ClassificationOfNewTrack classification = fUrgent;
63 G4cout<<
"StackingAction: ClassifyNewtrack "<<aTrack->GetTrackID()<<
64 " "<<aTrack->GetDefinition()->GetParticleName()<<G4endl;
65 G4StackManager* SM = G4EventManager::GetEventManager()->GetStackManager();
66 G4cout<<
"N total, waiting, urgent, postponed tracks: "
67 << std::setw(6) << SM->GetNTotalTrack() <<
" : "
68 << std::setw(6) << SM->GetNWaitingTrack() <<
" : "
69 << std::setw(6) << SM->GetNUrgentTrack() <<
" : "
70 << std::setw(6) << SM->GetNPostponedTrack()
73 G4int pdgCode = aTrack->GetParticleDefinition()->GetPDGEncoding();
74 if ( (aTrack->GetKineticEnergy() < minimumEK) && (particlesToExcludeFromCuts.count(pdgCode) == 0) )
75 {classification = fKill;}
79 {classification = fKill;}
84 G4int pdgNr = std::abs(pdgCode);
85 if( pdgNr == 12 || pdgNr == 14 || pdgNr == 16)
86 {classification = fKill;}
91 {classification = fKill;}
97 if (classification == fKill)
99 G4VPhysicalVolume* pv = aTrack->GetVolume();
102 G4VSensitiveDetector* sd = pv->GetLogicalVolume()->GetSensitiveDetector();
106 {ecSD->ProcessHitsTrack(aTrack,
nullptr);}
107#if G4VERSION_NUMBER > 1029
108 else if (
auto mSD =
dynamic_cast<G4MultiSensitiveDetector*
>(sd))
110 for (G4int i=0; i < (G4int)mSD->GetSize(); ++i)
113 {ecSD2->ProcessHitsTrack(aTrack,
nullptr);}
115 {egSD->ProcessHitsTrack(aTrack,
nullptr);}
118 for (G4int j=0; j < (G4int)mSDO->GetSize(); ++j)
121 {ecSD3->ProcessHitsTrack(aTrack,
nullptr);}
132 for (G4int i=0; i < (G4int)mSDO->GetSize(); ++i)
135 {ecSD2->ProcessHitsTrack(aTrack,
nullptr);}
140 {energyKilled += aTrack->GetTotalEnergy();}
143 {energyKilled += aTrack->GetTotalEnergy();}
146 {energyKilled += aTrack->GetTotalEnergy();}
149 return classification;