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 // 29 // GEANT4 Class header file 30 // 31 // File name: G4EmDataHandler 32 // 33 // Author: V. Ivanchenko 34 // 35 // Creation date: 16 August 2016 36 // 37 // Modifications: 38 // 39 // Class Description: 40 // 41 // A storage of G4PhysicsTable 42 // 43 // Class Description: End 44 45 // ------------------------------------------- 46 // 47 48 #ifndef G4EmDataHandler_h 49 #define G4EmDataHandler_h 1 50 51 #include <vector> 52 53 #include "globals.hh" 54 #include "G4PhysicsTable.hh" 55 #include "G4PhysicsVector.hh" 56 #include "G4EmTableType.hh" 57 #include "G4EmElementSelector.hh" 58 59 //....oooOO0OOooo........oooOO0OOooo........oo 60 61 class G4ParticleDefinition; 62 class G4VEmProcess; 63 class G4VEnergyLossProcess; 64 65 class G4EmDataHandler 66 { 67 public: 68 69 explicit G4EmDataHandler(std::size_t nTable, 70 71 ~G4EmDataHandler(); 72 73 // add table 74 std::size_t SetTable(G4PhysicsTable*); 75 76 // update existing table 77 void UpdateTable(G4PhysicsTable*, std::size_ 78 79 // save table pointer 80 void SaveTable(G4PhysicsTable*, std::size_t 81 82 // assuming that the table is already define 83 G4PhysicsTable* MakeTable(std::size_t idx); 84 85 // existing table may be substituted 86 G4PhysicsTable* MakeTable(G4PhysicsTable*, s 87 88 // clean existing table 89 void CleanTable(std::size_t idx); 90 91 G4bool StorePhysicsTable(std::size_t idx, 92 const G4ParticleDef 93 const G4String& fname, 94 G4bool ascii); 95 96 G4bool RetrievePhysicsTable(std::size_t idx, 97 const G4ParticleDefinition* part, 98 const G4String& fname, 99 G4bool ascii, G4bool spline); 100 101 void SetMasterProcess(const G4VEmProcess*); 102 103 const G4VEmProcess* GetMasterProcess(size_t 104 105 const G4PhysicsTable* GetTable(std::size_t i 106 return (idx < tLength) ? data[idx] : nullp 107 } 108 109 G4PhysicsTable* Table(std::size_t idx) const 110 return (idx < tLength) ? data[idx] : nullp 111 } 112 113 const G4PhysicsVector* GetVector(std::size_t 114 return (*(data[itable]))[ivec]; 115 } 116 117 const std::vector<G4PhysicsTable*>& GetTable 118 return data; 119 } 120 121 std::vector<G4double>* EnergyOfCrossSectionM 122 return fMaxXS; 123 } 124 125 void SetEnergyOfCrossSectionMax(std::vector< 126 if (p != fMaxXS) { 127 delete fMaxXS; 128 fMaxXS = p; 129 } 130 } 131 132 std::vector<G4TwoPeaksXS*>* TwoPeaksXS() con 133 return fXSpeaks; 134 } 135 136 void SetTwoPeaksXS(std::vector<G4TwoPeaksXS* 137 if (p != fXSpeaks) { 138 delete fXSpeaks; 139 fXSpeaks = p; 140 } 141 } 142 143 std::vector<G4EmElementSelector*>* GetElemen 144 return (i < eLength) ? fElemSelectors[i] : 145 } 146 147 void SetElementSelectors(std::vector<G4EmEle 148 149 G4CrossSectionType CrossSectionType() const 150 return fXSType; 151 } 152 153 void SetCrossSectionType(G4CrossSectionType 154 fXSType = val; 155 } 156 157 const G4String& GetName() const { 158 return fName; 159 } 160 161 void SetUseBaseParticleTable(G4bool val) { 162 fUseBaseParticleTable = val; 163 } 164 165 // hide assignment operator 166 G4EmDataHandler & operator=(const G4EmDataHa 167 G4EmDataHandler(const G4EmDataHandler&) = de 168 169 private: 170 171 std::vector<G4PhysicsTable*> data; 172 std::vector<G4double>* fMaxXS; 173 std::vector<G4TwoPeaksXS*>* fXSpeaks; 174 std::vector<std::vector<G4EmElementSelector* 175 std::vector<const G4VEmProcess*> masterProce 176 std::size_t tLength{0}; 177 std::size_t eLength{0}; 178 G4CrossSectionType fXSType{fEmNoIntegral}; 179 G4String fName; 180 G4bool fUseBaseParticleTable{false}; 181 }; 182 183 //....oooOO0OOooo........oooOO0OOooo........oo 184 185 #endif 186 187