Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4AdjointIonIonisationModel Class Reference

#include <G4AdjointIonIonisationModel.hh>

+ Inheritance diagram for G4AdjointIonIonisationModel:

Public Member Functions

 G4AdjointIonIonisationModel ()
 
virtual ~G4AdjointIonIonisationModel ()
 
virtual void SampleSecondaries (const G4Track &aTrack, G4bool IsScatProjToProjCase, G4ParticleChange *fParticleChange)
 
virtual G4double DiffCrossSectionPerAtomPrimToSecond (G4double kinEnergyProj, G4double kinEnergyProd, G4double Z, G4double A=0.)
 
virtual void CorrectPostStepWeight (G4ParticleChange *fParticleChange, G4double old_weight, G4double adjointPrimKinEnergy, G4double projectileKinEnergy, G4bool IsScatProjToProjCase)
 
virtual G4double GetSecondAdjEnergyMaxForScatProjToProjCase (G4double PrimAdjEnergy)
 
virtual G4double GetSecondAdjEnergyMinForScatProjToProjCase (G4double PrimAdjEnergy, G4double Tcut=0)
 
virtual G4double GetSecondAdjEnergyMaxForProdToProjCase (G4double PrimAdjEnergy)
 
virtual G4double GetSecondAdjEnergyMinForProdToProjCase (G4double PrimAdjEnergy)
 
void SetUseOnlyBragg (G4bool aBool)
 
void SetIon (G4ParticleDefinition *adj_ion, G4ParticleDefinition *fwd_ion)
 
- Public Member Functions inherited from G4VEmAdjointModel
 G4VEmAdjointModel (const G4String &nam)
 
virtual ~G4VEmAdjointModel ()
 
virtual void SampleSecondaries (const G4Track &aTrack, G4bool IsScatProjToProjCase, G4ParticleChange *fParticleChange)=0
 
virtual G4double AdjointCrossSection (const G4MaterialCutsCouple *aCouple, G4double primEnergy, G4bool IsScatProjToProjCase)
 
virtual G4double GetAdjointCrossSection (const G4MaterialCutsCouple *aCouple, G4double primEnergy, G4bool IsScatProjToProjCase)
 
virtual G4double DiffCrossSectionPerAtomPrimToSecond (G4double kinEnergyProj, G4double kinEnergyProd, G4double Z, G4double A=0.)
 
virtual G4double DiffCrossSectionPerAtomPrimToScatPrim (G4double kinEnergyProj, G4double kinEnergyScatProj, G4double Z, G4double A=0.)
 
virtual G4double DiffCrossSectionPerVolumePrimToSecond (const G4Material *aMaterial, G4double kinEnergyProj, G4double kinEnergyProd)
 
virtual G4double DiffCrossSectionPerVolumePrimToScatPrim (const G4Material *aMaterial, G4double kinEnergyProj, G4double kinEnergyScatProj)
 
virtual G4double GetSecondAdjEnergyMaxForScatProjToProjCase (G4double PrimAdjEnergy)
 
virtual G4double GetSecondAdjEnergyMinForScatProjToProjCase (G4double PrimAdjEnergy, G4double Tcut=0)
 
virtual G4double GetSecondAdjEnergyMaxForProdToProjCase (G4double PrimAdjEnergy)
 
virtual G4double GetSecondAdjEnergyMinForProdToProjCase (G4double PrimAdjEnergy)
 
void DefineCurrentMaterial (const G4MaterialCutsCouple *couple)
 
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerAtomForSecond (G4double kinEnergyProd, G4double Z, G4double A=0., G4int nbin_pro_decade=10)
 
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerAtomForScatProj (G4double kinEnergyProd, G4double Z, G4double A=0., G4int nbin_pro_decade=10)
 
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerVolumeForSecond (G4Material *aMaterial, G4double kinEnergyProd, G4int nbin_pro_decade=10)
 
std::vector< std::vector< double > * > ComputeAdjointCrossSectionVectorPerVolumeForScatProj (G4Material *aMaterial, G4double kinEnergyProd, G4int nbin_pro_decade=10)
 
void SetCSMatrices (std::vector< G4AdjointCSMatrix * > *Vec1CSMatrix, std::vector< G4AdjointCSMatrix * > *Vec2CSMatrix)
 
G4ParticleDefinitionGetAdjointEquivalentOfDirectPrimaryParticleDefinition ()
 
