39 , fAdjointComptonModel(nullptr)
40 , fAdjointBremModel(nullptr)
55 std::ostream& out)
const
57 out <<
"Forced interaction for gamma.\n";
105 G4bool is_scat_proj_to_proj_case =
false;
112 is_scat_proj_to_proj_case =
false;
121 is_scat_proj_to_proj_case =
true;
130 is_scat_proj_to_proj_case =
false;
136 is_scat_proj_to_proj_case =
true;
170 G4double nb_fwd_interaction_length_over_step =
177 std::exp(-nb_fwd_interaction_length_over_step);
178 G4double mc_induced_survival_probability = 1.;
196 mc_induced_survival_probability = 1.e50;
200 mc_induced_survival_probability =
202 mc_induced_survival_probability /=
203 (std::exp(-previous_acc_nb_adj_interaction_length) -
208 fwd_survival_probability / mc_induced_survival_probability;
229 static G4int lastFreeFlightTrackId = 1000;
244 lastFreeFlightTrackId = track_id;
271 if(thePostPhysVolume)
G4double condition(const G4ErrorSymMatrix &m)
void BuildTotalSigmaTables()
G4double GetTotalForwardCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
static G4AdjointCSManager * GetAdjointCSManager()
G4double GetTotalAdjointCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
void BuildCrossSectionMatrices()
G4ParticleChange * fParticleChange
G4AdjointForcedInteractionForGamma(G4String process_name)
G4double GetContinuousStepLimit(const G4Track &aTrack, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety) override
G4double GetMeanFreePath(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition) override
G4bool fContinueGammaAsNewFreeFlight
~G4AdjointForcedInteractionForGamma() override
G4bool fCopyGammaForForced
G4double fTotNbAdjIntLength
G4VEmAdjointModel * fAdjointComptonModel
G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &step) override
G4VEmAdjointModel * fAdjointBremModel
void ProcessDescription(std::ostream &) const override
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition) override
G4AdjointCSManager * fCSManager
void BuildPhysicsTable(const G4ParticleDefinition &) override
G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &) override
static G4AdjointGamma * AdjointGamma()
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
void AddSecondary(G4Track *aSecondary)
virtual void Initialize(const G4Track &)
G4VPhysicalVolume * GetPhysicalVolume() const
G4double GetWeight() const
G4StepPoint * GetPreStepPoint() const
G4double GetStepLength() const
G4StepPoint * GetPostStepPoint() const
const G4ThreeVector & GetPosition() const
G4int GetCurrentStepNumber() const
G4ThreeVector GetMomentum() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
const G4Step * GetStep() const
virtual void SampleSecondaries(const G4Track &aTrack, G4bool isScatProjToProj, G4ParticleChange *fParticleChange)=0
void SetAdditionalWeightCorrectionFactorForPostStepOutsideModel(G4double factor)
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple *aCouple, G4double primEnergy, G4bool isScatProjToProj)
void SetCorrectWeightForPostStepInModel(G4bool aBool)
void SetSecondaryWeightByProcess(G4bool)
void SetParentWeightByProcess(G4bool)
void ProposeParentWeight(G4double finalWeight)
G4LogicalVolume * GetLogicalVolume() const
G4double theInitialNumberOfInteractionLength
G4double theNumberOfInteractionLengthLeft