99 #ifdef debugFTFexictation
122 common.
S = Psum.
mag2();
123 common.
SqrtS = std::sqrt( common.
S );
126 G4bool toBePutOnMassShell =
false;
129 toBePutOnMassShell =
true;
147 toBePutOnMassShell =
true;
163 #ifdef debugFTFexictation
173 if ( Ptmp.pz() <= 0.0 )
return false;
181 #ifdef debugFTFexictation
185 if ( common.
SqrtS < SumMasses )
return false;
190 #ifdef debugFTFexictation
191 G4cout <<
"PZcms2 after toBePutOnMassShell " << common.
PZcms2 << G4endl;
193 if ( common.
PZcms2 < 0.0 )
return false;
196 if ( toBePutOnMassShell ) {
213 #ifdef debugFTFexictation
214 G4cout <<
"Start --------------------" << G4endl <<
"Proj M0 Mdif Mndif " << common.
M0projectile
227 theParameters->
GetProcProb( 4, ProjectileRapidity - TargetRapidity );
229 theParameters->
GetProcProb( 2, ProjectileRapidity - TargetRapidity );
231 theParameters->
GetProcProb( 3, ProjectileRapidity - TargetRapidity );
233 #ifdef debugFTFexictation
234 G4cout <<
"Proc Probs " << QeNoExc <<
" " << QeExc <<
" "
236 <<
"ProjectileRapidity " << ProjectileRapidity <<
G4endl;
241 if ( QeExc + QeNoExc != 0.0 ) {
242 common.
ProbExc = QeExc / ( QeExc + QeNoExc );
244 if ( 1.0 - QeExc - QeNoExc > 0.0 ) {
248 #ifdef debugFTFexictation
249 G4cout <<
"Proc Probs " << QeNoExc <<
" " << QeExc <<
" "
251 <<
"ProjectileRapidity " << ProjectileRapidity <<
G4endl;
255 G4int returnCode = 1;
258 theElastic, common );
261 G4bool returnResult =
false;
262 if ( returnCode == 0 ) {
264 }
else if ( returnCode == 1 ) {
267 #ifdef debugFTFexictation
268 G4cout <<
"Excitation --------------------" << G4endl
269 <<
"Proj M0 MdMin MndMin " << common.
M0projectile <<
" "
283 #ifdef debugFTFexictation
301 if ( returnResult ) {
307 #ifdef debugFTFexictation
335 G4int returnCode = 99;
339 G4double MtestPr = 0.0, MtestTr = 0.0;
341 #ifdef debugFTFexictation
342 G4cout <<
"Q exchange --------------------------" <<
G4endl;
344 G4int NewProjCode = 0, NewTargCode = 0, ProjQ1 = 0, ProjQ2 = 0, ProjQ3 = 0;
352 G4int TargQ1 = 0, TargQ2 = 0, TargQ3 = 0;
354 #ifdef debugFTFexictation
355 G4cout <<
"Proj Quarks " << ProjQ1 <<
" " << ProjQ2 <<
" " << ProjQ3 << G4endl
356 <<
"Targ Quarks " << TargQ1 <<
" " << TargQ2 <<
" " << TargQ3 <<
G4endl;
360 G4int ProjExchangeQ = 0, TargExchangeQ = 0;
363 G4bool isProjQ1Quark =
false;
364 ProjExchangeQ = ProjQ2;
366 isProjQ1Quark =
true;
367 ProjExchangeQ = ProjQ1;
370 G4int NpossibleStates = 0;
371 if ( ProjExchangeQ != TargQ1 ) NpossibleStates++;
372 if ( ProjExchangeQ != TargQ2 ) NpossibleStates++;
373 if ( ProjExchangeQ != TargQ3 ) NpossibleStates++;
374 G4int Nsampled = G4RandFlat::shootInt(
G4long( NpossibleStates ) ) + 1;
376 if ( ProjExchangeQ != TargQ1 ) {
377 if ( ++NpossibleStates == Nsampled ) {
378 TargExchangeQ = TargQ1; TargQ1 = ProjExchangeQ;
379 isProjQ1Quark ? ProjQ1 = TargExchangeQ : ProjQ2 = TargExchangeQ;
382 if ( ProjExchangeQ != TargQ2 ) {
383 if ( ++NpossibleStates == Nsampled ) {
384 TargExchangeQ = TargQ2; TargQ2 = ProjExchangeQ;
385 isProjQ1Quark ? ProjQ1 = TargExchangeQ : ProjQ2 = TargExchangeQ;
388 if ( ProjExchangeQ != TargQ3 ) {
389 if ( ++NpossibleStates == Nsampled ) {
390 TargExchangeQ = TargQ3; TargQ3 = ProjExchangeQ;
391 isProjQ1Quark ? ProjQ1 = TargExchangeQ : ProjQ2 = TargExchangeQ;
394 #ifdef debugFTFexictation
395 G4cout <<
"Exchanged Qs in Pr Tr " << ProjExchangeQ <<
" " << TargExchangeQ <<
G4endl;
398 G4int aProjQ1 = std::abs( ProjQ1 ), aProjQ2 = std::abs( ProjQ2 );
399 G4bool ProjExcited =
false;
400 const G4int maxNumberOfAttempts = 50;
402 while ( attempts++ < maxNumberOfAttempts ) {
406 if ( aProjQ1 == aProjQ2 ) {
407 if ( aProjQ1 != 3 ) {
422 if ( aProjQ1 > aProjQ2 ) {
423 NewProjCode = aProjQ1*100 + aProjQ2*10 + 1;
425 NewProjCode = aProjQ2*100 + aProjQ1*10 + 1;
428 #ifdef debugFTFexictation
438 G4int value = ProjQ1, absValue = aProjQ1, Qquarks = 0;
439 for (
G4int iQuark = 0; iQuark < 2; iQuark++ ) {
441 value = ProjQ2; absValue = aProjQ2;
443 if ( absValue == 2 ) {
446 Qquarks -= value/absValue;
449 if ( Qquarks < 0 ) NewProjCode *= -1;
450 #ifdef debugFTFexictation
451 G4cout <<
"NewProjCode +2 or 0 " << NewProjCode <<
G4endl;
452 G4cout<<
"+++++++++++++++++++++++++++++++++++++++"<<
G4endl;
454 G4cout<<
"+++++++++++++++++++++++++++++++++++++++"<<
G4endl;
459 if ( ! TestParticle )
continue;
464 #ifdef debugFTFexictation
467 <<
"MtestPart MtestPart0 "<<MtestPr<<
" "<<TestParticle->
GetPDGMass()<<G4endl
468 <<
"M0projectile projectile PDGMass " << common.
M0projectile <<
" "
474 #ifdef debugFTFexictation
475 G4cout <<
"New TrQ " << TargQ1 <<
" " << TargQ2 <<
" " << TargQ3 << G4endl
476 <<
"NewTargCode " << NewTargCode <<
G4endl;
478 if ( TargQ1 != TargQ2 && TargQ1 != TargQ3 && TargQ2 != TargQ3 ) {
484 }
else if ( TargQ1 == TargQ2 && TargQ1 == TargQ3 ) {
485 NewTargCode += 2; ProjExcited =
true;
488 NewTargCode += 2; ProjExcited =
true;
490 }
else if ( ! ProjExcited &&
497 if ( ! TestParticle )
continue;
498 #ifdef debugFTFexictation
505 if ( common.
SqrtS > MtestPr + MtestTr )
break;
508 if ( attempts >= maxNumberOfAttempts )
return returnCode;
513 #ifdef debugFTFexictation
523 #ifdef debugFTFexictation
533 G4bool isProjectileExchangedQ =
false;
534 G4int firstQ = TargQ1, secondQ = TargQ2, thirdQ = TargQ3;
535 G4int otherFirstQ = ProjQ1, otherSecondQ = ProjQ2, otherThirdQ = ProjQ3;
537 isProjectileExchangedQ =
true;
538 firstQ = ProjQ1; secondQ = ProjQ2; thirdQ = ProjQ3;
539 otherFirstQ = TargQ1; otherSecondQ = TargQ2; otherThirdQ = TargQ3;
543 G4int exchangedQ = 0;
545 if ( Ksi < 0.333333 ) {
547 }
else if ( 0.333333 <= Ksi && Ksi < 0.666667 ) {
548 exchangedQ = secondQ;
552 #ifdef debugFTFexictation
553 G4cout <<
"Exchange Qs isProjectile Q " << isProjectileExchangedQ <<
" " << exchangedQ <<
" ";
559 const G4int MaxCount = 100;
560 G4int count = 0, otherExchangedQ = 0;
562 if ( exchangedQ != otherFirstQ ||
G4UniformRand() < probSame ) {
563 otherExchangedQ = otherFirstQ; otherFirstQ = exchangedQ; exchangedQ = otherExchangedQ;
565 if ( exchangedQ != otherSecondQ ||
G4UniformRand() < probSame ) {
566 otherExchangedQ = otherSecondQ; otherSecondQ = exchangedQ; exchangedQ = otherExchangedQ;
569 otherExchangedQ = otherThirdQ; otherThirdQ = exchangedQ; exchangedQ = otherExchangedQ;
573 }
while ( otherExchangedQ == 0 && ++count < MaxCount );
574 if ( count >= MaxCount )
return returnCode;
577 if ( Ksi < 0.333333 ) {
579 }
else if ( 0.333333 <= Ksi && Ksi < 0.666667 ) {
580 secondQ = exchangedQ;
584 if ( isProjectileExchangedQ ) {
585 ProjQ1 = firstQ; ProjQ2 = secondQ; ProjQ3 = thirdQ;
586 TargQ1 = otherFirstQ; TargQ2 = otherSecondQ; TargQ3 = otherThirdQ;
588 TargQ1 = firstQ; TargQ2 = secondQ; TargQ3 = thirdQ;
589 ProjQ1 = otherFirstQ; ProjQ2 = otherSecondQ; ProjQ3 = otherThirdQ;
591 #ifdef debugFTFexictation
592 G4cout <<
"Exchange Qs Pr Tr " << ( isProjectileExchangedQ ? exchangedQ : otherExchangedQ )
593 <<
" " << ( isProjectileExchangedQ ? otherExchangedQ : exchangedQ ) <<
G4endl;
602 for (
G4int iHadron = 0; iHadron < 2; iHadron++ ) {
604 G4int codeQ1 = ProjQ1, codeQ2 = ProjQ2, codeQ3 = ProjQ3, newHadCode = NewProjCode;
607 if ( iHadron == 1 ) {
608 codeQ1 = TargQ1, codeQ2 = TargQ2, codeQ3 = TargQ3, newHadCode = NewTargCode;
612 if ( codeQ1 == codeQ2 && codeQ1 == codeQ3 ) {
614 }
else if ( isHadronADelta ) {
629 if ( iHadron == 0 ) {
630 NewProjCode = newHadCode;
632 NewTargCode = newHadCode;
635 #ifdef debugFTFexictation
636 G4cout <<
"NewProjCode NewTargCode " << NewProjCode <<
" " << NewTargCode <<
G4endl;
649 G4int firstHadronCode = NewTargCode, secondHadronCode = NewProjCode;
651 G4bool isFirstTarget =
true;
654 firstHadron = projectile; secondHadron =
target;
655 firstHadronCode = NewProjCode; secondHadronCode = NewTargCode;
657 isFirstTarget =
false;
659 G4double Mtest1st = 0.0, Mtest2nd = 0.0, Mmin1st = 0.0, Mmin2nd = 0.0;
660 for (
int iSamplingCase = 0; iSamplingCase < 2; iSamplingCase++ ) {
662 G4int aHadronCode = firstHadronCode;
663 if ( iSamplingCase == 1 ) {
664 aHadron = secondHadron; aHadronCode = secondHadronCode; massConstraint = Mtest1st;
666 G4double MtestHadron = 0.0, MminHadron = 0.0;
669 if ( ! TestParticle )
return returnCode;
671 if ( common.
SqrtS - massConstraint < MminHadron )
return returnCode;
675 const G4int maxNumberOfAttempts = 50;
677 while ( attempts < maxNumberOfAttempts ) {
681 if ( common.
SqrtS < MtestHadron + massConstraint ) {
687 if ( attempts >= maxNumberOfAttempts )
return returnCode;
690 if ( iSamplingCase == 0 ) {
691 Mtest1st = MtestHadron; Mmin1st = MminHadron;
693 Mtest2nd = MtestHadron; Mmin2nd = MminHadron;
696 if ( isFirstTarget ) {
697 MtestTr = Mtest1st; MtestPr = Mtest2nd;
700 MtestTr = Mtest2nd; MtestPr = Mtest1st;
704 if ( MtestPr != 0.0 ) {
710 if ( MtestTr != 0.0 ) {
726 #ifdef debugFTFexictation
727 G4cout <<
"At the end// NewProjCode " << NewProjCode << G4endl
728 <<
"At the end// NewTargCode " << NewTargCode << G4endl
730 << common.
SqrtS << G4endl
732 << common.
SqrtS << G4endl
733 <<
"PZcms2 after the change " << common.
PZcms2 << G4endl << G4endl;
735 if ( common.
PZcms2 < 0.0 )
return returnCode;
744 #ifdef debugFTFexictation
745 G4cout <<
"Proj Targ and Proj+Targ in CMS" << G4endl << common.
Pprojectile << G4endl
758 #ifdef debugFTFexictation
759 G4cout <<
"Make elastic scattering of new hadrons" <<
G4endl;
766 #ifdef debugFTFexictation
767 G4cout <<
"Result of el. scatt " << Result << G4endl <<
"Proj Targ and Proj+Targ in Lab"
772 if ( Result ) returnCode = 0;
776 #ifdef debugFTFexictation
787 return returnCode = 1;
799 G4bool isProjectileDiffraction =
false;
801 isProjectileDiffraction =
true;
802 #ifdef debugFTFexictation
810 #ifdef debugFTFexictation
820 G4bool loopCondition =
true;
821 G4int whilecount = 0;
825 if ( whilecount > 1000 ) {
836 if ( common.
PZcms2 < 0.0 )
return false;
841 if ( isProjectileDiffraction ) {
855 if ( common.
PZcms2 < 0.0 )
continue;
858 if ( isProjectileDiffraction ) {
884 }
while ( loopCondition );
887 if ( isProjectileDiffraction ) {
908 #ifdef debugFTFexictation
911 G4int whilecount = 0;
915 if ( whilecount > 1000 ) {
930 if ( common.
PZcms2 < 0.0 )
return false;
945 if ( common.
PZcms2 < 0.0 )
continue;
966 #ifdef debugFTFexictation
967 G4cout <<
"Sampled: Mpr, MdifPr, Mtr, MdifTr "<<G4endl
1000 if ( start == NULL ) {
1001 G4cout <<
" G4FTFModel::String() Error: No start parton found" <<
G4endl;
1002 FirstString = 0; SecondString = 0;
1007 if ( end == NULL ) {
1008 G4cout <<
" G4FTFModel::String() Error: No end parton found" <<
G4endl;
1009 FirstString = 0; SecondString = 0;
1030 if ( isProjectile ) {
1063 if ( Pt > 500.0*
MeV ) {
1067 x3 = 1.0 - Pt/W *
G4Exp(-Y );
1071 if ( PDGcode_startQ < 3 ) Mass_startQ = 325.0*
MeV;
1072 if ( PDGcode_startQ == 3 ) Mass_startQ = 500.0*
MeV;
1073 if ( PDGcode_startQ == 4 ) Mass_startQ = 1600.0*
MeV;
1075 if ( PDGcode_endQ < 3 ) Mass_endQ = 325.0*
MeV;
1076 if ( PDGcode_endQ == 3 ) Mass_endQ = 500.0*
MeV;
1077 if ( PDGcode_endQ == 4 ) Mass_endQ = 1600.0*
MeV;
1079 G4double P2_1 = W2*x1*x1/4.0 - Mass_endQ*Mass_endQ;
1080 G4double P2_3 = W2*x3*x3/4.0 - Mass_startQ*Mass_startQ;
1082 if ( P2_1 <= 0.0 || P2_3 <= 0.0 ) {
1088 G4double CosT12 = ( P2_3 - P2_1 - P2_2 ) / (2.0*P_1*P_2);
1089 G4double CosT13 = ( P2_2 - P2_1 - P2_3 ) / (2.0*P_1*P_3);
1091 if ( std::abs( CosT12 ) > 1.0 || std::abs( CosT13 ) > 1.0 ) {
1095 Pt = P_2 * std::sqrt( 1.0 - CosT12*CosT12 );
1099 Pstart.
setE( x3*W/2.0 );
1101 Pend.
setE( x1*W/2.0 );
1104 if ( Pkink.
getZ() > 0.0 ) {
1106 PkinkQ1 = XkQ*Pkink;
1108 PkinkQ1 = (1.0 - XkQ)*Pkink;
1112 PkinkQ1 = (1.0 - XkQ)*Pkink;
1114 PkinkQ1 = XkQ*Pkink;
1118 PkinkQ2 = Pkink - PkinkQ1;
1121 std::sqrt(
sqr(
sqr(x1) -
sqr(x3) ) +
sqr( 2.0*x1*x3*CosT13 ) );
1122 G4double Psi = std::acos( Cos2Psi );
1125 if ( isProjectile ) {
1151 std::vector< G4double > QuarkProbabilitiesAtGluonSplitUp =
1155 for (
unsigned int Iq = 0; Iq < 3; Iq++ ) {
1157 if ( Ksi > QuarkProbabilitiesAtGluonSplitUp[Iq] ) QuarkInGluon++;
1182 G4int absPDGcode = 1500;
1189 if ( absPDGcode < 1000 ) {
1190 if ( isProjectile ) {
1219 if ( isProjectile ) {
1271 if ( Momentum > 0.0 ) {
1277 tmp.
set( 0.0, 0.0, 1.0 );
1281 if ( isProjectile ) {
1282 Pstart1 *= (-1.0)*Minus/2.0;
1283 Pend1 *= (+1.0)*Plus /2.0;
1285 Pstart1 *= (+1.0)*Plus/ 2.0;
1286 Pend1 *= (-1.0)*Minus/2.0;
1290 Momentum = Pstart1.
vect().
mag();
1292 Pstart1.
setT( Momentum );
1295 Momentum = Pend1.
vect().
mag();
1297 Pend1.
setT( Momentum );
1312 <<
" generated string momenta: Diquark " << end->
Get4Momentum() <<
"mass : "
1314 << Pstart + Pend <<
G4endl <<
" Original "
1328 if ( Pmin <= 0.0 || range <= 0.0 ) {
1329 G4cout <<
" Pmin, range : " << Pmin <<
" , " << range <<
G4endl;
1331 "G4DiffractiveExcitation::ChooseP : Invalid arguments " );
1344 if ( AveragePt2 <= 0.0 ) {
1348 (
G4Exp( -maxPtSquare/AveragePt2 ) - 1.0 ) );
1352 return G4ThreeVector( Pt * std::cos( phi ), Pt * std::sin( phi ), 0.0 );
1360 const G4int maxNumberOfLoops = 10000;
1361 G4int loopCounter = 0;
1364 yf = z*z +
sqr(1.0 - z);
1366 ++loopCounter < maxNumberOfLoops );
1367 if ( loopCounter >= maxNumberOfLoops ) {
1368 z = 0.5*(zmin + zmax);
1377 G4int absIdPDG = std::abs( IdPDG );
1378 if ( ! ( absIdPDG == 111 || absIdPDG == 221 || absIdPDG == 331 ) ) {
1380 Q1 = absIdPDG / 100;
1381 Q2 = (absIdPDG % 100) / 10;
1383 if ( IdPDG < 0 ) anti *= -1;
1389 else { Q1 = 2; Q2 = -2; }
1400 Q2 = (IdPDG % 1000) / 100;
1401 Q3 = (IdPDG % 100) / 10;
1414 }
else if ( Q3 > Q1 ) {
1424 G4int NewCode = Q1*1000 + Q2*100 + Q3*10 + 2;
1433 "G4DiffractiveExcitation copy contructor not meant to be called" );
1441 "G4DiffractiveExcitation = operator not meant to be called" );
1450 "G4DiffractiveExcitation == operator not meant to be called" );
1458 "G4DiffractiveExcitation != operator not meant to be called" );
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
void SetStatus(const G4int aStatus)
G4double GetProcProb(const G4int ProcN, const G4double y)
void set(double x, double y, double z)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double GetPDGWidth() const
G4int GetPDGiIsospin() const
const G4ParticleDefinition * GetDefinition() const
G4double GetProbOfSameQuarkExchange()
virtual G4bool ExciteParticipants(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, G4FTFParameters *theParameters, G4ElasticHNScattering *theElastic) const
const G4DiffractiveExcitation & operator=(const G4DiffractiveExcitation &right)
HepLorentzVector & transform(const HepRotation &)
G4double GetAvaragePt2ofElasticScattering()
CLHEP::Hep3Vector G4ThreeVector
G4double GetProjMinDiffMass()
G4double TargetNonDiffStateMinMass2
int operator!=(const G4DiffractiveExcitation &right) const
G4ThreeVector GaussianPt(G4double AveragePt2, G4double maxPtSquare) const
G4double ChooseP(G4double Pmin, G4double Pmax) const
G4double ProjectileDiffStateMinMass2
void UnpackBaryon(G4int IdPDG, G4int &Q1, G4int &Q2, G4int &Q3) const
G4double ProbOfDiffraction
static G4ParticleTable * GetParticleTable()
G4ParticleDefinition * GetDefinition()
G4double ProbProjectileDiffraction
static constexpr double MeV
Float_t x1[n_points_granero]
const G4String & GetParticleSubType() const
G4double GetTarMinNonDiffMass()
const G4String & GetParticleName() const
G4double GetProbLogDistrPrD()
const G4String & GetParticleType() const
G4double ProjectileDiffStateMinMass
G4double GetProbLogDistr()
virtual G4bool ElasticScattering(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, G4FTFParameters *theParameters) const
static int FASTCALL common(PROLOG_STATE *state, int tok)
G4double SampleMass(const G4double poleMass, const G4double gamma, const G4double minMass, const G4double maxMass) const
virtual G4Parton * GetNextParton()=0
G4double GetDeltaProbAtQuarkExchange()
G4int NewNucleonId(G4int Q1, G4int Q2, G4int Q3) const
G4double ProjectileNonDiffStateMinMass
G4double GetPDGMass() const
int operator==(const G4DiffractiveExcitation &right) const
G4double G4Log(G4double x)
void SetTimeOfCreation(G4double aTime)
G4bool ExciteParticipants_doDiffraction(G4VSplitableHadron *projectile, G4VSplitableHadron *target, G4FTFParameters *theParameters, CommonVariables &common) const
CLHEP::HepLorentzRotation G4LorentzRotation
virtual void CreateStrings(G4VSplitableHadron *aHadron, G4bool isProjectile, G4ExcitedString *&FirstString, G4ExcitedString *&SecondString, G4FTFParameters *theParameters) const
G4double ProbTargetDiffraction
static G4Pow * GetInstance()
G4double GetProjMinNonDiffMass()
G4double GetQuarkFractionOfKink(G4double zmin, G4double zmax) const
HepLorentzRotation & rotateZ(double delta)
const XML_Char int const XML_Char * value
const G4ThreeVector & GetPosition() const
G4double powA(G4double A, G4double y) const
const G4ParticleDefinition const G4Material *G4double range
static constexpr double twopi
HepLorentzRotation inverse() const
G4DiffractiveExcitation()
G4LorentzVector Pprojectile
G4int GetSoftCollisionCount()
void SetPosition(const G4ThreeVector &aPosition)
void SetDefinition(const G4ParticleDefinition *aDefinition)
G4int absProjectilePDGcode
G4double ProjectileNonDiffStateMinMass2
G4double TargetNonDiffStateMinMass
G4bool ExciteParticipants_doNonDiffraction(G4VSplitableHadron *projectile, G4VSplitableHadron *target, G4FTFParameters *theParameters, CommonVariables &common) const
G4int GetPDGEncoding() const
G4GLOB_DLL std::ostream G4cout
Hep3Vector boostVector() const
const G4LorentzVector & Get4Momentum() const
virtual ~G4DiffractiveExcitation()
G4int ExciteParticipants_doChargeExchange(G4VSplitableHadron *projectile, G4VSplitableHadron *target, G4FTFParameters *theParameters, G4ElasticHNScattering *theElastic, CommonVariables &common) const
static constexpr double pi
CLHEP::HepLorentzVector G4LorentzVector
HepLorentzRotation & rotateY(double delta)
G4LorentzVector Qmomentum
G4double TargetDiffStateMinMass
const G4LorentzVector & Get4Momentum() const
G4double TargetDiffStateMinMass2
void UnpackMeson(G4int IdPDG, G4int &Q1, G4int &Q2) const
std::vector< G4double > GetQuarkProbabilitiesAtGluonSplitUp()
G4double GetTimeOfCreation()
void Set4Momentum(const G4LorentzVector &a4Momentum)
void Set4Momentum(const G4LorentzVector &aMomentum)
void IncrementCollisionCount(G4int aCount)
G4double GetTarMinDiffMass()
G4double GetMinimumMass(const G4ParticleDefinition *p) const