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

#include <G4hhElastic.hh>

+ Inheritance diagram for G4hhElastic:

Public Member Functions

 G4hhElastic ()
 
 G4hhElastic (G4ParticleDefinition *target, G4ParticleDefinition *projectile, G4double plab)
 
 G4hhElastic (G4ParticleDefinition *target, G4ParticleDefinition *projectile)
 
virtual ~G4hhElastic ()
 
virtual G4bool IsApplicable (const G4HadProjectile &, G4Nucleus &)
 
void Initialise ()
 
void BuildTableT (G4ParticleDefinition *target, G4ParticleDefinition *projectile)
 
void BuildTableTest (G4ParticleDefinition *target, G4ParticleDefinition *projectile, G4double plab)
 
G4double SampleInvariantT (const G4ParticleDefinition *p, G4double plab, G4int, G4int)
 
G4double SampleBisectionalT (const G4ParticleDefinition *p, G4double plab)
 
G4double SampleTest (G4double tMin)
 
G4double GetTransfer (G4int iMomentum, G4int iTransfer, G4double position)
 
void SetParameters ()
 
void SetSigmaTot (G4double stot)
 
void SetSpp (G4double spp)
 
G4double GetSpp ()
 
void SetParametersCMS (G4double plab)
 
G4double GetBq ()
 
G4double GetBQ ()
 
G4double GetBqQ ()
 
void SetBq (G4double b)
 
void SetBQ (G4double b)
 
void SetBqQ (G4double b)
 
G4double GetRhoReIm ()
 
void CalculateBQ (G4double b)
 
void CalculateBqQ13 (G4double b)
 
void CalculateBqQ12 (G4double b)
 
void CalculateBqQ123 (G4double b)
 
void SetRA (G4double rn, G4double pq, G4double pQ)
 
void SetRB (G4double rn, G4double pq, G4double pQ)
 
void SetAlphaP (G4double a)
 
void SetImCof (G4double a)
 
G4double GetImCof ()
 
void SetLambda (G4double L)
 
void SetEta (G4double E)
 
void SetCofF2 (G4double f)
 
void SetCofF3 (G4double f)
 
G4double GetCofF2 ()
 
G4double GetCofF3 ()
 
G4double GetRA ()
 
G4double GetRq ()
 
G4double GetRQ ()
 
G4double GetRB ()
 
G4double GetRg ()
 
G4double GetRG ()
 
G4complex Pomeron ()
 
G4complex Phi13 ()
 
G4complex Phi14 ()
 
G4complex Phi23 ()
 
G4complex Phi24 ()
 
G4complex GetF1qQgG (G4double qp)
 
G4double GetdsdtF1qQgG (G4double s, G4double q)
 
G4complex GetF2qQgG (G4double qp)
 
G4double GetdsdtF12qQgG (G4double s, G4double q)
 
G4complex GetF3qQgG (G4double qp)
 
G4double GetdsdtF123qQgG (G4double q)
 
G4double GetdsdtF13qQG (G4double s, G4double q)
 
G4complex GetAqq ()
 
G4complex GetAQQ ()
 
G4complex GetAqQ ()
 
G4double GetCofS1 ()
 
G4double GetCofS2 ()
 
G4double GetCofS3 ()
 
G4double GetOpticalRatio ()
 
G4complex GetF1 (G4double qp)
 
G4double GetdsdtF1 (G4double s, G4double q)
 
G4complex GetF2 (G4double qp)
 
G4double GetdsdtF12 (G4double s, G4double q)
 
G4complex GetF3 (G4double qp)
 
G4double GetdsdtF123 (G4double q)
 
G4double GetExpRatioF123 (G4double s, G4double q)
 
- Public Member Functions inherited from G4HadronElastic
 G4HadronElastic (const G4String &name="hElasticLHEP")
 
 ~G4HadronElastic () override
 
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus) override
 
G4double GetSlopeCof (const G4int pdg)
 
void SetLowestEnergyLimit (G4double value)
 
G4double LowestEnergyLimit () const
 
