40#ifndef G4AdjointCSManager_h
41#define G4AdjointCSManager_h 1
94 G4bool is_scat_proj_to_proj,
132 std::vector<G4double>& AdjointCS_for_each_element);
191 std::vector<std::vector<G4AdjointCSMatrix*>>
static constexpr G4int fNbins
std::vector< G4bool > fIsScatProjToProj
void BuildTotalSigmaTables()
std::vector< G4PhysicsTable * > fSigmaTableForAdjointModelScatProjToProj
size_t RegisterEmAdjointModel(G4VEmAdjointModel *)
void RegisterAdjointParticle(G4ParticleDefinition *aPartDef)
G4ParticleDefinition * fFwdIon
G4ParticleDefinition * GetForwardParticleEquivalent(G4ParticleDefinition *theAdjPartDef)
std::vector< std::vector< G4VEnergyLossProcess * > * > fForwardLossProcesses
void GetMaxAdjTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &e_sigma_max, G4double &sigma_max)
G4double GetCrossSectionCorrection(G4ParticleDefinition *aPartDef, G4double PreStepEkin, const G4MaterialCutsCouple *aCouple, G4bool &fwd_is_used)
G4double GetTotalForwardCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
void SetIon(G4ParticleDefinition *adjIon, G4ParticleDefinition *fwdIon)
std::vector< std::vector< G4AdjointCSMatrix * > > fAdjointCSMatricesForScatProjToProj
G4double ComputeTotalAdjointCS(const G4MaterialCutsCouple *aMatCutCouple, G4ParticleDefinition *aPart, G4double PrimEnergy)
std::vector< G4PhysicsTable * > fTotalFwdSigmaTable
G4double ComputeAdjointCS(G4Material *aMaterial, G4VEmAdjointModel *aModel, G4double PrimEnergy, G4double Tcut, G4bool isScatProjToProj, std::vector< G4double > &AdjointCS_for_each_element)
G4MaterialCutsCouple * fCurrentCouple
std::vector< std::vector< G4double > > fEminForFwdSigmaTables
G4ParticleDefinition * fAdjIon
void DefineCurrentParticle(const G4ParticleDefinition *aPartDef)
std::vector< std::vector< G4VEmProcess * > * > fForwardProcesses
std::vector< G4AdjointCSMatrix * > BuildCrossSectionsModelAndMaterial(G4VEmAdjointModel *aModel, G4Material *aMaterial, G4int nbin_pro_decade)
std::vector< std::vector< G4double > > fEminForAdjSigmaTables
G4ParticleDefinition * GetAdjointParticleEquivalent(G4ParticleDefinition *theFwdPartDef)
static constexpr G4double fTmin
void DefineCurrentMaterial(const G4MaterialCutsCouple *couple)
size_t fCurrentParticleIndex
G4Element * SampleElementFromCSMatrices(G4Material *aMaterial, G4VEmAdjointModel *aModel, G4double PrimEnergy, G4double Tcut, G4bool isScatProjToProj)
G4double GetContinuousWeightCorrection(G4ParticleDefinition *aPartDef, G4double PreStepEkin, G4double AfterStepEkin, const G4MaterialCutsCouple *aCouple, G4double step_length)
std::vector< G4PhysicsTable * > fTotalAdjSigmaTable
G4double GetPostStepWeightCorrection()
void GetEminForTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &emin_adj, G4double &emin_fwd)
std::vector< G4PhysicsTable * > fSigmaTableForAdjointModelProdToProj
G4Material * fCurrentMaterial
std::vector< std::vector< G4double > > fEkinofAdjSigmaMax
static G4AdjointCSManager * GetAdjointCSManager()
std::vector< G4AdjointCSMatrix * > BuildCrossSectionsModelAndElement(G4VEmAdjointModel *aModel, G4int Z, G4int A, G4int nbin_pro_decade)
static constexpr G4double fTmax
G4double GetTotalAdjointCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
std::vector< G4ParticleDefinition * > fAdjointParticlesInAction
std::vector< G4VEmAdjointModel * > fAdjointModels
G4double GetAdjointSigma(G4double Ekin_nuc, size_t index_model, G4bool is_scat_proj_to_proj, const G4MaterialCutsCouple *aCouple)
std::vector< std::vector< G4double > > fLastAdjointCSVsModelsAndElements
void RegisterEmProcess(G4VEmProcess *aProcess, G4ParticleDefinition *aPartDef)
G4double fLastCSCorrectionFactor
void BuildCrossSectionMatrices()
std::vector< std::vector< G4double > > fEkinofFwdSigmaMax
void RegisterEnergyLossProcess(G4VEnergyLossProcess *aProcess, G4ParticleDefinition *aPartDef)
void GetMaxFwdTotalCS(G4ParticleDefinition *aPartDef, const G4MaterialCutsCouple *aCouple, G4double &e_sigma_max, G4double &sigma_max)
void SetFwdCrossSectionMode(G4bool aBool)
std::vector< std::vector< G4AdjointCSMatrix * > > fAdjointCSMatricesForProdToProj
std::vector< size_t > fIndexOfAdjointEMModelInAction
static G4ThreadLocal G4AdjointCSManager * fInstance
static constexpr double TeV
static constexpr double keV