Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/particles/management/include/G4DynamicParticle.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /particles/management/include/G4DynamicParticle.hh (Version 11.3.0) and /particles/management/include/G4DynamicParticle.hh (Version 10.3.p3)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // G4DynamicParticle                           << 
 27 //                                                 26 //
 28 // Class description:                          <<  27 // $Id: G4DynamicParticle.hh 81373 2014-05-27 13:06:32Z gcosmo $
 29 //                                                 28 //
 30 // A G4DynamicParticle aggregates the informat <<  29 // 
 31 // of a G4Particle, such as energy, momentum,  <<  30 // ------------------------------------------------------------
 32 // as well as the "particle definition", holdi <<  31 //  GEANT 4 class header file 
 33 // It contains the purely dynamic aspects of a <<  32 //
 34                                                <<  33 //  History: first implementation, based on object model of
 35 // History:                                    <<  34 //  2nd December 1995, G.Cosmo
 36 // - 2 December 1995, G.Cosmo - first design,  <<  35 //      ---------------- G4DynamicParticle  ----------------
 37 // - 29 January 1996, M.Asai - first implement <<  36 //      first implementation by Makoto Asai, 29 January 1996
 38 // - 1996 - 2007,     H.Kurashige - revisions. <<  37 //      revised by G.Cosmo, 29 February 1996
 39 // - 15 March 2019,   M.Novak - log-kinetic en <<  38 //      revised by Hisaya Kurashige, 24 July 1996
 40 //                    on demand if its stored  <<  39 //      revised by Hisaya Kurashige, 19 Oct 1996
 41 // ------------------------------------------- <<  40 //      revised by Hisaya Kurashige, 19 Feb 1997
 42 #ifndef G4DynamicParticle_hh                   <<  41 //                ------------------------
 43 #define G4DynamicParticle_hh 1                 <<  42 //      Add theDynamicCharge and theElectronOccupancy
 44                                                <<  43 //                             17 AUg. 1999   H.Kurashige  
 45 #include "G4Allocator.hh"                      <<  44 //      Add thePreAssignedDecayTime   18 Jan. 2001 H.Kurashige
 46 #include "G4ElectronOccupancy.hh"              <<  45 //      Added  MagneticMoment               Mar. 2007
 47 #include "G4Log.hh"                            <<  46 // ------------------------------------------------------------
 48 #include "G4LorentzVector.hh"                  << 
 49 #include "G4ParticleDefinition.hh"             << 
 50 #include "G4ParticleMomentum.hh"  // NOTE: mea << 
 51 #include "G4ios.hh"                            << 
 52 #include "globals.hh"                          << 
 53                                                    47 
 54 #include <CLHEP/Units/PhysicalConstants.h>     <<  48 #ifndef G4DynamicParticle_h
 55 #include <CLHEP/Units/SystemOfUnits.h>         <<  49 #define G4DynamicParticle_h 1
 56                                                    50 
 57 #include <cmath>                                   51 #include <cmath>
                                                   >>  52 #include <CLHEP/Units/SystemOfUnits.h>
 58                                                    53 
 59 class G4PrimaryParticle;                       <<  54 #include "globals.hh"
 60 class G4DecayProducts;                         <<  55 #include "G4ios.hh"
 61                                                << 
 62 class G4DynamicParticle                        << 
 63 {                                              << 
 64   public:                                      << 
 65     //- constructors                           << 
 66     G4DynamicParticle();                       << 
 67                                                << 
 68     G4DynamicParticle(const G4ParticleDefiniti << 
 69                       const G4ThreeVector& aMo << 
 70     G4DynamicParticle(const G4ParticleDefiniti << 
 71                       const G4ThreeVector& aPa << 
 72     G4DynamicParticle(const G4ParticleDefiniti << 
 73                       const G4LorentzVector& a << 
 74     G4DynamicParticle(const G4ParticleDefiniti << 
 75                       const G4ThreeVector& aPa << 
 76     G4DynamicParticle(const G4ParticleDefiniti << 
 77                       const G4ThreeVector& aMo << 
 78                       const G4double dynamical << 
 79                                                << 
 80     G4DynamicParticle(const G4DynamicParticle& << 
 81                                                << 
 82     //- destructor                             << 
 83     ~G4DynamicParticle();                      << 
 84                                                << 
 85     //- operators                              << 
 86     G4DynamicParticle& operator=(const G4Dynam << 
 87     G4bool operator==(const G4DynamicParticle& << 
 88     G4bool operator!=(const G4DynamicParticle& << 
 89                                                << 
 90     //- Move constructor & operator            << 
 91     G4DynamicParticle(G4DynamicParticle&& from << 
 92     G4DynamicParticle& operator=(G4DynamicPart << 
 93                                                << 
 94     //- new/delete operators are oberloded to  << 
 95     inline void* operator new(size_t);         << 
 96     inline void operator delete(void* aDynamic << 
 97                                                << 
 98     //- Set/Get methods                        << 
 99                                                << 
100     // Returns the normalized direction of the << 
101     inline const G4ThreeVector& GetMomentumDir << 
102                                                << 
103     // Sets the normalized direction of the mo << 
104     inline void SetMomentumDirection(const G4T << 
105                                                << 
106     // Sets the normalized direction of the mo << 
107     inline void SetMomentumDirection(G4double  << 
108                                                << 
109     // Returns the current particle momentum v << 
110     inline G4ThreeVector GetMomentum() const;  << 
111                                                << 
112     // set the current particle momentum vecto << 
113     void SetMomentum(const G4ThreeVector& mome << 
114                                                << 
115     // Returns the current particle energy-mom << 
116     inline G4LorentzVector Get4Momentum() cons << 
117                                                << 
118     // Set the current particle energy-momentu << 
119     void Set4Momentum(const G4LorentzVector& m << 
120                                                << 
121     // Returns the module of the momentum vect << 
122     inline G4double GetTotalMomentum() const;  << 
123                                                << 
124     // Returns the total energy of the particl << 
125     inline G4double GetTotalEnergy() const;    << 
126                                                << 
127     // Returns the kinetic energy of a particl << 
128     inline G4double GetKineticEnergy() const;  << 
129                                                << 
130     // Returns:                                << 
131     // - natural logarithm of the particle kin << 
132     // - LOG_EKIN_MIN otherwise                << 
133     inline G4double GetLogKineticEnergy() cons << 
134                                                << 
135     // Sets the kinetic energy of a particle   << 
136     inline void SetKineticEnergy(G4double aEne << 
137                                                << 
138     // Access Lorentz beta                     << 
139     inline G4double GetBeta() const;           << 
140                                                << 
141     // Returns the current particle proper tim << 
142     inline G4double GetProperTime() const;     << 
143                                                << 
144     // Set the current particle Proper Time    << 
145     inline void SetProperTime(G4double);       << 
146                                                << 
147     // Set/Get polarization vector             << 
148     inline const G4ThreeVector& GetPolarizatio << 
149     inline void SetPolarization(const G4ThreeV << 
150     inline void SetPolarization(G4double polX, << 
151                                                << 
152     // Set/Get dynamical mass                  << 
153     // The dynamical mass is set to PDG mass i << 
154     inline G4double GetMass() const;           << 
155     inline void SetMass(G4double mass);        << 
156                                                << 
157     // Set/Get dynamical charge                << 
158     // The dynamical mass is set to PDG charge << 
159     inline G4double GetCharge() const;         << 
160     inline void SetCharge(G4double charge);    << 
161     inline void SetCharge(G4int chargeInUnitOf << 
162                                                << 
163     // Set/Get dynamical spin                  << 
164     // The dynamical spin is set to PDG spin i << 
165     inline G4double GetSpin() const;           << 
166     inline void SetSpin(G4double spin);        << 
167     inline void SetSpin(G4int spinInUnitOfHalf << 
168                                                << 
169     // Set/Get dynamical MagneticMoment        << 
170     // The dynamical mass is set to PDG Magnet << 
171     inline G4double GetMagneticMoment() const; << 
172     inline void SetMagneticMoment(G4double mag << 
173                                                << 
174     // Get electron occupancy                  << 
175     // ElectronOccupancy is valid only if the  << 
176     inline const G4ElectronOccupancy* GetElect << 
177     inline G4int GetTotalOccupancy() const;    << 
178     inline G4int GetOccupancy(G4int orbit) con << 
179     inline void AddElectron(G4int orbit, G4int << 
180     inline void RemoveElectron(G4int orbit, G4 << 
181                                                << 
182     // Set/Get particle definition             << 
183     inline const G4ParticleDefinition* GetPart << 
184     void SetDefinition(const G4ParticleDefinit << 
185                                                << 
186     // Following method of GetDefinition() rem << 
187     // because of backward compatiblity. May b << 
188     inline G4ParticleDefinition* GetDefinition << 
189                                                << 
190     // Set/Get pre-assigned decay channel      << 
191     inline const G4DecayProducts* GetPreAssign << 
192     inline void SetPreAssignedDecayProducts(G4 << 
193                                                << 
194     // Set/Get pre-assigned proper time when t << 
195     inline G4double GetPreAssignedDecayProperT << 
196     inline void SetPreAssignedDecayProperTime( << 
197                                                << 
198     // Print out information                   << 
199     // - mode 0 : default )(minimum)           << 
200     // - mode 1 : 0 + electron occupancy       << 
201     void DumpInfo(G4int mode = 0) const;       << 
202                                                << 
203     // Set/Get controle flag for output messag << 
204     // - 0: Silent                             << 
205     // - 1: Warning message                    << 
206     // - 2: More                               << 
207     inline void SetVerboseLevel(G4int value);  << 
208     inline G4int GetVerboseLevel() const;      << 
209                                                << 
210     inline void SetPrimaryParticle(G4PrimaryPa << 
211     inline void SetPDGcode(G4int c);           << 
212                                                << 
213     // Return the pointer to the corresponding << 
214     // if this particle is a primary particle  << 
215     // pre-assigned decay product. Otherwise r << 
216     inline G4PrimaryParticle* GetPrimaryPartic << 
217                                                << 
218     // Return the PDG code of this particle. I << 
219     // Geant4, its PDG code defined in G4Parti << 
220     // If it is unknown (i.e. PDG code in G4Pa << 
221     // PDG code defined in the corresponding p << 
222     // pre-assigned decay product will be retu << 
223     // Otherwise (e.g. for geantino) returns 0 << 
224     inline G4int GetPDGcode() const;           << 
225                                                << 
226   protected:                                   << 
227     void AllocateElectronOccupancy();          << 
228     G4double GetElectronMass() const;          << 
229                                                << 
230   private:                                     << 
231     inline void ComputeBeta() const;           << 
232                                                << 
233     // The normalized momentum vector          << 
234     G4ThreeVector theMomentumDirection;        << 
235                                                << 
236     G4ThreeVector thePolarization;             << 
237                                                << 
238     // Contains the static information of this << 
239     const G4ParticleDefinition* theParticleDef << 
240                                                << 
241     G4ElectronOccupancy* theElectronOccupancy  << 
242                                                << 
243     G4DecayProducts* thePreAssignedDecayProduc << 
244                                                << 
245     // This void pointer is used by G4EventMan << 
246     // link between pre-assigned decay product << 
247     // primary particle                        << 
248     G4PrimaryParticle* primaryParticle = nullp << 
249                                                << 
250     G4double theKineticEnergy = 0.0;           << 
251                                                << 
252     mutable G4double theLogKineticEnergy = DBL << 
253                                                << 
254     mutable G4double theBeta = -1.0;           << 
255                                                << 
256     G4double theProperTime = 0.0;              << 
257                                                    56 
258     G4double theDynamicalMass = 0.0;           <<  57 #include "G4ParticleDefinition.hh"
                                                   >>  58 #include "G4Allocator.hh"
                                                   >>  59 #include "G4LorentzVector.hh"
259                                                    60 
260     G4double theDynamicalCharge = 0.0;         <<  61 #include "G4ParticleMomentum.hh"
                                                   >>  62 //  G4ParticleMomentum is "momentum direction" not "momentum vector"
                                                   >>  63 //  The name is miss-leading so you should not use G4ParticleMomentum
                                                   >>  64 //  and you are recommended to use G4ThreeVector instead
261                                                    65 
262     G4double theDynamicalSpin = 0.0;           <<  66 #include "G4ElectronOccupancy.hh"
263                                                    67 
264     G4double theDynamicalMagneticMoment = 0.0; << 
265                                                    68 
266     G4double thePreAssignedDecayTime = -1.0;   <<  69 class G4PrimaryParticle;
                                                   >>  70 class  G4VProcess;
                                                   >>  71 class  G4DecayProducts;
267                                                    72 
268     G4int verboseLevel = 1;                    <<  73 class G4DynamicParticle 
                                                   >>  74 {
                                                   >>  75   // Class Description
                                                   >>  76   //  The dynamic particle is a class which contains the purely
                                                   >>  77   //  dynamic aspects of a moving particle. It also has a
                                                   >>  78   //  pointer to a G4ParticleDefinition object, which holds
                                                   >>  79   //  all the static information.
                                                   >>  80   //
                                                   >>  81 
                                                   >>  82   public: // With Description
                                                   >>  83   //- constructors 
                                                   >>  84      G4DynamicParticle();
                                                   >>  85 
                                                   >>  86      G4DynamicParticle(const G4ParticleDefinition * aParticleDefinition,
                                                   >>  87                         const G4ThreeVector& aMomentumDirection,
                                                   >>  88                         G4double aKineticEnergy);
                                                   >>  89      G4DynamicParticle(const G4ParticleDefinition * aParticleDefinition,
                                                   >>  90                         const G4ThreeVector& aParticleMomentum);
                                                   >>  91      G4DynamicParticle(const G4ParticleDefinition * aParticleDefinition,
                                                   >>  92                         const G4LorentzVector    &aParticleMomentum);
                                                   >>  93      G4DynamicParticle(const G4ParticleDefinition * aParticleDefinition,
                                                   >>  94       G4double aTotalEnergy,
                                                   >>  95                         const G4ThreeVector &aParticleMomentum);
                                                   >>  96      G4DynamicParticle(const G4ParticleDefinition * aParticleDefinition,
                                                   >>  97            const G4ThreeVector& aMomentumDirection,
                                                   >>  98            G4double aKineticEnergy,
                                                   >>  99            const G4double dynamicalMass);
                                                   >> 100 
                                                   >> 101      G4DynamicParticle(const G4DynamicParticle &right);
                                                   >> 102 
                                                   >> 103   //- destructor
                                                   >> 104      ~G4DynamicParticle();
                                                   >> 105 
                                                   >> 106   //- operators
                                                   >> 107      G4DynamicParticle & operator=(const G4DynamicParticle &right);
                                                   >> 108      G4int operator==(const G4DynamicParticle &right) const;
                                                   >> 109      G4int operator!=(const G4DynamicParticle &right) const;
                                                   >> 110 
                                                   >> 111   //  new/delete operators are oberloded to use G4Allocator
                                                   >> 112      inline void *operator new(size_t);
                                                   >> 113      inline void operator delete(void *aDynamicParticle);
                                                   >> 114 
                                                   >> 115   //- Set/Get methods
                                                   >> 116  
                                                   >> 117      const G4ThreeVector& GetMomentumDirection() const;
                                                   >> 118       //  Returns the normalized direction of the momentum
                                                   >> 119      void SetMomentumDirection(const G4ThreeVector &aDirection);
                                                   >> 120       //  Sets the normalized direction of the momentum
                                                   >> 121      void SetMomentumDirection(G4double px, G4double py, G4double pz);
                                                   >> 122       //  Sets the normalized direction of the momentum by coordinates
                                                   >> 123 
                                                   >> 124      G4ThreeVector GetMomentum() const;
                                                   >> 125       //  Returns the current particle momentum vector
                                                   >> 126      void SetMomentum( const G4ThreeVector &momentum);
                                                   >> 127       //  set the current particle momentum vector
                                                   >> 128 
                                                   >> 129      G4LorentzVector Get4Momentum() const;
                                                   >> 130       //  Returns the current particle energy-momentum 4vector
                                                   >> 131      void Set4Momentum( const G4LorentzVector &momentum);
                                                   >> 132       //  Set the current particle energy-momentum 4vector
                                                   >> 133 
                                                   >> 134 
                                                   >> 135      G4double GetTotalMomentum() const;
                                                   >> 136       //  Returns the module of the momentum vector
                                                   >> 137      G4double GetTotalEnergy() const;
                                                   >> 138       //  Returns the total energy of the particle
                                                   >> 139 
                                                   >> 140      G4double GetKineticEnergy() const;
                                                   >> 141       //  Returns the kinetic energy of a particle
                                                   >> 142      void SetKineticEnergy(G4double aEnergy);
                                                   >> 143       //  Sets the kinetic energy of a particle
                                                   >> 144 
                                                   >> 145 
                                                   >> 146      G4double GetProperTime() const;
                                                   >> 147       //  Returns the current particle proper time
                                                   >> 148      void SetProperTime( G4double );
                                                   >> 149       //  Set the current particle Proper Time
                                                   >> 150 
                                                   >> 151 
                                                   >> 152      const G4ThreeVector& GetPolarization() const;
                                                   >> 153      void SetPolarization(G4double polX, G4double polY, G4double polZ);
                                                   >> 154       //   Set/Get polarization vector       
                                                   >> 155 
                                                   >> 156 
                                                   >> 157      G4double GetMass() const;
                                                   >> 158      void     SetMass(G4double mass);
                                                   >> 159      // set/get dynamical mass
                                                   >> 160      // the dynamical mass is set to PDG mass in default
                                                   >> 161 
                                                   >> 162 
                                                   >> 163      G4double GetCharge() const;
                                                   >> 164      void     SetCharge(G4double charge);
                                                   >> 165      void     SetCharge(G4int    chargeInUnitOfEplus);
                                                   >> 166      // set/get dynamical charge 
                                                   >> 167      // the dynamical mass is set to PDG charge in default
                                                   >> 168 
                                                   >> 169      G4double GetSpin() const;
                                                   >> 170      void     SetSpin(G4double spin);
                                                   >> 171      void     SetSpin(G4int    spinInUnitOfHalfInteger);
                                                   >> 172      // set/get dynamical spin
                                                   >> 173      // the dynamical spin is set to PDG spin in default
                                                   >> 174 
                                                   >> 175      G4double GetMagneticMoment() const;
                                                   >> 176      void     SetMagneticMoment(G4double magneticMoment);
                                                   >> 177      // set/get dynamical MagneticMoment  
                                                   >> 178      // the dynamical mass is set to PDG MagneticMoment in default
                                                   >> 179 
                                                   >> 180 
                                                   >> 181      const G4ElectronOccupancy* GetElectronOccupancy() const;
                                                   >> 182      // Get electron occupancy 
                                                   >> 183      // ElectronOccupancy is valid only if the particle is ion
                                                   >> 184      G4int  GetTotalOccupancy() const;
                                                   >> 185      G4int  GetOccupancy(G4int orbit) const;
                                                   >> 186      void   AddElectron(G4int orbit, G4int number = 1);
                                                   >> 187      void   RemoveElectron(G4int orbit, G4int number = 1);
                                                   >> 188  
                                                   >> 189  
                                                   >> 190      const G4ParticleDefinition* GetParticleDefinition() const;
                                                   >> 191      void SetDefinition(const G4ParticleDefinition * aParticleDefinition);
                                                   >> 192      //   Set/Get particle definition  
                                                   >> 193      //  following method of GetDefinition remains 
                                                   >> 194      //  because of backward compatiblity. It will be removed in future 
                                                   >> 195      G4ParticleDefinition* GetDefinition() const;
                                                   >> 196  
                                                   >> 197      
                                                   >> 198      const G4DecayProducts *GetPreAssignedDecayProducts() const;
                                                   >> 199      void SetPreAssignedDecayProducts(G4DecayProducts *aDecayProducts);
                                                   >> 200       //   Set/Get pre-assigned decay channel
                                                   >> 201 
                                                   >> 202      G4double GetPreAssignedDecayProperTime() const;
                                                   >> 203      void SetPreAssignedDecayProperTime(G4double);
                                                   >> 204       //   Set/Get pre-assigned proper time when the particle will decay
                                                   >> 205  
                                                   >> 206    
                                                   >> 207   //- print out information
                                                   >> 208      void DumpInfo(G4int mode= 0) const;
                                                   >> 209      //    mode 0 : default )(minimum)
                                                   >> 210      //    mode 1 : 0 + electron occupancy
                                                   >> 211 
                                                   >> 212    protected:
                                                   >> 213      void      AllocateElectronOccupancy(); 
                                                   >> 214      G4double  GetElectronMass() const;
                                                   >> 215 
                                                   >> 216    protected:
                                                   >> 217      G4ThreeVector theMomentumDirection;
                                                   >> 218       //  The normalized momentum vector
                                                   >> 219 
                                                   >> 220      const G4ParticleDefinition *theParticleDefinition;
                                                   >> 221       //  Contains the static information of this particle.
                                                   >> 222 
                                                   >> 223      G4ThreeVector thePolarization;
                                                   >> 224 
                                                   >> 225      G4double theKineticEnergy;
                                                   >> 226 
                                                   >> 227      G4double theProperTime;
                                                   >> 228 
                                                   >> 229      G4double theDynamicalMass;
                                                   >> 230 
                                                   >> 231      G4double theDynamicalCharge;
                                                   >> 232 
                                                   >> 233      G4double theDynamicalSpin;
                                                   >> 234 
                                                   >> 235      G4double theDynamicalMagneticMoment;
                                                   >> 236 
                                                   >> 237      G4ElectronOccupancy* theElectronOccupancy;          
                                                   >> 238   
                                                   >> 239      G4DecayProducts *thePreAssignedDecayProducts;
                                                   >> 240 
                                                   >> 241      G4double thePreAssignedDecayTime;
                                                   >> 242 
                                                   >> 243  protected:
                                                   >> 244    G4int verboseLevel;
                                                   >> 245  
                                                   >> 246  public:  // With Description
                                                   >> 247    void  SetVerboseLevel(G4int value);
                                                   >> 248    G4int GetVerboseLevel() const;
                                                   >> 249    // Set/Get controle flag for output message
                                                   >> 250    //  0: Silent
                                                   >> 251    //  1: Warning message
                                                   >> 252    //  2: More
                                                   >> 253 
                                                   >> 254  protected:
                                                   >> 255    G4PrimaryParticle* primaryParticle;
                                                   >> 256    // This void pointer is used by G4EventManager to maintain the
                                                   >> 257    // link between pre-assigned decay products and corresponding
                                                   >> 258    // primary particle.
                                                   >> 259 
                                                   >> 260  public:
                                                   >> 261    void SetPrimaryParticle(G4PrimaryParticle* p);
                                                   >> 262    void SetPDGcode(G4int c);
                                                   >> 263 
                                                   >> 264  public: // With Description
                                                   >> 265    G4PrimaryParticle* GetPrimaryParticle() const;
                                                   >> 266    // Return the pointer to the corresponding G4PrimaryParticle object
                                                   >> 267    // if this particle is a primary particle OR is defined as a pre-assigned
                                                   >> 268    // decay product. Otherwise return null.
                                                   >> 269 
                                                   >> 270    G4int GetPDGcode() const;
                                                   >> 271    // Return the PDG code of this particle. If the particle is known to Geant4
                                                   >> 272    // its PDG code defined in G4ParticleDefinition is returned. If it is unknown
                                                   >> 273    // (i.e. PDG code in G4ParticleDefinition is 0), PDG code defined in the
                                                   >> 274    // corresponding primary particle or pre-assigned decay product will be
                                                   >> 275    // returned if available. Otherwise (e.g. for geantino) returns 0.
269                                                   276 
270     G4int thePDGcode = 0;                      << 277  protected:
                                                   >> 278    G4int thePDGcode;
271 };                                                279 };
272                                                   280 
273 #include "G4DynamicParticle.icc"                  281 #include "G4DynamicParticle.icc"
274                                                   282 
275 #endif                                            283 #endif
276                                                   284