G4ParticleDefinitionGetAdjointEquivalentOfDirectSecondaryParticleDefinition ()
 
G4double GetHighEnergyLimit ()
 
G4double GetLowEnergyLimit ()
 
void SetHighEnergyLimit (G4double aVal)
 
void SetLowEnergyLimit (G4double aVal)
 
void DefineDirectEMModel (G4VEmModel *aModel)
 
void SetAdjointEquivalentOfDirectPrimaryParticleDefinition (G4ParticleDefinition *aPart)
 
void SetAdjointEquivalentOfDirectSecondaryParticleDefinition (G4ParticleDefinition *aPart)
 
void SetSecondPartOfSameType (G4bool aBool)
 
G4bool GetSecondPartOfSameType ()
 
void SetUseMatrix (G4bool aBool)
 
void SetUseMatrixPerElement (G4bool aBool)
 
void SetUseOnlyOneMatrixForAllElements (G4bool aBool)
 
void SetApplyCutInRange (G4bool aBool)
 
G4bool GetUseMatrix ()
 
G4bool GetUseMatrixPerElement ()
 
G4bool GetUseOnlyOneMatrixForAllElements ()
 
G4bool GetApplyCutInRange ()
 
G4String GetName ()
 
virtual void SetCSBiasingFactor (G4double aVal)
 
void SetCorrectWeightForPostStepInModel (G4bool aBool)
 
void SetAdditionalWeightCorrectionFactorForPostStepOutsideModel (G4double factor)
 

Additional Inherited Members

- Protected Member Functions inherited from G4VEmAdjointModel
G4double DiffCrossSectionFunction1 (G4double kinEnergyProj)
 
G4double DiffCrossSectionFunction2 (G4double kinEnergyProj)
 
G4double DiffCrossSectionPerVolumeFunctionForIntegrationOverEkinProj (G4double EkinProd)
 
G4double SampleAdjSecEnergyFromCSMatrix (size_t MatrixIndex, G4double prim_energy, G4bool IsScatProjToProjCase)
 
G4double SampleAdjSecEnergyFromCSMatrix (G4double prim_energy, G4bool IsScatProjToProjCase)
 
void SelectCSMatrix (G4bool IsScatProjToProjCase)
 
virtual G4double SampleAdjSecEnergyFromDiffCrossSectionPerAtom (G4double prim_energy, G4bool IsScatProjToProjCase)
 
virtual void CorrectPostStepWeight (G4ParticleChange *fParticleChange, G4double old_weight, G4double adjointPrimKinEnergy, G4double projectileKinEnergy, G4bool IsScatProjToProjCase)
 
- Protected Attributes inherited from G4VEmAdjointModel
G4VEmModeltheDirectEMModel
 
G4VParticleChangepParticleChange
 
const G4String name
 
G4int ASelectedNucleus
 
G4int ZSelectedNucleus
 
G4MaterialSelectedMaterial
 
G4double kinEnergyProdForIntegration
 
G4double kinEnergyScatProjForIntegration
 
G4double kinEnergyProjForIntegration
 
std::vector< G4AdjointCSMatrix * > * pOnCSMatrixForProdToProjBackwardScattering
 
std::vector< G4AdjointCSMatrix * > * pOnCSMatrixForScatProjToProjBackwardScattering
 
std::vector< G4doubleCS_Vs_ElementForScatProjToProjCase
 
std::vector< G4doubleCS_Vs_ElementForProdToProjCase
 
G4double lastCS
 
G4double lastAdjointCSForScatProjToProjCase
 
G4double lastAdjointCSForProdToProjCase
 
G4ParticleDefinitiontheAdjEquivOfDirectPrimPartDef
 
G4ParticleDefinitiontheAdjEquivOfDirectSecondPartDef
 
G4ParticleDefinitiontheDirectPrimaryPartDef
 
G4bool second_part_of_same_type
 
G4double preStepEnergy
 
G4MaterialcurrentMaterial
 
G4MaterialCutsCouplecurrentCouple
 
size_t currentMaterialIndex
 
size_t currentCoupleIndex
 
G4double currentTcutForDirectPrim
 
G4double currentTcutForDirectSecond
 
G4bool ApplyCutInRange
 
G4double mass_ratio_product
 
G4double mass_ratio_projectile
 
G4double HighEnergyLimit
 
G4double LowEnergyLimit
 