G4double ComputeMomentumCMS (const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
 
void ModelDescription (std::ostream &) const override
 
- Public Member Functions inherited from G4HadronicInteraction
 G4HadronicInteraction (const G4String &modelName="HadronicModel")
 
virtual ~G4HadronicInteraction ()
 
G4double GetMinEnergy () const
 
G4double GetMinEnergy (const G4Material *aMaterial, const G4Element *anElement) const
 
void SetMinEnergy (G4double anEnergy)
 
void SetMinEnergy (G4double anEnergy, const G4Element *anElement)
 
void SetMinEnergy (G4double anEnergy, const G4Material *aMaterial)
 
G4double GetMaxEnergy () const
 
G4double GetMaxEnergy (const G4Material *aMaterial, const G4Element *anElement) const
 
void SetMaxEnergy (const G4double anEnergy)
 
void SetMaxEnergy (G4double anEnergy, const G4Element *anElement)
 
void SetMaxEnergy (G4double anEnergy, const G4Material *aMaterial)
 
G4int GetVerboseLevel () const
 
void SetVerboseLevel (G4int value)
 
const G4StringGetModelName () const
 
void DeActivateFor (const G4Material *aMaterial)
 
void ActivateFor (const G4Material *aMaterial)
 
void DeActivateFor (const G4Element *anElement)
 
void ActivateFor (const G4Element *anElement)
 
G4bool IsBlocked (const G4Material *aMaterial) const
 
G4bool IsBlocked (const G4Element *anElement) const
 
void SetRecoilEnergyThreshold (G4double val)
 
G4double GetRecoilEnergyThreshold () const
 
virtual const std::pair< G4double, G4doubleGetFatalEnergyCheckLevels () const
 
virtual std::pair< G4double, G4doubleGetEnergyMomentumCheckLevels () const
 
void SetEnergyMomentumCheckLevels (G4double relativeLevel, G4double absoluteLevel)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void InitialiseModel ()
 
 G4HadronicInteraction (const G4HadronicInteraction &right)=delete
 
const G4HadronicInteractionoperator= (const G4HadronicInteraction &right)=delete
 
G4bool operator== (const G4HadronicInteraction &right) const =delete
 
G4bool operator!= (const G4HadronicInteraction &right) const =delete
 

Additional Inherited Members

- Protected Member Functions inherited from G4HadronicInteraction
void SetModelName (const G4String &nam)
 
G4bool IsBlocked () const
 
void Block ()
 
- Protected Attributes inherited from G4HadronElastic
G4double pLocalTmax
 
G4int secID
 
- Protected Attributes inherited from G4HadronicInteraction
G4HadFinalState theParticleChange
 
G4int verboseLevel
 
G4double theMinEnergy
 
G4double theMaxEnergy
 
G4bool isBlocked
 

Detailed Description

Definition at line 61 of file G4hhElastic.hh.

Constructor & Destructor Documentation

◆ G4hhElastic() [1/3]

G4hhElastic::G4hhElastic ( )

Definition at line 73 of file G4hhElastic.cc.

74 : G4HadronElastic("HadrHadrElastic")
75{
76 SetMinEnergy( 1.*GeV );
78 verboseLevel = 0;
79 lowEnergyRecoilLimit = 100.*keV;
80 lowEnergyLimitQ = 0.0*GeV;
81 lowEnergyLimitHE = 0.0*GeV;
82 lowestEnergyLimit= 0.0*keV;
83 plabLowLimit = 20.0*MeV;
84
85 fRhoReIm=fSigmaTot=fOptRatio=fSpp=fPcms=0.0;
86 fInTkin=0;
87 theProton = G4Proton::Proton();
88 theNeutron = G4Neutron::Neutron();
89 thePionPlus = G4PionPlus::PionPlus();
90 thePionMinus= G4PionMinus::PionMinus();
91
92 fTarget = G4Proton::Proton();
93 fProjectile = 0;
94 fHadrNuclXsc = new G4HadronNucleonXsc();
95
96 fEnergyBin = 200;
97 fBinT = 514; // 514; // 500; // 200;
98
99 fEnergyVector = new G4PhysicsLogVector( theMinEnergy, theMaxEnergy, fEnergyBin );
100
101 fTableT = 0;
102 fOldTkin = 0.;
104
105 Initialise();
106}
G4HadronElastic(const G4String &name="hElasticLHEP")
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
static G4HadronicParameters * Instance()
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
Definition G4PionPlus.cc:93
static G4Proton * Proton()
Definition G4Proton.cc:90
void Initialise()
void SetParameters()

Referenced by BuildTableT(), and BuildTableTest().

◆ G4hhElastic() [2/3]

G4hhElastic::G4hhElastic ( G4ParticleDefinition * target,
G4ParticleDefinition * projectile,
G4double plab )

Definition at line 114 of file G4hhElastic.cc.

115 : G4HadronElastic("HadrHadrElastic")
116{
117 SetMinEnergy( 1.*GeV );
119 verboseLevel = 0;
120 lowEnergyRecoilLimit = 100.*keV;
121 lowEnergyLimitQ = 0.0*GeV;
122 lowEnergyLimitHE = 0.0*GeV;
123 lowestEnergyLimit = 0.0*keV;
124 plabLowLimit = 20.0*MeV;
125
126 fRhoReIm=fSigmaTot=fOptRatio=fSpp=fPcms=0.0;
127 fInTkin=0;
128 theProton = G4Proton::Proton();
129 theNeutron = G4Neutron::Neutron();
130 thePionPlus = G4PionPlus::PionPlus();
131 thePionMinus= G4PionMinus::PionMinus();
132
133 fTarget = target;
134 fProjectile = projectile;
135 fMassTarg = fTarget->GetPDGMass();
136 fMassProj = fProjectile->GetPDGMass();
137 fMassSum2 = (fMassTarg+fMassProj)*(fMassTarg+fMassProj);
138 fMassDif2 = (fMassTarg-fMassProj)*(fMassTarg-fMassProj);
139 fHadrNuclXsc = new G4HadronNucleonXsc();
140
141 fEnergyBin = 200;
142 fBinT = 514; // 200;
143
144 fEnergyVector = new G4PhysicsLogVector( theMinEnergy, theMaxEnergy, fEnergyBin );
145 fTableT = 0;
146 fOldTkin = 0.;
147
148
150 SetParametersCMS( plab);
151}
void SetParametersCMS(G4double plab)

◆ G4hhElastic() [3/3]

G4hhElastic::G4hhElastic ( G4ParticleDefinition * target,
G4ParticleDefinition * projectile )

Definition at line 159 of file G4hhElastic.cc.

160 : G4HadronElastic("HadrHadrElastic")
161{
162 SetMinEnergy( 1.*GeV );
164 verboseLevel = 0;
165 lowEnergyRecoilLimit = 100.*keV;
166 lowEnergyLimitQ = 0.0*GeV;
167 lowEnergyLimitHE = 0.0*GeV;
168 lowestEnergyLimit= 0.0*keV;
169 plabLowLimit = 20.0*MeV;
170
171 fRhoReIm=fSigmaTot=fOptRatio=fSpp=fPcms=0.0;
172 fInTkin=0;
173
174 fTarget = target; // later vmg
175 fProjectile = projectile;
176 theProton = G4Proton::Proton();
177 theNeutron = G4Neutron::Neutron();
178 thePionPlus = G4PionPlus::PionPlus();
179 thePionMinus= G4PionMinus::PionMinus();
180
181 fTarget = G4Proton::Proton(); // later vmg
182 fMassTarg = fTarget->GetPDGMass();
183 fMassProj = fProjectile->GetPDGMass();
184 fMassSum2 = (fMassTarg+fMassProj)*(fMassTarg+fMassProj);
185 fMassDif2 = (fMassTarg-fMassProj)*(fMassTarg-fMassProj);
186 fHadrNuclXsc = new G4HadronNucleonXsc();
187
188 fEnergyBin = 200;
189 fBinT = 514; // 514; // 500; // 200;
190
191 fEnergyVector = new G4PhysicsLogVector( theMinEnergy, theMaxEnergy, fEnergyBin );
192
193 fTableT = 0;
194 fOldTkin = 0.;
195
197}

◆ ~G4hhElastic()

G4hhElastic::~G4hhElastic ( )
virtual

Definition at line 205 of file G4hhElastic.cc.

206{
207 if ( fEnergyVector ) {
208 delete fEnergyVector;
209 fEnergyVector = 0;
210 }
211
212 for ( std::vector<G4PhysicsTable*>::iterator it = fBankT.begin();
213 it != fBankT.end(); ++it ) {
214 if ( (*it) ) (*it)->clearAndDestroy();
215 delete *it;
216 *it = 0;
217 }
218 fTableT = 0;
219 if(fHadrNuclXsc) delete fHadrNuclXsc;
220}

Member Function Documentation

◆ BuildTableT()

void G4hhElastic::BuildTableT ( G4ParticleDefinition * target,
G4ParticleDefinition * projectile )

Definition at line 254 of file G4hhElastic.cc.

255{
256 G4int iTkin, jTransfer;
257 G4double plab, Tkin, tMax;
258 G4double t1, t2, dt, delta = 0., sum = 0.;
259
260 fTarget = target;
261 fProjectile = projectile;
262 fMassTarg = fTarget->GetPDGMass();
263 fMassProj = fProjectile->GetPDGMass();
264 fMassSum2 = (fMassTarg+fMassProj)*(fMassTarg+fMassProj);
265 fMassDif2 = (fMassTarg-fMassProj)*(fMassTarg-fMassProj);
266
268 // G4HadronNucleonXsc* hnXsc = new G4HadronNucleonXsc();
269 fTableT = new G4PhysicsTable(fEnergyBin);
270
271 for( iTkin = 0; iTkin < fEnergyBin; iTkin++)
272 {
273 Tkin = fEnergyVector->GetLowEdgeEnergy(iTkin);
274 plab = std::sqrt( Tkin*( Tkin + 2*fMassProj ) );
275 // G4DynamicParticle* theDynamicParticle = new G4DynamicParticle(projectile,
276 // G4ParticleMomentum(0.,0.,1.),
277 // Tkin);
278 // fSigmaTot = fHadrNuclXsc->GetHadronNucleonXscNS( theDynamicParticle, target );
279
280 SetParametersCMS( plab );
281
282 tMax = 4.*fPcms*fPcms;
283 if( tMax > 15.*GeV*GeV ) tMax = 15.*GeV*GeV; // Check vs. energy ???
284
285 G4PhysicsFreeVector* vectorT = new G4PhysicsFreeVector(fBinT-1);
286 sum = 0.;
287 dt = tMax/fBinT;
288
289 // for(j = 1; j < fBinT; j++)
290
291 for( jTransfer = fBinT-1; jTransfer >= 1; jTransfer--)
292 {
293 t1 = dt*(jTransfer-1);
294 t2 = t1 + dt;
295
296 if( fMassProj > 900.*MeV ) // pp, pn
297 {
298 delta = integral.Legendre10(this, &G4hhElastic::GetdsdtF123, t1, t2);
299 // delta = integral.Legendre96(this, &G4hhElastic::GetdsdtF123, t1, t2);
300 }
301 else // pi+-p, K+-p
302 {
303 delta = integral.Legendre10(this, &G4hhElastic::GetdsdtF123qQgG, t1, t2);
304 // delta = integral.Legendre96(this, &G4hhElastic::GetdsdtF123qQgG, t1, t2);
305 }
306 sum += delta;
307 vectorT->PutValue( jTransfer-1, t1, sum ); // t2
308 }
309 // vectorT->PutValue( fBinT-1, dt*(fBinT-1), 0. ); // t2
310 fTableT->insertAt( iTkin, vectorT );
311 // delete theDynamicParticle;
312 }
313 // delete hnXsc;
314
315 return;
316}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
void PutValue(const std::size_t index, const G4double e, const G4double value)
G4double GetLowEdgeEnergy(const std::size_t index) const
G4double GetdsdtF123(G4double q)
G4double GetdsdtF123qQgG(G4double q)

Referenced by Initialise().

◆ BuildTableTest()

void G4hhElastic::BuildTableTest ( G4ParticleDefinition * target,
G4ParticleDefinition * projectile,
G4double plab )

Definition at line 520 of file G4hhElastic.cc.

521{
522 G4int jTransfer;
523 G4double tMax; // , sQq, sQG;
524 G4double t1, t2, dt, delta = 0., sum = 0. ; // , threshold;
525
526 fTarget = target;
527 fProjectile = projectile;
528 fMassTarg = fTarget->GetPDGMass();
529 fMassProj = fProjectile->GetPDGMass();
530 fMassSum2 = (fMassTarg+fMassProj)*(fMassTarg+fMassProj);
531 fMassDif2 = (fMassTarg-fMassProj)*(fMassTarg-fMassProj);
532 fSpp = fMassProj*fMassProj + fMassTarg*fMassTarg + 2.*fMassTarg*std::sqrt(plab*plab + fMassProj*fMassProj);
533 fPcms = std::sqrt( (fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
534
535 G4cout<<"fMassTarg = "<<fMassTarg<<" MeV; fMassProj = "<<fMassProj<<" MeV"<<G4endl;
536 tMax = 4.*fPcms*fPcms;
537 if( tMax > 15.*GeV*GeV ) tMax = 15.*GeV*GeV; // Check vs. energy ???
538
539
541 fTableT = new G4PhysicsTable(1);
542 G4PhysicsFreeVector* vectorT = new G4PhysicsFreeVector(fBinT-1);
543
544 sum = 0.;
545 dt = tMax/G4double(fBinT);
546 G4cout<<"s = "<<std::sqrt(fSpp)/GeV<<" GeV; fPcms = "<<fPcms/GeV
547 <<" GeV; qMax = "<<tMax/GeV/GeV<<" GeV2; dt = "<<dt/GeV/GeV<<" GeV2"<<G4endl;
548
549 // G4cout<<"fRA = "<<fRA*GeV<<"; fRB = "<<fRB*GeV<<G4endl;
550
551 // for(jTransfer = 1; jTransfer < fBinT; jTransfer++)
552 for( jTransfer = fBinT-1; jTransfer >= 1; jTransfer-- )
553 {
554 t1 = dt*(jTransfer-1);
555 t2 = t1 + dt;
556
557 if( fMassProj > 900.*MeV ) // pp, pn
558 {
559 delta = integral.Legendre10(this, &G4hhElastic::GetdsdtF123, t1, t2);
560 // threshold = integral.Legendre96(this, &G4hhElastic::GetdsdtF123, t1, tMax);
561 }
562 else // pi+-p, K+-p
563 {
564 delta = integral.Legendre10(this, &G4hhElastic::GetdsdtF123qQgG, t1, t2);
565 // threshold = integral.Legendre96(this, &G4hhElastic::GetdsdtF123qQgG, t1, tMax);
566 // delta = integral.Legendre96(this, &G4hhElastic::GetdsdtF123, t1, t2);
567 }
568 sum += delta;
569 // G4cout<<delta<<"\t"<<sum<<"\t"<<threshold<<G4endl;
570
571 // sQq = GetdsdtF123(q1);
572 // sQG = GetdsdtF123qQgG(q1);
573 // G4cout<<q1/GeV<<"\t"<<sQG*GeV*GeV/millibarn<<"\t"<<sQq*GeV*GeV/millibarn<<G4endl;
574 // G4cout<<"sum = "<<sum<<", ";
575
576 vectorT->PutValue( jTransfer-1, t1, sum ); // t2
577 }
578 // vectorT->PutValue( fBinT-1, dt*(fBinT-1), 0. ); // t2
579 fTableT->insertAt( 0, vectorT );
580 fBankT.push_back( fTableT ); // 0
581
582 // for(jTransfer = 0; jTransfer < fBinT-1; jTransfer++)
583 // G4cout<<(*(*fTableT)(0))(jTransfer)/sum<<"\t\t"<<G4Pow::GetInstance()->powN(2.,-jTransfer)<<G4endl;
584
585 return;
586}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout

◆ CalculateBQ()

void G4hhElastic::CalculateBQ ( G4double b)
inline

Definition at line 957 of file G4hhElastic.hh.

958{
959 fBq = b1;
960 G4double s1 = GetCofS1();
961 G4double s2 = GetCofS2();
962 G4double s3 = GetCofS3();
963 G4double sqrtBq = std::sqrt(fBq);
964
965 // cofs of the fBQ 3rd equation
966
967 G4double a = s3*sqrtBq;
968 G4double b = s1*fBq - 1.;
969 G4double c = (s2*fBq - 2.)*sqrtBq;
970 G4double d = 1. - fBq;
971
972 // cofs of the incomplete 3rd equation
973
974 G4double p = c/a;
975 p -= b*b/a/a/3.;
976 G4double q = d/a;
977 q -= b*c/a/a/3.;
978 q += 2*b*b*b/a/a/a/27.;
979
980 // cofs for the incomplete colutions
981
982 G4double D = p*p*p/3./3./3.;
983 D += q*q/2./2.;
984 G4complex A1 = G4complex(- q/2., std::sqrt(-D) );
985 G4complex A = std::pow(A1,1./3.);
986
987 G4complex B1 = G4complex(- q/2., -std::sqrt(-D) );
988 G4complex B = std::pow(B1,1./3.);
989
990 // roots of the incomplete 3rd equation
991
992 G4complex y1 = A + B;
993 G4complex y2 = -0.5*(A + B) + 0.5*std::sqrt(3.)*(A - B)*G4complex(0.,1.);
994 G4complex y3 = -0.5*(A + B) - 0.5*std::sqrt(3.)*(A - B)*G4complex(0.,1.);
995
996 G4complex x1 = y1 - b/a/3.;
997 G4complex x2 = y2 - b/a/3.;
998 G4complex x3 = y3 - b/a/3.;
999
1000 G4cout<<"re_x1 = "<<real(x1)<<"; re_x2 = "<<real(x2)<<"; re_x3 = "<<real(x3)<<G4endl;
1001 G4cout<<"im_x1 = "<<imag(x1)<<"; im_x2 = "<<imag(x2)<<"; im_x3 = "<<imag(x3)<<G4endl;
1002
1003 G4double r1 = real(x1)*real(x1);
1004 G4double r2 = real(x2)*real(x2);
1005 G4double r3 = real(x3)*real(x3);
1006
1007 if( r1 <= 1. && r1 >= 0. ) fBQ = r1;
1008 else if( r2 <= 1. && r2 >= 0. ) fBQ = r2;
1009 else if( r3 <= 1. && r3 >= 0. ) fBQ = r3;
1010 else fBQ = 1.;
1011 // fBQ = real(x3)*real(x3);
1012 G4double sqrtBqBQ = std::sqrt(fBq*fBQ);
1013 fOptRatio = fBq + fBQ + 2.*sqrtBqBQ - 1.;
1014 fOptRatio /= sqrtBqBQ*( GetCofS1()*sqrtBqBQ + GetCofS2()*fBq + GetCofS3()*fBQ );
1015 G4cout<<"F123, fOptRatio = "<<fOptRatio<<G4endl;
1016
1017 return ;
1018}
G4double B(G4double temperature)
G4double D(G4double temp)
std::complex< G4double > G4complex
Definition G4Types.hh:88
const G4double A[17]
G4double GetCofS1()
G4double GetCofS2()
G4double GetCofS3()

◆ CalculateBqQ12()

void G4hhElastic::CalculateBqQ12 ( G4double b)
inline

Definition at line 786 of file G4hhElastic.hh.

787{
788 fBq = b1;
789
790 G4complex z1324 = G4complex(1./8./CLHEP::pi,0.);
791 z1324 /= Phi13() + Phi24() + fLambda + fEta;
792 G4double c1324 = real(z1324)/(CLHEP::hbarc*CLHEP::hbarc);
793
794 G4complex z1423 = G4complex(1./8./CLHEP::pi,0.);
795 z1423 /= Phi14() + Phi23() + fLambda + fEta;
796 G4double c1423 = real(z1423)/(CLHEP::hbarc*CLHEP::hbarc);
797
798 fBQ = 1. - 2.*fBq;
799 fBQ /= 2. - fSigmaTot*fBq*(c1324+1423);
800
801 G4double ratio = 2.*(fBq + fBQ) - fSigmaTot*fBq*fBQ*(c1324 + c1423);
802 G4cout<<"ratio = "<<ratio<<G4endl;
803
804 return ;
805}
G4complex Phi23()
G4complex Phi13()
G4complex Phi14()
G4complex Phi24()

◆ CalculateBqQ123()

void G4hhElastic::CalculateBqQ123 ( G4double b)
inline

Definition at line 812 of file G4hhElastic.hh.

813{
814 fBq = b1;
815
816 G4complex z1324 = fCofF2*G4complex(1./8./CLHEP::pi,0.);
817 z1324 /= Phi13() + Phi24() + fLambda + fEta;
818 G4double c1324 = real(z1324)/(CLHEP::hbarc*CLHEP::hbarc);
819
820 G4complex z1423 = fCofF2*G4complex(1./8./CLHEP::pi,0.);
821 z1423 /= Phi14() + Phi23() + fLambda + fEta;
822 G4double c1423 = real(z1423)/(CLHEP::hbarc*CLHEP::hbarc);
823
824 G4complex z1314 = fCofF3*G4complex(1./8./CLHEP::pi,0.);
825 z1314 /= Phi13() + Phi14() + fEta;
826 G4double c1314 = real(z1314)/(CLHEP::hbarc*CLHEP::hbarc);
827
828 G4complex z2324 = fCofF3*G4complex(1./8./CLHEP::pi,0.);
829 z2324 /= Phi23() + Phi24() + fEta;
830 G4double c2324 = real(z2324)/(CLHEP::hbarc*CLHEP::hbarc);
831
832 G4complex z1323 = fCofF3*G4complex(1./8./CLHEP::pi,0.);
833 z1323 /= Phi13() + Phi23() + fLambda;
834 G4double c1323 = real(z1323)/(CLHEP::hbarc*CLHEP::hbarc);
835
836 G4complex z1424 = fCofF3*G4complex(1./8./CLHEP::pi,0.);
837 z1424 /= Phi14() + Phi24() + fLambda;
838 G4double c1424 = real(z1424)/(CLHEP::hbarc*CLHEP::hbarc);
839
840 G4double A = fSigmaTot*c2324;
841 G4double B = fSigmaTot*fBq*(c1324 + c1423 + c1323 + c1424) - 2.;
842 G4double C = 1. + fSigmaTot*fBq*fBq*c1314 - 2*fBq;
843 G4cout<<"A = "<<A<<"; B = "<<B<<"; C = "<<C<<G4endl;
844 G4cout<<"determinant = "<<B*B-4.*A*C<<G4endl;
845
846 G4double x1 = ( -B - std::sqrt(B*B-4.*A*C) )/2./A;
847 G4double x2 = ( -B + std::sqrt(B*B-4.*A*C) )/2./A;
848 G4cout<<"x1 = "<<x1<<"; x2 = "<<x2<<G4endl;
849
850 if( B*B-4.*A*C < 1.e-6 ) fBQ = std::abs(-B/2./A);
851 else if ( B < 0.) fBQ = std::abs( ( -B - std::sqrt(B*B-4.*A*C) )/2./A);
852 else fBQ = std::abs( ( -B + std::sqrt(B*B-4.*A*C) )/2./A);
853
854 fOptRatio = 2*(fBq+fBQ) - fSigmaTot*fBq*fBQ*(c1324 + c1423 + c1323 + c1424);
855 fOptRatio -= fSigmaTot*fBq*fBq*c1314 + fSigmaTot*c2324*fBQ*fBQ;
856 G4cout<<"BqQ123, fOptRatio = "<<fOptRatio<<G4endl;
857
858 return ;
859}
G4double C(G4double temp)

◆ CalculateBqQ13()

void G4hhElastic::CalculateBqQ13 ( G4double b)
inline

Definition at line 763 of file G4hhElastic.hh.

764{
765 fBQ = b2;
766
767 G4complex z1424 = G4complex(1./8./CLHEP::pi,0.);
768 z1424 /= Phi14() + Phi24() + fAlpha;
769 G4double c1424 = real(z1424)/(CLHEP::hbarc*CLHEP::hbarc);
770
771 fBqQ = 1. - fBQ;
772 fBQ /= 1. - fSigmaTot*fBQ*c1424;
773
774 G4cout<<"fSigmaTot*fBQ*c1424 = "<<fSigmaTot*fBQ*c1424<<G4endl;
775
776 G4double ratio = fBqQ + fBQ - fSigmaTot*fBqQ*fBQ*c1424;
777 G4cout<<"ratio = "<<ratio<<G4endl;
778
779 return ;
780}

◆ GetAQQ()

G4complex G4hhElastic::GetAQQ ( )
inline

Definition at line 880 of file G4hhElastic.hh.

881{
882 G4double re, im;
883
884 re = fRQ*fRQ/8. + fAlphaP*G4Log(fSpp/fSo) + 2.*fLambda/9.;
885 im = -0.5*fAlphaP*fImCof*CLHEP::pi;
886 return G4complex(re,im);
887}
G4double G4Log(G4double x)
Definition G4Log.hh:227

Referenced by GetAqQ(), GetCofS3(), GetF1(), GetF2(), and GetF3().

◆ GetAqQ()

G4complex G4hhElastic::GetAqQ ( )
inline

Definition at line 893 of file G4hhElastic.hh.

894{
895 G4complex z = 0.5*( GetAqq() + GetAQQ() );
896 return z;
897}
G4complex GetAqq()
G4complex GetAQQ()

Referenced by GetCofS1(), GetCofS2(), GetCofS3(), GetF1(), GetF2(), and GetF3().

◆ GetAqq()

G4complex G4hhElastic::GetAqq ( )
inline

Definition at line 867 of file G4hhElastic.hh.

868{
869 G4double re, im;
870
871 re = fRq*fRq/8. + fAlphaP*G4Log(fSpp/fSo) + 8.*fLambda/9.;
872 im = -0.5*fAlphaP*fImCof*CLHEP::pi;
873 return G4complex(re,im);
874}

Referenced by GetAqQ(), GetCofS2(), GetF1(), GetF2(), and GetF3().

◆ GetBQ()

G4double G4hhElastic::GetBQ ( )
inline

Definition at line 170 of file G4hhElastic.hh.

170{ return fBQ;};

◆ GetBq()

G4double G4hhElastic::GetBq ( )
inline

Definition at line 169 of file G4hhElastic.hh.

169{ return fBq;};

◆ GetBqQ()

G4double G4hhElastic::GetBqQ ( )
inline

Definition at line 171 of file G4hhElastic.hh.

171{ return fBqQ;};

◆ GetCofF2()

G4double G4hhElastic::GetCofF2 ( )
inline

Definition at line 191 of file G4hhElastic.hh.

191{return fCofF2;};

◆ GetCofF3()

G4double G4hhElastic::GetCofF3 ( )
inline

Definition at line 192 of file G4hhElastic.hh.

192{return fCofF3;};

◆ GetCofS1()

G4double G4hhElastic::GetCofS1 ( )
inline

Definition at line 903 of file G4hhElastic.hh.

904{
905 G4complex z = 1./( GetAqQ() + 4.*fLambda/9. );
906 G4double result = real(z);
907 result /= 4.*CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc;
908 result *= fSigmaTot*fCofF2;
909 return result;
910}
G4complex GetAqQ()

Referenced by CalculateBQ().

◆ GetCofS2()

G4double G4hhElastic::GetCofS2 ( )
inline

Definition at line 916 of file G4hhElastic.hh.

917{
918 G4complex z = 1./( GetAqq() + GetAqQ() - 4.*fLambda/9. );
919 G4double result = real(z);
920 result /= 4.*CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc;
921 result *= fSigmaTot*fCofF3;
922 return result;
923}

Referenced by CalculateBQ().

◆ GetCofS3()

G4double G4hhElastic::GetCofS3 ( )
inline

Definition at line 929 of file G4hhElastic.hh.

930{
931 G4complex z = 1./( GetAQQ() + GetAqQ() + 2.*fLambda/9. );
932 G4double result = real(z);
933 result /= 4.*CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc;
934 result *= fSigmaTot*fCofF3;
935 return result;
936}

Referenced by CalculateBQ().

◆ GetdsdtF1()

G4double G4hhElastic::GetdsdtF1 ( G4double s,
G4double q )
inline

Definition at line 1042 of file G4hhElastic.hh.

1043{
1044 fSpp = spp;
1045 G4double p = std::sqrt(0.25*spp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1046 G4complex F1 = GetF1(t);
1047
1048 G4double dsdt = CLHEP::pi/p/p;
1049 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
1050 return dsdt;
1051}
G4complex GetF1(G4double qp)

◆ GetdsdtF12()

G4double G4hhElastic::GetdsdtF12 ( G4double s,
G4double q )
inline

Definition at line 1085 of file G4hhElastic.hh.

1086{
1087 fSpp = spp;
1088 G4double p = std::sqrt(0.25*spp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1089 G4complex F1 = GetF1(t) - GetF2(t);
1090
1091 G4double dsdt = CLHEP::pi/p/p;
1092 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
1093 return dsdt;
1094}
G4complex GetF2(G4double qp)

◆ GetdsdtF123()

G4double G4hhElastic::GetdsdtF123 ( G4double q)
inline

Definition at line 1128 of file G4hhElastic.hh.

1129{
1130 G4double p = std::sqrt(0.25*fSpp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1131 G4complex F1 = GetF1(t);
1132 F1 -= fCofF2*GetF2(t);
1133 F1 -= fCofF3*GetF3(t);
1134 G4double dsdt = CLHEP::pi/p/p;
1135 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
1136 return dsdt;
1137}
G4complex GetF3(G4double qp)

Referenced by BuildTableT(), and BuildTableTest().

◆ GetdsdtF123qQgG()

G4double G4hhElastic::GetdsdtF123qQgG ( G4double q)
inline

Definition at line 746 of file G4hhElastic.hh.

747{
748 G4double p = std::sqrt( (fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp );
749
750 G4complex F123 = GetF1qQgG(t); // - fCofF2*GetF2qQgG(t) - fCofF3*GetF3qQgG(t);
751 F123 -= fCofF2*GetF2qQgG(t);
752 F123 -= fCofF3*GetF3qQgG(t);
753
754 G4double dsdt = CLHEP::pi/p/p;
755 dsdt *= real(F123)*real(F123) + imag(F123)*imag(F123);
756 return dsdt;
757}
G4complex GetF2qQgG(G4double qp)
G4complex GetF1qQgG(G4double qp)
G4complex GetF3qQgG(G4double qp)

Referenced by BuildTableT(), and BuildTableTest().

◆ GetdsdtF12qQgG()

G4double G4hhElastic::GetdsdtF12qQgG ( G4double s,
G4double q )
inline

Definition at line 676 of file G4hhElastic.hh.

677{
678 fSpp = spp;
679 G4double p = std::sqrt((fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
680
682
683 G4double dsdt = CLHEP::pi/p/p;
684 dsdt *= real(F12)*real(F12) + imag(F12)*imag(F12);
685 return dsdt;
686}
#define F12

◆ GetdsdtF13qQG()

G4double G4hhElastic::GetdsdtF13qQG ( G4double s,
G4double q )
inline

Definition at line 584 of file G4hhElastic.hh.

585{
586 fSpp = spp;
587 G4double p = std::sqrt((fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
588 G4double k = p/CLHEP::hbarc;
589
590 G4complex exp14 = fBqQ*std::exp(-(Phi14() + fBeta*fBeta*fLambda + fGamma*fGamma*fEta)*t);
591 G4complex exp24 = fBQ*std::exp(-(Phi24() + fAlpha*fAlpha*fLambda + fGamma*fGamma*fEta)*t);
592
593 G4complex F1 = exp14 + exp24;
594
595 F1 *= 0.25*k*fSigmaTot/CLHEP::pi;
596 F1 *= G4complex(0.,1.);
597
598 // 1424
599
600 G4complex z1424 = -(Phi24() + fAlpha*fLambda)*(Phi24() + fAlpha*fLambda);
601 z1424 /= Phi14() + Phi24() + fLambda;
602 z1424 += Phi24() + fAlpha*fAlpha*fLambda + fGamma*fGamma*fEta;
603
604
605 G4complex exp1424 = std::exp(-z1424*t);
606 exp1424 /= Phi14() + Phi24() + fLambda;
607
608 G4complex F3 = fBqQ*fBQ*exp1424;
609
610
611 F3 *= 0.25*k/CLHEP::pi;
612 F3 *= G4complex(0.,1.);
613 F3 *= fSigmaTot*fSigmaTot/(8.*CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc);
614
615 G4complex F13 = F1 - F3;
616
617 G4double dsdt = CLHEP::pi/p/p;
618 dsdt *= real(F13)*real(F13) + imag(F13)*imag(F13);
619
620 return dsdt;
621}
#define F13

◆ GetdsdtF1qQgG()

G4double G4hhElastic::GetdsdtF1qQgG ( G4double s,
G4double q )
inline

Definition at line 627 of file G4hhElastic.hh.

628{
629 fSpp = spp;
630 G4double p = std::sqrt((fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
631
632 G4complex F1 = GetF1qQgG(t);
633
634 G4double dsdt = CLHEP::pi/p/p;
635 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
636 return dsdt;
637}

◆ GetExpRatioF123()

G4double G4hhElastic::GetExpRatioF123 ( G4double s,
G4double q )
inline

Definition at line 1143 of file G4hhElastic.hh.

1144{
1145 fSpp = spp;
1146 G4double p = std::sqrt(0.25*spp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1147
1148 // qQ-ds/dt
1149
1150 G4complex F1 = GetF1(t) - fCofF2*GetF2(t) - fCofF3*GetF3(t);
1151
1152 G4double dsdt = CLHEP::pi/p/p;
1153 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
1154
1155 // exponent ds/dt
1156
1157 G4complex F10 = GetF1(0.) - fCofF2*GetF2(0.) - fCofF3*GetF3(0.);
1158
1159 fRhoReIm = real(F10)/imag(F10);
1160
1161 G4double dsdt0 = CLHEP::pi/p/p;
1162 dsdt0 *= real(F10)*real(F10) + imag(F10)*imag(F10);
1163
1164 dsdt0 *= G4Exp(-fExpSlope*t);
1165
1166 G4double ratio = dsdt/dsdt0;
1167
1168 return ratio;
1169}
#define F10
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition G4Exp.hh:180

◆ GetF1()

G4complex G4hhElastic::GetF1 ( G4double qp)
inline

Definition at line 1024 of file G4hhElastic.hh.

1025{
1026 G4double p = std::sqrt(0.25*fSpp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1027 G4double k = p/CLHEP::hbarc;
1028 G4complex exp1 = fBq*std::exp(-GetAqq()*t);
1029 G4complex exp2 = fBQ*std::exp(-GetAQQ()*t);
1030 G4complex exp3 = 2.*std::sqrt(fBq*fBQ)*std::exp(-GetAqQ()*t);
1031
1032 G4complex res = exp1 + exp2 + exp3;
1033 res *= 0.25*k*fSigmaTot/CLHEP::pi;
1034 res *= G4complex(0.,1.);
1035 return res;
1036}

Referenced by GetdsdtF1(), GetdsdtF12(), GetdsdtF123(), and GetExpRatioF123().

◆ GetF1qQgG()

G4complex G4hhElastic::GetF1qQgG ( G4double qp)
inline

Definition at line 562 of file G4hhElastic.hh.

563{
564 G4double p = std::sqrt((fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
565 G4double k = p/CLHEP::hbarc;
566
567 G4complex exp13 = fBq*std::exp(-(Phi13() + fBeta*fBeta*fLambda + fDelta*fDelta*fEta)*t);
568 G4complex exp14 = fBq*std::exp(-(Phi14() + fBeta*fBeta*fLambda + fGamma*fGamma*fEta)*t);
569 G4complex exp23 = fBQ*std::exp(-(Phi23() + fAlpha*fAlpha*fLambda + fDelta*fDelta*fEta)*t);
570 G4complex exp24 = fBQ*std::exp(-(Phi24() + fAlpha*fAlpha*fLambda + fGamma*fGamma*fEta)*t);
571
572 G4complex res = exp13 + exp14 + exp23 + exp24;
573
574 res *= 0.25*k*fSigmaTot/CLHEP::pi;
575 res *= G4complex(0.,1.);
576
577 return res;
578}

Referenced by GetdsdtF123qQgG(), GetdsdtF12qQgG(), and GetdsdtF1qQgG().

◆ GetF2()

G4complex G4hhElastic::GetF2 ( G4double qp)
inline

Definition at line 1057 of file G4hhElastic.hh.

1058{
1059 G4double p = std::sqrt(0.25*fSpp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1060 G4double k = p/CLHEP::hbarc;
1061 G4complex z1 = GetAqq()*GetAQQ() - 16.*fLambda*fLambda/81.;
1062 z1 /= 2.*(GetAqQ() + 4.*fLambda/9.);
1063 G4complex exp1 = std::exp(-z1*t);
1064
1065 G4complex z2 = 0.5*( GetAqQ() - 4.*fLambda/9.);
1066
1067 G4complex exp2 = std::exp(-z2*t);
1068
1069 G4complex res = exp1 + exp2;
1070
1071 G4complex z3 = GetAqQ() + 4.*fLambda/9.;
1072
1073 res *= 0.25*k/CLHEP::pi;
1074 res *= G4complex(0.,1.);
1075 res /= z3;
1076 res *= fBq*fBQ*fSigmaTot*fSigmaTot/(8.*CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc);
1077
1078 return res;
1079}

Referenced by GetdsdtF12(), GetdsdtF123(), and GetExpRatioF123().

◆ GetF2qQgG()

G4complex G4hhElastic::GetF2qQgG ( G4double qp)
inline

Definition at line 643 of file G4hhElastic.hh.

644{
645 G4double p = std::sqrt((fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
646 G4double k = p/CLHEP::hbarc;
647
648 G4complex z1324 = -(Phi24() + fAlpha*fLambda + fGamma*fEta)*(Phi24() + fAlpha*fLambda + fGamma*fEta);
649 z1324 /= Phi13() + Phi24() + fLambda + fEta;
650 z1324 += Phi24() + fAlpha*fAlpha*fLambda + fGamma*fGamma*fEta;
651
652 G4complex exp1324 = std::exp(-z1324*t);
653 exp1324 /= Phi13() + Phi24() + fLambda + fEta;
654
655 G4complex z1423 = -(Phi23() + fAlpha*fLambda + fDelta*fEta)*(Phi24() + fAlpha*fLambda + fDelta*fEta);;
656 z1423 /= Phi14() + Phi23() + fLambda + fEta;
657 z1423 += Phi23() + fAlpha*fAlpha*fLambda + fDelta*fDelta*fEta;
658
659 G4complex exp1423 = std::exp(-z1423*t);
660 exp1423 /= Phi14() + Phi23() + fLambda + fEta;
661
662 G4complex res = exp1324 + exp1423;
663
664
665 res *= 0.25*k/CLHEP::pi;
666 res *= G4complex(0.,1.);
667 res *= fBq*fBQ*fSigmaTot*fSigmaTot/(8.*CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc); // or 4. ???
668
669 return res;
670}

Referenced by GetdsdtF123qQgG(), and GetdsdtF12qQgG().

◆ GetF3()

G4complex G4hhElastic::GetF3 ( G4double qp)
inline

Definition at line 1100 of file G4hhElastic.hh.

1101{
1102 G4double p = std::sqrt(0.25*fSpp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1103 G4double k = p/CLHEP::hbarc;
1104 G4complex z1 = GetAqq()*GetAqQ() - 4.*fLambda*fLambda/81.;
1105 z1 /= GetAqq() + GetAqQ() - 4.*fLambda/9.;
1106
1107 G4complex exp1 = std::exp(-z1*t)*fBq/(GetAqq() + GetAqQ() - 4.*fLambda/9.);
1108
1109 G4complex z2 = GetAqQ()*GetAQQ() - 1.*fLambda*fLambda/81.;
1110 z2 /= GetAQQ() + GetAqQ() + 2.*fLambda/9.;
1111
1112 G4complex exp2 = std::exp(-z2*t)*fBQ/(GetAQQ() + GetAqQ() + 2.*fLambda/9.);
1113
1114 G4complex res = exp1 + exp2;
1115
1116
1117 res *= 0.25*k/CLHEP::pi;
1118 res *= G4complex(0.,1.);
1119 res *= std::sqrt(fBq*fBQ)*fSigmaTot*fSigmaTot/(4.*CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc);
1120
1121 return res;
1122}

Referenced by GetdsdtF123(), and GetExpRatioF123().

◆ GetF3qQgG()

G4complex G4hhElastic::GetF3qQgG ( G4double qp)
inline

Definition at line 692 of file G4hhElastic.hh.

693{
694 G4double p = std::sqrt( (fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
695 G4double k = p/CLHEP::hbarc;
696
697 // 1314
698
699 G4complex z1314 = -(Phi14() + fGamma*fEta)*(Phi14() + fGamma*fEta);
700 z1314 /= Phi13() + Phi14() + fEta;
701 z1314 += Phi14() + fBeta*fBeta*fLambda + fGamma*fGamma*fEta;
702
703 G4complex exp1314 = std::exp(-z1314*t);
704 exp1314 /= Phi13() + Phi14() + fEta;
705
706 // 2324
707
708 G4complex z2324 = -(Phi24() + fGamma*fEta)*(Phi24() + fGamma*fEta);;
709 z2324 /= Phi24() + Phi23() + fEta;
710 z2324 += Phi24() + fAlpha*fAlpha*fLambda + fGamma*fGamma*fEta;
711
712 G4complex exp2324 = std::exp(-z2324*t);
713 exp2324 /= Phi24() + Phi23() + fEta;
714
715 // 1323
716
717 G4complex z1323 = -(Phi23() + fAlpha*fLambda)*(Phi23() + fAlpha*fLambda);
718 z1323 /= Phi13() + Phi23() + fLambda;
719 z1323 += Phi23() + fAlpha*fAlpha*fLambda + fDelta*fDelta*fEta;
720
721 G4complex exp1323 = std::exp(-z1323*t);
722 exp1323 /= Phi13() + Phi23() + fLambda;
723
724 // 1424
725
726 G4complex z1424 = -(Phi24() + fAlpha*fLambda)*(Phi24() + fAlpha*fLambda);
727 z1424 /= Phi14() + Phi24() + fLambda;
728 z1424 += Phi24() + fAlpha*fAlpha*fLambda + fGamma*fGamma*fEta;
729
730 G4complex exp1424 = std::exp(-z1424*t);
731 exp1424 /= Phi14() + Phi24() + fLambda;
732
733 G4complex res = fBq*fBq*exp1314 + fBQ*fBQ*exp2324 + fBq*fBQ*exp1323 + fBq*fBQ*exp1424;
734
735 res *= 0.25*k/CLHEP::pi;
736 res *= G4complex(0.,1.);
737 res *= fSigmaTot*fSigmaTot/(8.*CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc);
738
739 return res;
740}

Referenced by GetdsdtF123qQgG().

◆ GetImCof()

G4double G4hhElastic::GetImCof ( )
inline

Definition at line 186 of file G4hhElastic.hh.

186{return fImCof;};

◆ GetOpticalRatio()

G4double G4hhElastic::GetOpticalRatio ( )
inline

Definition at line 942 of file G4hhElastic.hh.

943{
944 return fOptRatio;
945 // G4double sqrtBqBQ = std::sqrt(fBq*fBQ);
946 // G4double result = fBq + fBQ + 2.*sqrtBqBQ - 1.;
947 // result /= sqrtBqBQ*( GetCofS1()*sqrtBqBQ + GetCofS2()*fBq + GetCofS3()*fBQ );
948 // return result;
949}

◆ GetRA()

G4double G4hhElastic::GetRA ( )
inline

Definition at line 194 of file G4hhElastic.hh.

194{ return fRA;};

Referenced by SetParametersCMS().

◆ GetRB()

G4double G4hhElastic::GetRB ( )
inline

Definition at line 198 of file G4hhElastic.hh.

198{ return fRB;};

Referenced by SetParametersCMS().

◆ GetRG()

G4double G4hhElastic::GetRG ( )
inline

Definition at line 200 of file G4hhElastic.hh.

200{ return fRG;};

◆ GetRg()

G4double G4hhElastic::GetRg ( )
inline

Definition at line 199 of file G4hhElastic.hh.

199{ return fRg;};

◆ GetRhoReIm()

G4double G4hhElastic::GetRhoReIm ( )
inline

Definition at line 175 of file G4hhElastic.hh.

175{ return fRhoReIm;};

◆ GetRQ()

G4double G4hhElastic::GetRQ ( )
inline

Definition at line 196 of file G4hhElastic.hh.

196{ return fRQ;};

◆ GetRq()

G4double G4hhElastic::GetRq ( )
inline

Definition at line 195 of file G4hhElastic.hh.

195{ return fRq;};

◆ GetSpp()

G4double G4hhElastic::GetSpp ( )
inline

Definition at line 166 of file G4hhElastic.hh.

166{return fSpp;};

◆ GetTransfer()

G4double G4hhElastic::GetTransfer ( G4int iMomentum,
G4int iTransfer,
G4double position )

Definition at line 629 of file G4hhElastic.cc.

630{
631 G4double x1, x2, y1, y2, randTransfer, delta, mean, epsilon = 1.e-6;
632
633 if( iTransfer == 0 )
634 {
635 randTransfer = (*fTableT)(iTkin)->GetLowEdgeEnergy(iTransfer);
636 // iTransfer++;
637 }
638 else
639 {
640 if ( iTransfer >= G4int((*fTableT)(iTkin)->GetVectorLength()) )
641 {
642 iTransfer = G4int((*fTableT)(iTkin)->GetVectorLength() - 1);
643 }
644 y1 = (*(*fTableT)(iTkin))(iTransfer-1);
645 y2 = (*(*fTableT)(iTkin))(iTransfer);
646
647 x1 = (*fTableT)(iTkin)->GetLowEdgeEnergy(iTransfer-1);
648 x2 = (*fTableT)(iTkin)->GetLowEdgeEnergy(iTransfer);
649
650 delta = y2 - y1;
651 mean = y2 + y1;
652
653 if ( x1 == x2 ) randTransfer = x2;
654 else
655 {
656 // if ( y1 == y2 )
657 if ( delta < epsilon*mean )
658 randTransfer = x1 + ( x2 - x1 )*G4UniformRand();
659 else randTransfer = x1 + ( position - y1 )*( x2 - x1 )/delta; // ( y2 - y1 );
660 }
661 }
662 return randTransfer;
663}
G4double epsilon(G4double density, G4double temperature)
#define G4UniformRand()
Definition Randomize.hh:52

Referenced by SampleBisectionalT(), SampleInvariantT(), and SampleTest().

◆ Initialise()

void G4hhElastic::Initialise ( )

Definition at line 230 of file G4hhElastic.cc.

231{
232 // pp,pn
233
234 fProjectile = G4Proton::Proton();
235 BuildTableT(fTarget, fProjectile);
236 fBankT.push_back(fTableT); // 0
237
238 // pi+-p
239
240 fProjectile = G4PionPlus::PionPlus();
241 BuildTableT(fTarget, fProjectile);
242 fBankT.push_back(fTableT); // 1
243 //K+-p
244 fProjectile = G4KaonPlus::KaonPlus();
245 BuildTableT(fTarget, fProjectile);
246 fBankT.push_back(fTableT); // 2
247
248}
static G4KaonPlus * KaonPlus()
void BuildTableT(G4ParticleDefinition *target, G4ParticleDefinition *projectile)

Referenced by G4hhElastic().

◆ IsApplicable()

G4bool G4hhElastic::IsApplicable ( const G4HadProjectile & projectile,
G4Nucleus & nucleus )
inlinevirtual

Reimplemented from G4HadronicInteraction.

Definition at line 256 of file G4hhElastic.hh.

258{
259 if( ( projectile.GetDefinition() == G4Proton::Proton() ||
260 projectile.GetDefinition() == G4Neutron::Neutron() ||
261 projectile.GetDefinition() == G4PionPlus::PionPlus() ||
262 projectile.GetDefinition() == G4PionMinus::PionMinus() ||
263 projectile.GetDefinition() == G4KaonPlus::KaonPlus() ||
264 projectile.GetDefinition() == G4KaonMinus::KaonMinus() ) &&
265
266 nucleus.GetZ_asInt() < 2 ) return true;
267 else return false;
268}
const G4ParticleDefinition * GetDefinition() const
static G4KaonMinus * KaonMinus()
G4int GetZ_asInt() const
Definition G4Nucleus.hh:105

◆ Phi13()

G4complex G4hhElastic::Phi13 ( )
inline

Definition at line 520 of file G4hhElastic.hh.

521{
522 G4double re = (fRq*fRq + fRg*fRg)/16.;
523 G4complex result(re,0.);
524 result += Pomeron();
525 return result;
526}
G4complex Pomeron()

Referenced by CalculateBqQ12(), CalculateBqQ123(), GetF1qQgG(), GetF2qQgG(), and GetF3qQgG().

◆ Phi14()

G4complex G4hhElastic::Phi14 ( )
inline

Definition at line 530 of file G4hhElastic.hh.

531{
532 G4double re = (fRq*fRq + fRG*fRG)/16.;
533 G4complex result(re,0.);
534 result += Pomeron();
535 return result;
536}

Referenced by CalculateBqQ12(), CalculateBqQ123(), CalculateBqQ13(), GetdsdtF13qQG(), GetF1qQgG(), GetF2qQgG(), and GetF3qQgG().

◆ Phi23()

G4complex G4hhElastic::Phi23 ( )
inline

Definition at line 540 of file G4hhElastic.hh.

541{
542 G4double re = (fRQ*fRQ + fRg*fRg)/16.;
543 G4complex result(re,0.);
544 result += Pomeron();
545 return result;
546}

Referenced by CalculateBqQ12(), CalculateBqQ123(), GetF1qQgG(), GetF2qQgG(), and GetF3qQgG().

◆ Phi24()

G4complex G4hhElastic::Phi24 ( )
inline

Definition at line 550 of file G4hhElastic.hh.

551{
552 G4double re = (fRQ*fRQ + fRG*fRG)/16.;
553 G4complex result(re,0.);
554 result += Pomeron();
555 return result;
556}

Referenced by CalculateBqQ12(), CalculateBqQ123(), CalculateBqQ13(), GetdsdtF13qQG(), GetF1qQgG(), GetF2qQgG(), and GetF3qQgG().

◆ Pomeron()

G4complex G4hhElastic::Pomeron ( )
inline

Definition at line 509 of file G4hhElastic.hh.

510{
511 G4double re, im;
512
513 re = fAlphaP*G4Log(fSpp/fSo);
514 im = -0.5*fAlphaP*fImCof*CLHEP::pi;
515 return G4complex(re,im);
516}

Referenced by Phi13(), Phi14(), Phi23(), and Phi24().

◆ SampleBisectionalT()

G4double G4hhElastic::SampleBisectionalT ( const G4ParticleDefinition * p,
G4double plab )

Definition at line 439 of file G4hhElastic.cc.

440{
441 G4int iTkin, iTransfer;
442 G4double t, position, m1 = aParticle->GetPDGMass();
443 G4double Tkin = std::sqrt(m1*m1+p*p) - m1;
444
445 if( aParticle == G4Proton::Proton() || aParticle == G4Neutron::Neutron() )
446 {
447 fTableT = fBankT[0];
448 }
449 if( aParticle == G4PionPlus::PionPlus() || aParticle == G4PionMinus::PionMinus() )
450 {
451 fTableT = fBankT[1];
452 }
453 if( aParticle == G4KaonPlus::KaonPlus() || aParticle == G4KaonMinus::KaonMinus() )
454 {
455 fTableT = fBankT[2];
456 }
457 G4double delta = std::abs(Tkin - fOldTkin)/(Tkin + fOldTkin);
458 G4double deltaMax = 1.e-2;
459
460 if ( delta < deltaMax ) iTkin = fInTkin;
461 else
462 {
463 for( iTkin = 0; iTkin < fEnergyBin; iTkin++ )
464 {
465 if( Tkin < fEnergyVector->GetLowEdgeEnergy(iTkin) ) break;
466 }
467 }
468 if ( iTkin >= fEnergyBin ) iTkin = fEnergyBin-1; // Tkin is more then theMaxEnergy
469 if ( iTkin < 0 ) iTkin = 0; // against negative index, Tkin < theMinEnergy
470
471 fOldTkin = Tkin;
472 fInTkin = iTkin;
473
474 if (iTkin == fEnergyBin -1 || iTkin == 0 ) // the table edges
475 {
476 position = (*(*fTableT)(iTkin))(0)*G4UniformRand();
477
478 for(iTransfer = 0; iTransfer < fBinT-1; iTransfer++)
479 {
480 if( position >= (*(*fTableT)(iTkin))(iTransfer) ) break;
481 }
482 if (iTransfer >= fBinT-1) iTransfer = fBinT-2;
483
484 t = GetTransfer(iTkin, iTransfer, position);
485
486
487 }
488 else // Tkin inside between energy table edges
489 {
490 G4double rand = G4UniformRand();
491 position = (*(*fTableT)(iTkin))(0)*rand;
492
493 //
494 // (*fTableT)(iTkin)->GetLowEdgeEnergy(fBinT-2);
495 G4int sTransfer = 0, fTransfer = fBinT - 2, dTransfer = fTransfer - sTransfer;
496 G4double y2;
497
498 for( iTransfer = 0; iTransfer < fBinT - 1; iTransfer++ )
499 {
500 // dTransfer %= 2;
501 dTransfer /= 2;
502 // dTransfer *= 0.5;
503 y2 = (*(*fTableT)(iTkin))( sTransfer + dTransfer );
504
505 if( y2 > position ) sTransfer += dTransfer;
506
507 // if( dTransfer <= 1 ) break;
508 if( dTransfer < 1 ) break;
509 }
510 t = (*fTableT)(iTkin)->GetLowEdgeEnergy(sTransfer); // +(-0.5+rand)*(*fTableT)(iTkin)->GetLowEdgeEnergy(3);
511 }
512 return t;
513}
G4double GetTransfer(G4int iMomentum, G4int iTransfer, G4double position)

◆ SampleInvariantT()

G4double G4hhElastic::SampleInvariantT ( const G4ParticleDefinition * p,
G4double plab,
G4int ,
G4int  )
virtual

Reimplemented from G4HadronElastic.

Definition at line 322 of file G4hhElastic.cc.

324{
325 G4int iTkin, iTransfer;
326 G4double t, t2, position, m1 = aParticle->GetPDGMass();
327 G4double Tkin = std::sqrt(m1*m1+p*p) - m1;
328
329 if( aParticle == G4Proton::Proton() || aParticle == G4Neutron::Neutron() )
330 {
331 fTableT = fBankT[0];
332 }
333 if( aParticle == G4PionPlus::PionPlus() || aParticle == G4PionMinus::PionMinus() )
334 {
335 fTableT = fBankT[1];
336 }
337 if( aParticle == G4KaonPlus::KaonPlus() || aParticle == G4KaonMinus::KaonMinus() )
338 {
339 fTableT = fBankT[2];
340 }
341
342 G4double delta = std::abs(Tkin - fOldTkin)/(Tkin + fOldTkin);
343 G4double deltaMax = 1.e-2;
344
345 if ( delta < deltaMax ) iTkin = fInTkin;
346 else
347 {
348 for( iTkin = 0; iTkin < fEnergyBin; iTkin++)
349 {
350 if( Tkin < fEnergyVector->GetLowEdgeEnergy(iTkin) ) break;
351 }
352 }
353 if ( iTkin >= fEnergyBin ) iTkin = fEnergyBin-1; // Tkin is more then theMaxEnergy
354 if ( iTkin < 0 ) iTkin = 0; // against negative index, Tkin < theMinEnergy
355
356 fOldTkin = Tkin;
357 fInTkin = iTkin;
358
359 if (iTkin == fEnergyBin -1 || iTkin == 0 ) // the table edges
360 {
361 position = (*(*fTableT)(iTkin))(0)*G4UniformRand();
362
363 // G4cout<<"position = "<<position<<G4endl;
364
365 for(iTransfer = 0; iTransfer < fBinT-1; iTransfer++)
366 {
367 if( position >= (*(*fTableT)(iTkin))(iTransfer) ) break;
368 }
369 if (iTransfer >= fBinT-1) iTransfer = fBinT-2;
370
371 // G4cout<<"iTransfer = "<<iTransfer<<G4endl;
372
373 t = GetTransfer(iTkin, iTransfer, position);
374
375 // G4cout<<"t = "<<t<<G4endl;
376 }
377 else // Tkin inside between energy table edges
378 {
379 // position = (*(*fTableT)(iTkin))(fBinT-2)*G4UniformRand();
380 position = (*(*fTableT)(iTkin))(0)*G4UniformRand();
381
382 // G4cout<<"position = "<<position<<G4endl;
383
384 for(iTransfer = 0; iTransfer < fBinT-1; iTransfer++)
385 {
386 // if( position < (*(*fTableT)(iTkin))(iTransfer) ) break;
387 if( position >= (*(*fTableT)(iTkin))(iTransfer) ) break;
388 }
389 if (iTransfer >= fBinT-1) iTransfer = fBinT-2;
390
391 // G4cout<<"iTransfer = "<<iTransfer<<G4endl;
392
393 t2 = GetTransfer(iTkin, iTransfer, position);
394 return t2;
395 /*
396 G4double t1, E1, E2, W, W1, W2;
397 // G4cout<<"t2 = "<<t2<<G4endl;
398
399 E2 = fEnergyVector->GetLowEdgeEnergy(iTkin);
400
401 // G4cout<<"E2 = "<<E2<<G4endl;
402
403 iTkin--;
404
405 // position = (*(*fTableT)(iTkin))(fBinT-2)*G4UniformRand();
406
407 // G4cout<<"position = "<<position<<G4endl;
408
409 for(iTransfer = 0; iTransfer < fBinT-1; iTransfer++)
410 {
411 // if( position < (*(*fTableT)(iTkin))(iTransfer) ) break;
412 if( position >= (*(*fTableT)(iTkin))(iTransfer) ) break;
413 }
414 if (iTransfer >= fBinT-1) iTransfer = fBinT-2;
415
416 t1 = GetTransfer(iTkin, iTransfer, position);
417
418 // G4cout<<"t1 = "<<t1<<G4endl;
419
420 E1 = fEnergyVector->GetLowEdgeEnergy(iTkin);
421
422 // G4cout<<"E1 = "<<E1<<G4endl;
423
424 W = 1.0/(E2 - E1);
425 W1 = (E2 - Tkin)*W;
426 W2 = (Tkin - E1)*W;
427
428 t = W1*t1 + W2*t2;
429 */
430 }
431 return t;
432}

◆ SampleTest()

G4double G4hhElastic::SampleTest ( G4double tMin)

Definition at line 593 of file G4hhElastic.cc.

594{
595 G4int iTkin, iTransfer, iTmin;
597 // G4double qMin = std::sqrt(tMin);
598
599 fTableT = fBankT[0];
600 iTkin = 0;
601
602 for(iTransfer = 0; iTransfer < fBinT-1; iTransfer++)
603 {
604 // if( qMin <= (*fTableT)(iTkin)->GetLowEdgeEnergy(iTransfer) ) break;
605 if( tMin <= (*fTableT)(iTkin)->GetLowEdgeEnergy(iTransfer) ) break;
606 }
607 iTmin = iTransfer-1;
608 if(iTmin < 0 ) iTmin = 0;
609
610 position = (*(*fTableT)(iTkin))(iTmin)*G4UniformRand();
611
612 for( iTmin = 0; iTransfer < fBinT-1; iTransfer++)
613 {
614 if( position > (*(*fTableT)(iTkin))(iTransfer) ) break;
615 }
616 if (iTransfer >= fBinT-1) iTransfer = fBinT-2;
617
618 t = GetTransfer(iTkin, iTransfer, position);
619
620 return t;
621}

◆ SetAlphaP()

void G4hhElastic::SetAlphaP ( G4double a)
inline

Definition at line 184 of file G4hhElastic.hh.

184{fAlphaP = a;};

◆ SetBQ()

void G4hhElastic::SetBQ ( G4double b)
inline

Definition at line 173 of file G4hhElastic.hh.

173{fBQ = b;};

Referenced by SetParametersCMS().

◆ SetBq()

void G4hhElastic::SetBq ( G4double b)
inline

Definition at line 172 of file G4hhElastic.hh.

172{fBq = b;};

Referenced by SetParametersCMS().

◆ SetBqQ()

void G4hhElastic::SetBqQ ( G4double b)
inline

Definition at line 174 of file G4hhElastic.hh.

174{fBqQ = b;};

◆ SetCofF2()

void G4hhElastic::SetCofF2 ( G4double f)
inline

Definition at line 189 of file G4hhElastic.hh.

189{fCofF2 = f;};

Referenced by SetParametersCMS().

◆ SetCofF3()

void G4hhElastic::SetCofF3 ( G4double f)
inline

Definition at line 190 of file G4hhElastic.hh.

190{fCofF3 = f;};

Referenced by SetParametersCMS().

◆ SetEta()

void G4hhElastic::SetEta ( G4double E)
inline

Definition at line 188 of file G4hhElastic.hh.

188{fEta = E;};

Referenced by SetParametersCMS().

◆ SetImCof()

void G4hhElastic::SetImCof ( G4double a)
inline

Definition at line 185 of file G4hhElastic.hh.

185{fImCof = a;};

Referenced by SetParametersCMS().

◆ SetLambda()

void G4hhElastic::SetLambda ( G4double L)
inline

Definition at line 187 of file G4hhElastic.hh.

187{fLambda = L;};

Referenced by SetParametersCMS().

◆ SetParameters()

void G4hhElastic::SetParameters ( )
inline

Definition at line 271 of file G4hhElastic.hh.

272{
273 // masses
274
275 fMq = 0.36*CLHEP::GeV; // 0.441*GeV; // 0.36*GeV;
276 fMQ = 0.441*CLHEP::GeV;
277 fMff2 = 0.26*CLHEP::GeV*CLHEP::GeV; // 0.25*GeV*GeV; // 0.5*GeV*GeV;
278
279 fAlpha = 1./3.;
280 fBeta = 1. - fAlpha;
281
282 fGamma = 1./2.; // 1./3.; //
283 fDelta = 1. - fGamma; // 1./2.;
284
285 // radii and exp cof
286
287 fRA = 6.5/CLHEP::GeV; // 7.3/GeV; // 3.25/GeV; // 7./GeV; // 2./GeV; // 1./GeV;
288 fRq = 0.173*fRA; // 2.4/GeV;
289 fRQ = 0.316*fRA; // 1./GeV; // 2./GeV; // 1./GeV;
290 fRB = 6.5/CLHEP::GeV; // 7.3/GeV; // 3.25/GeV; // 7./GeV; // 2./GeV; // 1./GeV;
291 fRg = 0.173*fRA; // 2.4/GeV;
292 fRG = 0.173*fRA; // 1./GeV; // 2./GeV; // 1./GeV;
293
294 fAlphaP = 0.15/CLHEP::GeV/CLHEP::GeV; // 0.15/GeV/GeV;
295 fLambda = 0.25*fRA*fRA; // 0.25
296 fEta = 0.25*fRB*fRB; // 0.25
297 fImCof = 6.5;
298 fCofF2 = 1.;
299 fCofF3 = 1.;
300
301 fBq = 0.02; // 0.21; // 1./3.;
302 fBQ = 1. + fBq - 2*std::sqrt(fBq); // 1 - fBq; // 2./3.;
303 fBqQ = std::sqrt(fBq*fBQ);
304
305 fLambdaFF = 1.5/CLHEP::GeV/CLHEP::GeV; // 0.15/GeV/GeV;
306 fSo = 1.*CLHEP::GeV*CLHEP::GeV;
307 fQcof = 0.009*CLHEP::GeV;
308 fExpSlope = 19.9/CLHEP::GeV/CLHEP::GeV;
309}

Referenced by G4hhElastic(), G4hhElastic(), and G4hhElastic().

◆ SetParametersCMS()

void G4hhElastic::SetParametersCMS ( G4double plab)
inline

Definition at line 316 of file G4hhElastic.hh.

317{
318 G4int i;
319 G4double trMass = 900.*CLHEP::MeV, Tkin;
320 G4double sl, sh, ds, rAl, rAh, drA, rBl, rBh, drB, bql, bqh, dbq, bQl, bQh, dbQ, cIl, cIh, dcI;
321
322 Tkin = std::sqrt(fMassProj*fMassProj + plab*plab) - fMassProj;
323
324 G4DynamicParticle* theDynamicParticle = new G4DynamicParticle(fProjectile,
325 G4ParticleMomentum(0.,0.,1.),
326 Tkin);
327 fSigmaTot = fHadrNuclXsc->GetHadronNucleonXscNS( theDynamicParticle, fTarget );
328
329 delete theDynamicParticle;
330
331 fSpp = fMassProj*fMassProj + fMassTarg*fMassTarg + 2.*fMassTarg*std::sqrt(plab*plab + fMassProj*fMassProj);
332 fPcms = std::sqrt( (fSpp - fMassSum2)*(fSpp - fMassDif2)/4./fSpp);
333
334 G4double sCMS = std::sqrt(fSpp);
335
336 if( fMassProj > trMass ) // p,n,pb on p
337 {
338 this->SetCofF2(1.);
339 this->SetCofF3(1.);
340 fGamma = 1./3.; // 1./3.; //
341 fDelta = 1. - fGamma; // 1./2.;
342
343 if( sCMS <= theNuclNuclData[0][0]*CLHEP::GeV ) // low edge, as s=2.76754
344 {
345 this->SetRA(theNuclNuclData[0][1]/CLHEP::GeV,0.173,0.316);
346 this->SetRB(theNuclNuclData[0][2]/CLHEP::GeV,0.173,0.316);
347
348 this->SetBq(theNuclNuclData[0][3]);
349 this->SetBQ(theNuclNuclData[0][4]);
350 this->SetImCof(theNuclNuclData[0][5]);
351
352 this->SetLambda(0.25*this->GetRA()*this->GetRA());
353 this->SetEta(0.25*this->GetRB()*this->GetRB());
354 }
355 else if( sCMS >= theNuclNuclData[17][0]*CLHEP::GeV ) // high edge, as s=7000 ???
356 {
357 this->SetRA(theNuclNuclData[17][1]/CLHEP::GeV,0.173,0.316);
358 this->SetRB(theNuclNuclData[17][2]/CLHEP::GeV,0.173,0.316);
359
360 this->SetBq(theNuclNuclData[17][3]);
361 this->SetBQ(theNuclNuclData[17][4]);
362 this->SetImCof(theNuclNuclData[17][5]);
363
364 this->SetLambda(0.25*this->GetRA()*this->GetRA());
365 this->SetEta(0.25*this->GetRB()*this->GetRB());
366 }
367 else // in approximation between array points
368 {
369 for( i = 0; i < 19; i++ ) if( sCMS <= theNuclNuclData[i][0]*CLHEP::GeV ) break;
370 if( i == 0 ) i++;
371 if( i == 19 ) i--;
372
373 sl = theNuclNuclData[i-1][0]*CLHEP::GeV;
374 sh = theNuclNuclData[i][0]*CLHEP::GeV;
375 ds = (sCMS - sl)/(sh - sl);
376
377 rAl = theNuclNuclData[i-1][1]/CLHEP::GeV;
378 rAh = theNuclNuclData[i][1]/CLHEP::GeV;
379 drA = rAh - rAl;
380
381 rBl = theNuclNuclData[i-1][2]/CLHEP::GeV;
382 rBh = theNuclNuclData[i][2]/CLHEP::GeV;
383 drB = rBh - rBl;
384
385 bql = theNuclNuclData[i-1][3];
386 bqh = theNuclNuclData[i][3];
387 dbq = bqh - bql;
388
389 bQl = theNuclNuclData[i-1][4];
390 bQh = theNuclNuclData[i][4];
391 dbQ = bQh - bQl;
392
393 cIl = theNuclNuclData[i-1][5];
394 cIh = theNuclNuclData[i][5];
395 dcI = cIh - cIl;
396
397 this->SetRA(rAl+drA*ds,0.173,0.316);
398 this->SetRB(rBl+drB*ds,0.173,0.316);
399
400 this->SetBq(bql+dbq*ds);
401 this->SetBQ(bQl+dbQ*ds);
402 this->SetImCof(cIl+dcI*ds);
403
404 this->SetLambda(0.25*this->GetRA()*this->GetRA());
405 this->SetEta(0.25*this->GetRB()*this->GetRB());
406 }
407 }
408 else // pi, K
409 {
410 this->SetCofF2(1.);
411 this->SetCofF3(-1.);
412 fGamma = 1./2.; // 1./3.; //
413 fDelta = 1. - fGamma; // 1./2.;
414
415 if( sCMS <= thePiKaNuclData[0][0]*CLHEP::GeV ) // low edge, as s=2.76754
416 {
417 this->SetRA(thePiKaNuclData[0][1]/CLHEP::GeV,0.173,0.316);
418 this->SetRB(thePiKaNuclData[0][2]/CLHEP::GeV,0.173,0.173);
419
420 this->SetBq(thePiKaNuclData[0][3]);
421 this->SetBQ(thePiKaNuclData[0][4]);
422 this->SetImCof(thePiKaNuclData[0][5]);
423
424 this->SetLambda(0.25*this->GetRA()*this->GetRA());
425 this->SetEta(this->GetRB()*this->GetRB()/6.);
426 }
427 else if( sCMS >= thePiKaNuclData[7][0]*CLHEP::GeV ) // high edge, as s=7000 ???
428 {
429 this->SetRA(thePiKaNuclData[7][1]/CLHEP::GeV,0.173,0.316);
430 this->SetRB(thePiKaNuclData[7][2]/CLHEP::GeV,0.173,0.173);
431
432 this->SetBq(thePiKaNuclData[7][3]);
433 this->SetBQ(thePiKaNuclData[7][4]);
434 this->SetImCof(thePiKaNuclData[7][5]);
435
436 this->SetLambda(0.25*this->GetRA()*this->GetRA());
437 this->SetEta(this->GetRB()*this->GetRB()/6.);
438 }
439 else // in approximation between array points
440 {
441 for( i = 0; i < 8; i++ ) if( sCMS <= thePiKaNuclData[i][0]*CLHEP::GeV ) break;
442 if( i == 0 ) i++;
443 if( i == 8 ) i--;
444
445 sl = thePiKaNuclData[i-1][0]*CLHEP::GeV;
446 sh = thePiKaNuclData[i][0]*CLHEP::GeV;
447 ds = (sCMS - sl)/(sh - sl);
448
449 rAl = thePiKaNuclData[i-1][1]/CLHEP::GeV;
450 rAh = thePiKaNuclData[i][1]/CLHEP::GeV;
451 drA = rAh - rAl;
452
453 rBl = thePiKaNuclData[i-1][2]/CLHEP::GeV;
454 rBh = thePiKaNuclData[i][2]/CLHEP::GeV;
455 drB = rBh - rBl;
456
457 bql = thePiKaNuclData[i-1][3];
458 bqh = thePiKaNuclData[i][3];
459 dbq = bqh - bql;
460
461 bQl = thePiKaNuclData[i-1][4];
462 bQh = thePiKaNuclData[i][4];
463 dbQ = bQh - bQl;
464
465 cIl = thePiKaNuclData[i-1][5];
466 cIh = thePiKaNuclData[i][5];
467 dcI = cIh - cIl;
468
469 this->SetRA(rAl+drA*ds,0.173,0.316);
470 this->SetRB(rBl+drB*ds,0.173,0.173);
471
472 this->SetBq(bql+dbq*ds);
473 this->SetBQ(bQl+dbQ*ds);
474 this->SetImCof(cIl+dcI*ds);
475
476 this->SetLambda(0.25*this->GetRA()*this->GetRA());
477 this->SetEta(this->GetRB()*this->GetRB()/6.);
478 }
479 }
480 return;
481}
G4ThreeVector G4ParticleMomentum
G4double GetHadronNucleonXscNS(const G4DynamicParticle *dp, const G4ParticleDefinition *p)
void SetImCof(G4double a)
void SetRA(G4double rn, G4double pq, G4double pQ)
G4double GetRA()
void SetCofF2(G4double f)
void SetLambda(G4double L)
void SetEta(G4double E)
void SetRB(G4double rn, G4double pq, G4double pQ)
G4double GetRB()
void SetCofF3(G4double f)
void SetBq(G4double b)
void SetBQ(G4double b)

Referenced by BuildTableT(), and G4hhElastic().

◆ SetRA()

void G4hhElastic::SetRA ( G4double rn,
G4double pq,
G4double pQ )
inline

Definition at line 487 of file G4hhElastic.hh.

488{
489 fRA = rA;
490 fRq = fRA*pq;
491 fRQ = fRA*pQ;
492}

Referenced by SetParametersCMS().

◆ SetRB()

void G4hhElastic::SetRB ( G4double rn,
G4double pq,
G4double pQ )
inline

Definition at line 498 of file G4hhElastic.hh.

499{
500 fRB = rB;
501 fRg = fRB*pg;
502 fRG = fRB*pG;
503}

Referenced by SetParametersCMS().

◆ SetSigmaTot()

void G4hhElastic::SetSigmaTot ( G4double stot)
inline

Definition at line 164 of file G4hhElastic.hh.

164{fSigmaTot = stot;};

◆ SetSpp()

void G4hhElastic::SetSpp ( G4double spp)
inline

Definition at line 165 of file G4hhElastic.hh.

165{fSpp = spp;};

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