81#ifndef G4eDPWAElasticDCS_h
82#define G4eDPWAElasticDCS_h 1
166 struct OneSamplingTable {
167 OneSamplingTable () =
default;
168 void SetSize(std::size_t nx,
G4bool useAlias) {
184 std::vector<G4double> fW;
185 std::vector<G4double> fCum;
186 std::vector<G4double> fA;
187 std::vector<G4double> fB;
188 std::vector<G4int> fI;
197 void LoadDCSForZ(
G4int iz);
200 void BuildSmplingTableForZ(
G4int iz);
205 const std::vector<G4double>& uvect);
212 const G4String& FindDirectoryPath();
215 void ReadCompressedFile(
G4String fname, std::istringstream &iss);
225 G4bool fIsRestrictedSamplingRequired;
229 static G4bool gIsGridLoaded;
233 static constexpr std::size_t gMaxZ = 103;
235 static std::size_t gNumEnergies;
236 static std::size_t gIndxEnergyLim;
237 static std::size_t gNumThetas1;
238 static std::size_t gNumThetas2;
239 static std::vector<G4double> gTheEnergies;
240 static std::vector<G4double> gTheMus1;
241 static std::vector<G4double> gTheMus2;
242 static std::vector<G4double> gTheU1;
243 static std::vector<G4double> gTheU2;
251 std::vector<G4Physics2DVector*> fDCS;
252 std::vector<G4Physics2DVector*> fDCSLow;
254 std::vector< std::vector<OneSamplingTable>* > fSamplingTables;
257 const G4int fNumSPCEbinPerDec = 3;
258 struct SCPCorrection {
263 std::vector<G4double> fVSCPC;
265 std::vector<SCPCorrection*> fSCPCPerMatCuts;
void ComputeCSPerAtom(G4int iz, G4double ekin, G4double &elcs, G4double &tr1cs, G4double &tr2cs, G4double mumin=0.0, G4double mumax=1.0)
void InitialiseForZ(std::size_t iz)
void InitSCPCorrection(G4double lowEnergyLimit, G4double highEnergyLimit)
G4double ComputeScatteringPowerCorrection(const G4MaterialCutsCouple *matcut, G4double ekin)
G4double SampleCosineTheta(std::size_t iz, G4double lekin, G4double r1, G4double r2, G4double r3)
G4double SampleCosineThetaRestricted(std::size_t iz, G4double lekin, G4double r1, G4double r2, G4double costMax, G4double costMin)