G4double CS_biasing_factor
 
G4bool UseMatrix
 
G4bool UseMatrixPerElement
 
G4bool UseOnlyOneMatrixForAllElements
 
size_t indexOfUsedCrossSectionMatrix
 
size_t model_index
 
G4bool correct_weight_for_post_step_in_model
 
G4double additional_weight_correction_factor_for_post_step_outside_model
 

Detailed Description

Definition at line 70 of file G4AdjointIonIonisationModel.hh.

Constructor & Destructor Documentation

◆ G4AdjointIonIonisationModel()

G4AdjointIonIonisationModel::G4AdjointIonIonisationModel ( )

Definition at line 46 of file G4AdjointIonIonisationModel.cc.

46 :
47 G4VEmAdjointModel("Adjoint_IonIonisation")
48{
49
50
51 UseMatrix =true;
53 ApplyCutInRange = true;
57 use_only_bragg = false; // for the Ion ionisation using the parametrised table model the cross sections and the sample of secondaries is done
58 // as in the BraggIonModel, Therefore the use of this flag;
59
60 //The direct EM Model is taken has BetheBloch it is only used for the computation
61 // of the differential cross section.
62 //The Bragg model could be used as an alternative as it offers the same differential cross section
63
64 theBetheBlochDirectEMModel = new G4BetheBlochModel(G4GenericIon::GenericIon());
65 theBraggIonDirectEMModel = new G4BraggIonModel(G4GenericIon::GenericIon());
69 /* theDirectPrimaryPartDef =fwd_ion;
70 theAdjEquivOfDirectPrimPartDef =adj_ion;
71
72 DefineProjectileProperty();*/
73
74
75
76
77}
static G4AdjointElectron * AdjointElectron()
static G4GenericIon * GenericIon()
Definition: G4GenericIon.cc:92
G4ParticleDefinition * theDirectPrimaryPartDef
G4bool UseOnlyOneMatrixForAllElements
G4ParticleDefinition * theAdjEquivOfDirectSecondPartDef
G4ParticleDefinition * theAdjEquivOfDirectPrimPartDef

◆ ~G4AdjointIonIonisationModel()

G4AdjointIonIonisationModel::~G4AdjointIonIonisationModel ( )
virtual

Definition at line 80 of file G4AdjointIonIonisationModel.cc.

81{;}

Member Function Documentation

◆ CorrectPostStepWeight()

void G4AdjointIonIonisationModel::CorrectPostStepWeight ( G4ParticleChange fParticleChange,
G4double  old_weight,
G4double  adjointPrimKinEnergy,
G4double  projectileKinEnergy,
G4bool  IsScatProjToProjCase 
)
virtual

Reimplemented from G4VEmAdjointModel.

Definition at line 265 of file G4AdjointIonIonisationModel.cc.

267{
268 //It is needed because the direct cross section used to compute the differential cross section is not the one used in
269 // the direct model where the GenericIon stuff is considered with correction of effective charge. In the direct model the samnepl of secondaries does
270 // not reflect the integral cross section. The integral fwd cross section that we used to compute the differential CS
271 // match the sample of secondaries in the forward case despite the fact that its is not the same total CS than in the FWD case. For this reasion an extra
272 // weight correction is needed at the end.
273
274
275 G4double new_weight=old_weight;
276
277 //the correction of CS due to the problem explained above
278 G4double kinEnergyProjScaled = massRatio*projectileKinEnergy;
279 theDirectEMModel =theBraggIonDirectEMModel;
280 if (kinEnergyProjScaled >2.*MeV && !use_only_bragg) theDirectEMModel = theBetheBlochDirectEMModel; //Bethe Bloch Model
282 G4double chargeSqRatio =1.;
283 if (chargeSquare>1.) chargeSqRatio = theDirectEMModel->GetChargeSquareRatio(theDirectPrimaryPartDef,currentMaterial,projectileKinEnergy);
284 G4double CorrectFwdCS = chargeSqRatio*theDirectEMModel->ComputeCrossSectionPerAtom(G4GenericIon::GenericIon(),kinEnergyProjScaled,1,1 ,currentTcutForDirectSecond,1.e20);
285 if (UsedFwdCS >0) new_weight*= CorrectFwdCS/UsedFwdCS;//May be some check is needed if UsedFwdCS ==0 probably that then we should avoid a secondary to be produced,
286
287
288 //additional CS crorrection needed for cross section biasing in general.
289 //May be wrong for ions!!! Most of the time not used!
290 G4double w_corr =1./CS_biasing_factor;
292 new_weight*=w_corr;
293
294 new_weight*=projectileKinEnergy/adjointPrimKinEnergy;
295
296 fParticleChange->SetParentWeightByProcess(false);
297 fParticleChange->SetSecondaryWeightByProcess(false);
298 fParticleChange->ProposeParentWeight(new_weight);
299}
double G4double
Definition: G4Types.hh:83
G4double GetPostStepWeightCorrection()
static G4AdjointCSManager * GetAdjointCSManager()
G4VEmModel * theDirectEMModel
G4Material * currentMaterial
G4double currentTcutForDirectSecond
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
Definition: G4VEmModel.cc:359
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
Definition: G4VEmModel.cc:391
void SetSecondaryWeightByProcess(G4bool)
void SetParentWeightByProcess(G4bool)
void ProposeParentWeight(G4double finalWeight)

