35#ifndef G4VEmAdjointModel_h
36#define G4VEmAdjointModel_h 1
115 std::vector<std::vector<double>*>
118 G4int nbin_pro_decade = 10);
120 std::vector<std::vector<double>*>
123 G4int nbin_pro_decade = 10);
125 std::vector<std::vector<double>*>
129 std::vector<std::vector<double>*>
134 std::vector<G4AdjointCSMatrix*>* Vec2CSMatrix)
G4double fOutsideWeightFactor
virtual G4double GetSecondAdjEnergyMaxForProdToProj(G4double primAdjEnergy)
G4VEmAdjointModel(G4VEmAdjointModel &)=delete
void SetUseMatrixPerElement(G4bool aBool)
G4double fLastAdjointCSForScatProjToProj
std::vector< G4AdjointCSMatrix * > * fCSMatrixProdToProjBackScat
virtual void SampleSecondaries(const G4Track &aTrack, G4bool isScatProjToProj, G4ParticleChange *fParticleChange)=0
std::size_t fCSMatrixUsed
G4bool fSecondPartSameType
G4double fCsBiasingFactor
G4ParticleDefinition * fAdjEquivDirectSecondPart
virtual G4double DiffCrossSectionPerVolumePrimToScatPrim(const G4Material *aMaterial, G4double kinEnergyProj, G4double kinEnergyScatProj)
void SetAdjointEquivalentOfDirectSecondaryParticleDefinition(G4ParticleDefinition *aPart)
G4bool GetSecondPartOfSameType()
void SetCSMatrices(std::vector< G4AdjointCSMatrix * > *Vec1CSMatrix, std::vector< G4AdjointCSMatrix * > *Vec2CSMatrix)
virtual ~G4VEmAdjointModel()
G4double fKinEnergyScatProjForIntegration
G4double DiffCrossSectionFunction1(G4double kinEnergyProj)
void SetUseMatrix(G4bool aBool)
G4bool GetUseOnlyOneMatrixForAllElements()
G4bool fInModelWeightCorr
virtual G4double GetSecondAdjEnergyMinForScatProjToProj(G4double primAdjEnergy, G4double tcut=0.)
G4double fKinEnergyProdForIntegration
G4ParticleDefinition * fAdjEquivDirectPrimPart
G4MaterialCutsCouple * fCurrentCouple
virtual G4double GetSecondAdjEnergyMaxForScatProjToProj(G4double primAdjEnergy)
G4Material * fCurrentMaterial
std::vector< G4AdjointCSMatrix * > * fCSMatrixProjToProjBackScat
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerAtomForSecond(G4double kinEnergyProd, G4double Z, G4double A=0., G4int nbin_pro_decade=10)
virtual void SetCSBiasingFactor(G4double aVal)
virtual G4double DiffCrossSectionPerVolumePrimToSecond(const G4Material *aMaterial, G4double kinEnergyProj, G4double kinEnergyProd)
virtual void CorrectPostStepWeight(G4ParticleChange *fParticleChange, G4double old_weight, G4double adjointPrimKinEnergy, G4double projectileKinEnergy, G4bool isScatProjToProj)
std::vector< G4double > fElementCSScatProjToProj
G4ParticleDefinition * GetAdjointEquivalentOfDirectPrimaryParticleDefinition()
G4double GetLowEnergyLimit()
virtual G4double DiffCrossSectionPerAtomPrimToScatPrim(G4double kinEnergyProj, G4double kinEnergyScatProj, G4double Z, G4double A=0.)
G4AdjointCSManager * fCSManager
void SetLowEnergyLimit(G4double aVal)
void SetAdditionalWeightCorrectionFactorForPostStepOutsideModel(G4double factor)
void DefineCurrentMaterial(const G4MaterialCutsCouple *couple)
G4ParticleDefinition * GetAdjointEquivalentOfDirectSecondaryParticleDefinition()
G4bool GetApplyCutInRange()
void SetSecondPartOfSameType(G4bool aBool)
G4bool fUseMatrixPerElement
G4double fHighEnergyLimit
void SelectCSMatrix(G4bool isScatProjToProj)
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple *aCouple, G4double primEnergy, G4bool isScatProjToProj)
G4VEmModel * fDirectModel
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerVolumeForSecond(G4Material *aMaterial, G4double kinEnergyProd, G4int nbin_pro_decade=10)
G4bool GetUseMatrixPerElement()
G4Material * fSelectedMaterial
void SetCorrectWeightForPostStepInModel(G4bool aBool)
void SetUseOnlyOneMatrixForAllElements(G4bool aBool)
virtual G4double GetSecondAdjEnergyMinForProdToProj(G4double primAdjEnergy)
G4double DiffCrossSectionFunction2(G4double kinEnergyProj)
G4ParticleDefinition * fDirectPrimaryPart
void SetAdjointEquivalentOfDirectPrimaryParticleDefinition(G4ParticleDefinition *aPart)
G4VEmAdjointModel(const G4String &nam)
void DefineDirectEMModel(G4VEmModel *aModel)
G4bool fOneMatrixForAllElements
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerVolumeForScatProj(G4Material *aMaterial, G4double kinEnergyProd, G4int nbin_pro_decade=10)
virtual G4double DiffCrossSectionPerAtomPrimToSecond(G4double kinEnergyProj, G4double kinEnergyProd, G4double Z, G4double A=0.)
G4double SampleAdjSecEnergyFromCSMatrix(std::size_t MatrixIndex, G4double prim_energy, G4bool isScatProjToProj)
std::vector< G4double > fElementCSProdToProj
void SetHighEnergyLimit(G4double aVal)
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerAtomForScatProj(G4double kinEnergyProd, G4double Z, G4double A=0., G4int nbin_pro_decade=10)
G4double GetHighEnergyLimit()
G4double fLastAdjointCSForProdToProj
virtual G4double SampleAdjSecEnergyFromDiffCrossSectionPerAtom(G4double prim_energy, G4bool isScatProjToProj)
void SetApplyCutInRange(G4bool aBool)
G4VEmAdjointModel & operator=(const G4VEmAdjointModel &right)=delete