Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 GetSignifyStepsInAnyVolume()
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)
void StartTracking(G4Track *aTrack)
G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &currentSafety, G4GPILSelection *selection)
Definition: G4Step.hh:62
static G4bool EnableMagneticMoment(G4bool useMoment=true)