Referenced by SampleSecondaries().

◆ DiffCrossSectionPerAtomPrimToSecond()

G4double G4AdjointIonIonisationModel::DiffCrossSectionPerAtomPrimToSecond ( G4double  kinEnergyProj,
G4double  kinEnergyProd,
G4double  Z,
G4double  A = 0. 
)
virtual

Reimplemented from G4VEmAdjointModel.

Definition at line 158 of file G4AdjointIonIonisationModel.cc.

163{//Probably that here the Bragg Model should be also used for kinEnergyProj/nuc<2MeV
164
165
166
167 G4double dSigmadEprod=0;
168 G4double Emax_proj = GetSecondAdjEnergyMaxForProdToProjCase(kinEnergyProd);
169 G4double Emin_proj = GetSecondAdjEnergyMinForProdToProjCase(kinEnergyProd);
170
171 G4double kinEnergyProjScaled = massRatio*kinEnergyProj;
172
173
174 if (kinEnergyProj>Emin_proj && kinEnergyProj<=Emax_proj){ //the produced particle should have a kinetic energy smaller than the projectile
175 G4double Tmax=kinEnergyProj;
176
177 G4double E1=kinEnergyProd;
178 G4double E2=kinEnergyProd*1.000001;
179 G4double dE=(E2-E1);
180 G4double sigma1,sigma2;
181 theDirectEMModel =theBraggIonDirectEMModel;
182 if (kinEnergyProjScaled >2.*MeV && !use_only_bragg) theDirectEMModel = theBetheBlochDirectEMModel; //Bethe Bloch Model
183 sigma1=theDirectEMModel->ComputeCrossSectionPerAtom(theDirectPrimaryPartDef,kinEnergyProj,Z,A ,E1,1.e20);
184 sigma2=theDirectEMModel->ComputeCrossSectionPerAtom(theDirectPrimaryPartDef,kinEnergyProj,Z,A ,E2,1.e20);
185
186 dSigmadEprod=(sigma1-sigma2)/dE;
187
188 //G4double chargeSqRatio = currentModel->GetChargeSquareRatio(theDirectPrimaryPartDef,currentMaterial,E);
189
190
191
192 if (dSigmadEprod>1.) {
193 G4cout<<"sigma1 "<<kinEnergyProj/MeV<<'\t'<<kinEnergyProd/MeV<<'\t'<<sigma1<<G4endl;
194 G4cout<<"sigma2 "<<kinEnergyProj/MeV<<'\t'<<kinEnergyProd/MeV<<'\t'<<sigma2<<G4endl;
195 G4cout<<"dsigma "<<kinEnergyProj/MeV<<'\t'<<kinEnergyProd/MeV<<'\t'<<dSigmadEprod<<G4endl;
196
197 }
198
199
200
201
202
203
204 if (theDirectEMModel == theBetheBlochDirectEMModel ){
205 //correction of differential cross section at high energy to correct for the suppression of particle at secondary at high
206 //energy used in the Bethe Bloch Model. This correction consist to multiply by g the probability function used
207 //to test the rejection of a secondary
208 //-------------------------
209
210 //Source code taken from G4BetheBlochModel::SampleSecondaries
211
212 G4double deltaKinEnergy = kinEnergyProd;
213
214 //Part of the taken code
215 //----------------------
216
217
218
219 // projectile formfactor - suppresion of high energy
220 // delta-electron production at high energy
221
222
223 G4double x = formfact*deltaKinEnergy;
224 if(x > 1.e-6) {
225 G4double totEnergy = kinEnergyProj + mass;
226 G4double etot2 = totEnergy*totEnergy;
227 G4double beta2 = kinEnergyProj*(kinEnergyProj + 2.0*mass)/etot2;
228 G4double f;
229 G4double f1 = 0.0;
230 f = 1.0 - beta2*deltaKinEnergy/Tmax;
231 if( 0.5 == spin ) {
232 f1 = 0.5*deltaKinEnergy*deltaKinEnergy/etot2;
233 f += f1;
234 }
235 G4double x1 = 1.0 + x;
236 G4double gg = 1.0/(x1*x1);
237 if( 0.5 == spin ) {
238 G4double x2 = 0.5*electron_mass_c2*deltaKinEnergy/(mass*mass);
239 gg *= (1.0 + magMoment2*(x2 - f1/f)/(1.0 + x2));
240 }
241 if(gg > 1.0) {
242 G4cout << "### G4BetheBlochModel in Adjoint Sim WARNING: gg= " << gg
243 << G4endl;
244 gg=1.;
245 }
246 //G4cout<<"gg"<<gg<<G4endl;
247 dSigmadEprod*=gg;
248 }
249 }
250
251 }
252
253 return dSigmadEprod;
254}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
virtual G4double GetSecondAdjEnergyMinForProdToProjCase(G4double PrimAdjEnergy)
virtual G4double GetSecondAdjEnergyMaxForProdToProjCase(G4double PrimAdjEnergy)

