48 #ifndef G4VEmAdjointModel_h
49 #define G4VEmAdjointModel_h 1
88 G4bool IsScatProjToProjCase,
99 G4bool IsScatProjToProjCase);
103 G4bool IsScatProjToProjCase);
152 G4int nbin_pro_decade=10
158 G4int nbin_pro_decade=10
164 G4int nbin_pro_decade=10
169 G4int nbin_pro_decade=10
174 inline void SetCSMatrices(std::vector< G4AdjointCSMatrix* >* Vec1CSMatrix, std::vector< G4AdjointCSMatrix* >* Vec2CSMatrix){
249 G4bool IsScatProjToProjCase);
G4double DiffCrossSectionFunction1(G4double kinEnergyProj)
virtual G4double GetSecondAdjEnergyMinForProdToProjCase(G4double PrimAdjEnergy)
G4VEmAdjointModel(const G4String &nam)
G4double lastAdjointCSForScatProjToProjCase
G4bool GetSecondPartOfSameType()
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerAtomForSecond(G4double kinEnergyProd, G4double Z, G4double A=0., G4int nbin_pro_decade=10)
G4bool second_part_of_same_type
G4ParticleDefinition * GetAdjointEquivalentOfDirectSecondaryParticleDefinition()
G4double GetLowEnergyLimit()
size_t currentCoupleIndex
G4double DiffCrossSectionFunction2(G4double kinEnergyProj)
virtual G4double GetSecondAdjEnergyMinForScatProjToProjCase(G4double PrimAdjEnergy, G4double Tcut=0)
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerAtomForScatProj(G4double kinEnergyProd, G4double Z, G4double A=0., G4int nbin_pro_decade=10)
void DefineDirectEMModel(G4VEmModel *aModel)
G4double CS_biasing_factor
void SetCSMatrices(std::vector< G4AdjointCSMatrix * > *Vec1CSMatrix, std::vector< G4AdjointCSMatrix * > *Vec2CSMatrix)
void SetApplyCutInRange(G4bool aBool)
G4bool GetApplyCutInRange()
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerVolumeForScatProj(G4Material *aMaterial, G4double kinEnergyProd, G4int nbin_pro_decade=10)
G4Material * currentMaterial
void SetUseOnlyOneMatrixForAllElements(G4bool aBool)
G4double GetHighEnergyLimit()
G4bool UseOnlyOneMatrixForAllElements
G4double lastAdjointCSForProdToProjCase
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerVolumeForSecond(G4Material *aMaterial, G4double kinEnergyProd, G4int nbin_pro_decade=10)
G4bool GetUseMatrixPerElement()
G4double additional_weight_correction_factor_for_post_step_outside_model
G4double currentTcutForDirectSecond
G4MaterialCutsCouple * currentCouple
G4double kinEnergyProjForIntegration
G4double kinEnergyProdForIntegration
G4ParticleDefinition * theAdjEquivOfDirectSecondPartDef
std::vector< G4AdjointCSMatrix * > * pOnCSMatrixForProdToProjBackwardScattering
void SetAdjointEquivalentOfDirectSecondaryParticleDefinition(G4ParticleDefinition *aPart)
void SetCorrectWeightForPostStepInModel(G4bool aBool)
G4ParticleDefinition * theAdjEquivOfDirectPrimPartDef
virtual G4double DiffCrossSectionPerAtomPrimToSecond(G4double kinEnergyProj, G4double kinEnergyProd, G4double Z, G4double A=0.)
virtual G4double DiffCrossSectionPerVolumePrimToSecond(const G4Material *aMaterial, G4double kinEnergyProj, G4double kinEnergyProd)
void SelectCSMatrix(G4bool IsScatProjToProjCase)
virtual G4double GetSecondAdjEnergyMaxForProdToProjCase(G4double PrimAdjEnergy)
G4bool GetUseOnlyOneMatrixForAllElements()
double A(double temperature)
size_t currentMaterialIndex
size_t indexOfUsedCrossSectionMatrix
G4bool correct_weight_for_post_step_in_model
virtual void CorrectPostStepWeight(G4ParticleChange *fParticleChange, G4double old_weight, G4double adjointPrimKinEnergy, G4double projectileKinEnergy, G4bool IsScatProjToProjCase)
G4VEmModel * theDirectEMModel
virtual G4double DiffCrossSectionPerVolumePrimToScatPrim(const G4Material *aMaterial, G4double kinEnergyProj, G4double kinEnergyScatProj)
void SetSecondPartOfSameType(G4bool aBool)
std::vector< G4double > CS_Vs_ElementForProdToProjCase
G4double DiffCrossSectionPerVolumeFunctionForIntegrationOverEkinProj(G4double EkinProd)
G4double currentTcutForDirectPrim
void SetAdditionalWeightCorrectionFactorForPostStepOutsideModel(G4double factor)
virtual G4double SampleAdjSecEnergyFromDiffCrossSectionPerAtom(G4double prim_energy, G4bool IsScatProjToProjCase)
virtual void SetCSBiasingFactor(G4double aVal)
void SetLowEnergyLimit(G4double aVal)
G4double kinEnergyScatProjForIntegration
virtual G4double DiffCrossSectionPerAtomPrimToScatPrim(G4double kinEnergyProj, G4double kinEnergyScatProj, G4double Z, G4double A=0.)
G4double SampleAdjSecEnergyFromCSMatrix(size_t MatrixIndex, G4double prim_energy, G4bool IsScatProjToProjCase)
void SetHighEnergyLimit(G4double aVal)
G4ParticleDefinition * theDirectPrimaryPartDef
G4Material * SelectedMaterial
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple *aCouple, G4double primEnergy, G4bool IsScatProjToProjCase)
void SetUseMatrixPerElement(G4bool aBool)
virtual G4double GetSecondAdjEnergyMaxForScatProjToProjCase(G4double PrimAdjEnergy)
G4VParticleChange * pParticleChange
G4ParticleDefinition * GetAdjointEquivalentOfDirectPrimaryParticleDefinition()
G4double mass_ratio_projectile
virtual G4double GetAdjointCrossSection(const G4MaterialCutsCouple *aCouple, G4double primEnergy, G4bool IsScatProjToProjCase)
virtual void SampleSecondaries(const G4Track &aTrack, G4bool IsScatProjToProjCase, G4ParticleChange *fParticleChange)=0
std::vector< G4double > CS_Vs_ElementForScatProjToProjCase
std::vector< G4AdjointCSMatrix * > * pOnCSMatrixForScatProjToProjBackwardScattering
void SetAdjointEquivalentOfDirectPrimaryParticleDefinition(G4ParticleDefinition *aPart)
G4bool UseMatrixPerElement
void SetUseMatrix(G4bool aBool)
G4double mass_ratio_product
void DefineCurrentMaterial(const G4MaterialCutsCouple *couple)
virtual ~G4VEmAdjointModel()