Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4CoupledTransportation.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27//
28//
29// ------------------------------------------------------------
30// GEANT 4 include file implementation
31// ------------------------------------------------------------
32//
33// Class description:
34//
35// G4CoupledTransportation is an optional process to transport
36// a particle, in case of coupled navigation in parallel geometries
37// i.e. the geometrical propagation will be done
38// encountering the geometrical volumes of the detectors and
39// those of parallel geometries (eg for biasing, scoring, fast simulation)
40// It is tasked with updating the "safety" to reflect the geometrical
41// distance to the nearest volume, and the time of flight of the particle.
42
43// =======================================================================
44// Created: 17 May 2006, J. Apostolakis
45// =======================================================================
46#ifndef G4CoupledTransportation_hh
47#define G4CoupledTransportation_hh 1
48
49#include "G4Transportation.hh"
50
51#include "G4Track.hh"
52#include "G4Step.hh"
53
54class G4PathFinder;
55
57{
58
59 public: // with description
60
61 G4CoupledTransportation( G4int verbosityLevel= 0);
63
65 const G4Track& track,
66 G4double previousStepSize,
67 G4double currentMinimumStep,
68 G4double& currentSafety,
69 G4GPILSelection* selection
70 );
71
72 // AlongStepDoIt is implemented by G4Transportation.
73
75 const G4Track& track,
76 const G4Step& stepData
77 );
78 // Responsible for the relocation
79
80 // PostStepGetPhysicalInteractionLength is implemented by
81 // G4Transportation to force PostStepDoIt, but not limiting the step.
82
83 static void SetSignifyStepsInAnyVolume( G4bool anyVol )
84 { fSignifyStepInAnyVolume = anyVol; }
86 { return fSignifyStepInAnyVolume; }
87 // Flag in step corresponds to first/last step in a volume 'any'
88 // geometry (if this is true) or refers to first/last step in mass
89 // geometry only (if false)
90
91 // The following methods give access to first/last step in particular
92 // geometry *independent* of the choice of the 'Signify' flag
93 //
96 G4bool IsFirstStepInMassVolume() const { return fFirstStepInMassVolume; }
97 G4bool IsLastStepInMassVolume() const { return fMassGeometryLimitedStep; }
98
99 public: // without description
100
101 void StartTracking(G4Track* aTrack);
102 void EndTracking();
103
104 static G4bool EnableUseMagneticMoment(G4bool useMoment=true)
105 { return EnableMagneticMoment(useMoment); }
106 // Old name ... obsolete
107
108 protected:
109
110 void ReportInexactEnergy(G4double startEnergy, G4double endEnergy);
111 // Issue warning
112
113 void ReportMove( G4ThreeVector OldVector, G4ThreeVector NewVector,
114 const G4String& Quantity );
115
116 private:
117
118 G4PathFinder* fPathFinder;
119 // The PathFinder used to transport the particle
120
121 G4double fPreviousMassSafety;
122 G4double fPreviousFullSafety;
123
124 G4bool fMassGeometryLimitedStep;
125 // Flag to determine whether a 'mass' boundary was reached.
126
127 private:
128
129 G4bool fFirstStepInMassVolume;
130 // G4bool fLastStepInMassVolume; => use fMassGeometryLimitedStep
131
132 static G4bool fSignifyStepInAnyVolume;
133 // True: First/Last step in any one of the geometries
134 // False: First/Last step in volume of 'mass' geometry
135};
136
137#endif
G4GPILSelection
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
static void SetSignifyStepsInAnyVolume(G4bool anyVol)
static G4bool EnableUseMagneticMoment(G4bool useMoment=true)
G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &stepData)
void ReportMove(G4ThreeVector OldVector, G4ThreeVector NewVector, const G4String &Quantity)
void ReportInexactEnergy(G4double startEnergy, G4double endEnergy)
G4CoupledTransportation(G4int verbosityLevel=0)
void StartTracking(G4Track *aTrack)
G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &currentSafety, G4GPILSelection *selection)
static G4bool EnableMagneticMoment(G4bool useMoment=true)