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 ////////////////////////////////////////////// 27 // 28 // class G4MaterialPropertiesTable 29 // 30 // Class description: 31 // 32 // A Material properties table is a hash table 33 // key = property name, and value either G4dou 34 // G4MaterialPropertyVector 35 // 36 // File: G4MaterialPropertiesTable.hh 37 // Version: 1.0 38 // Created: 1996-02-08 39 // Author: Juliet Armstrong 40 // Updated: 2005-05-12 add SetGROUPVEL() b 41 // 2002-11-05 add named material 42 // 1999-11-05 Migration from G4RW 43 // by John Allison 44 // 1999-10-29 add method and clas 45 // 1997-03-25 by Peter Gumplinger 46 // > cosmetics (only) 47 // 48 ////////////////////////////////////////////// 49 50 #ifndef G4MaterialPropertiesTable_h 51 #define G4MaterialPropertiesTable_h 1 52 53 #include "G4MaterialPropertiesIndex.hh" 54 #include "G4MaterialPropertyVector.hh" 55 #include "globals.hh" 56 57 #include <vector> 58 59 class G4MaterialPropertiesTable 60 { 61 public: 62 G4MaterialPropertiesTable(); 63 virtual ~G4MaterialPropertiesTable(); 64 65 // Add a new property to the table by giving 66 void AddConstProperty(const G4String& key, G 67 void AddConstProperty(const char* key, G4dou 68 69 // Add a new property to the table by giving 70 // vectors of values 71 G4MaterialPropertyVector* AddProperty(const 72 const std::vector<G4double>& photonEnergie 73 G4bool createNewKey = false, G4bool spline 74 75 // Add a new property to the table by giving 76 // arrays x and y of size NumEntries. 77 G4MaterialPropertyVector* AddProperty(const 78 G4double* propertyValues, G4int numEntries 79 80 // Add a new property to the table by giving 81 // already constructed G4MaterialPropertyVec 82 void AddProperty(const G4String& key, G4Mate 83 void AddProperty(const char* key, G4Material 84 85 // Add a new property to the table by giving 86 // name. Properties are in namespace G4Optic 87 // Not possible to create a new key with thi 88 void AddProperty(const G4String& key, const 89 90 // Remove a constant property from the table 91 void RemoveConstProperty(const G4String& key 92 void RemoveConstProperty(const char* key); 93 94 // Remove a property from the table. 95 void RemoveProperty(const G4String& key); 96 void RemoveProperty(const char* key); 97 98 // Get a constant property from the table 99 // It is an error to ask for a const propert 100 // Check if it has been defined with ConstP 101 G4double GetConstProperty(const G4String& ke 102 G4double GetConstProperty(const char* key) c 103 G4double GetConstProperty(const G4int index) 104 105 // Return true if a const property has been 106 // Despite the name, this returns false for 107 // GetMaterialConstPropertyNames() but not 108 // Use this method before calling GetConstPr 109 G4bool ConstPropertyExists(const G4String& k 110 G4bool ConstPropertyExists(const char* key) 111 G4bool ConstPropertyExists(const G4int index 112 113 // Get the property from the table correspon 114 // nullptr is returned if the property has n 115 G4MaterialPropertyVector* GetProperty(const 116 G4MaterialPropertyVector* GetProperty(const 117 G4MaterialPropertyVector* GetProperty(const 118 119 // Add a new entry (pair of numbers) to the 120 void AddEntry(const G4String& key, G4double 121 void AddEntry(const char* key, G4double aPho 122 123 // Get the constant property index from the 124 // It is an error to request the index of a 125 // present in fMaterialConstPropertyNames() 126 G4int GetConstPropertyIndex(const G4String& 127 128 // Get the property index by the key-name. 129 // It is an error to request the index of a 130 // present in GetMaterialPropertyNames()). 131 G4int GetPropertyIndex(const G4String& key) 132 133 // print the material properties and materia 134 void DumpTable() const; 135 136 // the next four methods are used in persist 137 const std::vector<G4String>& GetMaterialProp 138 const std::vector<G4String>& GetMaterialCons 139 // return references to the vectors of mater 140 const std::vector<G4MaterialPropertyVector*> 141 const std::vector<std::pair<G4double, G4bool 142 143 private: 144 // Calculate the group velocity based on RIN 145 G4MaterialPropertyVector* CalculateGROUPVEL( 146 147 // Vector of pointer to material property ve 148 // All entries are initialized to nullptr. 149 // Order of entries in MP defined by enum in 150 std::vector<G4MaterialPropertyVector*> fMP; 151 152 // Vector of energy-independent (i.e., "cons 153 // need to keep track if a property is defin 154 // is 'true' if the property is defined. 155 // Order of entries in MCP defined by enum i 156 std::vector<std::pair<G4double, G4bool>> fMC 157 158 std::vector<G4String> fMatPropNames; // vec 159 std::vector<G4String> fMatConstPropNames; / 160 }; 161 162 #endif /* G4MaterialPropertiesTable_h */ 163