Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/run/include/G4VUserPhysicsList.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 /run/include/G4VUserPhysicsList.hh (Version 11.3.0) and /run/include/G4VUserPhysicsList.hh (Version 9.3)


  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 // G4VUserPhysicsList                          << 
 27 //                                                 26 //
 28 // Class description:                          <<  27 // $Id: G4VUserPhysicsList.hh,v 1.41 2009/08/09 14:31:46 kurasige Exp $
                                                   >>  28 // GEANT4 tag $Name: geant4-09-03 $
 29 //                                                 29 //
 30 // This class is an abstract class for constru <<  30 // 
 31 // User must implement the following two pure  <<  31 // ------------------------------------------------------------
 32 // class derived from this class:              <<  32 //  GEANT 4 class header file 
 33 // - G4VUserPhysicsList::ConstructParticle()   <<  33 // Class Description:
 34 //     Construct particles                     <<  34 //      This class is an abstract class for
 35 // - G4VUserPhysicsList::ConstructProcess()    <<  35 //      constructing particles and processes.
 36 //     Construct procesess and register them t <<  36 //      User must implement following three virtual methods
 37                                                <<  37 //      in his/her own concrete class derived from this class. 
 38 // Original author: H.Kurashige (Kobe Universi <<  38 //        G4VUserPhysicsList::ConstructParticle() 
 39 // ------------------------------------------- <<  39 //           Construct particles
 40 #ifndef G4VUserPhysicsList_hh                  <<  40 //        G4VUserPhysicsList::ConstructProcess() 
 41 #define G4VUserPhysicsList_hh 1                <<  41 //           Construct procesess and register them to particles
                                                   >>  42 //        G4VUserPhysicsList::SetCuts()
                                                   >>  43 //           set cut values in range to all particles
                                                   >>  44 //           (and rebuilding physics table will be invoked )
                                                   >>  45 //
                                                   >>  46 // ------------------------------------------- 
                                                   >>  47 //  History
                                                   >>  48 //        first version                   09 Jan. 1998 by H.Kurashige 
                                                   >>  49 //        modified                        24 Jan. 1998 by H.Kurashige
                                                   >>  50 //          rename DumpCutValues/DumpCutValuesTable 
                                                   >>  51 //          change SetCuts method
                                                   >>  52 //          add    SetCutsWithDefault method
                                                   >>  53 //        modified                       06 June 1998 by H.Kurashige
                                                   >>  54 //          add    AddProcessManager
                                                   >>  55 //          add    BuildPhysicsTable
                                                   >>  56 //       modified                        29  June 1998 by H.Kurashige
                                                   >>  57 //          add    AddProcessManager
                                                   >>  58 //       modified                        05 Dec. 1998 by H.Kurashige
                                                   >>  59 //          add    ConstructAllParticles()
                                                   >>  60 //        modified                        14, Apr 1999 by H.Kurashige
                                                   >>  61 //          change BuildPhysicsTable as public
                                                   >>  62 //          removed ConstructAllParticles() and related methods  
                                                   >>  63 //          changed SetCuts method argument
                                                   >>  64 //       modified                           08, Nov 2000 by H.Kurashige
                                                   >>  65 //          added   Retrieve/StorePhysicsTable and related methods
                                                   >>  66 //       modified                           08, Mar 2001 by H.Kurashige
                                                   >>  67 //          added   binary mode for Retrieve/StorePhysicsTable
                                                   >>  68 //          added   RetrieveCutValues and related
                                                   >>  69 //          added   Set/ResetStoredInAscii() to switch on ascii mode 
                                                   >>  70 //                  for Retrieve/StorePhysicsTable
                                                   >>  71 //       modified for CUTS per REGION      10, Oct 2002 by H.Kurashige 
                                                   >>  72 //          removed following methods 
                                                   >>  73 //           void ReCalcCutValue() 
                                                   >>  74 //           void SetCutValueForOthers()
                                                   >>  75 //           void SetCutValueForOtherThan() 
                                                   >>  76 //           void ReCalcCutValueForOthers()
                                                   >>  77 //           virtual G4bool  StoreMaterialInfo()
                                                   >>  78 //           virtual G4bool  StoreCutValues()
                                                   >>  79 //           virtual G4bool  RetrieveCutValues()
                                                   >>  80 //           virtual G4bool  CheckForRetrievePhysicsTable()
                                                   >>  81 //           virtual G4bool  CheckMaterialInfo()
                                                   >>  82 //          added    void BuildPhysicsTable()    
                                                   >>  83 // ------------------------------------------------------------
                                                   >>  84 #ifndef G4VUserPhysicsList_h
                                                   >>  85 #define G4VUserPhysicsList_h 1
                                                   >>  86 #include "globals.hh"
                                                   >>  87 #include "G4ios.hh"
 42                                                    88 
 43 #include "G4ParticleDefinition.hh"             << 
 44 #include "G4ParticleTable.hh"                      89 #include "G4ParticleTable.hh"
 45 #include "G4PhysicsModelCatalog.hh"            <<  90 #include "G4ParticleDefinition.hh" 
 46 #include "G4ProductionCutsTable.hh"                91 #include "G4ProductionCutsTable.hh"
 47 #include "G4Threading.hh"                      << 
 48 #include "G4VUPLSplitter.hh"                   << 
 49 #include "G4ios.hh"                            << 
 50 #include "globals.hh"                          << 
 51                                                << 
 52 #include "rundefs.hh"                          << 
 53 #include "tls.hh"                              << 
 54                                                    92 
 55 class G4UserPhysicsListMessenger;                  93 class G4UserPhysicsListMessenger;
 56 class G4PhysicsListHelper;                     << 
 57 class G4VProcess;                                  94 class G4VProcess;
 58                                                    95 
 59 // Encapsulate the fields of class G4VUserPhys << 
 60 class G4VUPLData                               << 
 61 {                                              << 
 62   public:                                      << 
 63     void initialize();                         << 
 64                                                << 
 65     G4ParticleTable::G4PTblDicIterator* _thePa << 
 66     G4UserPhysicsListMessenger* _theMessenger  << 
 67     G4PhysicsListHelper* _thePLHelper = nullpt << 
 68     G4bool _fIsPhysicsTableBuilt = false;      << 
 69     G4int _fDisplayThreshold = 0;              << 
 70 };                                             << 
 71                                                << 
 72 // The type G4VUPLManager is introduced to enc << 
 73 // both the master thread and worker threads t << 
 74 // the fields encapsulated by the class G4VUPL << 
 75 // changes the value for these fields, it refe << 
 76 // definition defined below. For every G4VUser << 
 77 // there is a corresponding G4VUPLData instanc << 
 78 // are organized by the class G4VUPLManager as << 
 79 // The field "int g4vuplInstanceID" is added t << 
 80 // The value of this field in each G4VUserPhys << 
 81 // subscript of the corresponding G44VUPLData  << 
 82 // In order to use the class G44VUPLManager, w << 
 83 // G4VUserPhysicsList as follows: "static G4VU << 
 84 // Both the master thread and worker threads c << 
 85 // for G44VUPLData instances mutually along wi << 
 86 // instances are created. For each worker thre << 
 87 // Consider any thread A, if there is any othe << 
 88 // This ion is shared by the thread A. So the  << 
 89 // in the array of G4PDefData instances for th << 
 90 //                                             << 
 91 // Important Note: you may wonder why we are i << 
 92 //                 since there is only one PL  << 
 93 //                 This is true, in the sense  << 
 94 //                 to be associated to a G4Run << 
 95 //                 instantiate as many PLs are << 
 96 //                 of the PLs to be used we th << 
 97 //                 guarantee that the system w << 
 98 //                 this (unusual) case. This m << 
 99 //                                             << 