◆ GetSecondAdjEnergyMaxForProdToProjCase()

G4double G4AdjointIonIonisationModel::GetSecondAdjEnergyMaxForProdToProjCase ( G4double  PrimAdjEnergy)
virtual

Reimplemented from G4VEmAdjointModel.

Definition at line 355 of file G4AdjointIonIonisationModel.cc.

356{ return HighEnergyLimit;
357}

Referenced by DiffCrossSectionPerAtomPrimToSecond().

◆ GetSecondAdjEnergyMaxForScatProjToProjCase()

G4double G4AdjointIonIonisationModel::GetSecondAdjEnergyMaxForScatProjToProjCase ( G4double  PrimAdjEnergy)
virtual

Reimplemented from G4VEmAdjointModel.

Definition at line 343 of file G4AdjointIonIonisationModel.cc.

344{
345 G4double Tmax=PrimAdjEnergy*one_plus_ratio_2/(one_minus_ratio_2-2.*ratio*PrimAdjEnergy/mass);
346 return Tmax;
347}

◆ GetSecondAdjEnergyMinForProdToProjCase()

G4double G4AdjointIonIonisationModel::GetSecondAdjEnergyMinForProdToProjCase ( G4double  PrimAdjEnergy)
virtual

Reimplemented from G4VEmAdjointModel.

Definition at line 360 of file G4AdjointIonIonisationModel.cc.

361{ G4double Tmin= (2*PrimAdjEnergy-4*mass + std::sqrt(4.*PrimAdjEnergy*PrimAdjEnergy +16.*mass*mass + 8.*PrimAdjEnergy*mass*(1/ratio +ratio)))/4.;
362 return Tmin;
363}

Referenced by DiffCrossSectionPerAtomPrimToSecond().

◆ GetSecondAdjEnergyMinForScatProjToProjCase()

G4double G4AdjointIonIonisationModel::GetSecondAdjEnergyMinForScatProjToProjCase ( G4double  PrimAdjEnergy,
G4double  Tcut = 0 
)
virtual

Reimplemented from G4VEmAdjointModel.

Definition at line 350 of file G4AdjointIonIonisationModel.cc.

351{ return PrimAdjEnergy+Tcut;
352}

◆ SampleSecondaries()

void G4AdjointIonIonisationModel::SampleSecondaries ( const G4Track aTrack,
G4bool  IsScatProjToProjCase,
G4ParticleChange fParticleChange 
)
virtual

Implements G4VEmAdjointModel.

Definition at line 84 of file G4AdjointIonIonisationModel.cc.

