81#ifndef G4eDPWAElasticDCS_h
82#define G4eDPWAElasticDCS_h 1
167 struct OneSamplingTable {
168 OneSamplingTable () {}
169 void SetSize(std::size_t nx,
G4bool useAlias) {
185 std::vector<G4double> fW;
186 std::vector<G4double> fCum;
187 std::vector<G4double> fA;
188 std::vector<G4double> fB;
189 std::vector<G4int> fI;
198 void LoadDCSForZ(
G4int iz);
201 void BuildSmplingTableForZ(
G4int iz);
206 const std::vector<G4double>& uvect);
213 const G4String& FindDirectoryPath();
216 void ReadCompressedFile(
G4String fname, std::istringstream &iss);
226 G4bool fIsRestrictedSamplingRequired;
230 static G4bool gIsGridLoaded;
234 static constexpr std::size_t gMaxZ = 103;
236 static std::size_t gNumEnergies;
237 static std::size_t gIndxEnergyLim;
238 static std::size_t gNumThetas1;
239 static std::size_t gNumThetas2;
240 static std::vector<G4double> gTheEnergies;
241 static std::vector<G4double> gTheMus1;
242 static std::vector<G4double> gTheMus2;
243 static std::vector<G4double> gTheU1;
244 static std::vector<G4double> gTheU2;
252 std::vector<G4Physics2DVector*> fDCS;
253 std::vector<G4Physics2DVector*> fDCSLow;
255 std::vector< std::vector<OneSamplingTable>* > fSamplingTables;
258 const G4int fNumSPCEbinPerDec = 3;
259 struct SCPCorrection {
264 std::vector<G4double> fVSCPC;
266 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)