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 // Author: Maria Grazia Pia (Maria.Grazia.Pia@ 29 // 30 // History: 31 // ----------- 32 // 1 Aug 2001 MGP Created 33 // 34 // ------------------------------------------- 35 36 #include "G4RDCompositeEMDataSet.hh" 37 #include "G4RDEMDataSet.hh" 38 #include "G4RDVDataSetAlgorithm.hh" 39 #include <fstream> 40 #include <sstream> 41 42 G4RDCompositeEMDataSet::G4RDCompositeEMDataSet 43 G4double argUnitEnergies, 44 G4double argUnitData, 45 G4int argMinZ, 46 G4int argMaxZ) 47 : 48 algorithm(argAlgorithm), 49 unitEnergies(argUnitEnergies), 50 unitData(argUnitData), 51 minZ(argMinZ), 52 maxZ(argMaxZ) 53 { 54 if (algorithm == 0) 55 G4Exception("G4RDCompositeEMDataSet::G4RDC 56 "InvalidSetup", FatalException 57 } 58 59 60 61 G4RDCompositeEMDataSet::~G4RDCompositeEMDataSe 62 { 63 CleanUpComponents(); 64 if (algorithm) delete algorithm; 65 } 66 67 68 G4double G4RDCompositeEMDataSet::FindValue(G4d 69 { 70 const G4RDVEMDataSet* component(GetComponent 71 72 if (component) return component->FindValue(a 73 74 std::ostringstream message; 75 message << "Component " << argComponentId << 76 77 G4Exception("G4RDCompositeEMDataSet::FindVal 78 "DataNotFound", FatalException, 79 80 return 0.; 81 } 82 83 void G4RDCompositeEMDataSet::PrintData(void) c 84 { 85 const size_t n(NumberOfComponents()); 86 87 G4cout << "The data set has " << n << " comp 88 G4cout << G4endl; 89 90 size_t i(0); 91 92 while (i<n) 93 { 94 G4cout << "--- Component " << i << " --- 95 GetComponent(i)->PrintData(); 96 i++; 97 } 98 } 99 100 void G4RDCompositeEMDataSet::SetEnergiesData(G 101 { 102 G4RDVEMDataSet * component(components[argCom 103 104 if (component) 105 { 106 component->SetEnergiesData(argEnergies, 107 return; 108 } 109 110 std::ostringstream message; 111 message << "Component " << argComponentId << 112 113 G4Exception("G4RDCompositeEMDataSet::SetEner 114 "DataNotFound", FatalException, 115 } 116 117 G4bool G4RDCompositeEMDataSet::LoadData(const 118 { 119 CleanUpComponents(); 120 121 for (G4int z(minZ); z<maxZ; z++) 122 { 123 G4RDVEMDataSet* component = new G4RDEMDa 124 if (!component->LoadData(argFileName)) 125 { 126 delete component; 127 return false; 128 } 129 AddComponent(component); 130 } 131 return true; 132 } 133 134 135 136 G4bool G4RDCompositeEMDataSet::SaveData(const 137 { 138 for (G4int z=minZ; z<maxZ; z++) 139 { 140 const G4RDVEMDataSet* component(GetCompo 141 142 if (!component) 143 { 144 std::ostringstream message; 145 message << "Component " << (z-minZ) << " n 146 G4Exception("G4RDCompositeEMDataSet::SaveD 147 "DataNotFound", FatalExc 148 } 149 150 if (!component->SaveData(argFileName)) 151 return false; 152 } 153 154 return true; 155 } 156 157 void G4RDCompositeEMDataSet::CleanUpComponents 158 { 159 while (!components.empty()) 160 { 161 if (components.back()) 162 delete components.back(); 163 components.pop_back(); 164 } 165 } 166 167 168 G4double G4RDCompositeEMDataSet::RandomSelect( 169 { 170 G4double value = 0.; 171 if (componentId >= 0 && componentId < (G4int 172 { 173 const G4RDVEMDataSet* dataSet = GetCompo 174 value = dataSet->RandomSelect(); 175 } 176 return value; 177 } 178