Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4Decay.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// $Id$
28//
29//
30// ------------------------------------------------------------
31// GEANT 4 class header file
32//
33// History: first implementation, based on object model of
34// 7 July 1996 H.Kurashige
35// ------------------------------------------------------------
36// New Physics scheme 18 Jan. 1997 H.Kurahige
37// ------------------------------------------------------------
38// modified 4 Feb. 1997 H.Kurahige
39// modified 8 Sep. 1997 H.Kurahige
40// remove BuildPhysicsTable() 27 Nov. 1997 H.Kurashige
41// modified for new ParticleChange 12 Mar. 1998 H.Kurashige
42// added aPhysicsTable 2 Aug. 1998 H.Kurashige
43// PreAssignedDecayTime 18 Jan. 2001 H.Kurashige
44// Add External Decayer 23 Feb. 2001 H.Kurashige
45// Remove PhysicsTable 12 Feb. 2002 H.Kurashige
46// Fixed bug in PostStepGPIL
47// in case of stopping during AlongStepDoIt 12 Mar. 2004 H.Kurashige
48// Add GetRemainderLifeTime 10 Aug/2004 H.Kurashige
49// Add DaughterPolarization 23 July 2008 H.Kurashige
50
51
52#ifndef G4Decay_h
53#define G4Decay_h 1
54
55#include "G4ios.hh"
56#include "globals.hh"
59#include "G4DecayProcessType.hh"
60
61class G4VExtDecayer;
62
64{
65 // Class Description
66 // This class is a decay process
67
68 public:
69 // Constructors
70 G4Decay(const G4String& processName ="Decay");
71
72 // Destructor
73 virtual ~G4Decay();
74
75 private:
76 // copy constructor
77 G4Decay(const G4Decay &right);
78
79 // Assignment Operation (generated)
80 G4Decay & operator=(const G4Decay &right);
81
82 public: //With Description
83 // G4Decay Process has both
84 // PostStepDoIt (for decay in flight)
85 // and
86 // AtRestDoIt (for decay at rest)
87
89 const G4Track& aTrack,
90 const G4Step& aStep
91 );
92
94 const G4Track& aTrack,
95 const G4Step& aStep
96 );
97
98 virtual void BuildPhysicsTable(const G4ParticleDefinition&);
99 // In G4Decay, thePhysicsTable stores values of
100 // beta * std::sqrt( 1 - beta*beta)
101 // as a function of normalized kinetic enregy (=Ekin/mass),
102 // becasuse this table is universal for all particle types,
103
104
106 // returns "true" if the decay process can be applied to
107 // the particle type.
108
109 protected: // With Description
110 virtual G4VParticleChange* DecayIt(
111 const G4Track& aTrack,
112 const G4Step& aStep
113 );
114 // The DecayIt() method returns by pointer a particle-change object,
115 // which has information of daughter particles.
116
117 // Set daughter polarization
118 // NO OPERATION in the base class of G4Decay
119 virtual void DaughterPolarization(const G4Track& aTrack,
120 G4DecayProducts* products);
121
122 public:
124 const G4Track& track,
126 );
127
129 const G4Track& track,
130 G4double previousStepSize,
132 );
133
134 protected: // With Description
135 // GetMeanFreePath returns ctau*beta*gamma for decay in flight
136 // GetMeanLifeTime returns ctau for decay at rest
137 virtual G4double GetMeanFreePath(const G4Track& aTrack,
138 G4double previousStepSize,
140 );
141
142 virtual G4double GetMeanLifeTime(const G4Track& aTrack,
144 );
145
146 public: //With Description
147 virtual void StartTracking(G4Track*);
148 virtual void EndTracking();
149 // inform Start/End of tracking for each track to the physics process
150
151 public: //With Description
153 const G4VExtDecayer* GetExtDecayer() const;
154 // Set/Get External Decayer
155
157 //Get Remainder of life time at rest decay
158
159 public:
160 void SetVerboseLevel(G4int value);
161 G4int GetVerboseLevel() const;
162
163 protected:
165 // controle flag for output message
166 // 0: Silent
167 // 1: Warning message
168 // 2: More
169
170 protected:
171 // HighestValue.
173
174 // Remainder of life time at rest
176
177 // ParticleChange for decay process
179
180 // External Decayer
182};
183
184inline
186
187inline
189
190inline
192 const G4Track& aTrack,
193 const G4Step& aStep
194 )
195{
196 return DecayIt(aTrack, aStep);
197}
198
199inline
201 const G4Track& aTrack,
202 const G4Step& aStep
203 )
204{
205 return DecayIt(aTrack, aStep);
206}
207
208inline
210{
211 return pExtDecayer;
212}
213
214inline
216{
217 return fRemainderLifeTime;
218}
219
220#endif
221
222
223
224
225
226
227
228
229
230
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
virtual G4bool IsApplicable(const G4ParticleDefinition &)
Definition: G4Decay.cc:89
virtual G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
Definition: G4Decay.cc:129
virtual ~G4Decay()
Definition: G4Decay.cc:82
G4VExtDecayer * pExtDecayer
Definition: G4Decay.hh:181
virtual void EndTracking()
Definition: G4Decay.cc:362
virtual void DaughterPolarization(const G4Track &aTrack, G4DecayProducts *products)
Definition: G4Decay.cc:348
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)
Definition: G4Decay.cc:438
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
Definition: G4Decay.cc:175
virtual G4VParticleChange * DecayIt(const G4Track &aTrack, const G4Step &aStep)
Definition: G4Decay.cc:180
G4double fRemainderLifeTime
Definition: G4Decay.hh:175
virtual G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
Definition: G4Decay.hh:200
G4ParticleChangeForDecay fParticleChangeForDecay
Definition: G4Decay.hh:178
void SetVerboseLevel(G4int value)
Definition: G4Decay.hh:185
const G4VExtDecayer * GetExtDecayer() const
Definition: G4Decay.hh:209
virtual G4double GetMeanLifeTime(const G4Track &aTrack, G4ForceCondition *condition)
Definition: G4Decay.cc:101
virtual G4VParticleChange * AtRestDoIt(const G4Track &aTrack, const G4Step &aStep)
Definition: G4Decay.hh:191
void SetExtDecayer(G4VExtDecayer *)
Definition: G4Decay.cc:458
G4int GetVerboseLevel() const
Definition: G4Decay.hh:188
const G4double HighestValue
Definition: G4Decay.hh:172
G4double GetRemainderLifeTime() const
Definition: G4Decay.hh:215
virtual void StartTracking(G4Track *)
Definition: G4Decay.cc:354
G4int verboseLevel
Definition: G4Decay.hh:164
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
Definition: G4Decay.cc:371
Definition: G4Step.hh:78