Import Geant4 10.7.0.beta source tree
This commit is contained in:
@@ -14,6 +14,27 @@ code and to keep track of all tags.
|
||||
* Please list in reverse chronological order (last date on top)
|
||||
---------------------------------------------------------------
|
||||
|
||||
10-Jun-2020 A. Ribon (hadr-qgsm-V10-06-02)
|
||||
- Improved treatment of antibaryon interactions in QGS
|
||||
(made by Vladimir Uzhinsky):
|
||||
1. G4QGSParticipants : the average transverse momentum of partons
|
||||
in a hadron is set to zero (according to the study of transverse
|
||||
momentum distributions of hadrons produced in hadronic
|
||||
interactions, in particular the study of Xf - Pt correlations
|
||||
presented by the NA49 Collaboration).
|
||||
2. G4QuarkExchange : the reggeon exchanges are now treated as
|
||||
annihilation and creation of quark-antiquark pairs (to reflect
|
||||
in inelastic processes the non-vacuum reggeon exchanges present
|
||||
in antiparticle-particle elastic scattering amplitudes).
|
||||
|
||||
08-Mar-2020 V.Ivanchenko (hadr-qgsm-V10-06-01)
|
||||
- G4QGSModel - clean-up: removed unused methods, delete
|
||||
operators, use C++11 keywords, moved icc implementation to src
|
||||
|
||||
16-Jan-2020 A. Ribon (hadr-qgsm-V10-06-00)
|
||||
- G4SPBaryonTable : changed the return type of the method 'length()' from
|
||||
'double' to 'size_t' (to avoid warnings seen on Windows).
|
||||
|
||||
19-Nov-2019 A. Ribon (hadr-qgsm-V10-05-02)
|
||||
- G4VAnnihilationCrossSection, G4AnnihilationCrossSection,
|
||||
G4GammaAnnCrossSection, G4ASCCrossSection, G4QGSMParameters :
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
#include "G4SoftStringBuilder.hh"
|
||||
#include "G4PartonPair.hh"
|
||||
|
||||
//*****************************************************************************************
|
||||
//***************************************************************************
|
||||
|
||||
template<class ParticipantType>
|
||||
class G4QGSModel : public G4VPartonStringModel
|
||||
@@ -53,15 +53,19 @@ class G4QGSModel : public G4VPartonStringModel
|
||||
public:
|
||||
G4QGSModel();
|
||||
virtual ~G4QGSModel();
|
||||
G4QGSModel(const G4QGSModel &right);
|
||||
G4QGSModel& operator=(const G4QGSModel &right);
|
||||
|
||||
public:
|
||||
virtual G4V3DNucleus* GetWoundedNucleus() const;
|
||||
virtual G4V3DNucleus* GetProjectileNucleus() const;
|
||||
virtual void Init(const G4Nucleus& Nucleus, const G4DynamicParticle& Projectile);
|
||||
virtual G4ExcitedStringVector * GetStrings();
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
G4QGSModel(const G4QGSModel &right) = delete;
|
||||
G4QGSModel& operator=(const G4QGSModel &right) = delete;
|
||||
G4bool operator==(const G4QGSModel &right) const = delete;
|
||||
G4bool operator!=(const G4QGSModel &right) const = delete;
|
||||
|
||||
G4V3DNucleus* GetWoundedNucleus() const override;
|
||||
G4V3DNucleus* GetProjectileNucleus() const override;
|
||||
void ModelDescription(std::ostream& outFile) const override;
|
||||
|
||||
protected:
|
||||
void Init(const G4Nucleus& Nucleus, const G4DynamicParticle& dyn) override;
|
||||
G4ExcitedStringVector * GetStrings() override;
|
||||
|
||||
private:
|
||||
ParticipantType theParticipants;
|
||||
@@ -69,7 +73,7 @@ class G4QGSModel : public G4VPartonStringModel
|
||||
G4SoftStringBuilder theSoftStringBuilder;
|
||||
};
|
||||
|
||||
//*****************************************************************************************
|
||||
//***************************************************************************
|
||||
|
||||
#include "G4QGSModel.icc"
|
||||
|
||||
|
||||
@@ -23,57 +23,40 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
//************************************************************************************************
|
||||
template<class ParticipantType>
|
||||
G4QGSModel<ParticipantType>::G4QGSModel()
|
||||
{
|
||||
G4VPartonStringModel::SetThisPointer(this);
|
||||
SetEnergyMomentumCheckLevels(2*CLHEP::perCent, 150*CLHEP::MeV);
|
||||
}
|
||||
template<class ParticipantType>
|
||||
G4QGSModel<ParticipantType>::G4QGSModel(const G4QGSModel &right)
|
||||
{
|
||||
G4VPartonStringModel::SetThisPointer(this);
|
||||
std::pair<G4double, G4double> levels=right.GetEnergyMomentumCheckLevels();
|
||||
SetEnergyMomentumCheckLevels(levels.first, levels.second);
|
||||
}
|
||||
{
|
||||
SetEnergyMomentumCheckLevels(2*CLHEP::perCent, 150*CLHEP::MeV);
|
||||
}
|
||||
|
||||
template<class ParticipantType>
|
||||
G4QGSModel<ParticipantType>& G4QGSModel<ParticipantType>::operator=(const G4QGSModel &right)
|
||||
{
|
||||
if (this != &right )
|
||||
{
|
||||
G4VPartonStringModel::SetThisPointer(this);
|
||||
std::pair<G4double, G4double> levels=right.GetEnergyMomentumCheckLevels();
|
||||
SetEnergyMomentumCheckLevels(levels.first, levels.second);
|
||||
}
|
||||
}
|
||||
template<class ParticipantType>
|
||||
G4QGSModel<ParticipantType>::~G4QGSModel()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
template<class ParticipantType>
|
||||
void G4QGSModel<ParticipantType>::Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aProjectile)
|
||||
{
|
||||
// It is assumed that target nucleus is at rest.
|
||||
void G4QGSModel<ParticipantType>::Init(const G4Nucleus & aNucleus,
|
||||
const G4DynamicParticle & aProjectile)
|
||||
{
|
||||
// It is assumed that target nucleus is at rest.
|
||||
theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt());
|
||||
|
||||
theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt()); // Init of a target nucleus
|
||||
G4LorentzVector Mom = aProjectile.Get4Momentum();
|
||||
|
||||
G4LorentzVector Mom = aProjectile.Get4Momentum(); // Momentum of a projectile
|
||||
G4ReactionProduct theProjectile;
|
||||
theProjectile.SetDefinition(aProjectile.GetDefinition());
|
||||
theProjectile.SetTotalEnergy(Mom.e());
|
||||
theProjectile.SetMomentum(Mom.vect());
|
||||
|
||||
G4ReactionProduct theProjectile;
|
||||
theProjectile.SetDefinition(aProjectile.GetDefinition());
|
||||
theProjectile.SetTotalEnergy(Mom.e());
|
||||
theProjectile.SetMomentum(Mom.vect());
|
||||
|
||||
theParticipants.BuildInteractions(theProjectile); // Creation of strings and nuclear remnant
|
||||
}
|
||||
// Creation of strings and nuclear remnant
|
||||
theParticipants.BuildInteractions(theProjectile);
|
||||
}
|
||||
|
||||
template<class ParticipantType>
|
||||
G4ExcitedStringVector * G4QGSModel<ParticipantType>::GetStrings()
|
||||
{ // The strings are produced at theParticipants.BuildInteractions(theProjectile)
|
||||
{
|
||||
// The strings are produced at theParticipants.BuildInteractions(theProjectile)
|
||||
|
||||
G4PartonPair* aPair;
|
||||
G4ExcitedStringVector* theStrings = new G4ExcitedStringVector;
|
||||
@@ -89,7 +72,7 @@ G4ExcitedStringVector * G4QGSModel<ParticipantType>::GetStrings()
|
||||
aString = theSoftStringBuilder.BuildString(aPair);
|
||||
}
|
||||
|
||||
// aString->Boost(theCurrentVelocity);
|
||||
// aString->Boost(theCurrentVelocity);
|
||||
theStrings->push_back(aString);
|
||||
delete aPair;
|
||||
}
|
||||
@@ -106,7 +89,7 @@ G4V3DNucleus* G4QGSModel<ParticipantType>::GetWoundedNucleus() const
|
||||
template<class ParticipantType>
|
||||
G4V3DNucleus* G4QGSModel<ParticipantType>::GetProjectileNucleus() const
|
||||
{
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
template<class ParticipantType>
|
||||
@@ -119,5 +102,5 @@ void G4QGSModel<ParticipantType>::ModelDescription(std::ostream& outFile) const
|
||||
<< "into quarks and di-quarks, the formation and excitation of\n"
|
||||
<< "quark-gluon strings, string hadronization and diffractive dissociation.\n";
|
||||
}
|
||||
//************************************************************************************************
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
@@ -61,6 +61,8 @@ class G4QuarkExchange
|
||||
const G4QuarkExchange & operator=(const G4QuarkExchange &right);
|
||||
G4bool operator==(const G4QuarkExchange &right) const;
|
||||
G4bool operator!=(const G4QuarkExchange &right) const;
|
||||
|
||||
G4double StrangeSuppress; // Uzhi June 2020
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -36,7 +36,7 @@ class G4SPBaryonTable
|
||||
|
||||
~G4SPBaryonTable() {std::for_each(theBaryons.begin(), theBaryons.end(), G4SPBaryonTable::DeleteSPBaryon());}
|
||||
void insert(G4SPBaryon * aBaryon) { theBaryons.push_back(aBaryon);}
|
||||
G4double length() {return theBaryons.size();}
|
||||
std::size_t length() {return theBaryons.size();}
|
||||
|
||||
const G4SPBaryon * GetBaryon(G4ParticleDefinition * aDefinition);
|
||||
|
||||
|
||||
@@ -58,8 +58,7 @@ G4QGSParticipants::G4QGSParticipants() : theDiffExcitaton(),
|
||||
SetPt2ofNuclearDestruction( 0.075*GeV*GeV );
|
||||
SetMaxPt2ofNuclearDestruction( 1.0*GeV*GeV );
|
||||
SetExcitationEnergyPerWoundedNucleon( 40.0*MeV );
|
||||
|
||||
sigmaPt=0.25*sqr(GeV);
|
||||
sigmaPt=0.0; // Uzhi June 2020 : sigmaPt=0.25*sqrt(GeV);
|
||||
}
|
||||
|
||||
G4QGSParticipants::G4QGSParticipants(const G4QGSParticipants &right)
|
||||
|
||||
@@ -45,12 +45,18 @@
|
||||
#include "G4VSplitableHadron.hh"
|
||||
#include "G4ExcitedString.hh"
|
||||
|
||||
#include "G4ParticleTable.hh" // Uzhi June 2020
|
||||
|
||||
#include "G4Log.hh"
|
||||
#include "G4Pow.hh"
|
||||
|
||||
//#define debugQuarkExchange
|
||||
|
||||
G4QuarkExchange::G4QuarkExchange(){}
|
||||
G4QuarkExchange::G4QuarkExchange()
|
||||
{
|
||||
StrangeSuppress = (1.0-0.04)/2.0; // Uzhi June 2020 : suppression of strange quark pair prodution,
|
||||
// i.e. u:d:s=1:1:0.04 . Need to be tuned!
|
||||
}
|
||||
|
||||
G4QuarkExchange::~G4QuarkExchange(){}
|
||||
|
||||
@@ -135,6 +141,8 @@ ExciteParticipants(G4VSplitableHadron *projectile, G4VSplitableHadron *target) c
|
||||
if ( (absPDGcode == 321) || (absPDGcode == 311) ||
|
||||
( PDGcode == 130) || ( PDGcode == 310) ) { ProjectileDiffraction = G4UniformRand() <= 0.5; }
|
||||
|
||||
//G4cout<<"ProjectileDiffr "<<ProjectileDiffraction<<G4endl;
|
||||
|
||||
if ( ProjectileDiffraction ) {
|
||||
if ( absPDGcode > 1000 ) //------Projectile is baryon --------
|
||||
{
|
||||
@@ -354,12 +362,32 @@ ExciteParticipants(G4VSplitableHadron *projectile, G4VSplitableHadron *target) c
|
||||
projectile->SplitUp();
|
||||
target->SplitUp();
|
||||
|
||||
G4Parton* PrQuark = projectile->GetNextParton();
|
||||
G4Parton* TrQuark = target->GetNextParton();
|
||||
G4Parton* PrQuark = nullptr;
|
||||
G4Parton* TrQuark = nullptr;
|
||||
|
||||
G4ParticleDefinition * Tmp = PrQuark->GetDefinition();
|
||||
PrQuark->SetDefinition(TrQuark->GetDefinition());
|
||||
TrQuark->SetDefinition(Tmp);
|
||||
if( projectile->GetDefinition()->GetBaryonNumber() >= 0 ) { // Uzhi June 2020
|
||||
// Quark exchange ----
|
||||
PrQuark = projectile->GetNextParton();
|
||||
TrQuark = target->GetNextParton();
|
||||
G4ParticleDefinition * Tmp = PrQuark->GetDefinition();
|
||||
PrQuark->SetDefinition(TrQuark->GetDefinition());
|
||||
TrQuark->SetDefinition(Tmp);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Quark exchage for projectile anti-baryon (annihilation and new Q pair creation ---
|
||||
// This part added by Uzhi June 2020
|
||||
PrQuark = projectile->GetNextAntiParton();
|
||||
TrQuark = target->GetNextParton();
|
||||
if( -PrQuark->GetDefinition()->GetPDGEncoding() == TrQuark->GetDefinition()->GetPDGEncoding() ){
|
||||
G4int QuarkCode = 1 + (int)(G4UniformRand()/StrangeSuppress);
|
||||
G4ParticleDefinition* AQpr = G4ParticleTable::GetParticleTable()->FindParticle(-QuarkCode);
|
||||
G4ParticleDefinition* Qtr = G4ParticleTable::GetParticleTable()->FindParticle( QuarkCode);
|
||||
if( (AQpr != nullptr) && (Qtr != nullptr) ) {
|
||||
PrQuark->SetDefinition(AQpr);
|
||||
TrQuark->SetDefinition( Qtr);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user