64 <<
" string model and a stage to de-excite the excited nuclear fragment."
66 <<
"The string model simulates the interaction of\n"
67 <<
"an incident hadron with a nucleus, forming \n"
68 <<
"excited strings, decays these strings into hadrons,\n"
69 <<
"and leaves an excited nucleus. \n"
70 <<
"<p>The string model:\n";
141 G4double targMass2 = targMass*targMass;
161 G4double B = sumE2 + targMass2 - Mx2 - plab2;
171 det = std::sqrt(det2);
172 qLong = (-b - det)/2./a;
173 eRetard = std::sqrt((plab-qLong)*(plab-qLong)+Mx2);
198 lvRetard.
boost(-bst);
202 G4double tMax = 4.0*momentumCMS*momentumCMS;
212 if( cost > 1.0 || cost < -1.0 )
219 sint = std::sqrt( (1.0-cost)*(1.0+cost) );
221 G4ThreeVector v1( sint*std::cos(phi), sint*std::sin(phi), cost);
225 G4LorentzVector lvRes( v1.
x(),v1.
y(),v1.
z(), std::sqrt( momentumCMS*momentumCMS + Mx2));
231 G4double eRecoil = lvTarg.
e() - targMass;
233 if( eRecoil > 100.*CLHEP::MeV )
240 else if ( Z == 2 &&
A == 3 ) { recoilDef =
G4He3::He3(); }
250 else if( eRecoil > 0.0 )
256 FindParticle(fPDGencoding);
272 for(
unsigned int i = 0; i < ddktv->size(); i++ )
276 ddktv->operator[](i)->Get4Momentum());
281 delete ddktv->operator[](i);
298 for( i = 0; i < 60; i++)
300 if( rand >= fProbMx[i][1] )
break;
302 if(i <= 0) Mx = fProbMx[0][0];
303 else if(i >= 59) Mx = fProbMx[59][0];
304 else Mx = fProbMx[i][0];
319 fPDGencoding = 12112;
326 fPDGencoding = 20213;
333 fPDGencoding = -20213;
338 fPDGencoding = 10323;
343 fPDGencoding = -10323;
346 else if ( Mx <= 1.55 )
376 fPDGencoding = 100321;
381 fPDGencoding = -100321;
395 fPDGencoding = 12116;
400 fPDGencoding = 10215;
407 fPDGencoding = -10215;
414 fPDGencoding = 30323;
419 fPDGencoding = -30323;
422 if(fPDGencoding == 0)
431 if ( myResonance ) Mx = myResonance->
GetPDGMass();
435 return Mx/CLHEP::GeV;
448 for( i = 0; i < 23; ++i)
450 if( Mx <= fMxBdata[i][0] )
break;
452 if( i <= 0 ) b = fMxBdata[0][1];
453 else if( i >= 22 ) b = fMxBdata[22][1];
454 else b = fMxBdata[i][1];
456 if( eTkin > rTkin ) b *= 1. +
G4Log(eTkin/rTkin);
462 t *= (CLHEP::GeV*CLHEP::GeV);
472const G4double G4LMsdGenerator::fProbMx[60][2] =
474 {1.000000e+00, 1.000000e+00},
475 {1.025000e+00, 1.000000e+00},
476 {1.050000e+00, 1.000000e+00},
477 {1.075000e+00, 1.000000e+00},
478 {1.100000e+00, 9.975067e-01},
479 {1.125000e+00, 9.934020e-01},
480 {1.150000e+00, 9.878333e-01},
481 {1.175000e+00, 9.805002e-01},
482 {1.200000e+00, 9.716846e-01},
483 {1.225000e+00, 9.604761e-01},
484 {1.250000e+00, 9.452960e-01},
485 {1.275000e+00, 9.265278e-01},
486 {1.300000e+00, 9.053632e-01},
487 {1.325000e+00, 8.775566e-01},
488 {1.350000e+00, 8.441969e-01},
489 {1.375000e+00, 8.076336e-01},
490 {1.400000e+00, 7.682520e-01},
491 {1.425000e+00, 7.238306e-01},
492 {1.450000e+00, 6.769306e-01},
493 {1.475000e+00, 6.303898e-01},
494 {1.500000e+00, 5.824632e-01},
495 {1.525000e+00, 5.340696e-01},
496 {1.550000e+00, 4.873736e-01},
497 {1.575000e+00, 4.422901e-01},
498 {1.600000e+00, 3.988443e-01},
499 {1.625000e+00, 3.583727e-01},
500 {1.650000e+00, 3.205405e-01},
501 {1.675000e+00, 2.856655e-01},
502 {1.700000e+00, 2.537508e-01},
503 {1.725000e+00, 2.247863e-01},
504 {1.750000e+00, 1.985798e-01},
505 {1.775000e+00, 1.750252e-01},
506 {1.800000e+00, 1.539777e-01},
507 {1.825000e+00, 1.352741e-01},
508 {1.850000e+00, 1.187157e-01},
509 {1.875000e+00, 1.040918e-01},
510 {1.900000e+00, 9.118422e-02},
511 {1.925000e+00, 7.980909e-02},
512 {1.950000e+00, 6.979378e-02},
513 {1.975000e+00, 6.097771e-02},
514 {2.000000e+00, 5.322122e-02},
515 {2.025000e+00, 4.639628e-02},
516 {2.050000e+00, 4.039012e-02},
517 {2.075000e+00, 3.510275e-02},
518 {2.100000e+00, 3.044533e-02},
519 {2.125000e+00, 2.633929e-02},
520 {2.150000e+00, 2.271542e-02},
521 {2.175000e+00, 1.951295e-02},
522 {2.200000e+00, 1.667873e-02},
523 {2.225000e+00, 1.416633e-02},
524 {2.250000e+00, 1.193533e-02},
525 {2.275000e+00, 9.950570e-03},
526 {2.300000e+00, 8.181515e-03},
527 {2.325000e+00, 6.601664e-03},
528 {2.350000e+00, 5.188025e-03},
529 {2.375000e+00, 3.920655e-03},
530 {2.400000e+00, 2.782246e-03},
531 {2.425000e+00, 1.757765e-03},
532 {2.450000e+00, 8.341435e-04},
533 {2.475000e+00, 0.000000e+00}
540const G4double G4LMsdGenerator::fMxBdata[23][2] =
G4double B(G4double temperature)
G4double G4Log(G4double x)
CLHEP::Hep3Vector G4ThreeVector
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
static G4Deuteron * Deuteron()
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
void SetEnergyChange(G4double anEnergy)
void SetMomentumChange(const G4ThreeVector &aV)
void SetLocalEnergyDeposit(G4double aE)
G4double GetTotalMomentum() const
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4HadFinalState theParticleChange
const G4String & GetModelName() const
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
static G4KaonMinus * KaonMinus()
static G4KaonPlus * KaonPlus()
G4KineticTrackVector * Decay()
void ModelDescription(std::ostream &outFile) const
G4HadFinalState * ApplyYourself(const G4HadProjectile &thePrimary, G4Nucleus &theNucleus)
G4LMsdGenerator(const G4String &name="LMsdGenerator")
G4double SampleMx(const G4HadProjectile *aParticle)
G4bool IsApplicable(const G4HadProjectile &thePrimary, G4Nucleus &theNucleus)
G4double SampleT(const G4HadProjectile *aParticle, G4double Mx)
static G4Neutron * Neutron()
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double GetPDGMass() const
G4IonTable * GetIonTable() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
static G4int GetModelID(const G4int modelIndex)
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
static G4Proton * Proton()
static G4Triton * Triton()