Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/particles/management/include/G4ParticleDefinition.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/G4ParticleDefinition.hh (Version 11.3.0) and /particles/management/include/G4ParticleDefinition.hh (Version 11.1)


  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 // G4ParticleDefinition                            26 // G4ParticleDefinition
 27 //                                                 27 //
 28 // Class description:                              28 // Class description:
 29 //                                                 29 //
 30 // This class contains all the static data of      30 // This class contains all the static data of a particle.
 31 // It uses the process manager in order to col     31 // It uses the process manager in order to collect all the processes
 32 // this kind of particle can undertake.            32 // this kind of particle can undertake.
 33                                                    33 
 34 // Authors: G.Cosmo, 2 December 1995 - Design,     34 // Authors: G.Cosmo, 2 December 1995 - Design, based on object model
 35 //          M.Asai, 29 January 1996 - First im     35 //          M.Asai, 29 January 1996 - First implementation
 36 // History:                                        36 // History:
 37 // - 1996-2003, H.Kurashige - Revisions            37 // - 1996-2003, H.Kurashige - Revisions
 38 // - 11.03.2003, H.Kurashige - Restructuring f     38 // - 11.03.2003, H.Kurashige - Restructuring for Cuts per Region
 39 // - 25.01.2013, G.Cosmo, A.Dotti - Introduced     39 // - 25.01.2013, G.Cosmo, A.Dotti - Introduced thread-safety for MT
 40 // - 15.06.2017, K.L.Genser - Added support fo     40 // - 15.06.2017, K.L.Genser - Added support for MuonicAtom
 41 // -------------------------------------------     41 // --------------------------------------------------------------------
 42 #ifndef G4ParticleDefinition_hh                    42 #ifndef G4ParticleDefinition_hh
 43 #define G4ParticleDefinition_hh 1                  43 #define G4ParticleDefinition_hh 1
 44                                                    44 
 45 #include "G4PDefManager.hh"                    <<  45 #include <vector>
 46 #include "G4ios.hh"                            << 
 47 #include "globals.hh"                          << 
 48                                                << 
 49 #include <CLHEP/Units/PhysicalConstants.h>         46 #include <CLHEP/Units/PhysicalConstants.h>
 50                                                    47 
 51 #include <vector>                              <<  48 #include "globals.hh"
                                                   >>  49 #include "G4ios.hh"
                                                   >>  50 #include "G4PDefManager.hh"
 52                                                    51 
 53 class G4ProcessManager;                            52 class G4ProcessManager;
 54 class G4DecayTable;                                53 class G4DecayTable;
 55 class G4ParticleTable;                             54 class G4ParticleTable;
 56 class G4ParticlePropertyTable;                     55 class G4ParticlePropertyTable;
 57 class G4VTrackingManager;                          56 class G4VTrackingManager;
 58                                                    57 
 59 using G4ParticleDefinitionSubInstanceManager =     58 using G4ParticleDefinitionSubInstanceManager = G4PDefManager;
 60                                                    59 
 61 class G4ParticleDefinition                     <<  60 class G4ParticleDefinition 
 62 {                                                  61 {
 63     friend class G4ParticlePropertyTable;      <<  62   friend class G4ParticlePropertyTable;
 64                                                    63 
 65   public:                                          64   public:
                                                   >>  65 
 66     // Only one type of constructor can be use     66     // Only one type of constructor can be used for G4ParticleDefinition.
 67     // If you want to create new particle, you <<  67     // If you want to create new particle, you must set name of the particle 
 68     // at construction. Most of members seen a <<  68     // at construction. Most of members seen as arguments of the constructor 
 69     // (except last 3 arguments concerning wit <<  69     // (except last 3 arguments concerning with decay ) are  "constant" 
 70     // and can not be changed later. (No "SET"     70     // and can not be changed later. (No "SET" methods are available)
 71     // Each type of particle must be construct     71     // Each type of particle must be constructed as a unique object
 72     // of special class derived from G4Particl     72     // of special class derived from G4ParticleDefinition.
 73     // See G4ParticleTypes for detail              73     // See G4ParticleTypes for detail
 74     // clang-format off                        <<  74  
 75     G4ParticleDefinition(const G4String& aName <<  75     G4ParticleDefinition(const G4String&  aName,  
 76                          G4int iSpin, G4int iP <<  76                          G4double         mass,     
 77                          G4int iIsospinZ, G4in <<  77                          G4double         width,
 78                          G4int baryon, G4int e <<  78                          G4double         charge,   
 79                          G4DecayTable* decayta <<  79                          G4int            iSpin,
 80                          const G4String& subTy <<  80                          G4int            iParity,
 81                          G4double magneticMome <<  81                          G4int            iConjugation,
 82     // clang-format on                         <<  82                          G4int            iIsospin,   
                                                   >>  83                          G4int            iIsospinZ, 
                                                   >>  84                          G4int            gParity,
                                                   >>  85                          const G4String&  pType,
                                                   >>  86                          G4int            lepton,
                                                   >>  87                          G4int            baryon,
                                                   >>  88                          G4int            encoding,
                                                   >>  89                          G4bool           stable,
                                                   >>  90                          G4double         lifetime,
                                                   >>  91                          G4DecayTable*    decaytable,
                                                   >>  92                          G4bool           shortlived = false,
                                                   >>  93                          const G4String&  subType = "",
                                                   >>  94                          G4int            anti_encoding = 0,
                                                   >>  95                          G4double         magneticMoment = 0.0);
 83                                                    96 
 84     virtual ~G4ParticleDefinition();               97     virtual ~G4ParticleDefinition();
 85                                                <<  98       
 86     // Can not use "copy constructor", equalit << 
 87     G4ParticleDefinition(const G4ParticleDefin     99     G4ParticleDefinition(const G4ParticleDefinition&) = delete;
 88     G4ParticleDefinition& operator=(const G4Pa << 100     G4ParticleDefinition& operator=(const G4ParticleDefinition &) = delete;
                                                   >> 101       // Can not use "copy constructor", equality nor "default constructor"!
 89                                                   102 
 90     G4bool operator==(const G4ParticleDefiniti    103     G4bool operator==(const G4ParticleDefinition& right) const;
 91     G4bool operator!=(const G4ParticleDefiniti    104     G4bool operator!=(const G4ParticleDefinition& right) const;
 92                                                   105 
 93     // With the following Getxxxx methods, one << 106     // With the following Getxxxx methods, one can get values 
 94     // for members which can not be changed       107     // for members which can not be changed
 95                                                << 108  
 96     const G4String& GetParticleName() const {     109     const G4String& GetParticleName() const { return theParticleName; }
 97                                                   110 
 98     G4double GetPDGMass() const { return thePD    111     G4double GetPDGMass() const { return thePDGMass; }
 99     G4double GetPDGWidth() const { return theP << 112     G4double GetPDGWidth() const { return thePDGWidth; } 
100     G4double GetPDGCharge() const { return the    113     G4double GetPDGCharge() const { return thePDGCharge; }
101                                                   114 
102     G4double GetPDGSpin() const { return thePD    115     G4double GetPDGSpin() const { return thePDGSpin; }
103     G4int GetPDGiSpin() const { return thePDGi << 116     G4int    GetPDGiSpin() const { return thePDGiSpin; }
104     G4int GetPDGiParity() const { return thePD << 117     G4int    GetPDGiParity() const { return thePDGiParity; }
105     G4int GetPDGiConjugation() const { return  << 118     G4int    GetPDGiConjugation() const { return thePDGiConjugation; }
106     G4double GetPDGIsospin() const { return th    119     G4double GetPDGIsospin() const { return thePDGIsospin; }
107     G4double GetPDGIsospin3() const { return t    120     G4double GetPDGIsospin3() const { return thePDGIsospin3; }
108     G4int GetPDGiIsospin() const { return theP << 121     G4int    GetPDGiIsospin() const { return thePDGiIsospin; }
109     G4int GetPDGiIsospin3() const { return the << 122     G4int    GetPDGiIsospin3() const { return thePDGiIsospin3; }
110     G4int GetPDGiGParity() const { return theP << 123     G4int    GetPDGiGParity() const { return thePDGiGParity; }
111                                                << 124  
112     G4double GetPDGMagneticMoment() const { re    125     G4double GetPDGMagneticMoment() const { return thePDGMagneticMoment; }
113     inline void SetPDGMagneticMoment(G4double  << 126     inline void SetPDGMagneticMoment(G4double mageticMoment); 
114                                                << 127     G4double CalculateAnomaly()  const;
115     // Gives the anomaly of magnetic moment fo << 128       // Gives the anomaly of magnetic moment for spin 1/2 particles 
116     G4double CalculateAnomaly() const;         << 
117                                                   129 
118     const G4String& GetParticleType() const {     130     const G4String& GetParticleType() const { return theParticleType; }
119     const G4String& GetParticleSubType() const    131     const G4String& GetParticleSubType() const { return theParticleSubType; }
120     G4int GetLeptonNumber() const { return the    132     G4int GetLeptonNumber() const { return theLeptonNumber; }
121     G4int GetBaryonNumber() const { return the    133     G4int GetBaryonNumber() const { return theBaryonNumber; }
122                                                   134 
123     G4int GetPDGEncoding() const { return theP    135     G4int GetPDGEncoding() const { return thePDGEncoding; }
124     G4int GetAntiPDGEncoding() const { return     136     G4int GetAntiPDGEncoding() const { return theAntiPDGEncoding; }
125     inline void SetAntiPDGEncoding(G4int aEnco    137     inline void SetAntiPDGEncoding(G4int aEncoding);
126                                                   138 
127     // Returns the number of quark with flavor << 
128     // The value of flavor is assigned as foll << 
129     // 1:d, 2:u, 3:s, 4:c, 5:b, 6:t            << 
130     inline G4int GetQuarkContent(G4int flavor)    139     inline G4int GetQuarkContent(G4int flavor) const;
131     inline G4int GetAntiQuarkContent(G4int fla    140     inline G4int GetAntiQuarkContent(G4int flavor) const;
132                                                << 141       // Returns the number of quark with flavor contained in this particle. 
                                                   >> 142       // The value of flavor is assigned as follows 
                                                   >> 143       // 1:d, 2:u, 3:s, 4:c, 5:b, 6:t
                                                   >> 144  
133     G4bool IsShortLived() const { return fShor    145     G4bool IsShortLived() const { return fShortLivedFlag; }
134                                                   146 
135     inline G4bool GetPDGStable() const;        << 147     inline G4bool GetPDGStable() const; 
136     void SetPDGStable(const G4bool aFlag) { th << 148     void SetPDGStable(const G4bool aFlag) { thePDGStable=aFlag; }
137                                                   149 
138     inline G4double GetPDGLifeTime() const;       150     inline G4double GetPDGLifeTime() const;
139     void SetPDGLifeTime(G4double aLifeTime) {  << 151     void SetPDGLifeTime(G4double aLifeTime) { thePDGLifeTime=aLifeTime; }
140                                                   152 
141     // Get life time of a generic ion through  << 
142     inline G4double GetIonLifeTime() const;       153     inline G4double GetIonLifeTime() const;
                                                   >> 154       // Get life time of a generic ion through G4NuclideTable.
143                                                   155 
144     // Set/Get Decay Table                     << 
145     //   !! Decay Table can be modified !!     << 
146     inline G4DecayTable* GetDecayTable() const    156     inline G4DecayTable* GetDecayTable() const;
147     inline void SetDecayTable(G4DecayTable* aD << 157     inline void SetDecayTable(G4DecayTable* aDecayTable); 
148                                                << 158       // Set/Get Decay Table
149     // Set/Get Process Manager                 << 159       //   !! Decay Table can be modified !!  
150     //   !! Process Manager can be modified !! << 160 
151     G4ProcessManager* GetProcessManager() cons << 161     G4ProcessManager* GetProcessManager() const; 
152     void SetProcessManager(G4ProcessManager* a << 162     void SetProcessManager(G4ProcessManager* aProcessManager); 
                                                   >> 163       // Set/Get Process Manager
                                                   >> 164       //   !! Process Manager can be modified !!  
153                                                   165 
154     // Set/Get Tracking Manager; nullptr means << 
155     //   !! Tracking Manager can be modified ! << 
156     G4VTrackingManager* GetTrackingManager() c    166     G4VTrackingManager* GetTrackingManager() const;
157     void SetTrackingManager(G4VTrackingManager    167     void SetTrackingManager(G4VTrackingManager* aTrackingManager);
                                                   >> 168       // Set/Get Tracking Manager; nullptr means the default
                                                   >> 169       //   !! Tracking Manager can be modified !!
158                                                   170 
159     // Get pointer to the particle table       << 
160     inline G4ParticleTable* GetParticleTable()    171     inline G4ParticleTable* GetParticleTable() const;
                                                   >> 172       // Get pointer to the particle table
161                                                   173 
162     // Get AtomicNumber and AtomicMass         << 
163     // These properties are defined for nucleu << 
164     inline G4int GetAtomicNumber() const;         174     inline G4int GetAtomicNumber() const;
165     inline G4int GetAtomicMass() const;           175     inline G4int GetAtomicMass() const;
                                                   >> 176       // Get AtomicNumber and AtomicMass
                                                   >> 177       // These properties are defined for nucleus
166                                                   178 
167     // Prints information of data members.     << 
168     void DumpTable() const;                       179     void DumpTable() const;
                                                   >> 180       // Prints information of data members.
169                                                   181 
170     // Control flag for output message         << 
171     //  0: Silent                              << 
172     //  1: Warning message                     << 
173     //  2: More                                << 
174     inline void SetVerboseLevel(G4int value);     182     inline void SetVerboseLevel(G4int value);
175     inline G4int GetVerboseLevel() const;         183     inline G4int GetVerboseLevel() const;
                                                   >> 184       // Control flag for output message
                                                   >> 185       //  0: Silent
                                                   >> 186       //  1: Warning message
                                                   >> 187       //  2: More
176                                                   188 
177     void SetApplyCutsFlag(G4bool);                189     void SetApplyCutsFlag(G4bool);
178     inline G4bool GetApplyCutsFlag() const;       190     inline G4bool GetApplyCutsFlag() const;
179                                                   191 
180     // True only if the particle is G4Ions     << 
181     // (it means that theProcessManager is sam << 
182     inline G4bool IsGeneralIon() const;           192     inline G4bool IsGeneralIon() const;
                                                   >> 193       // True only if the particle is G4Ions
                                                   >> 194       // (it means that theProcessManager is same as one for G4GenricIon)
183                                                   195 
184     // True only if the particle is a G4Muonic << 
185     // (it means that theProcessManager is sam << 
186     inline G4bool IsMuonicAtom() const;           196     inline G4bool IsMuonicAtom() const;
                                                   >> 197       // True only if the particle is a G4MuonicAtom
                                                   >> 198       // (it means that theProcessManager is same as the one for G4MuonicAtom)
187                                                   199 
188     // Returns the process manager master poin << 
189     inline G4ProcessManager* GetMasterProcessM    200     inline G4ProcessManager* GetMasterProcessManager() const;
190                                                << 201       // Returns the process manager master pointer.
191     // Sets the shadow master pointer (not to  << 
192     inline void SetMasterProcessManager(G4Proc    202     inline void SetMasterProcessManager(G4ProcessManager* aNewPM);
                                                   >> 203       // Sets the shadow master pointer (not to be used by user)
193                                                   204 
194     // Returns the instance ID                 << 
195     inline G4int GetInstanceID() const;           205     inline G4int GetInstanceID() const;
                                                   >> 206       // Returns the instance ID
196                                                   207 
197     // Returns the private data instance manag << 
198     static const G4PDefManager& GetSubInstance    208     static const G4PDefManager& GetSubInstanceManager();
                                                   >> 209       // Returns the private data instance manager
199                                                   210 
200     // Clear memory allocated by sub-instance  << 
201     static void Clean();                          211     static void Clean();
                                                   >> 212       // Clear memory allocated by sub-instance manager
202                                                   213 
203     void SetParticleDefinitionID(G4int id = -1 << 214     void SetParticleDefinitionID(G4int id=-1);
204     inline G4int GetParticleDefinitionID() con    215     inline G4int GetParticleDefinitionID() const;
205                                                   216 
206     // The first two methods return "false" an << 
207     // if the particle is not an hypernucleus; << 
208     // "true" and the number of Lambdas bound  << 
209     // Similarly, the last two methods return  << 
210     // respectively, if the particle is not an << 
211     // else, they return "true" and the number << 
212     // bound in the anti-nucleus.              << 
213     // Notice that, for the time being, we are << 
214     // (anti-)Lambda is the only type of (anti << 
215     // in all (anti-)hypernuclei.              << 
216     inline G4bool IsHypernucleus() const;         217     inline G4bool IsHypernucleus() const;
217     inline G4int GetNumberOfLambdasInHypernucl    218     inline G4int GetNumberOfLambdasInHypernucleus() const;
218     inline G4bool IsAntiHypernucleus() const;     219     inline G4bool IsAntiHypernucleus() const;
219     inline G4int GetNumberOfAntiLambdasInAntiH    220     inline G4int GetNumberOfAntiLambdasInAntiHypernucleus() const;
                                                   >> 221       // The first two methods return "false" and 0, respectively,
                                                   >> 222       // if the particle is not an hypernucleus; else, they return
                                                   >> 223       // "true" and the number of Lambdas bound in the nucleus.
                                                   >> 224       // Similarly, the last two methods return "false" and 0,
                                                   >> 225       // respectively, if the particle is not an anti-hypernucleus;
                                                   >> 226       // else, they return "true" and the number of anti-Lambdas
                                                   >> 227       // bound in the anti-nucleus.
                                                   >> 228       // Notice that, for the time being, we are assuming that
                                                   >> 229       // (anti-)Lambda is the only type of (anti-)hyperon present
                                                   >> 230       // in all (anti-)hypernuclei.
220                                                   231 
221   protected:                                      232   protected:
222     // Cannot be used                          << 233 
223     G4ParticleDefinition();                       234     G4ParticleDefinition();
                                                   >> 235       // Cannot be used
224                                                   236 
225     // Calculates quark and anti-quark content << 
226     // return value is the PDG encoding for th << 
227     // It means error if the return value is d << 
228     // this->thePDGEncoding.                   << 
229     G4int FillQuarkContents();                    237     G4int FillQuarkContents();
                                                   >> 238       // Calculates quark and anti-quark contents
                                                   >> 239       // return value is the PDG encoding for this particle.
                                                   >> 240       // It means error if the return value is different from
                                                   >> 241       // this->thePDGEncoding.
230                                                   242 
231     inline void SetParticleSubType(const G4Str    243     inline void SetParticleSubType(const G4String& subtype);
232                                                   244 
233     inline void SetAtomicNumber(G4int);           245     inline void SetAtomicNumber(G4int);
234     inline void SetAtomicMass(G4int);             246     inline void SetAtomicMass(G4int);
235                                                   247 
236     enum                                       << 248     enum { NumberOfQuarkFlavor = 6 };
237     {                                          << 249 
238       NumberOfQuarkFlavor = 6                  << 250     G4int  theQuarkContent[NumberOfQuarkFlavor];
239     };                                         << 251     G4int  theAntiQuarkContent[NumberOfQuarkFlavor];
240                                                << 252       //  the number of quark (minus Sign means anti-quark) contents
241     //  the number of quark (minus Sign means  << 253       //  The value of flavor is assigned as follows 
242     //  The value of flavor is assigned as fol << 254       //    0:d, 1:u, 2:s, 3:c, 4:b, 5:t
243     //    0:d, 1:u, 2:s, 3:c, 4:b, 5:t         << 255 
244     G4int theQuarkContent[NumberOfQuarkFlavor] << 256   protected:
245     G4int theAntiQuarkContent[NumberOfQuarkFla << 
246                                                   257 
247     G4bool isGeneralIon = false;                  258     G4bool isGeneralIon = false;
248     G4bool isMuonicAtom = false;                  259     G4bool isMuonicAtom = false;
249                                                   260 
250   private:                                        261   private:
                                                   >> 262 
251     // --- Shadow of master pointers              263     // --- Shadow of master pointers
252                                                   264 
253     // Each worker thread can access this fiel << 
254     // through this pointer.                   << 
255     G4ProcessManager* theProcessManagerShadow     265     G4ProcessManager* theProcessManagerShadow = nullptr;
                                                   >> 266       // Each worker thread can access this field from the master thread
                                                   >> 267       // through this pointer.
256                                                   268 
257     // This field is used as instance ID.      << 
258     G4int g4particleDefinitionInstanceID = 0;     269     G4int g4particleDefinitionInstanceID = 0;
                                                   >> 270       // This field is used as instance ID.
259                                                   271 
260     // This field helps to use the class G4PDe << 
261     G4PART_DLL static G4PDefManager subInstanc    272     G4PART_DLL static G4PDefManager subInstanceManager;
                                                   >> 273       // This field helps to use the class G4PDefManager introduced above.
262                                                   274 
263     //  --- Following values can not be change    275     //  --- Following values can not be changed
264     //  --- i.e. No Setxxxx Methods for them   << 276     //  --- i.e. No Setxxxx Methods for them 
265                                                   277 
266     // The name of the particle.               << 
267     // Each object must have its specific name << 
268     G4String theParticleName = "";                278     G4String theParticleName = "";
                                                   >> 279       // The name of the particle.
                                                   >> 280       // Each object must have its specific name!!
269                                                   281 
270     //  --- Following member values must be de    282     //  --- Following member values must be defined with Units
271                                                   283 
272     // The mass of the particle, in units of e << 
273     G4double thePDGMass = 0.0;                    284     G4double thePDGMass = 0.0;
                                                   >> 285       // The mass of the particle, in units of equivalent energy.
274                                                   286 
275     // The decay width of the particle, usuall << 
276     // Breit-Wigner function, assuming that yo << 
277     // mass center anyway. (in units of equiva << 
278     G4double thePDGWidth = 0.0;                   287     G4double thePDGWidth = 0.0;
                                                   >> 288       // The decay width of the particle, usually the width of a
                                                   >> 289       // Breit-Wigner function, assuming that you are near the
                                                   >> 290       // mass center anyway. (in units of equivalent energy)
279                                                   291 
280     // The charge of the particle.(in units of << 
281     G4double thePDGCharge = 0.0;                  292     G4double thePDGCharge = 0.0;
                                                   >> 293       // The charge of the particle.(in units of Coulomb)
282                                                   294 
283     //   --- Following members are quantum num    295     //   --- Following members are quantum number
284     //       i.e. discrete numbers can be allo    296     //       i.e. discrete numbers can be allowed
285     //       So, you can define them only by u << 297     //       So, you can define them only by using integer in constructor 
286                                                   298 
287     // The total spin of the particle, also of << 
288     // capital J, in units of 1/2.             << 
289     G4int thePDGiSpin = 0;                        299     G4int thePDGiSpin = 0;
290                                                << 300       // The total spin of the particle, also often denoted as
291     // The total spin of the particle, in unit << 301       // capital J, in units of 1/2.
292     G4double thePDGSpin = 0.0;                    302     G4double thePDGSpin = 0.0;
                                                   >> 303       // The total spin of the particle, in units of 1.
293                                                   304 
294     // The parity quantum number, in units of  << 
295     // is not defined for this particle, we wi << 
296     G4int thePDGiParity = 0;                      305     G4int thePDGiParity = 0;
                                                   >> 306       // The parity quantum number, in units of 1. If the parity
                                                   >> 307       // is not defined for this particle, we will set this to 0.
297                                                   308 
298     // This charge conjugation quantum number  << 
299     G4int thePDGiConjugation = 0;                 309     G4int thePDGiConjugation = 0;
                                                   >> 310       // This charge conjugation quantum number in units of 1.
300                                                   311 
301     // The value of the G-parity quantum numbe << 
302     G4int thePDGiGParity = 0;                     312     G4int thePDGiGParity = 0;
                                                   >> 313       // The value of the G-parity quantum number.
303                                                   314 
304     // The isospin and its 3rd-component in un << 
305     G4int thePDGiIsospin = 0;                     315     G4int thePDGiIsospin = 0;
306     G4int thePDGiIsospin3 = 0;                    316     G4int thePDGiIsospin3 = 0;
307                                                << 317       // The isospin and its 3rd-component in units of 1/2.
308     // The isospin quantum number in units of  << 
309     G4double thePDGIsospin = 0.0;                 318     G4double thePDGIsospin = 0.0;
310     G4double thePDGIsospin3 = 0.0;                319     G4double thePDGIsospin3 = 0.0;
311                                                << 320       // The isospin quantum number in units of 1.
312     // The magnetic moment.                    << 321  
313     G4double thePDGMagneticMoment = 0.0;          322     G4double thePDGMagneticMoment = 0.0;
                                                   >> 323       // The magnetic moment.
314                                                   324 
315     // The lepton quantum number.              << 
316     G4int theLeptonNumber = 0;                    325     G4int theLeptonNumber = 0;
                                                   >> 326       // The lepton quantum number.
317                                                   327 
318     // The baryon quantum number.              << 
319     G4int theBaryonNumber = 0;                    328     G4int theBaryonNumber = 0;
                                                   >> 329       // The baryon quantum number.
320                                                   330 
321     // More general textual type description o << 
322     G4String theParticleType = "";                331     G4String theParticleType = "";
                                                   >> 332       // More general textual type description of the particle.
323                                                   333 
324     // Textual type description of the particl << 
325     // eg. pion, lamda etc.                    << 
326     G4String theParticleSubType = "";             334     G4String theParticleSubType = "";
                                                   >> 335       // Textual type description of the particle
                                                   >> 336       // eg. pion, lamda etc.
327                                                   337 
328     // The Particle Data Group integer identif << 
329     G4int thePDGEncoding = 0;                     338     G4int thePDGEncoding = 0;
330                                                << 339       // The Particle Data Group integer identifier of this particle
331     // The Particle Data Group integer identif << 340  
332     G4int theAntiPDGEncoding = 0;                 341     G4int theAntiPDGEncoding = 0;
                                                   >> 342       // The Particle Data Group integer identifier of the anti-particle
333                                                   343 
334     // --- Following members can be changed af    344     // --- Following members can be changed after construction
335                                                   345 
336     // Particles which have true value of this << 
337     // will not be tracked by TrackingManager  << 
338     G4bool fShortLivedFlag = false;               346     G4bool fShortLivedFlag = false;
                                                   >> 347       // Particles which have true value of this flag 
                                                   >> 348       // will not be tracked by TrackingManager 
339                                                   349 
340     // Is an indicator that this particle is s << 
341     // not decay. If the user tries to assign  << 
342     // object to it, it will refuse to take it << 
343     G4bool thePDGStable = false;                  350     G4bool thePDGStable = false;
                                                   >> 351       // Is an indicator that this particle is stable. It must
                                                   >> 352       // not decay. If the user tries to assign a kind of decay
                                                   >> 353       // object to it, it will refuse to take it.
344                                                   354 
345     // Is related to the decay width of the pa << 
346     // life time is given in seconds.          << 
347     G4double thePDGLifeTime = 0.0;                355     G4double thePDGLifeTime = 0.0;
                                                   >> 356       // Is related to the decay width of the particle. The mean
                                                   >> 357       // life time is given in seconds.
348                                                   358 
349     // Points DecayTable                       << 
350     G4DecayTable* theDecayTable = nullptr;        359     G4DecayTable* theDecayTable = nullptr;
                                                   >> 360       // Points DecayTable 
351                                                   361 
352     G4ParticleTable* theParticleTable = nullpt    362     G4ParticleTable* theParticleTable = nullptr;
353                                                   363 
354     G4int theAtomicNumber = 0;                    364     G4int theAtomicNumber = 0;
355     G4int theAtomicMass = 0;                      365     G4int theAtomicMass = 0;
356                                                << 366  
357     G4int verboseLevel = 1;                       367     G4int verboseLevel = 1;
358     G4bool fApplyCutsFlag = false;                368     G4bool fApplyCutsFlag = false;
359 };                                                369 };
360                                                   370 
361 #include "G4ParticleDefinition.icc"               371 #include "G4ParticleDefinition.icc"
362                                                   372 
363 #endif                                            373 #endif
364                                                   374