100 using G4VUPLManager = G4VUPLSplitter<G4VUPLDat << 
101 using G4VUserPhysicsListSubInstanceManager = G << 
102                                                << 
103 class G4VUserPhysicsList                           96 class G4VUserPhysicsList
104 {                                                  97 {
105   public:                                      <<  98   public: 
106     G4VUserPhysicsList();                          99     G4VUserPhysicsList();
107     virtual ~G4VUserPhysicsList();                100     virtual ~G4VUserPhysicsList();
108     G4VUserPhysicsList(const G4VUserPhysicsLis << 
109     G4VUserPhysicsList& operator=(const G4VUse << 
110                                                << 
111     // Each particle type will be instantiated << 
112     // This method is invoked by the RunManger << 
113     virtual void ConstructParticle() = 0;      << 
114                                                << 
115     // By calling the "Construct" method,      << 
116     // process manager and processes are creat << 
117     void Construct();                          << 
118                                                << 
119     // Each physics process will be instantiat << 
120     // registered to the process manager of ea << 
121     // Invoked in the Construct() method.      << 
122     virtual void ConstructProcess() = 0;       << 
123                                                << 
124     // Sets a cut value for all particle types << 
125     virtual void SetCuts();                    << 
126                                                << 
127     // Set/get the default cut value. Calling  << 
128     // re-calcuration of cut values and physic << 
129     // next event loop.                        << 
130     void SetDefaultCutValue(G4double newCutVal << 
131     G4double GetDefaultCutValue() const;       << 
132                                                   101 
133     // Invoke BuildPhysicsTable for all proces << 102   public:  // with description
                                                   >> 103    // Each particle type will be instantiated
                                                   >> 104    // This method is invoked by the RunManger 
                                                   >> 105    virtual void ConstructParticle() = 0;
                                                   >> 106 
                                                   >> 107    // By calling the "Construct" method, 
                                                   >> 108    // process manager and processes are created. 
                                                   >> 109    void Construct();
                                                   >> 110  
                                                   >> 111    // Each physics process will be instantiated and
                                                   >> 112    // registered to the process manager of each particle type 
                                                   >> 113    // This method is invoked in Construct method 
                                                   >> 114    virtual void ConstructProcess() = 0;
                                                   >> 115 
                                                   >> 116   protected: // with description
                                                   >> 117    //  User must invoke this method in his ConstructProcess() 
                                                   >> 118    //  implementation in order to insures particle transportation.
                                                   >> 119    //  !! Caution: this class must not be overriden !!
                                                   >> 120    void AddTransportation();
                                                   >> 121 
                                                   >> 122   /////////////////////////////////////////////////////////////////
                                                   >> 123   public: // with description 
                                                   >> 124    //  "SetCuts" method sets a cut value for all particle types 
                                                   >> 125    //   in the particle table
                                                   >> 126    virtual void SetCuts() = 0; 
                                                   >> 127 
                                                   >> 128   public:  // with description
                                                   >> 129    //  set/get the default cut value
                                                   >> 130    //  Calling SetDefaultCutValue causes re-calcuration of cut values
                                                   >> 131    //  and physics tables just before the next event loop
                                                   >> 132    void     SetDefaultCutValue(G4double newCutValue);
                                                   >> 133    G4double GetDefaultCutValue() const;
                                                   >> 134 
                                                   >> 135   /////////////////////////////////////////////////////////////////////  
                                                   >> 136   public: // with description
                                                   >> 137     // Invoke BuildPhysicsTable for all processes for all particles
134     // In case of "Retrieve" flag is ON, Physi    138     // In case of "Retrieve" flag is ON, PhysicsTable will be
135     // retrieved from files.                   << 139     // retrieved from files
136     void BuildPhysicsTable();                  << 140     void BuildPhysicsTable();    
                                                   >> 141   
                                                   >> 142    // do PreparePhysicsTable for specified particle type
                                                   >> 143     void PreparePhysicsTable(G4ParticleDefinition* );    
137                                                   144 
138     // Prepare the PhysicsTable for specified  << 145    // do BuildPhysicsTable for specified particle type
139     void PreparePhysicsTable(G4ParticleDefinit << 146     void BuildPhysicsTable(G4ParticleDefinition* );    
140                                                   147 
141     // Build the PhysicsTable for specified pa << 148      // Store PhysicsTable together with both material and cut value 
142     void BuildPhysicsTable(G4ParticleDefinitio << 
143                                                << 
144     // Store PhysicsTable together with both m << 
145     // information in files under the specifie    149     // information in files under the specified directory.
146     // Returns "true" if files are successfull << 150     //  (return true if files are sucessfully created)
147     G4bool StorePhysicsTable(const G4String& d << 151     G4bool  StorePhysicsTable(const G4String& directory = ".");
148                                                << 152  
149     // Return true if "Retrieve" flag is ON.   << 153     // Return true if "Retrieve" flag is ON. 
150     // (i.e. PhysicsTable will be retrieved fr << 154     // (i.e. PhysicsTable will be retrieved from files)
151     G4bool IsPhysicsTableRetrieved() const;    << 155     G4bool  IsPhysicsTableRetrieved() const;
152     G4bool IsStoredInAscii() const;            << 156     G4bool  IsStoredInAscii() const;
153                                                   157 
154     // Get directory path for physics table fi    158     // Get directory path for physics table files.
155     const G4String& GetPhysicsTableDirectory()    159     const G4String& GetPhysicsTableDirectory() const;
156                                                   160 
157     // Set "Retrieve" flag. Directory path can << 161     // Set "Retrieve" flag
158     // Null string (default) means directory i << 162     // Directory path can be set together.
159     // from the current value.                 << 163     // Null string (default) means directory is not changed 
160     void SetPhysicsTableRetrieved(const G4Stri << 164     // from the current value 
161     void SetStoredInAscii();                   << 165     void    SetPhysicsTableRetrieved(const G4String& directory = "");
162                                                << 166     void    SetStoredInAscii();
163     // Reset "Retrieve" flag.                  << 167   
164     void ResetPhysicsTableRetrieved();         << 168     // Reset "Retrieve" flag
165     void ResetStoredInAscii();                 << 169     void    ResetPhysicsTableRetrieved();
166                                                << 170     void    ResetStoredInAscii();
167     // Print out the List of registered partic << 171 
                                                   >> 172  ///////////////////////////////////////////////////////////////////////
                                                   >> 173   public: // with description
                                                   >> 174     // Print out the List of registered particles types
168     void DumpList() const;                        175     void DumpList() const;
169                                                   176 
170     // Request to print out information of cut << 177   public: // with description
171     // Printing will be performed when all tab << 178     // Request to print out information of cut values
172     void DumpCutValuesTable(G4int flag = 1);   << 179     // Printing will be performed when all tables are made
173                                                << 180     void DumpCutValuesTable(G4int nParticles=4);
174     // Triggers the print-out requested by the << 181 
175     // This method must be invoked by RunManag << 182     // The following method actually trigger the print-out requested
                                                   >> 183     // by the above method. This method must be invoked by RunManager
                                                   >> 184     // at the proper moment.
176     void DumpCutValuesTableIfRequested();         185     void DumpCutValuesTableIfRequested();
177                                                   186 
178     // Set/get control flag for output message << 187     void DumpCutValues(const G4String &particle_name = "ALL");
                                                   >> 188     void DumpCutValues(G4ParticleDefinition* );
                                                   >> 189 
                                                   >> 190   public: // with description
                                                   >> 191     void  SetVerboseLevel(G4int value);
                                                   >> 192     G4int GetVerboseLevel() const;
                                                   >> 193     // set/get controle flag for output message
179     //  0: Silent                                 194     //  0: Silent
180     //  1: Warning message                        195     //  1: Warning message
181     //  2: More                                   196     //  2: More
182     void SetVerboseLevel(G4int value);         << 
183     G4int GetVerboseLevel() const;             << 
184                                                << 
185     void UseCoupledTransportation(G4bool vl =  << 
186                                                   197 
187     // Invokes default SetCuts() method.       << 198   ///////////////////////////////////////////////////////////////////////////
188     // Note: cut values will not be overwritte << 199   public: // with description
189     // Use of default SetCuts() method is reco << 200    //  "SetCutsWithDefault" method sets the default cut value
190     void SetCutsWithDefault();                 << 201    //   for all particles for the default region.
191                                                << 202    void SetCutsWithDefault();   
192     // Sets a cut value for a particle type fo << 203 
193     void SetCutValue(G4double aCut, const G4St << 204    // Following are utility methods for SetCuts
194                                                << 205   
195     // Gets a cut value for a particle type fo << 206    // SetCutValue sets a cut value for a particle type for the default region
196     G4double GetCutValue(const G4String& pname << 207    void SetCutValue(G4double aCut, const G4String& pname); 
197                                                << 208 
198     // Sets a cut value for a particle type fo << 209    // SetCutValue sets a cut value for a particle type for a region
199     void SetCutValue(G4double aCut, const G4St << 210    void SetCutValue(G4double aCut, const G4String& pname, const G4String& rname); 
200                                                << 211 
201     // Invoke SetCuts for specified particle f << 212    // Invoke SetCuts for specified particle for a region
202     // If the pointer to the region is NULL, t << 213    // If the pointer to the region is NULL, the default region is used
203     // In case of "Retrieve" flag is ON, cut v << 214    // In case of "Retrieve" flag is ON, 
204     // from files.                             << 215    // Cut values will be retrieved from files
205     void SetParticleCuts(G4double cut, G4Parti << 216    void SetParticleCuts(G4double cut,G4ParticleDefinition* particle,G4Region* region=0);
206     void SetParticleCuts(G4double cut, const G << 217 
207                                                << 218    // Invoke SetCuts for all particles in a region
208     // Invoke SetCuts() for all particles in a << 219    void SetCutsForRegion(G4double aCut, const G4String& rname);
209     void SetCutsForRegion(G4double aCut, const << 220 
210                                                << 221    // Following are utility methods are obsolete
211     // Gets/sets the flag for ApplyCuts().     << 222    void ResetCuts();
212     void SetApplyCuts(G4bool value, const G4St << 223 
213     G4bool GetApplyCuts(const G4String& name)  << 224 ///////////////////////////////////////////////////////////////////
                                                   >> 225   public:   
                                                   >> 226    // Get/SetApplyCuts gets/sets the flag for ApplyCuts
                                                   >> 227    void SetApplyCuts(G4bool value, const G4String& name); 
                                                   >> 228    G4bool GetApplyCuts(const G4String& name) const; 
                                                   >> 229 
                                                   >> 230 ///////////////////////////////////////////////////////////////////////////////
                                                   >> 231   protected:  
                                                   >> 232     // do BuildPhysicsTable for make the integral schema
                                                   >> 233     void BuildIntegralPhysicsTable(G4VProcess* ,G4ParticleDefinition*  );   
                                                   >> 234 
                                                   >> 235 
                                                   >> 236   protected: 
                                                   >> 237     // Retrieve PhysicsTable from files for proccess belongng the particle.
                                                   >> 238     // Normal BuildPhysics procedure of processes will be invoked, 
                                                   >> 239     // if it fails (in case of Process's RetrievePhysicsTable returns false)
                                                   >> 240     virtual void  RetrievePhysicsTable(G4ParticleDefinition* ,  
                                                   >> 241                const G4String& directory, 
                                                   >> 242                G4bool          ascii = false);
                                                   >> 243 
                                                   >> 244    /////////////////////////////////////////////////////////////////
                                                   >> 245   protected: 
                                                   >> 246     // adds new ProcessManager to all particles in the Particle Table
                                                   >> 247     //   this routine is used in Construct()
                                                   >> 248     void InitializeProcessManager();
214                                                   249 
215     // Remove and delete ProcessManagers for a << 250   public: // with description
216     // Particle Table.                         << 251     // remove and delete ProcessManagers for all particles in tha Particle Table
                                                   >> 252     //    this routine is invoked from RunManager 
217     void RemoveProcessManager();                  253     void RemoveProcessManager();
218                                                   254 
219     // Remove and delete TrackingManagers for  << 255   public: // with description
220     // Particle Table.                         << 256     // add process manager for particles created on-the-fly 
221     void RemoveTrackingManager();              << 
222                                                << 
223     // Add process manager for particles creat << 
224     void AddProcessManager(G4ParticleDefinitio    257     void AddProcessManager(G4ParticleDefinition* newParticle,
225                            G4ProcessManager* n << 258          G4ProcessManager*    newManager = 0 );
                                                   >> 259  
                                                   >> 260    /////////////////////////////////////////////////////////////////
                                                   >> 261   public:
                                                   >> 262     // check consistencies of list of particles 
226                                                   263 
227     // Check consistencies of list of particle << 
228     void CheckParticleList();                     264     void CheckParticleList();
229                                                   265 
230     void DisableCheckParticleList();              266     void DisableCheckParticleList();
                                                   >> 267  
                                                   >> 268  protected: 
                                                   >> 269  
                                                   >> 270     bool fDisableCheckParticleList;
231                                                   271 
232     inline G4int GetInstanceID() const;        << 272   ////////////////////////////////////////////////////////////////////////
233     static const G4VUPLManager& GetSubInstance << 
234                                                << 
235     // Used by Worker threads on the shared in << 
236     // to initialise workers. Derived class re << 
237     // must also call this base class method.  << 
238     virtual void InitializeWorker();           << 
239                                                << 
240     // Destroy thread-local data. Note that de << 
241     // implementing this method should still c << 
242     virtual void TerminateWorker();            << 
243                                                << 
244   protected:                                      273   protected:
245     // User must invoke this method in his Con << 274     // the particle table has the complete List of existing particle types
246     // implementation in order to enable parti << 275     G4ParticleTable* theParticleTable;
247     void AddTransportation();                  << 276     G4ParticleTable::G4PTblDicIterator* theParticleIterator;
248                                                << 277 
249     // Register a process to the particle type << 278   protected: 
250     // according to the ordering parameter tab << 279   // pointer to G4UserPhysicsListMessenger
251     // 'true' is returned if the process is re << 280     G4UserPhysicsListMessenger* theMessenger;
252     G4bool RegisterProcess(G4VProcess* process << 
253                                                << 
254     // Build PhysicsTable for making the integ << 
255     void BuildIntegralPhysicsTable(G4VProcess* << 
256                                                << 
257     // Retrieve PhysicsTable from files for pr << 
258     // Normal BuildPhysics procedure of proces << 
259     // fails (in case of process's RetrievePhy << 
260     virtual void RetrievePhysicsTable(G4Partic << 
261                                       G4bool a << 
262                                                   281 
263     // Adds new ProcessManager to all particle << 282   protected:
264     // This function is used in Construct().   << 283     G4int verboseLevel;
265     void InitializeProcessManager();           << 
266                                                   284 
267     G4ParticleTable::G4PTblDicIterator* GetPar << 285   protected:
                                                   >> 286     // this is the default cut value for all particles
                                                   >> 287     G4double defaultCutValue;
268                                                   288 
269   protected:                                      289   protected:
270     // The particle table has the complete Lis << 290    // pointer to ProductionCutsTable
271     G4ParticleTable* theParticleTable = nullpt << 291    G4ProductionCutsTable* fCutsTable;
                                                   >> 292 
                                                   >> 293    // flag to determine physics table will be build from file or not
                                                   >> 294    G4bool fRetrievePhysicsTable;  
                                                   >> 295    G4bool fStoredInAscii;
                                                   >> 296  
                                                   >> 297    G4bool fIsCheckedForRetrievePhysicsTable;
                                                   >> 298    G4bool fIsRestoredCutValues;
272                                                   299 
273     G4int verboseLevel = 1;                    << 300    // directory name for physics table files 
                                                   >> 301    G4String directoryPhysicsTable;   
274                                                   302 
275     // Default cut value for all particles     << 303    // flag for displaying the range cuts & energy thresholds
276     G4double defaultCutValue = 1.0;            << 304    G4int fDisplayThreshold;
277     G4bool isSetDefaultCutValue = false;       << 
278                                                   305 
279     // Pointer to ProductionCutsTable.         << 306   // flag for Physics Table has been built 
280     G4ProductionCutsTable* fCutsTable = nullpt << 307    G4bool fIsPhysicsTableBuilt;
281                                                   308 
282     // Flag to determine if physics table will << 309   private:
283     G4bool fRetrievePhysicsTable = false;      << 310    enum { FixedStringLengthForStore = 32 }; 
284     G4bool fStoredInAscii = true;              << 
285                                                   311 
286     G4bool fIsCheckedForRetrievePhysicsTable = << 
287     G4bool fIsRestoredCutValues = false;       << 
288                                                   312 
289     // Directory name for physics table files. << 313   private:
290     G4String directoryPhysicsTable = ".";      << 314    G4bool useCoupledTransportation;
                                                   >> 315     
                                                   >> 316   public:
                                                   >> 317    inline void UseCoupledTransportation(G4bool vl=true)
                                                   >> 318    { useCoupledTransportation = vl; }
291                                                   319 
292     // Flag for CheckParticleList().           << 320 ////////////////////////////////////////////////////////////////////////////
293     G4bool fDisableCheckParticleList = false;  << 321 // Following method is for backward compatibility and removed soon
                                                   >> 322 ////////////////////////////////////////////////////////////////////////////
                                                   >> 323   protected:
                                                   >> 324   void SetCutValueForOthers(G4double) const;
294                                                   325 
295     // MT data                                 << 
296     G4int g4vuplInstanceID = 0;                << 
297     G4RUN_DLL static G4VUPLManager subInstance << 
298 };                                                326 };
299                                                   327 
300 // Inline methods implementations              << 328 inline
                                                   >> 329  void G4VUserPhysicsList::SetCutValueForOthers(G4double) const
                                                   >> 330 {
                                                   >> 331   G4cerr << "WARNING !" << G4endl;
                                                   >> 332   G4cerr << " SetCutValueForOthers became obsolete." << G4endl;
                                                   >> 333   G4cerr << " It is harmless to remove this invokation without any side effects." << G4endl;
                                                   >> 334   G4cerr << " This dummy method implementation will be removed soon." << G4endl;
                                                   >> 335 }
301                                                   336 
302 inline void G4VUserPhysicsList::Construct()       337 inline void G4VUserPhysicsList::Construct()
303 {                                                 338 {
304 #ifdef G4VERBOSE                               << 339 #ifdef G4VERBOSE  
305   if (verboseLevel > 1) G4cout << "G4VUserPhys << 340   if (verboseLevel >1) G4cout << "G4VUserPhysicsList::Construct()" << G4endl;  
306 #endif                                            341 #endif
307                                                   342 
308   if (G4Threading::IsMasterThread()) G4Physics << 
309                                                << 
310   InitializeProcessManager();                     343   InitializeProcessManager();
311                                                   344 
312 #ifdef G4VERBOSE                               << 345 #ifdef G4VERBOSE  
313   if (verboseLevel > 1) G4cout << "Construct p << 346   if (verboseLevel >1) G4cout << "Construct processes " << G4endl;  
314 #endif                                            347 #endif
315   ConstructProcess();                             348   ConstructProcess();
                                                   >> 349 
316 }                                                 350 }
317                                                   351 
318 inline G4double G4VUserPhysicsList::GetDefault    352 inline G4double G4VUserPhysicsList::GetDefaultCutValue() const
319 {                                                 353 {
320   return defaultCutValue;                         354   return defaultCutValue;
321 }                                                 355 }
322                                                   356 
323 inline G4int G4VUserPhysicsList::GetVerboseLev << 357 
                                                   >> 358 inline  G4int G4VUserPhysicsList::GetVerboseLevel() const
324 {                                                 359 {
325   return verboseLevel;                         << 360   return  verboseLevel;
326 }                                                 361 }
327                                                   362 
328 inline G4bool G4VUserPhysicsList::IsPhysicsTab << 363 inline  
                                                   >> 364  G4bool  G4VUserPhysicsList::IsPhysicsTableRetrieved() const
329 {                                                 365 {
330   return fRetrievePhysicsTable;                << 366   return fRetrievePhysicsTable;  
331 }                                                 367 }
332                                                   368 
333 inline G4bool G4VUserPhysicsList::IsStoredInAs << 369 inline  
                                                   >> 370  G4bool  G4VUserPhysicsList::IsStoredInAscii() const
334 {                                                 371 {
335   return fStoredInAscii;                          372   return fStoredInAscii;
336 }                                                 373 }
337                                                   374 
338 inline const G4String& G4VUserPhysicsList::Get << 375 inline 
                                                   >> 376   const G4String& G4VUserPhysicsList::GetPhysicsTableDirectory() const
339 {                                                 377 {
340   return directoryPhysicsTable;                << 378   return directoryPhysicsTable;  
341 }                                                 379 }
342                                                   380 
343 inline void G4VUserPhysicsList::SetStoredInAsc << 381 inline 
                                                   >> 382  void  G4VUserPhysicsList::SetStoredInAscii()
344 {                                                 383 {
345   fStoredInAscii = true;                          384   fStoredInAscii = true;
346 }                                                 385 }
347                                                << 386     
348 inline void G4VUserPhysicsList::ResetPhysicsTa << 387     
                                                   >> 388 inline 
                                                   >> 389  void  G4VUserPhysicsList::ResetPhysicsTableRetrieved()
349 {                                                 390 {
350   fRetrievePhysicsTable = false;                  391   fRetrievePhysicsTable = false;
351   fIsRestoredCutValues = false;                   392   fIsRestoredCutValues = false;
352   fIsCheckedForRetrievePhysicsTable = false;   << 393   fIsCheckedForRetrievePhysicsTable=false;
353 }                                                 394 }
354                                                   395 
355 inline void G4VUserPhysicsList::ResetStoredInA << 396 
                                                   >> 397 inline 
                                                   >> 398  void  G4VUserPhysicsList::ResetStoredInAscii()
356 {                                                 399 {
357   fStoredInAscii = false;                         400   fStoredInAscii = false;
358 }                                                 401 }
359                                                   402 
360 inline void G4VUserPhysicsList::DisableCheckPa << 403 inline 
361 {                                              << 404  void  G4VUserPhysicsList::DisableCheckParticleList()
                                                   >> 405 {   
362   fDisableCheckParticleList = true;               406   fDisableCheckParticleList = true;
363 }                                                 407 }
364                                                   408 
365 inline G4int G4VUserPhysicsList::GetInstanceID << 
366 {                                              << 
367   return g4vuplInstanceID;                     << 
368 }                                              << 
369                                                << 
370 inline const G4VUPLManager& G4VUserPhysicsList << 
371 {                                              << 
372   return subInstanceManager;                   << 
373 }                                              << 
374                                                   409 
375 #endif                                            410 #endif
                                                   >> 411 
376                                                   412