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 ////////////////////////////////////////////// << 26 // $Id: G4VEmAdjointModel.hh,v 1.4 2009/11/20 10:31:20 ldesorgh Exp $ 27 // Class: G4VEMAdjointModel << 27 // GEANT4 tag $Name: geant4-09-03 $ 28 // Author: L. Desorgher << 28 // 29 // Organisation: SpaceIT GmbH << 29 ///////////////////////////////////////////////////////////////////////////////// >> 30 // Module: G4VEMAdjointModel >> 31 // Author: L. Desorgher >> 32 // Organisation: SpaceIT GmbH >> 33 // Contract: ESA contract 21435/08/NL/AT >> 34 // Customer: ESA/ESTEC >> 35 ///////////////////////////////////////////////////////////////////////////////// >> 36 // >> 37 // CHANGE HISTORY >> 38 // -------------- >> 39 // ChangeHistory: >> 40 // 10 September 2009 Move to a virtual class. L. Desorgher >> 41 // 1st April 2007 creation by L. Desorgher >> 42 // >> 43 //------------------------------------------------------------- >> 44 // Documentation: >> 45 // Base class for Adjoint EM model. It is based on the use of direct G4VEmModel. 30 // 46 // 31 // Base class for Adjoint EM model. It is bas << 47 32 // G4VEmModel. << 33 ////////////////////////////////////////////// << 34 48 35 #ifndef G4VEmAdjointModel_h 49 #ifndef G4VEmAdjointModel_h 36 #define G4VEmAdjointModel_h 1 50 #define G4VEmAdjointModel_h 1 37 51 38 #include "globals.hh" 52 #include "globals.hh" >> 53 #include "G4DynamicParticle.hh" >> 54 #include "G4ParticleDefinition.hh" >> 55 #include "G4MaterialCutsCouple.hh" >> 56 #include "G4Material.hh" >> 57 #include "G4Element.hh" >> 58 #include "G4ElementVector.hh" >> 59 #include "Randomize.hh" 39 #include "G4ParticleDefinition.hh" 60 #include "G4ParticleDefinition.hh" 40 #include "G4VEmModel.hh" 61 #include "G4VEmModel.hh" >> 62 #include "G4Electron.hh" >> 63 #include "G4Gamma.hh" >> 64 #include "G4ProductionCutsTable.hh" 41 65 42 class G4AdjointCSMatrix; << 66 class G4PhysicsTable; 43 class G4AdjointCSManager; << 44 class G4Material; << 45 class G4MaterialCutsCouple; << 46 class G4ParticleChange; << 47 class G4Region; 67 class G4Region; >> 68 class G4VParticleChange; >> 69 class G4ParticleChange; 48 class G4Track; 70 class G4Track; >> 71 class G4AdjointCSMatrix; 49 72 50 class G4VEmAdjointModel 73 class G4VEmAdjointModel 51 { 74 { 52 public: << 75 53 explicit G4VEmAdjointModel(const G4String& n << 76 public: // public methods >> 77 >> 78 G4VEmAdjointModel(const G4String& nam); 54 79 55 virtual ~G4VEmAdjointModel(); 80 virtual ~G4VEmAdjointModel(); 56 81 57 //------------------------------------------ 82 //------------------------------------------------------------------------ 58 // Virtual methods to be implemented for the 83 // Virtual methods to be implemented for the sample secondaries concrete model 59 //------------------------------------------ 84 //------------------------------------------------------------------------ 60 << 85 61 virtual void SampleSecondaries(const G4Track << 86 //virtual void Initialise()=0; 62 G4ParticleCha << 87 >> 88 virtual void SampleSecondaries(const G4Track& aTrack, >> 89 G4bool IsScatProjToProjCase, >> 90 G4ParticleChange* fParticleChange)=0; >> 91 63 92 64 //------------------------------------------ 93 //------------------------------------------------------------------------ 65 // Methods for adjoint processes << 94 // Methods for adjoint processes; may be overwritten if needed; 66 //------------------------------------------ 95 //------------------------------------------------------------------------ >> 96 67 97 68 virtual G4double AdjointCrossSection(const G 98 virtual G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple, 69 G4doubl << 99 G4double primEnergy, 70 G4bool << 100 G4bool IsScatProjToProjCase); 71 << 101 72 // The implementation of the DiffCrossSectio << 73 // energy loss process. For the photoelectri << 74 // the method should be redefined << 75 virtual G4double DiffCrossSectionPerAtomPrim 102 virtual G4double DiffCrossSectionPerAtomPrimToSecond( 76 G4double kinEnergyProj, // kin energy of << 103 G4double kinEnergyProj, // kinetic energy of the primary particle before the interaction 77 G4double kinEnergyProd, // kinetic energy << 104 G4double kinEnergyProd, // kinetic energy of the secondary particle 78 G4double Z, G4double A = 0.); << 105 G4double Z, 79 << 106 G4double A = 0.); 80 virtual G4double DiffCrossSectionPerAtomPrim << 107 81 G4double kinEnergyProj, // kin energy << 108 virtual G4double DiffCrossSectionPerAtomPrimToScatPrim( 82 G4double kinEnergyScatProj, // kin energy << 109 G4double kinEnergyProj, // kinetic energy of the primary particle before the interaction 83 G4double Z, G4double A = 0.); << 110 G4double kinEnergyScatProj, // kinetic energy of the primary particle after the interaction 84 << 111 G4double Z, >> 112 G4double A = 0.); >> 113 >> 114 >> 115 85 virtual G4double DiffCrossSectionPerVolumePr 116 virtual G4double DiffCrossSectionPerVolumePrimToSecond( 86 const G4Material* aMaterial, << 117 const G4Material* aMaterial, 87 G4double kinEnergyProj, // kin energy of << 118 G4double kinEnergyProj, // kinetic energy of the primary particle before the interaction 88 G4double kinEnergyProd // kinetic energy << 119 G4double kinEnergyProd // kinetic energy of the secondary particle 89 ); << 120 ); 90 << 121 91 virtual G4double DiffCrossSectionPerVolumePr 122 virtual G4double DiffCrossSectionPerVolumePrimToScatPrim( 92 const G4Material* aMaterial, << 123 const G4Material* aMaterial, 93 G4double kinEnergyProj, // kin energy << 124 G4double kinEnergyProj, // kinetic energy of the primary particle before the interaction 94 G4double kinEnergyScatProj // kinetic ene << 125 G4double kinEnergyScatProj // kinetic energy of the primary particle after the interaction 95 ); << 126 ); 96 << 127 97 // Energy limits of adjoint secondary << 128 >> 129 //Energy limits of adjoint secondary 98 //------------------ 130 //------------------ 99 << 131 100 virtual G4double GetSecondAdjEnergyMaxForSca << 132 virtual G4double GetSecondAdjEnergyMaxForScatProjToProjCase(G4double PrimAdjEnergy); 101 G4double primAdjEnergy); << 133 virtual G4double GetSecondAdjEnergyMinForScatProjToProjCase(G4double PrimAdjEnergy,G4double Tcut=0); 102 << 134 virtual G4double GetSecondAdjEnergyMaxForProdToProjCase(G4double PrimAdjEnergy); 103 virtual G4double GetSecondAdjEnergyMinForSca << 135 virtual G4double GetSecondAdjEnergyMinForProdToProjCase(G4double PrimAdjEnergy); 104 G4double primAdjEnergy, G4double tcut = 0. << 136 105 << 137 106 virtual G4double GetSecondAdjEnergyMaxForPro << 138 107 << 139 //Other Methods 108 virtual G4double GetSecondAdjEnergyMinForPro << 109 << 110 // Other Methods << 111 //--------------- 140 //--------------- 112 << 141 113 void DefineCurrentMaterial(const G4MaterialC << 142 void DefineCurrentMaterial(const G4MaterialCutsCouple* couple); 114 << 143 115 std::vector<std::vector<double>*> << 144 116 ComputeAdjointCrossSectionVectorPerAtomForSe << 145 std::vector< std::vector< double>* > ComputeAdjointCrossSectionVectorPerAtomForSecond( 117 << 146 G4double kinEnergyProd, 118 << 147 G4double Z, 119 << 148 G4double A = 0., 120 std::vector<std::vector<double>*> << 149 G4int nbin_pro_decade=10 121 ComputeAdjointCrossSectionVectorPerAtomForSc << 150 ); 122 G4double kinEnergyProd, G4double Z, G4doub << 151 std::vector< std::vector< double>* > ComputeAdjointCrossSectionVectorPerAtomForScatProj( 123 G4int nbin_pro_decade = 10); << 152 G4double kinEnergyProd, 124 << 153 G4double Z, 125 std::vector<std::vector<double>*> << 154 G4double A = 0., 126 ComputeAdjointCrossSectionVectorPerVolumeFor << 155 G4int nbin_pro_decade=10 127 G4Material* aMaterial, G4double kinEnergyP << 156 ); 128 << 157 129 std::vector<std::vector<double>*> << 158 std::vector< std::vector< double>* > ComputeAdjointCrossSectionVectorPerVolumeForSecond( 130 ComputeAdjointCrossSectionVectorPerVolumeFor << 159 G4Material* aMaterial, 131 G4Material* aMaterial, G4double kinEnergyP << 160 G4double kinEnergyProd, 132 << 161 G4int nbin_pro_decade=10 133 inline void SetCSMatrices(std::vector<G4Adjo << 162 ); 134 std::vector<G4Adjo << 163 std::vector< std::vector< double>* > ComputeAdjointCrossSectionVectorPerVolumeForScatProj( 135 { << 164 G4Material* aMaterial, 136 fCSMatrixProdToProjBackScat = Vec1CSMatrix << 165 G4double kinEnergyProd, 137 fCSMatrixProjToProjBackScat = Vec2CSMatrix << 166 G4int nbin_pro_decade=10 >> 167 ); >> 168 >> 169 >> 170 >> 171 inline void SetCSMatrices(std::vector< G4AdjointCSMatrix* >* Vec1CSMatrix, std::vector< G4AdjointCSMatrix* >* Vec2CSMatrix){ >> 172 pOnCSMatrixForProdToProjBackwardScattering = Vec1CSMatrix; >> 173 pOnCSMatrixForScatProjToProjBackwardScattering = Vec2CSMatrix; >> 174 >> 175 138 }; 176 }; 139 << 177 140 inline G4ParticleDefinition* << 178 inline G4ParticleDefinition* GetAdjointEquivalentOfDirectPrimaryParticleDefinition(){return theAdjEquivOfDirectPrimPartDef;} 141 GetAdjointEquivalentOfDirectPrimaryParticleD << 179 142 { << 180 inline G4ParticleDefinition* GetAdjointEquivalentOfDirectSecondaryParticleDefinition(){return theAdjEquivOfDirectSecondPartDef;} 143 return fAdjEquivDirectPrimPart; << 181 144 } << 182 inline G4double GetHighEnergyLimit(){return HighEnergyLimit;} 145 << 183 146 inline G4ParticleDefinition* << 184 inline G4double GetLowEnergyLimit(){return LowEnergyLimit;} 147 GetAdjointEquivalentOfDirectSecondaryParticl << 185 148 { << 149 return fAdjEquivDirectSecondPart; << 150 } << 151 << 152 inline G4double GetHighEnergyLimit() const { << 153 << 154 inline G4double GetLowEnergyLimit() const { << 155 << 156 void SetHighEnergyLimit(G4double aVal); 186 void SetHighEnergyLimit(G4double aVal); 157 << 187 158 void SetLowEnergyLimit(G4double aVal); 188 void SetLowEnergyLimit(G4double aVal); 159 << 189 160 inline void DefineDirectEMModel(G4VEmModel* << 190 inline void DefineDirectEMModel(G4VEmModel* aModel){theDirectEMModel = aModel;} 161 << 191 162 void SetAdjointEquivalentOfDirectPrimaryPart << 192 void SetAdjointEquivalentOfDirectPrimaryParticleDefinition(G4ParticleDefinition* aPart); 163 G4ParticleDefinition* aPart); << 193 164 << 194 inline void SetAdjointEquivalentOfDirectSecondaryParticleDefinition(G4ParticleDefinition* aPart){ 165 inline void SetAdjointEquivalentOfDirectSeco << 195 theAdjEquivOfDirectSecondPartDef =aPart; 166 G4ParticleDefinition* aPart) << 167 { << 168 fAdjEquivDirectSecondPart = aPart; << 169 } << 170 << 171 inline void SetSecondPartOfSameType(G4bool a << 172 { << 173 fSecondPartSameType = aBool; << 174 } << 175 << 176 inline G4bool GetSecondPartOfSameType() cons << 177 << 178 inline void SetUseMatrix(G4bool aBool) { fUs << 179 << 180 inline void SetUseMatrixPerElement(G4bool aB << 181 { << 182 fUseMatrixPerElement = aBool; << 183 } << 184 << 185 inline void SetUseOnlyOneMatrixForAllElement << 186 { << 187 fOneMatrixForAllElements = aBool; << 188 } 196 } 189 << 197 190 inline void SetApplyCutInRange(G4bool aBool) << 198 inline void SetSecondPartOfSameType(G4bool aBool){second_part_of_same_type =aBool;} 191 << 199 192 inline G4bool GetUseMatrix() const { return << 200 inline G4bool GetSecondPartOfSameType(){return second_part_of_same_type;} 193 << 201 194 inline G4bool GetUseMatrixPerElement() const << 202 inline void SetUseMatrix(G4bool aBool) { UseMatrix = aBool;} 195 << 203 196 inline G4bool GetUseOnlyOneMatrixForAllEleme << 204 inline void SetUseMatrixPerElement(G4bool aBool){ UseMatrixPerElement = aBool;} 197 { << 205 inline void SetUseOnlyOneMatrixForAllElements(G4bool aBool){ UseOnlyOneMatrixForAllElements = aBool;} 198 return fOneMatrixForAllElements; << 206 199 } << 207 inline void SetApplyCutInRange(G4bool aBool){ ApplyCutInRange = aBool;} 200 << 208 inline G4bool GetUseMatrix() {return UseMatrix;} 201 inline G4bool GetApplyCutInRange() const { r << 209 inline G4bool GetUseMatrixPerElement(){ return UseMatrixPerElement;} 202 << 210 inline G4bool GetUseOnlyOneMatrixForAllElements(){ return UseOnlyOneMatrixForAllElements;} 203 inline const G4String& GetName() const { ret << 211 inline G4bool GetApplyCutInRange(){ return ApplyCutInRange;} 204 << 212 205 inline virtual void SetCSBiasingFactor(G4dou << 213 inline G4String GetName(){ return name;} 206 { << 214 inline virtual void SetCSBiasingFactor(G4double aVal) {CS_biasing_factor = aVal;} 207 fCsBiasingFactor = aVal; << 215 208 } << 216 protected: 209 << 217 210 inline void SetCorrectWeightForPostStepInMod << 218 //Some of them can be overriden by daughter classes 211 { << 219 212 fInModelWeightCorr = aBool; << 220 213 } << 214 << 215 inline void SetAdditionalWeightCorrectionFac << 216 G4double factor) << 217 { << 218 fOutsideWeightFactor = factor; << 219 } << 220 << 221 G4VEmAdjointModel(G4VEmAdjointModel&) = dele << 222 G4VEmAdjointModel& operator=(const G4VEmAdjo << 223 << 224 protected: << 225 G4double DiffCrossSectionFunction1(G4double 221 G4double DiffCrossSectionFunction1(G4double kinEnergyProj); 226 << 227 G4double DiffCrossSectionFunction2(G4double 222 G4double DiffCrossSectionFunction2(G4double kinEnergyProj); >> 223 G4double DiffCrossSectionPerVolumeFunctionForIntegrationOverEkinProj(G4double EkinProd); >> 224 >> 225 >> 226 >> 227 //General methods to sample secondary energy >> 228 //-------------------------------------- >> 229 G4double SampleAdjSecEnergyFromCSMatrix(size_t MatrixIndex,G4double prim_energy,G4bool IsScatProjToProjCase); >> 230 G4double SampleAdjSecEnergyFromCSMatrix(G4double prim_energy,G4bool IsScatProjToProjCase); >> 231 void SelectCSMatrix(G4bool IsScatProjToProjCase); >> 232 >> 233 virtual G4double SampleAdjSecEnergyFromDiffCrossSectionPerAtom(G4double prim_energy,G4bool IsScatProjToProjCase); >> 234 >> 235 >> 236 >> 237 //Post Step weight correction >> 238 //---------------------------- >> 239 virtual void CorrectPostStepWeight(G4ParticleChange* fParticleChange, >> 240 G4double old_weight, >> 241 G4double adjointPrimKinEnergy, >> 242 G4double projectileKinEnergy, >> 243 G4bool IsScatProjToProjCase); >> 244 >> 245 >> 246 >> 247 >> 248 >> 249 >> 250 protected: //attributes >> 251 >> 252 G4VEmModel* theDirectEMModel; >> 253 G4VParticleChange* pParticleChange; >> 254 >> 255 >> 256 >> 257 >> 258 //Name >> 259 //----- >> 260 >> 261 const G4String name; >> 262 >> 263 //Needed for CS integration at the initialisation phase >> 264 //----------------------------------------------------- >> 265 >> 266 G4int ASelectedNucleus; >> 267 G4int ZSelectedNucleus; >> 268 G4Material* SelectedMaterial; >> 269 G4double kinEnergyProdForIntegration; >> 270 G4double kinEnergyScatProjForIntegration; >> 271 G4double kinEnergyProjForIntegration; >> 272 >> 273 >> 274 //for the adjoint simulation we need for each element or material: >> 275 //an adjoint CS Matrix >> 276 //----------------------------- >> 277 >> 278 std::vector< G4AdjointCSMatrix* >* pOnCSMatrixForProdToProjBackwardScattering; >> 279 std::vector< G4AdjointCSMatrix* >* pOnCSMatrixForScatProjToProjBackwardScattering; >> 280 std::vector<G4double> CS_Vs_ElementForScatProjToProjCase; >> 281 std::vector<G4double> CS_Vs_ElementForProdToProjCase; >> 282 >> 283 G4double lastCS; >> 284 G4double lastAdjointCSForScatProjToProjCase; >> 285 G4double lastAdjointCSForProdToProjCase; >> 286 >> 287 >> 288 >> 289 >> 290 //particle definition >> 291 //------------------ >> 292 >> 293 G4ParticleDefinition* theAdjEquivOfDirectPrimPartDef; >> 294 G4ParticleDefinition* theAdjEquivOfDirectSecondPartDef; >> 295 G4ParticleDefinition* theDirectPrimaryPartDef; >> 296 G4bool second_part_of_same_type; >> 297 >> 298 >> 299 //Prestep energy >> 300 //------------- >> 301 G4double preStepEnergy; >> 302 >> 303 //Current couple material >> 304 //---------------------- >> 305 G4Material* currentMaterial; >> 306 G4MaterialCutsCouple* currentCouple; >> 307 size_t currentMaterialIndex; >> 308 size_t currentCoupleIndex; >> 309 G4double currentTcutForDirectPrim; >> 310 G4double currentTcutForDirectSecond; >> 311 G4bool ApplyCutInRange; >> 312 >> 313 >> 314 >> 315 >> 316 >> 317 >> 318 >> 319 >> 320 //Energy limits >> 321 //------------- >> 322 >> 323 G4double HighEnergyLimit; >> 324 G4double LowEnergyLimit; >> 325 >> 326 >> 327 >> 328 //Cross Section biasing factor >> 329 //--------------------------- >> 330 G4double CS_biasing_factor; >> 331 >> 332 >> 333 //Type of Model with Matrix or not >> 334 //-------------------------------- >> 335 G4bool UseMatrix; >> 336 G4bool UseMatrixPerElement; //other possibility is per Material >> 337 G4bool UseOnlyOneMatrixForAllElements; >> 338 >> 339 >> 340 //Index of Cross section matrices to be used >> 341 //------------ >> 342 size_t indexOfUsedCrossSectionMatrix; >> 343 >> 344 >> 345 >> 346 >> 347 >> 348 228 349 229 // General methods to sample secondary energ << 350 230 G4double SampleAdjSecEnergyFromCSMatrix(std: << 231 G4do << 232 G4bo << 233 << 234 G4double SampleAdjSecEnergyFromCSMatrix(G4do << 235 G4bo << 236 << 237 void SelectCSMatrix(G4bool isScatProjToProj) << 238 << 239 virtual G4double SampleAdjSecEnergyFromDiffC << 240 G4double prim_energy, G4bool isScatProjToP << 241 << 242 // Post Step weight correction << 243 virtual void CorrectPostStepWeight(G4Particl << 244 G4double << 245 G4double << 246 G4double << 247 G4bool is << 248 << 249 G4AdjointCSManager* fCSManager; << 250 G4VEmModel* fDirectModel = nullptr; << 251 << 252 const G4String fName; << 253 << 254 G4Material* fSelectedMaterial = nullp << 255 G4Material* fCurrentMaterial = nullp << 256 G4MaterialCutsCouple* fCurrentCouple = nullp << 257 << 258 // particle definition << 259 G4ParticleDefinition* fAdjEquivDirectPrimPar << 260 G4ParticleDefinition* fAdjEquivDirectSecondP << 261 G4ParticleDefinition* fDirectPrimaryPart << 262 << 263 // adjoint CS matrix for each element or mat << 264 std::vector<G4AdjointCSMatrix*>* fCSMatrixPr << 265 std::vector<G4AdjointCSMatrix*>* fCSMatrixPr << 266 << 267 std::vector<G4double> fElementCSScatProjToPr << 268 std::vector<G4double> fElementCSProdToProj; << 269 << 270 G4double fKinEnergyProdForIntegration = << 271 G4double fKinEnergyScatProjForIntegration = << 272 << 273 G4double fLastCS = 0 << 274 G4double fLastAdjointCSForScatProjToProj = 0 << 275 G4double fLastAdjointCSForProdToProj = 0 << 276 << 277 G4double fPreStepEnergy = 0.; << 278 << 279 G4double fTcutPrim = 0.; << 280 G4double fTcutSecond = 0.; << 281 << 282 // Energy limits << 283 G4double fHighEnergyLimit = 0.; << 284 G4double fLowEnergyLimit = 0.; << 285 << 286 // Cross Section biasing factor << 287 G4double fCsBiasingFactor = 1.; << 288 << 289 // [1] This is needed for the forced interac << 290 // correction is given outside the model whi << 291 // the model. The weight should be fixed bef << 292 G4double fOutsideWeightFactor = 1.; << 293 << 294 // Needed for CS integration at the initiali << 295 G4int fASelectedNucleus = 0; << 296 G4int fZSelectedNucleus = 0; << 297 << 298 std::size_t fCSMatrixUsed = 0; // Index of << 299 << 300 G4bool fSecondPartSameType = false; << 301 G4bool fInModelWeightCorr = << 302 false; // correct_weight_for_post_step_in << 303 << 304 G4bool fApplyCutInRange = true; << 305 << 306 // Type of Model with Matrix or not << 307 G4bool fUseMatrix = false; << 308 G4bool fUseMatrixPerElement = false; // << 309 G4bool fOneMatrixForAllElements = false; << 310 }; 351 }; 311 352 >> 353 312 #endif 354 #endif >> 355 313 356