60 physicsManager( physicsManager ), targetVolume( NULL ),
62 outputParticleDecayProductCopyNumber( 0 ), incidentParticle( NULL ),
63 outputParticle( NULL ), nucleusOutputParticle( NULL )
67 if ( ! productionModel )
70 incidentParticle = productionModel->GetIncidentParticle();
71 outputParticle = productionModel->GetOutputParticle();
72 nucleusOutputParticle = productionModel->GetNucleusOutputParticle();
74 if ( ! incidentParticle || ! outputParticle || ! nucleusOutputParticle )
78 const CexmcSetup * setup( static_cast< const CexmcSetup * >(
92 G4Track * theTrack( const_cast< G4Track * >( track ) );
103 SetupIncidentParticleTrackInfo( track );
132 if ( track->
GetParentID() == outputParticleTrackId )
136 outputParticleDecayProductCopyNumber++ );
146 SetupIncidentParticleTrackInfo( track );
159 void CexmcTrackingAction::SetupIncidentParticleTrackInfo(
163 static_cast< CexmcIncidentParticleTrackInfo * >(
171 if ( volume && volume->GetLogicalVolume() == targetVolume )
174 trackInfo->ActivateStudiedProcess();
G4bool OnlyBeamParticleCanTriggerStudiedProcess(void) const
G4ParticleDefinition * GetDefinition() const
G4int GetParentID() const
const G4VUserDetectorConstruction * GetUserDetectorConstruction() const
const G4int CexmcInvalidTrackId(-1)
CexmcTrackingAction(CexmcPhysicsManager *physicsManager)
G4VUserTrackInformation * GetUserInformation() const
const G4LogicalVolume * GetVolume(SpecialVolumeType volume) const
const G4VProcess * GetCreatorProcess() const
const G4String & GetProcessName() const
void SetUserInformation(G4VUserTrackInformation *aValue) const
void PreUserTrackingAction(const G4Track *track)
static G4RunManager * GetRunManager()
G4VPhysicalVolume * GetVolume() const
virtual void ResampleTrackLengthInTarget(const G4Track *track, const G4StepPoint *stepPoint=NULL)=0
virtual CexmcProductionModel * GetProductionModel(void)=0
const G4String CexmcStudiedProcessFullName(CexmcStudiedProcessFirstName+CexmcStudiedProcessLastName)