50 #ifndef G4AdjointCSManager_h
51 #define G4AdjointCSManager_h 1
142 G4bool IsScatProjToProjCase,
143 std::vector<G4double>&
144 AdjointCS_for_each_element);
152 G4bool IsScatProjToProjCase);
179 std::vector<G4AdjointCSMatrix*>
183 G4int nbin_pro_decade);
185 std::vector<G4AdjointCSMatrix*>
188 G4int nbin_pro_decade);
G4double GetTotalAdjointCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
G4double GetCrossSectionCorrection(G4ParticleDefinition *aPartDef, G4double PreStepEkin, const G4MaterialCutsCouple *aCouple, G4bool &fwd_is_used, G4double &fwd_TotCS)
void SetTmin(G4double aVal)
G4double GetAdjointSigma(G4double Ekin_nuc, size_t index_model, G4bool is_scat_proj_to_proj, const G4MaterialCutsCouple *aCouple)
G4ParticleDefinition * theFwdIon
G4double ComputeTotalAdjointCS(const G4MaterialCutsCouple *aMatCutCouple, G4ParticleDefinition *aPart, G4double PrimEnergy)
G4double GetPostStepWeightCorrection()
G4double LastCSCorrectionFactor
std::vector< G4PhysicsTable * > theTotalAdjointSigmaTableVector
G4MaterialCutsCouple * currentCouple
std::vector< G4PhysicsTable * > listSigmaTableForAdjointModelProdToProj
void GetMaxFwdTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &e_sigma_max, G4double &sigma_max)
size_t RegisterEmAdjointModel(G4VEmAdjointModel *)
void DefineCurrentMaterial(const G4MaterialCutsCouple *couple)
void SetIon(G4ParticleDefinition *adjIon, G4ParticleDefinition *fwdIon)
G4bool forward_CS_is_used
void RegisterEnergyLossProcess(G4VEnergyLossProcess *aProcess, G4ParticleDefinition *aPartDef)
std::vector< size_t > listOfIndexOfAdjointEMModelInAction
void SetFwdCrossSectionMode(G4bool aBool)
std::vector< G4PhysicsTable * > listSigmaTableForAdjointModelScatProjToProj
std::vector< G4PhysicsTable * > theTotalForwardSigmaTableVector
void RegisterAdjointParticle(G4ParticleDefinition *aPartDef)
std::vector< std::vector< G4AdjointCSMatrix * > > theAdjointCSMatricesForProdToProj
std::vector< std::vector< G4double > > EminForFwdSigmaTables
static G4ThreadLocal G4AdjointCSManager * theInstance
G4ParticleDefinition * GetAdjointParticleEquivalent(G4ParticleDefinition *theFwdPartDef)
std::vector< std::vector< G4double > > EkinofAdjSigmaMax
std::vector< std::vector< G4AdjointCSMatrix * > > theAdjointCSMatricesForScatProjToProj
std::vector< G4ParticleDefinition * > theListOfAdjointParticlesInAction
G4ParticleDefinition * theAdjIon
std::vector< std::vector< G4VEnergyLossProcess * > * > listOfForwardEnergyLossProcess
void SetNbins(G4int aInt)
void SetTmax(G4double aVal)
std::vector< G4AdjointCSMatrix * > BuildCrossSectionsMatricesForAGivenModelAndMaterial(G4VEmAdjointModel *aModel, G4Material *aMaterial, G4int nbin_pro_decade)
G4double lastPrimaryEnergy
G4double GetTotalForwardCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
static const G4double A[nN]
std::vector< std::vector< G4double > > EkinofFwdSigmaMax
std::vector< std::vector< G4double > > EminForAdjSigmaTables
void GetEminForTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &emin_adj, G4double &emin_fwd)
G4ParticleDefinition * GetForwardParticleEquivalent(G4ParticleDefinition *theAdjPartDef)
G4double GetContinuousWeightCorrection(G4ParticleDefinition *aPartDef, G4double PreStepEkin, G4double AfterStepEkin, const G4MaterialCutsCouple *aCouple, G4double step_length)
G4ParticleDefinition * lastPartDefForCS
void RegisterEmProcess(G4VEmProcess *aProcess, G4ParticleDefinition *aPartDef)
std::vector< G4bool > listOfIsScatProjToProjCase
void BuildTotalSigmaTables()
std::vector< std::vector< G4VEmProcess * > * > listOfForwardEmProcess
void GetMaxAdjTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &e_sigma_max, G4double &sigma_max)
G4Material * lastMaterial
G4Material * currentMaterial
G4ParticleDefinition * currentParticleDef
std::vector< G4VEmAdjointModel * > listOfAdjointEMModel
std::vector< std::vector< G4double > > lastAdjointCSVsModelsAndElements
void BuildCrossSectionMatrices()
G4Element * SampleElementFromCSMatrices(G4Material *aMaterial, G4VEmAdjointModel *aModel, G4double PrimEnergy, G4double Tcut, G4bool IsScatProjToProjCase)
size_t currentParticleIndex
void DefineCurrentParticle(const G4ParticleDefinition *aPartDef)
static G4AdjointCSManager * GetAdjointCSManager()
std::vector< G4AdjointCSMatrix * > BuildCrossSectionsMatricesForAGivenModelAndElement(G4VEmAdjointModel *aModel, G4int Z, G4int A, G4int nbin_pro_decade)
G4bool CrossSectionMatrixesAreBuilt
G4bool TotalSigmaTableAreBuilt
G4double ComputeAdjointCS(G4Material *aMaterial, G4VEmAdjointModel *aModel, G4double PrimEnergy, G4double Tcut, G4bool IsScatProjToProjCase, std::vector< G4double > &AdjointCS_for_each_element)