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
G4VITRestProcess.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/// \brief Identical to G4VRestProcess with dependency from G4VITProcess
28//
29// WARNING : This class is released as a prototype.
30// It might strongly evolve or even disapear in the next releases.
31//
32// Author: Mathieu Karamitros
33
34// The code is developed in the framework of the ESA AO7146
35//
36// We would be very happy hearing from you, send us your feedback! :)
37//
38// In order for Geant4-DNA to be maintained and still open-source,
39// article citations are crucial.
40// If you use Geant4-DNA chemistry and you publish papers about your software,
41// in addition to the general paper on Geant4-DNA:
42//
43// Int. J. Model. Simul. Sci. Comput. 1 (2010) 157–178
44//
45// we would be very happy if you could please also cite the following
46// reference papers on chemistry:
47//
48// J. Comput. Phys. 274 (2014) 841-882
49// Prog. Nucl. Sci. Tec. 2 (2011) 503-508
50
51#ifndef G4VITRestProcess_h
52#define G4VITRestProcess_h 1
53
55
56#include "G4VITProcess.hh"
57
58/**
59 * Identical to G4VRestProcess with dependency from G4VITProcess
60 */
61
63{
64 // Abstract class which defines the public behavior of
65 // physics interactions at rest.
66
67public:
70
71 virtual ~G4VITRestProcess();
72
73public:
74 // with description
77
78 virtual G4VParticleChange* AtRestDoIt(const G4Track&, const G4Step&);
79
80 // no operation in PostStepDoIt and AlongStepDoIt
84 G4double&,
86 {
87 return -1.0;
88 }
89
93 {
94 return -1.0;
95 }
96
97 // no operation in PostStepDoIt and AlongStepDoIt
99 {
100 return 0;
101 }
102
104 {
105 return 0;
106 }
107
108protected:
109 // with description
110
111 virtual G4double GetMeanLifeTime(const G4Track& aTrack,
113 // Calculates the mean life-time (i.e. for decays) of the
114 // particle at rest due to the occurrence of the given process,
115 // or converts the probability of interaction (i.e. for
116 // annihilation) into the life-time of the particle for the
117 // occurrence of the given process.
118
119protected:
120 // hide default constructor and assignment operator as private
123};
124
125// -----------------------------------------
126// inlined function members implementation
127// -----------------------------------------
130{
131 // beggining of tracking
133
134 // condition is set to "Not Forced"
136
137 // get mean life time
138 fpState->currentInteractionLength = GetMeanLifeTime(track, condition);
139
140#ifdef G4VERBOSE
141 if((fpState->currentInteractionLength < 0.0) || (verboseLevel > 2))
142 {
143 G4cout << "G4VITRestProcess::AtRestGetPhysicalInteractionLength ";
144 G4cout << "[ " << GetProcessName() << "]" << G4endl;
145 track.GetDynamicParticle()->DumpInfo();
146 G4cout << " in Material " << track.GetMaterial()->GetName() << G4endl;
147 G4cout << "MeanLifeTime = " << fpState->currentInteractionLength / CLHEP::ns
148 << "[ns]" << G4endl;
149 }
150#endif
151
152 return (fpState->theNumberOfInteractionLengthLeft)
153 * (fpState->currentInteractionLength);
154}
155
157 const G4Step&)
158{
161 return pParticleChange;
162}
163
164#endif
165
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
@ NotForced
G4GPILSelection
G4ProcessType
@ fNotDefined
double G4double
Definition: G4Types.hh:83
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
void DumpInfo(G4int mode=0) const
const G4String & GetName() const
Definition: G4Material.hh:172
Definition: G4Step.hh:62
G4Material * GetMaterial() const
const G4DynamicParticle * GetDynamicParticle() const
G4shared_ptr< G4ProcessState > fpState
virtual void ResetNumberOfInteractionLengthLeft()
virtual void ClearInteractionTimeLeft()
virtual void ClearNumberOfInteractionLengthLeft()
Identical to G4VRestProcess with dependency from G4VITProcess.
virtual G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &)
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &, G4double, G4double, G4double &, G4GPILSelection *)
virtual G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &)
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &, G4double, G4ForceCondition *)
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
virtual G4double GetMeanLifeTime(const G4Track &aTrack, G4ForceCondition *condition)=0
G4VITRestProcess & operator=(const G4VITRestProcess &right)
virtual ~G4VITRestProcess()
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)
G4int verboseLevel
Definition: G4VProcess.hh:360
G4VParticleChange * pParticleChange
Definition: G4VProcess.hh:325
const G4String & GetProcessName() const
Definition: G4VProcess.hh:386