52 :
G4VProcess(processName, theType), fFieldTrack(
'0')
63 fGhostWorld =
nullptr;
90 fGhostWorldName = parallelWorldName;
92 fGhostNavigator = fTransportationManager->
GetNavigator(fGhostWorld);
101 fGhostWorldName = parallelWorld->
GetName();
102 fGhostWorld = parallelWorld;
103 fGhostNavigator = fTransportationManager->
GetNavigator(fGhostWorld);
112 if (partName ==
"geantino")
return false;
113 if (partName ==
"chargedgeantino")
return false;
116 if (pdgCode == 11 || pdgCode == 2212)
return false;
117 pdgCode = std::abs(pdgCode);
118 if (pdgCode == 22)
return false;
119 if (pdgCode == 12 || pdgCode == 14 || pdgCode == 16)
return false;
132 if (fGhostNavigator !=
nullptr) {
137 "G4ParallelWorldScoringProcess is used for tracking without having a parallel "
147 fNewGhostTouchable = fOldGhostTouchable;
180 if (fOldGhostTouchable->
GetVolume() !=
nullptr) {
187 fNewGhostTouchable = fOldGhostTouchable;
191 if (fNewGhostTouchable->
GetVolume() !=
nullptr) {
233 if (fOldGhostTouchable->
GetVolume() !=
nullptr) {
245 fNewGhostTouchable = fOldGhostTouchable;
251 if (fNewGhostTouchable->
GetVolume() !=
nullptr) {
280 if (endTrack_G4MT_TLS_ ==
nullptr) endTrack_G4MT_TLS_ =
new G4FieldTrack(
'0');
283 if (eLimited_G4MT_TLS_ ==
nullptr) eLimited_G4MT_TLS_ =
new ELimited;
284 ELimited& eLimited = *eLimited_G4MT_TLS_;
289 if (previousStepSize > 0.) {
290 fGhostSafety -= previousStepSize;
292 if (fGhostSafety < 0.) fGhostSafety = 0.0;
295 if (currentMinimumStep <= fGhostSafety && currentMinimumStep > 0.) {
297 returnedStep = currentMinimumStep;
299 proposedSafety = fGhostSafety - currentMinimumStep;
305 returnedStep = fPathFinder->
ComputeStep(fFieldTrack, currentMinimumStep, fNavigatorID,
317 proposedSafety = fGhostSafety;
322 returnedStep *= (1.0 + 1.0e-9);
343void G4ParallelWorldScoringProcess::CopyStep(
const G4Step& step)
368 G4cout <<
"In mass geometry ------------------------------------------------" <<
G4endl;
376 G4cout <<
"NoProcessAssigned";
380 G4cout <<
" PostStepPoint : ";
392 G4cout <<
"NoProcessAssigned";
397 G4cout <<
"In ghost geometry ------------------------------------------------" <<
G4endl;
407 G4cout <<
"NoProcessAssigned";
411 G4cout <<
" PostStepPoint : ";
424 G4cout <<
"NoProcessAssigned";
G4double condition(const G4ErrorSymMatrix &m)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
@ NotCandidateForSelection
G4GLOB_DLL std::ostream G4cout
static void Update(G4FieldTrack *, const G4Track *)
G4ThreeVector GetPosition() const
G4VSensitiveDetector * GetSensitiveDetector() const
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
void StartTracking(G4Track *) override
G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &) override
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition) override
G4bool IsAtRestRequired(G4ParticleDefinition *partDef)
void SetParallelWorld(G4String parallelWorldName)
~G4ParallelWorldScoringProcess() override
G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &) override
G4ParallelWorldScoringProcess(const G4String &processName="ParaWorldScore", G4ProcessType theType=fParameterisation)
G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &) override
G4double AlongStepGetPhysicalInteractionLength(const G4Track &, G4double, G4double, G4double &, G4GPILSelection *) override
void Verbose(const G4Step &) const
G4double AtRestGetPhysicalInteractionLength(const G4Track &, G4ForceCondition *) override
G4int GetPDGEncoding() const
const G4String & GetParticleName() const
G4double ComputeStep(const G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4int navigatorId, G4int stepNo, G4double &pNewSafety, ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume *currentVolume)
void PrepareNewTrack(const G4ThreeVector &position, const G4ThreeVector &direction, G4VPhysicalVolume *massStartVol=nullptr)
static G4PathFinder * GetInstance()
G4TouchableHandle CreateTouchableHandle(G4int navId) const
void SetSensitiveDetector(G4VSensitiveDetector *)
G4StepStatus GetStepStatus() const
const G4VTouchable * GetTouchable() const
void SetStepStatus(const G4StepStatus aValue)
const G4VProcess * GetProcessDefinedStep() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
const G4ThreeVector & GetPosition() const
const G4TouchableHandle & GetTouchableHandle() const
G4VSensitiveDetector * GetSensitiveDetector() const
G4VPhysicalVolume * GetPhysicalVolume() const
G4SteppingControl GetControlFlag() const
G4Track * GetTrack() const
void SetStepLength(G4double value)
void SetNonIonizingEnergyDeposit(G4double value)
G4StepPoint * GetPreStepPoint() const
G4double GetNonIonizingEnergyDeposit() const
G4double GetStepLength() const
G4double GetTotalEnergyDeposit() const
void SetControlFlag(G4SteppingControl StepControlFlag)
void SetTotalEnergyDeposit(G4double value)
G4StepPoint * GetPostStepPoint() const
void SetTrack(G4Track *value)
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
virtual G4int GetReplicaNumber(G4int depth=0) const
G4VPhysicalVolume * GetVolume() const
const G4ThreeVector & GetPosition() const
G4int GetCurrentStepNumber() const
const G4ThreeVector & GetMomentumDirection() const
G4VPhysicalVolume * GetParallelWorld(const G4String &worldName)
static G4TransportationManager * GetTransportationManager()
G4int ActivateNavigator(G4Navigator *aNavigator)
G4Navigator * GetNavigator(const G4String &worldName)
virtual void Initialize(const G4Track &)
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const
G4VParticleChange * pParticleChange
const G4String & GetProcessName() const
G4bool Hit(G4Step *aStep)