Geant4 Cross Reference |
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 // G4ProductionCutsTable << 27 // 26 // 28 // Class description: << 27 // $Id: G4ProductionCutsTable.hh,v 1.12 2009-11-11 03:20:21 kurasige Exp $ >> 28 // GEANT4 tag $Name: not supported by cvs2svn $ 29 // 29 // 30 // G4ProductionCutsTable is a singleton class << 30 // 31 // G4ProductionCuts objects. This class manage << 31 // ------------------------------------------------------------ 32 // cuts and energy cuts for each particle type << 32 // GEANT 4 class header file 33 << 33 // 34 // Author: M.Asai, 5 October 2002 - First impl << 34 // Class Description 35 // Modifications: H.Kurashige, 2004-2008 << 35 // G4ProductionCutsTable is a static singleton class of a table of 36 // ------------------------------------------- << 36 // G4ProductionCuts objects. This class also manages tables of 37 #ifndef G4ProductionCutsTable_hh << 37 // production cut and energy cut for each particle type. 38 #define G4ProductionCutsTable_hh 1 << 38 // >> 39 // ------------------------------------------------------------ >> 40 // First Implementation 05 Oct. 2002 M.Asai >> 41 // >> 42 // Modified 03 Feb 2004 H.Kurashige >> 43 // Modify RetrieveCutsTable to allow ordering of materials and >> 44 // couples can be different from one in file (i.e. at storing) >> 45 // Modified 20 Aug. 2004 H.Kurashige >> 46 // Modify RetrieveCutsTable to allow materials and >> 47 // couples can be different from one in file (i.e. at storing) >> 48 // Modified 2 Mar. 2008 H.Kurashige >> 49 // add messenger >> 50 // ------------------------------------------------------------ 39 51 40 #include <cmath> << 52 #ifndef G4ProductionCutsTable_h 41 #include <vector> << 53 #define G4ProductionCutsTable_h 1 42 << 43 #include "globals.hh" << 44 #include "G4ios.hh" << 45 #include "G4MaterialCutsCouple.hh" << 46 #include "G4MCCIndexConversionTable.hh" << 47 #include "G4Region.hh" << 48 54 49 class G4RegionStore; 55 class G4RegionStore; 50 class G4VRangeToEnergyConverter; 56 class G4VRangeToEnergyConverter; 51 class G4LogicalVolume; 57 class G4LogicalVolume; 52 class G4VPhysicalVolume; 58 class G4VPhysicalVolume; 53 class G4ProductionCuts; 59 class G4ProductionCuts; >> 60 54 class G4ProductionCutsTableMessenger; 61 class G4ProductionCutsTableMessenger; 55 62 >> 63 #include "globals.hh" >> 64 #include <cmath> >> 65 #include "G4ios.hh" >> 66 #include <vector> >> 67 #include "G4MaterialCutsCouple.hh" >> 68 #include "G4MCCIndexConversionTable.hh" >> 69 #include "G4Region.hh" >> 70 >> 71 56 class G4ProductionCutsTable 72 class G4ProductionCutsTable 57 { 73 { 58 public: << 74 public: // with description 59 << 60 static G4ProductionCutsTable* GetProductio 75 static G4ProductionCutsTable* GetProductionCutsTable(); 61 // This static method returns the single << 76 // This static method returns the singleton pointer of this class object. 62 // At first invocation, the singleton ob << 77 // At the first invokation of this method, the singleton object is instantiated. 63 78 64 G4ProductionCutsTable(const G4ProductionCu << 79 protected: 65 G4ProductionCutsTable& operator=(const G4P << 80 G4ProductionCutsTable(); >> 81 private: >> 82 G4ProductionCutsTable(const G4ProductionCutsTable& right); 66 83 >> 84 public: 67 virtual ~G4ProductionCutsTable(); 85 virtual ~G4ProductionCutsTable(); 68 86 69 void CreateCoupleTables(); << 87 public: // with description 70 // Creates material cuts couples table a << 71 << 72 void UpdateCoupleTable(G4VPhysicalVolume* 88 void UpdateCoupleTable(G4VPhysicalVolume* currentWorld); 73 // Triggers an update of the table of G4 << 89 // This method triggers an update of the table of G4ProductionCuts objects. 74 90 75 void SetEnergyRange(G4double lowedge, G4do 91 void SetEnergyRange(G4double lowedge, G4double highedge); 76 // Sets the limits of energy cuts for al << 92 // This method sets the limits of energy cuts for all particles. 77 93 78 G4double GetLowEdgeEnergy() const; 94 G4double GetLowEdgeEnergy() const; 79 G4double GetHighEdgeEnergy() const; 95 G4double GetHighEdgeEnergy() const; 80 // Get the limits of energy cuts for all << 96 // These methods get the limits of energy cuts for all particles. 81 97 >> 98 // get/set max cut energy of RangeToEnergy Converter for all particle type 82 G4double GetMaxEnergyCut(); 99 G4double GetMaxEnergyCut(); 83 void SetMaxEnergyCut(G4double value); 100 void SetMaxEnergyCut(G4double value); 84 // Get/set max cut energy of RangeToEner << 101 85 // for all particle types << 86 102 87 void DumpCouples() const; 103 void DumpCouples() const; 88 // Displays a list of registered couples << 104 // Display a list of registored couples 89 105 90 const G4MCCIndexConversionTable* GetMCCInd 106 const G4MCCIndexConversionTable* GetMCCIndexConversionTable() const; 91 // Gives the pointer to the MCCIndexConv << 107 // gives the pointer to the MCCIndexConversionTable 92 108 93 const std::vector<G4double>* GetRangeCutsV << 109 private: 94 const std::vector<G4double>* GetEnergyCuts << 95 << 96 std::size_t GetTableSize() const; << 97 // Returns the size of the couple table << 98 110 99 const G4MaterialCutsCouple* GetMaterialCut << 111 static G4ProductionCutsTable* fG4ProductionCutsTable; 100 // Returns the pointer to the couple << 101 112 102 const G4MaterialCutsCouple* GetMaterialCut << 113 typedef std::vector<G4MaterialCutsCouple*> G4CoupleTable; 103 co << 114 typedef std::vector<G4MaterialCutsCouple*>::const_iterator CoupleTableIterator; 104 // Returns the pointer to the couple << 115 typedef std::vector<G4double> G4CutVectorForAParticle; 105 << 116 typedef std::vector<G4CutVectorForAParticle*> G4CutTable; 106 G4int GetCoupleIndex(const G4MaterialCutsC << 117 G4CoupleTable coupleTable; 107 G4int GetCoupleIndex(const G4Material* aMa << 118 G4CutTable rangeCutTable; 108 const G4ProductionCut << 119 G4CutTable energyCutTable; 109 // Return the index of the couple. << 120 110 // -1 is returned if index is not found << 121 G4RegionStore* fG4RegionStore; >> 122 G4VRangeToEnergyConverter* converters[NumberOfG4CutIndex]; >> 123 >> 124 G4ProductionCuts* defaultProductionCuts; >> 125 >> 126 G4MCCIndexConversionTable mccConversionTable; >> 127 >> 128 // These two vectors are for the backward comparibility >> 129 G4double* rangeDoubleVector[NumberOfG4CutIndex]; >> 130 G4double* energyDoubleVector[NumberOfG4CutIndex]; >> 131 >> 132 public: >> 133 const std::vector<G4double>* GetRangeCutsVector(size_t pcIdx) const; >> 134 const std::vector<G4double>* GetEnergyCutsVector(size_t pcIdx) const; >> 135 >> 136 // These two vectors are for the backward comparibility >> 137 G4double* GetRangeCutsDoubleVector(size_t pcIdx) const; >> 138 G4double* GetEnergyCutsDoubleVector(size_t pcIdx) const; >> 139 >> 140 public: // with description >> 141 size_t GetTableSize() const; >> 142 // This method returns the size of the couple table. >> 143 >> 144 const G4MaterialCutsCouple* GetMaterialCutsCouple(G4int i) const; >> 145 // This method returns the pointer to the couple. >> 146 >> 147 const G4MaterialCutsCouple* >> 148 GetMaterialCutsCouple(const G4Material* aMat, >> 149 const G4ProductionCuts* aCut) const; >> 150 // This method returns the pointer to the couple. >> 151 >> 152 G4int GetCoupleIndex(const G4MaterialCutsCouple* aCouple) const; >> 153 G4int GetCoupleIndex(const G4Material* aMat, >> 154 const G4ProductionCuts* aCut) const; >> 155 // These methods return the index of the couple. >> 156 // -1 is returned if index is not found. 111 157 112 G4bool IsModified() const; << 158 G4bool IsModified() const; 113 // Returns TRUE if at least one producti << 159 // This method returns TRUE if at least one production cut value is modified. 114 160 115 void PhysicsTableUpdated(); << 161 void PhysicsTableUpdated(); 116 // Resets the status of IsModified(). Th << 162 // This method resets the status of IsModified(). This method must 117 // used by the RunManager when physics t << 163 // be exclusively used by RunManager when physics tables are built. 118 164 119 G4ProductionCuts* GetDefaultProductionCuts << 165 G4ProductionCuts* GetDefaultProductionCuts() const; 120 // Returns the default production cuts << 166 // This method returns the default production cuts. 121 167 122 G4double ConvertRangeToEnergy(const G4Part << 168 G4double ConvertRangeToEnergy(const G4ParticleDefinition* particle, 123 const G4Mate << 169 const G4Material* material, 124 G4doub << 170 G4double range ); 125 // Gives energy corresponding to range v << 171 // This method gives energy corresponding to range value 126 // -1 is returned if particle or materia << 172 // 127 << 173 // -1 is returned if particle or material is not found. 128 void ResetConverters(); << 174 129 // Resets all range to energy converters << 175 void ResetConverters(); 130 << 176 // reset all Range To Energy Converters 131 G4bool StoreCutsTable(const G4String& dire << 177 132 G4bool ascii = false << 133 // Stores cuts and material information << 134 // the specified directory << 135 << 136 G4bool RetrieveCutsTable(const G4String& d << 137 G4bool ascii = fa << 138 // Retrieve material cut couple informat << 139 // in files under the specified director << 140 << 141 G4bool CheckForRetrieveCutsTable(const G4S << 142 G4bool as << 143 // Checks stored material and cut values << 144 // with the current detector setup << 145 << 146 G4double* GetRangeCutsDoubleVector(std::si << 147 G4double* GetEnergyCutsDoubleVector(std::s << 148 // Methods for backward compatibility << 149 << 150 void SetEnergyCutVector(const std::vector< << 151 // User defined cut vectors (idx < 4) ra << 152 // to avoid inconsistency in physics << 153 << 154 void SetVerboseLevel(G4int value); << 155 G4int GetVerboseLevel() const; << 156 // Control flag for output message << 157 // 0: Silent << 158 // 1: Warning message << 159 // 2: More << 160 << 161 protected: << 162 << 163 G4ProductionCutsTable(); << 164 << 165 virtual G4bool StoreMaterialInfo(const G4S << 166 G4bool as << 167 // Stores material information in files << 168 << 169 virtual G4bool CheckMaterialInfo(const G4S << 170 G4bool as << 171 // Checks stored material is consistent << 172 << 173 virtual G4bool StoreMaterialCutsCoupleInfo << 174 << 175 // Stores materialCutsCouple information << 176 // specified directory << 177 << 178 virtual G4bool CheckMaterialCutsCoupleInfo << 179 << 180 // Checks stored materialCutsCouple is c << 181 // the current detector setup << 182 << 183 virtual G4bool StoreCutsInfo(const G4Strin << 184 G4bool ascii << 185 // Stores cut values information in file << 186 << 187 virtual G4bool RetrieveCutsInfo(const G4S << 188 G4bool as << 189 // Retrieves cut values information in f << 190 // specified directory << 191 << 192 private: 178 private: 193 << 194 void ScanAndSetCouple(G4LogicalVolume* aLV 179 void ScanAndSetCouple(G4LogicalVolume* aLV, 195 G4MaterialCutsCouple << 180 G4MaterialCutsCouple* aCouple, 196 G4Region* aRegion); << 181 G4Region* aRegion); 197 << 198 G4bool IsCoupleUsedInTheRegion(const G4Mat << 199 const G4Reg << 200 182 >> 183 bool IsCoupleUsedInTheRegion(const G4MaterialCutsCouple* aCouple, >> 184 const G4Region* aRegion) const; 201 185 202 private: << 186 public: // with description 203 << 187 // Store cuts and material information in files under the specified directory. 204 static G4ProductionCutsTable* fProductionC << 188 G4bool StoreCutsTable(const G4String& directory, 205 << 189 G4bool ascii = false); 206 std::vector<G4MaterialCutsCouple*> coupleT << 190 207 std::vector<std::vector<G4double>*> rangeC << 191 // Retrieve material cut couple information 208 std::vector<std::vector<G4double>*> energy << 192 // in files under the specified directory. 209 << 193 G4bool RetrieveCutsTable(const G4String& directory, 210 std::vector<G4double>* userEnergyCuts[4] = << 194 G4bool ascii = false); >> 195 >> 196 // check stored material and cut values are consistent with the current detector setup. >> 197 G4bool CheckForRetrieveCutsTable(const G4String& directory, >> 198 G4bool ascii = false); 211 199 212 G4RegionStore* fG4RegionStore = nullptr; << 200 protected: 213 G4VRangeToEnergyConverter* converters[Numb << 214 201 215 G4ProductionCuts* defaultProductionCuts = << 202 // Store material information in files under the specified directory. >> 203 virtual G4bool StoreMaterialInfo(const G4String& directory, >> 204 G4bool ascii = false); >> 205 >> 206 // check stored material is consistent with the current detector setup. >> 207 virtual G4bool CheckMaterialInfo(const G4String& directory, >> 208 G4bool ascii = false); >> 209 >> 210 // Store materialCutsCouple information in files under the specified directory. >> 211 virtual G4bool StoreMaterialCutsCoupleInfo(const G4String& directory, >> 212 G4bool ascii = false); >> 213 >> 214 // check stored materialCutsCouple is consistent with the current detector setup. >> 215 virtual G4bool CheckMaterialCutsCoupleInfo(const G4String& directory, >> 216 G4bool ascii = false); >> 217 >> 218 // Store cut values information in files under the specified directory. >> 219 virtual G4bool StoreCutsInfo(const G4String& directory, >> 220 G4bool ascii = false); >> 221 >> 222 // Retrieve cut values information in files under the specified directory. >> 223 virtual G4bool RetrieveCutsInfo(const G4String& directory, >> 224 G4bool ascii = false); 216 225 217 G4MCCIndexConversionTable mccConversionTab << 226 private: >> 227 G4bool firstUse; >> 228 enum { FixedStringLengthForStore = 32 }; 218 229 219 // These two vectors are for backward comp << 230 public: // with description 220 G4double* rangeDoubleVector[NumberOfG4CutI << 231 void SetVerboseLevel(G4int value); 221 G4double* energyDoubleVector[NumberOfG4Cut << 232 G4int GetVerboseLevel() const; >> 233 // controle flag for output message >> 234 // 0: Silent >> 235 // 1: Warning message >> 236 // 2: More 222 237 223 enum { FixedStringLengthForStore = 32 }; << 238 private: >> 239 G4int verboseLevel; >> 240 G4ProductionCutsTableMessenger* fMessenger; 224 241 225 G4ProductionCutsTableMessenger* fMessenger << 226 G4int verboseLevel = 1; << 227 G4bool firstUse = true; << 228 }; 242 }; 229 243 230 // ------------------ << 231 // Inline methods << 232 // ------------------ << 233 << 234 inline 244 inline 235 const std::vector<G4double>* << 245 const std::vector<G4double>* G4ProductionCutsTable::GetRangeCutsVector(size_t pcIdx) const 236 G4ProductionCutsTable::GetRangeCutsVector(std: << 237 { 246 { 238 return rangeCutTable[pcIdx]; 247 return rangeCutTable[pcIdx]; 239 } 248 } 240 249 241 inline 250 inline 242 const std::vector<G4double>* << 251 const std::vector<G4double>* G4ProductionCutsTable::GetEnergyCutsVector(size_t pcIdx) const 243 G4ProductionCutsTable::GetEnergyCutsVector(std << 244 { 252 { 245 return energyCutTable[pcIdx]; << 253 return energyCutTable[pcIdx]; 246 } 254 } 247 255 248 inline 256 inline 249 std::size_t G4ProductionCutsTable::GetTableSiz << 257 size_t G4ProductionCutsTable::GetTableSize() const 250 { 258 { 251 return coupleTable.size(); 259 return coupleTable.size(); 252 } 260 } 253 261 254 inline 262 inline 255 const G4MaterialCutsCouple* << 263 const G4MaterialCutsCouple* G4ProductionCutsTable::GetMaterialCutsCouple(G4int i) const 256 G4ProductionCutsTable::GetMaterialCutsCouple(G << 257 { 264 { 258 return coupleTable[std::size_t(i)]; << 265 return coupleTable[size_t(i)]; 259 } 266 } 260 267 261 inline 268 inline 262 G4bool G4ProductionCutsTable::IsModified() con << 269 G4bool G4ProductionCutsTable::IsModified() const 263 { 270 { 264 if(firstUse) return true; 271 if(firstUse) return true; 265 for(auto itr=coupleTable.cbegin(); itr!=coup << 272 for(G4ProductionCutsTable::CoupleTableIterator itr=coupleTable.begin(); 266 { << 273 itr!=coupleTable.end();itr++){ 267 if((*itr)->IsRecalcNeeded()) 274 if((*itr)->IsRecalcNeeded()) 268 { 275 { 269 return true; 276 return true; 270 } 277 } 271 } 278 } 272 return false; 279 return false; 273 } 280 } 274 281 275 inline 282 inline 276 void G4ProductionCutsTable::PhysicsTableUpdate << 283 void G4ProductionCutsTable::PhysicsTableUpdated() 277 { 284 { 278 for(auto itr=coupleTable.cbegin(); itr!=coup << 285 for(G4ProductionCutsTable::CoupleTableIterator itr=coupleTable.begin();itr!=coupleTable.end();itr++){ 279 { << 280 (*itr)->PhysicsTableUpdated(); 286 (*itr)->PhysicsTableUpdated(); 281 } 287 } 282 } 288 } 283 289 284 inline 290 inline 285 G4double* << 291 G4double* G4ProductionCutsTable::GetRangeCutsDoubleVector(size_t pcIdx) const 286 G4ProductionCutsTable::GetRangeCutsDoubleVecto << 292 { return rangeDoubleVector[pcIdx]; } 287 { << 288 return rangeDoubleVector[pcIdx]; << 289 } << 290 293 291 inline 294 inline 292 G4double* << 295 G4double* G4ProductionCutsTable::GetEnergyCutsDoubleVector(size_t pcIdx) const 293 G4ProductionCutsTable::GetEnergyCutsDoubleVect << 296 { return energyDoubleVector[pcIdx]; } 294 { << 295 return energyDoubleVector[pcIdx]; << 296 } << 297 297 298 inline 298 inline 299 G4ProductionCuts* G4ProductionCutsTable::GetDe << 299 G4ProductionCuts* G4ProductionCutsTable::GetDefaultProductionCuts() const 300 { << 300 { return defaultProductionCuts; } 301 return defaultProductionCuts; << 302 } << 303 301 304 inline 302 inline 305 G4bool G4ProductionCutsTable::IsCoupleUsedInTh << 303 bool G4ProductionCutsTable::IsCoupleUsedInTheRegion( 306 const G4Mater 304 const G4MaterialCutsCouple* aCouple, 307 const G4Regio 305 const G4Region* aRegion) const 308 { 306 { 309 G4ProductionCuts* fProductionCut = aRegion-> 307 G4ProductionCuts* fProductionCut = aRegion->GetProductionCuts(); 310 auto mItr = aRegion->GetMaterialIterator(); << 308 std::vector<G4Material*>::const_iterator mItr = aRegion->GetMaterialIterator(); 311 std::size_t nMaterial = aRegion->GetNumberOf << 309 size_t nMaterial = aRegion->GetNumberOfMaterials(); 312 for(std::size_t iMate=0;iMate<nMaterial; ++i << 310 for(size_t iMate=0;iMate<nMaterial;iMate++, mItr++){ 313 { << 314 if(aCouple->GetMaterial()==(*mItr) && 311 if(aCouple->GetMaterial()==(*mItr) && 315 aCouple->GetProductionCuts()==fProducti << 312 aCouple->GetProductionCuts()==fProductionCut){ 316 { << 317 return true; 313 return true; 318 } 314 } 319 } 315 } 320 return false; 316 return false; 321 } 317 } 322 318 323 inline 319 inline 324 const G4MaterialCutsCouple* 320 const G4MaterialCutsCouple* 325 G4ProductionCutsTable::GetMaterialCutsCouple(c << 321 G4ProductionCutsTable::GetMaterialCutsCouple(const G4Material* aMat, 326 c << 322 const G4ProductionCuts* aCut) const 327 { << 323 { 328 for(auto cItr=coupleTable.cbegin(); cItr!=co << 324 for(CoupleTableIterator cItr=coupleTable.begin();cItr!=coupleTable.end();cItr++) 329 { 325 { 330 if((*cItr)->GetMaterial()!=aMat) continue; 326 if((*cItr)->GetMaterial()!=aMat) continue; 331 if((*cItr)->GetProductionCuts()==aCut) ret 327 if((*cItr)->GetProductionCuts()==aCut) return (*cItr); 332 } 328 } 333 return nullptr; << 329 return 0; 334 } 330 } 335 331 336 inline 332 inline 337 G4int << 333 G4int G4ProductionCutsTable::GetCoupleIndex(const G4MaterialCutsCouple* aCouple) const 338 G4ProductionCutsTable::GetCoupleIndex(const G4 << 339 { 334 { 340 G4int idx = 0; 335 G4int idx = 0; 341 for(auto cItr=coupleTable.cbegin(); cItr!=co << 336 for(CoupleTableIterator cItr=coupleTable.begin();cItr!=coupleTable.end();cItr++) 342 { 337 { 343 if((*cItr)==aCouple) return idx; 338 if((*cItr)==aCouple) return idx; 344 ++idx; << 339 idx++; 345 } 340 } 346 return -1; 341 return -1; 347 } 342 } 348 343 349 inline 344 inline 350 G4int G4ProductionCutsTable::GetCoupleIndex(co << 345 G4int G4ProductionCutsTable:: GetCoupleIndex(const G4Material* aMat, 351 co << 346 const G4ProductionCuts* aCut) const 352 { 347 { 353 const G4MaterialCutsCouple* aCouple = GetMat 348 const G4MaterialCutsCouple* aCouple = GetMaterialCutsCouple(aMat,aCut); 354 return GetCoupleIndex(aCouple); 349 return GetCoupleIndex(aCouple); 355 } 350 } 356 351 357 inline 352 inline 358 G4int G4ProductionCutsTable::GetVerboseLevel() << 353 G4int G4ProductionCutsTable::GetVerboseLevel() const 359 { 354 { 360 return verboseLevel; << 355 return verboseLevel; 361 } 356 } 362 357 363 inline 358 inline 364 const G4MCCIndexConversionTable* << 359 const G4MCCIndexConversionTable* 365 G4ProductionCutsTable::GetMCCIndexConversionTa << 360 G4ProductionCutsTable::GetMCCIndexConversionTable() const 366 { 361 { 367 return &mccConversionTable; 362 return &mccConversionTable; 368 } 363 } 369 364 370 #endif 365 #endif >> 366 >> 367 >> 368 >> 369 >> 370 >> 371 371 372