87{
88 const G4DynamicParticle* theAdjointPrimary =aTrack.GetDynamicParticle();
89
90 //Elastic inverse scattering
91 //---------------------------------------------------------
92 G4double adjointPrimKinEnergy = theAdjointPrimary->GetKineticEnergy();
93 G4double adjointPrimP =theAdjointPrimary->GetTotalMomentum();
94
95 if (adjointPrimKinEnergy>HighEnergyLimit*0.999){
96 return;
97 }
98
99 //Sample secondary energy
100 //-----------------------
101 G4double projectileKinEnergy = SampleAdjSecEnergyFromCSMatrix(adjointPrimKinEnergy, IsScatProjToProjCase);
102 CorrectPostStepWeight(fParticleChange,
103 aTrack.GetWeight(),
104 adjointPrimKinEnergy,
105 projectileKinEnergy,
106 IsScatProjToProjCase); //Caution !!!this weight correction should be always applied
107
108
109 //Kinematic:
110 //we consider a two body elastic scattering for the forward processes where the projectile knock on an e- at rest and gives
111 // him part of its energy
112 //----------------------------------------------------------------------------------------
113
115 G4double projectileTotalEnergy = projectileM0+projectileKinEnergy;
116 G4double projectileP2 = projectileTotalEnergy*projectileTotalEnergy - projectileM0*projectileM0;
117
118
119
120 //Companion
121 //-----------
123 if (IsScatProjToProjCase) {
125 }
126 G4double companionTotalEnergy =companionM0+ projectileKinEnergy-adjointPrimKinEnergy;
127 G4double companionP2 = companionTotalEnergy*companionTotalEnergy - companionM0*companionM0;
128
129
130 //Projectile momentum
131 //--------------------
132 G4double P_parallel = (adjointPrimP*adjointPrimP + projectileP2 - companionP2)/(2.*adjointPrimP);
133 G4double P_perp = std::sqrt( projectileP2 - P_parallel*P_parallel);
134 G4ThreeVector dir_parallel=theAdjointPrimary->GetMomentumDirection();
135 G4double phi =G4UniformRand()*2.*3.1415926;
136 G4ThreeVector projectileMomentum = G4ThreeVector(P_perp*std::cos(phi),P_perp*std::sin(phi),P_parallel);
137 projectileMomentum.rotateUz(dir_parallel);
138
139
140
141 if (!IsScatProjToProjCase ){ //kill the primary and add a secondary
142 fParticleChange->ProposeTrackStatus(fStopAndKill);
143 fParticleChange->AddSecondary(new G4DynamicParticle(theAdjEquivOfDirectPrimPartDef,projectileMomentum));
144 //G4cout<<"projectileMomentum "<<projectileMomentum<<G4endl;
145 }
146 else {
147 fParticleChange->ProposeEnergy(projectileKinEnergy);
148 fParticleChange->ProposeMomentumDirection(projectileMomentum.unit());
149 }
150
151
152
153
154}
CLHEP::Hep3Vector G4ThreeVector
@ fStopAndKill
#define G4UniformRand()
Definition: Randomize.hh:52
Hep3Vector unit() const
Hep3Vector & rotateUz(const Hep3Vector &)
Definition: ThreeVector.cc:33
virtual void CorrectPostStepWeight(G4ParticleChange *fParticleChange, G4double old_weight, G4double adjointPrimKinEnergy, G4double projectileKinEnergy, G4bool IsScatProjToProjCase)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
G4double GetTotalMomentum() const
void AddSecondary(G4Track *aSecondary)
void ProposeEnergy(G4double finalEnergy)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
G4double GetWeight() const
const G4DynamicParticle * GetDynamicParticle() const
G4double SampleAdjSecEnergyFromCSMatrix(size_t MatrixIndex, G4double prim_energy, G4bool IsScatProjToProjCase)
void ProposeTrackStatus(G4TrackStatus status)

◆ SetIon()

void G4AdjointIonIonisationModel::SetIon ( G4ParticleDefinition adj_ion,
G4ParticleDefinition fwd_ion 
)

Definition at line 257 of file G4AdjointIonIonisationModel.cc.

258{ theDirectPrimaryPartDef =fwd_ion;
260
261 DefineProjectileProperty();
262}

◆ SetUseOnlyBragg()

void G4AdjointIonIonisationModel::SetUseOnlyBragg ( G4bool  aBool)
inline

Definition at line 105 of file G4AdjointIonIonisationModel.hh.

105{use_only_bragg =aBool;}

The documentation for this class was generated from the following files: