3 #include "G4ParticleTypes.hh"
4 #include "G4TrackingManager.hh"
7 #include "G4VProcess.hh"
10 #include "G4PhysicalConstants.hh"
11 #include "G4SystemOfUnits.hh"
42 G4double percentageOfCherenkovPhotonsToDraw = 0.0;
44 if ( aTrack->GetDefinition() != G4OpticalPhoton::OpticalPhotonDefinition()
45 || G4UniformRand() < percentageOfCherenkovPhotonsToDraw )
48 fpTrackingManager->SetTrajectory(thisTrajectory);
49 fpTrackingManager->SetStoreTrajectory(
true);
52 fpTrackingManager->SetStoreTrajectory(
false);
54 G4ParticleDefinition*
particle = aTrack->GetDefinition();
55 G4String name = particle->GetParticleName();
56 G4double fCharge = particle->GetPDGCharge();
58 G4Track* tr = (G4Track*) aTrack;
59 if ( aTrack->GetTrackID() == 1 ) {
64 tr->SetTrackStatus(fStopButAlive);
67 if ( aTrack->GetTrackID() == 2 ) {
76 const G4VProcess* creatorProcess = aTrack->GetCreatorProcess();
82 if (aTrack->GetUserInformation())
91 if( aTrack->GetParentID()==0 ||
92 ((creatorProcess!=0) &&
ProcessList.count(creatorProcess->GetProcessName()) ) ||
93 (
ParticleList.count(aTrack->GetDefinition()->GetPDGEncoding()) )
94 || (aTrack->GetDefinition()->GetPDGEncoding()==22 && aTrack->GetTotalEnergy() > 50.0*MeV)
106 if (aTrack->GetDefinition()->GetPDGEncoding()==111)
107 pi0List.insert(aTrack->GetTrackID());
109 if (aTrack->GetParentID()==0 ||
110 (aTrack->GetDefinition()->GetPDGEncoding()==22 &&
111 pi0List.count(aTrack->GetParentID())))
114 G4Track* theTrack = (G4Track*)aTrack;
115 theTrack->SetUserInformation(anInfo);
118 G4TrackVector* secondaries = fpTrackingManager->GimmeSecondaries();
121 size_t nSeco = secondaries->size();
124 for(
size_t i=0;i<nSeco;i++)
128 (*secondaries)[i]->SetUserInformation(infoSec);
133 if ( aTrack->GetDefinition() != G4OpticalPhoton::OpticalPhotonDefinition() )
139 G4ThreeVector currentPosition = aTrack->GetPosition();
140 G4VPhysicalVolume* currentVolume = aTrack->GetVolume();
void PreUserTrackingAction(const G4Track *aTrack)
std::set< G4int > pi0List
void SetStoppingVolume(G4VPhysicalVolume *currentVolume)
std::set< G4int > ParticleList
void SetStoppingPoint(G4ThreeVector ¤tPosition)
void SetSaveFlag(G4bool value)
void PostUserTrackingAction(const G4Track *)
std::set< G4String > ProcessList