Import Geant4 10.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2017-12-08 12:52:30 +01:00
parent 98e455a940
commit fc6af9e721
2166 changed files with 276760 additions and 100873 deletions
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4FTFAnnihilation.cc 102029 2016-12-16 14:53:08Z gcosmo $
// $Id: G4FTFAnnihilation.cc 107525 2017-11-21 07:16:52Z gcosmo $
//
// ------------------------------------------------------------
@@ -66,7 +66,8 @@
//#include "G4ios.hh"
//#include "UZHI_diffraction.hh"
#include "G4ParticleTable.hh" // Uzhi March 2016
#include "G4ParticleTable.hh"
//============================================================================
//#define debugFTFannih
@@ -89,7 +90,7 @@ G4bool G4FTFAnnihilation::Annihilate( G4VSplitableHadron* projectile,
G4VSplitableHadron*& AdditionalString,
G4FTFParameters* theParameters ) const {
//theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016 ??? for other Anti_bar annih.
//theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016 ? for other Anti_bar annih.
#ifdef debugFTFannih
G4cout << "---------------------------- Annihilation----------------" << G4endl;
@@ -99,7 +100,7 @@ G4bool G4FTFAnnihilation::Annihilate( G4VSplitableHadron* projectile,
G4LorentzVector Pprojectile = projectile->Get4Momentum();
G4int ProjectilePDGcode = projectile->GetDefinition()->GetPDGEncoding();
if ( ProjectilePDGcode > 0 ) {
target->SetStatus( 3 ); // 2->3 Uzhi Oct 2014
target->SetStatus( 3 ); // 2->3
return false;
}
//G4double M0projectile = Pprojectile.mag();
@@ -142,6 +143,17 @@ G4bool G4FTFAnnihilation::Annihilate( G4VSplitableHadron* projectile,
G4LorentzRotation toLab( toCms.inverse() );
G4double SqrtS = std::sqrt( S );
//AR-Nov2017 String rotation: Begin
G4bool RotateStrings = false;
G4LorentzRotation RandomRotation;
if ( G4UniformRand() <= G4Pow::GetInstance()->powA( 1880.0/SqrtS, 4.0 ) ) {
RotateStrings = true;
RandomRotation.rotateZ( 2.*pi*G4UniformRand() );
RandomRotation.rotateY( std::acos( 2.*G4UniformRand()-1. ) );
}
//AR-Nov2017 String rotation: End
G4double maxPtSquare;
G4double X_a( 0.0 ), X_b( 0.0 ), X_c( 0.0 ), X_d( 0.0 );
@@ -238,11 +250,12 @@ G4bool G4FTFAnnihilation::Annihilate( G4VSplitableHadron* projectile,
#endif
G4double Xannihilation = X_a + X_b + X_c + X_d;
//X_a=0.; // Uzhi
//X_b=0.;
//X_c=0.;
//X_d=0.;
//Xannihilation = X_a + X_b + X_c + X_d;
//X_a=0.0;
//X_b=0.0;
//X_c=0.0;
//X_d=0.0;
//Xannihilation = X_a + X_b + X_c + X_d;
// Projectile unpacking
G4int AQ[3];
@@ -287,40 +300,40 @@ G4bool G4FTFAnnihilation::Annihilate( G4VSplitableHadron* projectile,
projectile->SetSecondParton( Q[0] );
projectile->SetStatus( 0 );
// Uzhi March 2016 start
G4int aAQ, aQ;
aAQ=std::abs( AQ[0] ); aQ=std::abs( Q[0] );
G4int NewCode;
G4double aKsi = G4UniformRand();
G4int aAQ, aQ;
aAQ = std::abs( AQ[0] ); aQ = std::abs( Q[0] );
G4int NewCode;
G4double aKsi = G4UniformRand();
if ( aAQ == aQ )
{
if ( aAQ != 3 )
{
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 )
{
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {NewCode = 331;} // Eta'-meson
}
} else
{
NewCode = 221; // Eta -meson
if( aKsi < 0.5 ) {NewCode = 331;} // Eta'-meson
}
} else
{
if ( aAQ > aQ ){ NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/AQ[0]; }
else { NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/Q[0]; }
}
if ( aAQ == aQ ) {
if ( aAQ != 3 ) {
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 ) {
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
NewCode = 221; // Eta -meson
if ( aKsi < 0.5 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
if ( aAQ > aQ ) {
NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/AQ[0];
} else {
NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/Q[0];
}
}
G4ParticleDefinition* TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if(!TestParticle) return false;
projectile->SetDefinition( TestParticle );
G4ParticleDefinition* TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if ( ! TestParticle ) return false;
projectile->SetDefinition( TestParticle );
theParameters->SetProjMinDiffMass( 0.5 ); // Uzhi 2016 M+140 ??
theParameters->SetProjMinNonDiffMass( 0.5 ); // Uzhi 2016 M+140 ??
// Uzhi March 2016 end
theParameters->SetProjMinDiffMass( 0.5 ); // Uzhi 2016 M+140 ?
theParameters->SetProjMinNonDiffMass( 0.5 ); // Uzhi 2016 M+140 ?
//G4cout << "String 2 " << Q[1] << " " << AQ[1] << G4endl;
target->SplitUp();
@@ -328,68 +341,68 @@ theParameters->SetProjMinNonDiffMass( 0.5 ); // Uzhi 2016 M+140 ??
target->SetSecondParton( AQ[1] );
target->SetStatus( 0 );
// Uzhi March 2016 Start
aAQ=std::abs( AQ[1] ); aQ=std::abs( Q[1] ); aKsi = G4UniformRand();
if ( aAQ == aQ )
{
if ( aAQ != 3 )
{
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 )
{
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {NewCode = 331;} // Eta'-meson
}
} else
{
NewCode = 221; // Eta -meson
if( aKsi < 0.5 ) {NewCode = 331;} // Eta'-meson
}
} else
{
if ( aAQ > aQ ){ NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/AQ[1]; }
else { NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/Q[1]; }
}
TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if(!TestParticle) return false;
target->SetDefinition( TestParticle );
aAQ = std::abs( AQ[1] ); aQ = std::abs( Q[1] ); aKsi = G4UniformRand();
if ( aAQ == aQ ) {
if ( aAQ != 3 ) {
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 ) {
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
NewCode = 221; // Eta -meson
if ( aKsi < 0.5 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
if ( aAQ > aQ ) {
NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/AQ[1];
} else {
NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/Q[1];
}
}
theParameters->SetTarMinDiffMass( 0.5 ); // Uzhi 2016 M+140 ??
theParameters->SetTarMinNonDiffMass( 0.5 ); // Uzhi 2016 M+140 ??
// Uzhi March 2016 end
TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if ( ! TestParticle ) return false;
target->SetDefinition( TestParticle );
theParameters->SetTarMinDiffMass( 0.5 ); // Uzhi 2016 M+140 ?
theParameters->SetTarMinNonDiffMass( 0.5 ); // Uzhi 2016 M+140 ?
//G4cout << "String 3 " << AQ[2] << " " << Q[2] << G4endl;
AdditionalString = new G4DiffractiveSplitableHadron();
// Uzhi March 2016 start
aAQ=std::abs( AQ[2] ); aQ=std::abs( Q[2] ); aKsi = G4UniformRand();
aAQ = std::abs( AQ[2] ); aQ = std::abs( Q[2] ); aKsi = G4UniformRand();
if ( aAQ == aQ )
{
if ( aAQ != 3 )
{
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 )
{
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {NewCode = 331;} // Eta'-meson
}
} else
{
NewCode = 221; // Eta -meson
if( aKsi < 0.5 ) {NewCode = 331;} // Eta'-meson
}
} else
{
if ( aAQ > aQ ){ NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/AQ[2]; }
else { NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/Q[2]; }
}
if ( aAQ == aQ ) {
if ( aAQ != 3 ) {
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 ) {
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
NewCode = 221; // Eta -meson
if ( aKsi < 0.5 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
if ( aAQ > aQ ) {
NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/AQ[2];
} else {
NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/Q[2];
}
}
TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if(!TestParticle) return false;
AdditionalString->SetDefinition( TestParticle );
// Uzhi March 2016 end
TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if ( ! TestParticle ) return false;
AdditionalString->SetDefinition( TestParticle );
AdditionalString->SplitUp();
AdditionalString->SetFirstParton( AQ[2] );
@@ -560,6 +573,7 @@ AdditionalString->SetDefinition( TestParticle );
G4ThreeVector tmp = Quark_Mom[0] + Quark_Mom[3];
G4LorentzVector Pstring1( tmp, std::sqrt( Quark_Mom[0].mag2() + MassQ2 ) +
std::sqrt( Quark_Mom[3].mag2() + MassQ2 ) );
if ( RotateStrings ) Pstring1 *= RandomRotation; //AR-Nov2017 String rotation
G4double Ystring1 = Pstring1.rapidity();
//G4cout << "Mom 1 string " << G4endl << Quark_Mom[0] << G4endl << Quark_Mom[3] << G4endl
@@ -569,6 +583,7 @@ AdditionalString->SetDefinition( TestParticle );
tmp = Quark_Mom[1] + Quark_Mom[4];
G4LorentzVector Pstring2( tmp, std::sqrt( Quark_Mom[1].mag2() + MassQ2 ) +
std::sqrt( Quark_Mom[4].mag2() + MassQ2 ) );
if ( RotateStrings ) Pstring2 *= RandomRotation; //AR-Nov2017 String rotation
G4double Ystring2 = Pstring2.rapidity();
//G4cout << "Mom 2 string " << G4endl << Quark_Mom[1] << G4endl << Quark_Mom[4] << G4endl
@@ -578,6 +593,7 @@ AdditionalString->SetDefinition( TestParticle );
tmp = Quark_Mom[2] + Quark_Mom[5];
G4LorentzVector Pstring3( tmp, std::sqrt( Quark_Mom[2].mag2() + MassQ2 ) +
std::sqrt( Quark_Mom[5].mag2() + MassQ2 ) );
if ( RotateStrings ) Pstring3 *= RandomRotation; //AR-Nov2017 String rotation
G4double Ystring3 = Pstring3.rapidity();
//G4cout << "Mom 3 string " << G4endl << Quark_Mom[2] << G4endl << Quark_Mom[5] << G4endl
@@ -643,7 +659,7 @@ AdditionalString->SetDefinition( TestParticle );
AdditionalString->IncrementCollisionCount( 1 );
target->IncrementCollisionCount( 1 );
theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016
//AR-Oct2017 theParameters->SetProbabilityOfAnnihilation( 0.0 );
return true;
@@ -704,14 +720,26 @@ theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016
//projectile->SetSecondParton( DQ );
projectile->SetFirstParton( DQ );
projectile->SetSecondParton( Anti_DQ );
//AR-Nov2017 String rotation : Begin
if ( RotateStrings ) {
G4LorentzVector Pquark = G4LorentzVector( 0., 0., SqrtS/2., SqrtS/2. );
Pquark *= RandomRotation;
G4LorentzVector Paquark = G4LorentzVector( 0., 0., -SqrtS/2., SqrtS/2. );
Paquark *= RandomRotation;
Pquark.transform(toLab); projectile->GetNextParton()->Set4Momentum(Pquark);
Paquark.transform(toLab); projectile->GetNextAntiParton()->Set4Momentum(Paquark);
}
//AR-Nov2017 String rotation : End
projectile->SetStatus( 0 );
target->SetStatus( 4 ); // The target nucleon has annihilated 3->4 Uzhi Oct 2014
target->SetStatus( 4 ); // The target nucleon has annihilated 3->4
Pprojectile.setPx( 0.0 );
Pprojectile.setPy( 0.0 );
Pprojectile.setPz( 0.0 );
Pprojectile.setE( SqrtS );
Pprojectile.transform( toLab );
// Uzhi March 2016 if QQ_QQbar will interact Set Mmin, MdifMin
// Uzhi March 2016 if QQ_QQbar will interact Set Mmin, MdifMin
// Calculation of the creation time
projectile->SetTimeOfCreation( target->GetTimeOfCreation() );
@@ -726,8 +754,8 @@ theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016
projectile->IncrementCollisionCount( 1 );
target->IncrementCollisionCount( 1 );
//theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016
// In the case baryon and anti-baryon are created. Thus the antibaryon can annihilate latter.
//theParameters->SetProbabilityOfAnnihilation( 0.0 );
// In the case baryon and anti-baryon are created. Thus the antibaryon can annihilate later.
return true;
}
@@ -780,40 +808,40 @@ theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016
projectile->SetSecondParton( LeftQ1 );
projectile->SetStatus( 0 );
// Uzhi March 2016 start
G4int aAQ, aQ;
aAQ=std::abs( LeftAQ1 ); aQ=std::abs( LeftQ1 );
G4int aAQ, aQ;
aAQ = std::abs( LeftAQ1 ); aQ = std::abs( LeftQ1 );
G4int NewCode;
G4double aKsi = G4UniformRand();
G4int NewCode;
G4double aKsi = G4UniformRand();
if ( aAQ == aQ )
{
if ( aAQ != 3 )
{
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 )
{
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {NewCode = 331;} // Eta'-meson
}
} else
{
NewCode = 221; // Eta -meson
if( aKsi < 0.5 ) {NewCode = 331;} // Eta'-meson
}
} else
{
if ( aAQ > aQ ){ NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/LeftAQ1; }
else { NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/LeftQ1; }
}
if ( aAQ == aQ ) {
if ( aAQ != 3 ) {
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 ) {
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
NewCode = 221; // Eta -meson
if ( aKsi < 0.5 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
if ( aAQ > aQ ) {
NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/LeftAQ1;
} else {
NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/LeftQ1;
}
}
G4ParticleDefinition* TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if(!TestParticle) return false;
projectile->SetDefinition( TestParticle );
theParameters->SetProjMinDiffMass( 0.5 ); // (0.5) // GeV Uzhi March 2016 ???
theParameters->SetProjMinNonDiffMass( 0.5 );
// Uzhi March 2016 end
G4ParticleDefinition* TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if ( ! TestParticle ) return false;
projectile->SetDefinition( TestParticle );
theParameters->SetProjMinDiffMass( 0.5 ); // (0.5) // GeV Uzhi March 2016 ?
theParameters->SetProjMinNonDiffMass( 0.5 );
//G4cout << "String 2 " << LeftAQ2 << " " << LeftQ2 << G4endl;
target->SplitUp();
@@ -821,36 +849,36 @@ theParameters->SetProjMinNonDiffMass( 0.5 );
target->SetSecondParton( LeftAQ2 );
target->SetStatus( 0 );
// Uzhi March 2016 start
aAQ=std::abs( LeftAQ2 ); aQ=std::abs( LeftQ2 ); aKsi = G4UniformRand();
aAQ = std::abs( LeftAQ2 ); aQ = std::abs( LeftQ2 ); aKsi = G4UniformRand();
if ( aAQ == aQ )
{
if ( aAQ != 3 )
{
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 )
{
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {NewCode = 331;} // Eta'-meson
}
} else
{
NewCode = 221; // Eta -meson
if( aKsi < 0.5 ) {NewCode = 331;} // Eta'-meson
}
} else
{
if ( aAQ > aQ ){ NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/LeftAQ2; }
else { NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/LeftQ2; }
}
if ( aAQ == aQ ) {
if ( aAQ != 3 ) {
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 ) {
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
NewCode = 221; // Eta -meson
if ( aKsi < 0.5 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
if ( aAQ > aQ ) {
NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/LeftAQ2;
} else {
NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/LeftQ2;
}
}
TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if(!TestParticle) return false;
target->SetDefinition( TestParticle );
theParameters->SetTarMinDiffMass( 0.5 ); // Uzhi March 2016 ???
theParameters->SetTarMinNonDiffMass( 0.5 );
// Uzhi March 2016
TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if ( ! TestParticle ) return false;
target->SetDefinition( TestParticle );
theParameters->SetTarMinDiffMass( 0.5 ); // Uzhi March 2016 ?
theParameters->SetTarMinNonDiffMass( 0.5 );
// Sampling kinematical properties
// 1 string LeftAQ1-LeftQ1// 2 string LeftAQ2-LeftQ2
@@ -995,6 +1023,7 @@ theParameters->SetTarMinNonDiffMass( 0.5 );
G4ThreeVector tmp = Quark_Mom[0] + Quark_Mom[2];
G4LorentzVector Pstring1( tmp, std::sqrt( Quark_Mom[0].mag2() + MassQ2 ) +
std::sqrt( Quark_Mom[2].mag2() + MassQ2 ) );
if ( RotateStrings ) Pstring1 *= RandomRotation; //AR-Nov2017 String rotation
G4double Ystring1 = Pstring1.rapidity();
//G4cout << "Mom 1 string " << G4endl << Quark_Mom[0] << G4endl << Quark_Mom[2] << G4endl
@@ -1004,6 +1033,7 @@ theParameters->SetTarMinNonDiffMass( 0.5 );
tmp = Quark_Mom[1] + Quark_Mom[3];
G4LorentzVector Pstring2( tmp, std::sqrt( Quark_Mom[1].mag2() + MassQ2 ) +
std::sqrt( Quark_Mom[3].mag2() + MassQ2 ) );
if ( RotateStrings ) Pstring2 *= RandomRotation; //AR-Nov2017 String rotation
G4double Ystring2 = Pstring2.rapidity();
//G4cout << "Mom 2 string " << G4endl <<Quark_Mom[1] << G4endl << Quark_Mom[3] << G4endl
@@ -1034,7 +1064,7 @@ theParameters->SetTarMinNonDiffMass( 0.5 );
projectile->IncrementCollisionCount( 1 );
target->IncrementCollisionCount( 1 );
theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016
//AR-Oct2017 theParameters->SetProbabilityOfAnnihilation( 0.0 );
return true;
@@ -1100,48 +1130,56 @@ theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016
projectile->SetSecondParton( LeftAQ );
projectile->SetStatus( 0 );
// Uzhi March 2016 start
G4int aAQ, aQ;
aAQ=std::abs( LeftAQ ); aQ=std::abs( LeftQ );
G4int aAQ, aQ;
aAQ = std::abs( LeftAQ ); aQ = std::abs( LeftQ );
G4int NewCode;
G4double aKsi = G4UniformRand();
G4int NewCode;
G4double aKsi = G4UniformRand();
if ( aAQ == aQ )
{
if ( aAQ != 3 )
{
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 )
{
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {NewCode = 331;} // Eta'-meson
}
} else
{
NewCode = 221; // Eta -meson
if( aKsi < 0.5 ) {NewCode = 331;} // Eta'-meson
}
} else
{
if ( aAQ > aQ ){ NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/LeftAQ; }
else { NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/LeftQ; }
}
if ( aAQ == aQ ) {
if ( aAQ != 3 ) {
NewCode = 111; // Pi0-meson
if ( aKsi < 0.5 ) {
NewCode = 221; // Eta -meson
if ( aKsi < 0.25 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
NewCode = 221; // Eta -meson
if ( aKsi < 0.5 ) {
NewCode = 331; // Eta'-meson
}
}
} else {
if ( aAQ > aQ ) {
NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/LeftAQ;
} else {
NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/LeftQ;
}
}
G4ParticleDefinition* TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if(!TestParticle) return false;
projectile->SetDefinition( TestParticle );
theParameters->SetProjMinDiffMass( 0.5 ); // (0.5) // GeV Uzhi March 2016
theParameters->SetProjMinNonDiffMass( 0.5 );
// Uzhi March 2016 end
G4ParticleDefinition* TestParticle = G4ParticleTable::GetParticleTable()->FindParticle( NewCode );
if ( ! TestParticle ) return false;
projectile->SetDefinition( TestParticle );
theParameters->SetProjMinDiffMass( 0.5 ); // (0.5) // GeV Uzhi March 2016
theParameters->SetProjMinNonDiffMass( 0.5 );
target->SetStatus( 4 ); // The target nucleon has annihilated 3->4 Uzhi Oct 2014
target->SetStatus( 4 ); // The target nucleon has annihilated 3->4
Pprojectile.setPx( 0.0 );
Pprojectile.setPy( 0.0 );
Pprojectile.setPz( 0.0 );
Pprojectile.setE( SqrtS );
Pprojectile.transform( toLab );
//AR-Nov2017 String rotation : Begin
G4LorentzVector Pquark = G4LorentzVector( 0., 0., SqrtS/2., SqrtS/2. );
G4LorentzVector Paquark = G4LorentzVector( 0., 0., -SqrtS/2., SqrtS/2. );
if ( RotateStrings ) { Pquark *= RandomRotation; Paquark *= RandomRotation; }
Pquark.transform(toLab); projectile->GetNextParton()->Set4Momentum(Pquark);
Paquark.transform(toLab); projectile->GetNextAntiParton()->Set4Momentum(Paquark);
//AR-Nov2017 String rotation : End
// Calculation of the creation time
projectile->SetTimeOfCreation( target->GetTimeOfCreation() );
projectile->SetPosition( target->GetPosition() );
@@ -1154,7 +1192,7 @@ theParameters->SetProjMinNonDiffMass( 0.5 );
projectile->IncrementCollisionCount( 1 );
target->IncrementCollisionCount( 1 );
theParameters->SetProbabilityOfAnnihilation( 0.0 ); // Uzhi March 2016
//AR-Oct2017 theParameters->SetProbabilityOfAnnihilation( 0.0 );
return true;
}
@@ -1237,3 +1275,4 @@ int G4FTFAnnihilation::operator!=( const G4FTFAnnihilation& ) const {
throw G4HadronicException( __FILE__, __LINE__,
"G4DiffractiveExcitation != operator not meant to be called" );
}