Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // G4PhysicsModelCatalog 27 // 28 // Class description: 29 // 30 // Singleton, collection of physics models, to 31 32 // Author: M.Asai (SLAC), 26 September 2013 33 34 // Revised in August 2021 by A.Ribon (CERN). 35 // ------------------------------------------- 36 #ifndef G4PhysicsModelCatalog_hh 37 #define G4PhysicsModelCatalog_hh 38 39 #include <vector> 40 41 #include "G4String.hh" 42 #include "globals.hh" 43 44 45 class G4PhysicsModelCatalog { 46 public: 47 static void Initialize(); 48 ~G4PhysicsModelCatalog() 49 G4PhysicsModelCatalog( const G4PhysicsMode 50 G4PhysicsModelCatalog& operator=( const G4 51 52 static const G4String GetModelNameFromID( 53 static const G4String GetModelNameFromInde 54 static G4int GetModelID( const G4int model 55 static G4int GetModelID( const G4String& m 56 static G4int GetModelIndex( const G4int mo 57 static G4int GetModelIndex( const G4String 58 // There are two integer values: the model 59 // The model ID is a unique integer which 60 // but also the category to which it belon 61 // be given an model ID consistent with th 62 // In the Geant4 code, it should always be 63 // which is used. 64 // The model Index is the index of the vec 65 // model names (these two vectors have the 66 // The model Index for a model does not ha 67 // it depends only on the order in which t 68 // The model Index is useful for plotting 69 // has contiguous, small non-negative inte 70 // has non-contiguous, large, positive int 71 // The idea is that, starting from Geant4 72 // identifiers (modelID, index, name) rema 73 // physics list, application, and version 74 75 static G4int Entries(); 76 // The size of the two vectors (of model I 77 78 static void PrintAllInformation(); 79 // Print all information of this class abo 80 // of the two vectors - the one of model-I 81 82 static G4int GetMinAllowedModelIDValue(); 83 static G4int GetMaxAllowedModelIDValue(); 84 // Returns the two limits, min and max res 85 86 private: 87 G4PhysicsModelCatalog() = default; 88 89 static void SanityCheck(); 90 // Check that the two vectors (of model ID 91 // the model IDs have the expected values 92 // there are no duplication of either mode 93 94 inline static void InsertModel( G4int mode 95 96 static G4bool isInitialized; 97 static const G4int theMinAllowedModelIDVal 98 static const G4int theMaxAllowedModelIDVal 99 100 static std::vector< G4int >* theVectorO 101 static std::vector< G4String >* theVectorO 102 }; 103 104 105 inline G4int G4PhysicsModelCatalog::GetMinAllo 106 return theMinAllowedModelIDValue; 107 } 108 109 inline G4int G4PhysicsModelCatalog::GetMaxAllo 110 return theMaxAllowedModelIDValue; 111 } 112 113 inline void G4PhysicsModelCatalog::InsertModel 114 theVectorOfModelIDs->push_back( modelID ); 115 theVectorOfModelNames->push_back( modelName 116 } 117 118 #endif 119