113 G4bool is_scat_proj_to_proj_case=
false;
117 is_scat_proj_to_proj_case=
false;
125 is_scat_proj_to_proj_case=
true;
133 is_scat_proj_to_proj_case=
false;
137 is_scat_proj_to_proj_case=
true;
163 G4double nb_fwd_interaction_length_over_step=0.;
164 G4double nb_adj_interaction_length_over_step=0.;
168 nb_fwd_interaction_length_over_step = stepLength*
lastFwdCS;
169 nb_adj_interaction_length_over_step = stepLength*
lastAdjCS;
170 G4double fwd_survival_probability=std::exp(-nb_fwd_interaction_length_over_step);
171 G4double mc_induced_survival_probability=1.;
189 mc_induced_survival_probability = 1.e50;
204 G4double weight_correction = fwd_survival_probability/mc_induced_survival_probability;
263 if (thePostPhysVolume){
G4double GetKineticEnergy() const
void BuildTotalSigmaTables()
G4double acc_nb_fwd_interaction_length
G4ParticleChange * fParticleChange
G4LogicalVolume * GetLogicalVolume() const
G4StepPoint * GetPreStepPoint() const
G4AdjointForcedInteractionForGamma(G4String process_name)
virtual G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &step)
void PreparePhysicsTable(const G4ParticleDefinition &)
G4bool continue_gamma_as_new_free_flight
void SetSecondaryWeightByProcess(G4bool)
G4VPhysicalVolume * GetPhysicalVolume() const
G4double acc_nb_adj_interaction_length
G4int GetCurrentStepNumber() const
G4double condition(const G4ErrorSymMatrix &m)
G4VEmAdjointModel * theAdjointBremModel
G4ParticleDefinition * GetDefinition() const
G4VEmAdjointModel * theAdjointComptonModel
void AddSecondary(G4Track *aSecondary)
static G4AdjointGamma * AdjointGamma()
G4double GetTotalAdjointCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
G4int last_free_flight_trackid
G4ThreeVector GetMomentum() const
void SetCorrectWeightForPostStepInModel(G4bool aBool)
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
virtual void Initialize(const G4Track &)
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
G4double GetStepLength() const
G4AdjointCSManager * theAdjointCSManager
const G4ThreeVector & GetPosition() const
G4StepPoint * GetPostStepPoint() const
const G4Step * GetStep() const
G4double total_acc_nb_adj_interaction_length
G4bool copy_gamma_for_forced_interaction
virtual G4double GetMeanFreePath(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
static G4AdjointCSManager * GetAdjointCSManager()
G4double theInitialNumberOfInteractionLength
G4double GetTotalForwardCS(G4ParticleDefinition *aPartDef, G4double Ekin, const G4MaterialCutsCouple *aCouple)
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
void SetParentWeightByProcess(G4bool)
G4bool is_free_flight_gamma
void ProposeParentWeight(G4double finalWeight)
void SetAdditionalWeightCorrectionFactorForPostStepOutsideModel(G4double factor)
virtual ~G4AdjointForcedInteractionForGamma()
G4double acc_track_length
G4double total_acc_nb_fwd_interaction_length
void BuildCrossSectionMatrices()
G4double GetWeight() const
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4double theNumberOfInteractionLengthLeft
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple *aCouple, G4double primEnergy, G4bool IsScatProjToProjCase)
void BuildPhysicsTable(const G4ParticleDefinition &)
virtual G4double GetContinuousStepLimit(const G4Track &aTrack, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety)
virtual void SampleSecondaries(const G4Track &aTrack, G4bool IsScatProjToProjCase, G4ParticleChange *fParticleChange)=0