File indexing completed on 2025-01-18 09:58:13
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #ifndef G4EmTableUtil_h
0035 #define G4EmTableUtil_h 1
0036
0037 #include "globals.hh"
0038 #include "G4PhysicsTable.hh"
0039 #include "G4VMultipleScattering.hh"
0040 #include "G4VEmProcess.hh"
0041 #include "G4VEnergyLossProcess.hh"
0042 #include "G4EmModelManager.hh"
0043 #include "G4LossTableBuilder.hh"
0044 #include "G4ParticleDefinition.hh"
0045 #include "G4MscStepLimitType.hh"
0046 #include "G4DataVector.hh"
0047
0048 class G4EmTableUtil
0049 {
0050 public:
0051
0052 static const G4DataVector*
0053 PrepareEmProcess(G4VEmProcess* proc,
0054 const G4ParticleDefinition* part,
0055 const G4ParticleDefinition* secPart,
0056 G4EmModelManager* modelManager,
0057 const G4double& maxKinEnergy,
0058 G4int& secID, G4int& tripletID,
0059 G4int& mainSec, const G4int& verb,
0060 const G4bool& master);
0061
0062 static void BuildEmProcess(G4VEmProcess* proc,
0063 const G4VEmProcess* masterProc,
0064 const G4ParticleDefinition* firstPart,
0065 const G4ParticleDefinition* part,
0066 const G4int nModels, const G4int verb,
0067 const G4bool master, const G4bool isLocked,
0068 const G4bool toBuild, G4bool& baseMat);
0069
0070 static void BuildLambdaTable(G4VEmProcess* proc,
0071 const G4ParticleDefinition* part,
0072 G4EmModelManager* modelManager,
0073 G4LossTableBuilder* bld,
0074 G4PhysicsTable* theLambdaTable,
0075 G4PhysicsTable* theLambdaTablePrim,
0076 const G4double minKinEnergy,
0077 const G4double minKinEnergyPrim,
0078 const G4double maxKinEnergy,
0079 const G4double scale,
0080 const G4int verbose,
0081 const G4bool startFromNull,
0082 const G4bool splineFlag);
0083
0084 static void BuildLambdaTable(G4VEnergyLossProcess* proc,
0085 const G4ParticleDefinition* part,
0086 G4EmModelManager* modelManager,
0087 G4LossTableBuilder* bld,
0088 G4PhysicsTable* theLambdaTable,
0089 const G4DataVector* theCuts,
0090 const G4double minKinEnergy,
0091 const G4double maxKinEnergy,
0092 const G4double scale,
0093 const G4int verbose,
0094 const G4bool splineFlag);
0095
0096 static const G4ParticleDefinition* CheckIon(
0097 G4VEnergyLossProcess* proc,
0098 const G4ParticleDefinition* part,
0099 const G4ParticleDefinition* particle,
0100 const G4int verboseLevel, G4bool& isIon);
0101
0102 static void UpdateModels(G4VEnergyLossProcess* proc,
0103 G4EmModelManager* modelManager,
0104 const G4double maxKinEnergy,
0105 const G4int nModels,
0106 G4int& secID, G4int& biasID,
0107 G4int& mainSecondaries, const G4bool baseMat,
0108 const G4bool isMaster, const G4bool useAGen);
0109
0110 static void BuildLocalElossProcess(G4VEnergyLossProcess* proc,
0111 const G4VEnergyLossProcess* masterProc,
0112 const G4ParticleDefinition* part,
0113 const G4int nModels);
0114
0115 static void BuildDEDXTable(G4VEnergyLossProcess* proc,
0116 const G4ParticleDefinition* part,
0117 G4EmModelManager* modelManager,
0118 G4LossTableBuilder* bld,
0119 G4PhysicsTable* table,
0120 const G4double minKinEnergy,
0121 const G4double maxKinEnergy,
0122 const G4int nbins,
0123 const G4int verbose,
0124 const G4EmTableType tType,
0125 const G4bool splineFlag);
0126
0127 static void PrepareMscProcess(G4VMultipleScattering* proc,
0128 const G4ParticleDefinition& part,
0129 G4EmModelManager* modelManager,
0130 G4MscStepLimitType& stepLimit,
0131 G4double& facrange,
0132 G4bool& latDisplacement, G4bool& master,
0133 G4bool& isIon, G4bool& baseMat);
0134
0135 static void BuildMscProcess(G4VMultipleScattering* proc,
0136 const G4VMultipleScattering* masterProc,
0137 const G4ParticleDefinition& part,
0138 const G4ParticleDefinition* firstPart,
0139 G4int nModels, G4bool master);
0140
0141 static G4bool StoreMscTable(G4VMultipleScattering* proc,
0142 const G4ParticleDefinition* part,
0143 const G4String& directory,
0144 const G4int nModels, const G4int verb,
0145 const G4bool ascii);
0146
0147 static G4bool StoreTable(G4VProcess*, const G4ParticleDefinition*,
0148 G4PhysicsTable*, const G4String& dir,
0149 const G4String& tname, G4int verb,
0150 G4bool ascii);
0151
0152 static G4bool RetrieveTable(G4VProcess* ptr,
0153 const G4ParticleDefinition* part,
0154 G4PhysicsTable* aTable,
0155 const G4String& dir, const G4String& tname,
0156 const G4int verb, const G4bool ascii,
0157 const G4bool spline);
0158
0159 };
0160
0161 #endif
0162
0163