62 <<
" string model and a stage to de-excite the excited nuclear fragment."
64 <<
"The string model simulates the interaction of\n"
65 <<
"an incident hadron with a nucleus, forming \n"
66 <<
"excited strings, decays these strings into hadrons,\n"
67 <<
"and leaves an excited nucleus. \n"
68 <<
"<p>The string model:\n";
139 G4double targMass2 = targMass*targMass;
159 G4double B = sumE2 + targMass2 - Mx2 - plab2;
169 det = std::sqrt(det2);
170 qLong = (-b - det)/2./a;
171 eRetard = std::sqrt((plab-qLong)*(plab-qLong)+Mx2);
196 lvRetard.
boost(-bst);
200 G4double tMax = 4.0*momentumCMS*momentumCMS;
210 if( cost > 1.0 || cost < -1.0 )
217 sint = std::sqrt( (1.0-cost)*(1.0+cost) );
219 G4ThreeVector v1( sint*std::cos(phi), sint*std::sin(phi), cost);
223 G4LorentzVector lvRes( v1.
x(),v1.
y(),v1.
z(), std::sqrt( momentumCMS*momentumCMS + Mx2));
229 G4double eRecoil = lvTarg.
e() - targMass;
231 if( eRecoil > 100.*CLHEP::MeV )
238 else if ( Z == 2 &&
A == 3 ) { recoilDef =
G4He3::He3(); }
248 else if( eRecoil > 0.0 )
254 FindParticle(fPDGencoding);
270 for(
unsigned int i = 0; i < ddktv->size(); i++ )
274 ddktv->operator[](i)->Get4Momentum());
279 delete ddktv->operator[](i);
296 for( i = 0; i < 60; i++)
298 if( rand >= fProbMx[i][1] )
break;
300 if(i <= 0) Mx = fProbMx[0][0];
301 else if(i >= 59) Mx = fProbMx[59][0];
302 else Mx = fProbMx[i][0];
317 fPDGencoding = 12112;
324 fPDGencoding = 20213;
331 fPDGencoding = -20213;
336 fPDGencoding = 10323;
341 fPDGencoding = -10323;
344 else if ( Mx <= 1.55 )
374 fPDGencoding = 100321;
379 fPDGencoding = -100321;
393 fPDGencoding = 12116;
398 fPDGencoding = 10215;
405 fPDGencoding = -10215;
412 fPDGencoding = 30323;
417 fPDGencoding = -30323;
420 if(fPDGencoding == 0)
429 if ( myResonance ) Mx = myResonance->
GetPDGMass();
433 return Mx/CLHEP::GeV;
446 for( i = 0; i < 23; ++i)
448 if( Mx <= fMxBdata[i][0] )
break;
450 if( i <= 0 ) b = fMxBdata[0][1];
451 else if( i >= 22 ) b = fMxBdata[22][1];
452 else b = fMxBdata[i][1];
454 if( eTkin > rTkin ) b *= 1. +
G4Log(eTkin/rTkin);
460 t *= (CLHEP::GeV*CLHEP::GeV);
470const G4double G4LMsdGenerator::fProbMx[60][2] =
472 {1.000000e+00, 1.000000e+00},
473 {1.025000e+00, 1.000000e+00},
474 {1.050000e+00, 1.000000e+00},
475 {1.075000e+00, 1.000000e+00},
476 {1.100000e+00, 9.975067e-01},
477 {1.125000e+00, 9.934020e-01},
478 {1.150000e+00, 9.878333e-01},
479 {1.175000e+00, 9.805002e-01},
480 {1.200000e+00, 9.716846e-01},
481 {1.225000e+00, 9.604761e-01},
482 {1.250000e+00, 9.452960e-01},
483 {1.275000e+00, 9.265278e-01},
484 {1.300000e+00, 9.053632e-01},
485 {1.325000e+00, 8.775566e-01},
486 {1.350000e+00, 8.441969e-01},
487 {1.375000e+00, 8.076336e-01},
488 {1.400000e+00, 7.682520e-01},
489 {1.425000e+00, 7.238306e-01},
490 {1.450000e+00, 6.769306e-01},
491 {1.475000e+00, 6.303898e-01},
492 {1.500000e+00, 5.824632e-01},
493 {1.525000e+00, 5.340696e-01},
494 {1.550000e+00, 4.873736e-01},
495 {1.575000e+00, 4.422901e-01},
496 {1.600000e+00, 3.988443e-01},
497 {1.625000e+00, 3.583727e-01},
498 {1.650000e+00, 3.205405e-01},
499 {1.675000e+00, 2.856655e-01},
500 {1.700000e+00, 2.537508e-01},
501 {1.725000e+00, 2.247863e-01},
502 {1.750000e+00, 1.985798e-01},
503 {1.775000e+00, 1.750252e-01},
504 {1.800000e+00, 1.539777e-01},
505 {1.825000e+00, 1.352741e-01},
506 {1.850000e+00, 1.187157e-01},
507 {1.875000e+00, 1.040918e-01},
508 {1.900000e+00, 9.118422e-02},
509 {1.925000e+00, 7.980909e-02},
510 {1.950000e+00, 6.979378e-02},
511 {1.975000e+00, 6.097771e-02},
512 {2.000000e+00, 5.322122e-02},
513 {2.025000e+00, 4.639628e-02},
514 {2.050000e+00, 4.039012e-02},
515 {2.075000e+00, 3.510275e-02},
516 {2.100000e+00, 3.044533e-02},
517 {2.125000e+00, 2.633929e-02},
518 {2.150000e+00, 2.271542e-02},
519 {2.175000e+00, 1.951295e-02},
520 {2.200000e+00, 1.667873e-02},
521 {2.225000e+00, 1.416633e-02},
522 {2.250000e+00, 1.193533e-02},
523 {2.275000e+00, 9.950570e-03},
524 {2.300000e+00, 8.181515e-03},
525 {2.325000e+00, 6.601664e-03},
526 {2.350000e+00, 5.188025e-03},
527 {2.375000e+00, 3.920655e-03},
528 {2.400000e+00, 2.782246e-03},
529 {2.425000e+00, 1.757765e-03},
530 {2.450000e+00, 8.341435e-04},
531 {2.475000e+00, 0.000000e+00}
538const G4double G4LMsdGenerator::fMxBdata[23][2] =
double B(double temperature)
double A(double 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 G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
static G4Proton * Proton()
static G4Triton * Triton()