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