Import Geant4 10.3.0 source tree
This commit is contained in:
@@ -34,35 +34,34 @@
|
||||
|
||||
class G4ASCCrossSection : public G4VAnnihilationCrossSection
|
||||
{
|
||||
public:
|
||||
G4ASCCrossSection(G4int, G4int, G4double, G4double, G4double, G4double);
|
||||
G4bool InCharge(G4int aCode, G4int bCode);
|
||||
G4double GetXsec(G4double S);
|
||||
private:
|
||||
public:
|
||||
G4ASCCrossSection(G4int, G4int, G4double, G4double, G4double, G4double);
|
||||
G4bool InCharge(G4int aCode, G4int bCode);
|
||||
G4double GetXsec(G4double S);
|
||||
private:
|
||||
|
||||
G4int theCode1;
|
||||
G4int theCode2;
|
||||
G4double theX;
|
||||
G4double theY;
|
||||
G4double theEta;
|
||||
G4double theEps;
|
||||
G4int theCode1;
|
||||
G4int theCode2;
|
||||
G4double theX;
|
||||
G4double theY;
|
||||
G4double theEta;
|
||||
G4double theEps;
|
||||
};
|
||||
|
||||
|
||||
inline G4bool G4ASCCrossSection::
|
||||
InCharge(G4int aCode, G4int bCode)
|
||||
inline G4bool G4ASCCrossSection::InCharge(G4int aCode, G4int bCode)
|
||||
{
|
||||
G4bool result;
|
||||
result = (aCode==theCode1&&bCode==theCode2)||(aCode==theCode2&&bCode==theCode1);
|
||||
return result;
|
||||
G4bool result;
|
||||
result = (aCode==theCode1&&bCode==theCode2)||(aCode==theCode2&&bCode==theCode1);
|
||||
return result;
|
||||
}
|
||||
|
||||
inline G4double G4ASCCrossSection::
|
||||
GetXsec(G4double S)
|
||||
inline G4double G4ASCCrossSection::GetXsec(G4double S)
|
||||
{
|
||||
G4double result = theX*G4Pow::GetInstance()->powA(S, theEps) +
|
||||
theY*G4Pow::GetInstance()->powA(S, -theEta);
|
||||
return result;
|
||||
G4double result = theX*G4Pow::GetInstance()->powA(S, theEps) +
|
||||
theY*G4Pow::GetInstance()->powA(S, -theEta);
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+19
-17
@@ -32,28 +32,30 @@
|
||||
|
||||
class G4AnnihilationCrossSection
|
||||
{
|
||||
public:
|
||||
G4AnnihilationCrossSection();
|
||||
public:
|
||||
G4AnnihilationCrossSection();
|
||||
|
||||
G4double GetCrossSection(int aCode, int bCode, G4double S);
|
||||
private:
|
||||
G4double GetCrossSection(int aCode, int bCode, G4double S);
|
||||
private:
|
||||
|
||||
std::vector<G4VAnnihilationCrossSection*> theDataSets;
|
||||
std::vector<G4VAnnihilationCrossSection*> theDataSets;
|
||||
};
|
||||
|
||||
inline G4double G4AnnihilationCrossSection::GetCrossSection(G4int aCode, G4int bCode, G4double S)
|
||||
{
|
||||
G4double result = 0.;
|
||||
typedef std::vector<G4VAnnihilationCrossSection*>::iterator iter;
|
||||
iter i;
|
||||
for(i=theDataSets.begin(); i!=theDataSets.end(); i++)
|
||||
{
|
||||
if((*i)->InCharge(aCode, bCode))
|
||||
{
|
||||
result = (*i)->GetXsec(S);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
G4double result = 0.;
|
||||
typedef std::vector<G4VAnnihilationCrossSection*>::iterator iter;
|
||||
iter i;
|
||||
for(i=theDataSets.begin(); i!=theDataSets.end(); i++)
|
||||
{
|
||||
if((*i)->InCharge(aCode, bCode))
|
||||
{
|
||||
result = (*i)->GetXsec(S);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -36,15 +36,15 @@
|
||||
|
||||
class G4BaryonSplitter
|
||||
{
|
||||
public:
|
||||
G4BaryonSplitter();
|
||||
G4bool SplitBarion(G4int PDGCode, G4int* q_or_qqbar, G4int* qbar_or_qq);
|
||||
G4bool FindDiquark(G4int PDGCode, G4int Quark, G4int* Diquark);
|
||||
const G4SPBaryon & GetSPBaryon(G4int PDGCode);
|
||||
public:
|
||||
G4BaryonSplitter();
|
||||
G4bool SplitBarion(G4int PDGCode, G4int* q_or_qqbar, G4int* qbar_or_qq);
|
||||
G4bool FindDiquark(G4int PDGCode, G4int Quark, G4int* Diquark);
|
||||
const G4SPBaryon & GetSPBaryon(G4int PDGCode);
|
||||
|
||||
private:
|
||||
|
||||
G4SPBaryonTable theBaryons;
|
||||
private:
|
||||
G4SPBaryonTable theBaryons;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+10
-10
@@ -33,17 +33,17 @@
|
||||
|
||||
class G4DiffractiveStringBuilder
|
||||
{
|
||||
public:
|
||||
G4DiffractiveStringBuilder();
|
||||
~G4DiffractiveStringBuilder();
|
||||
public:
|
||||
G4DiffractiveStringBuilder();
|
||||
~G4DiffractiveStringBuilder();
|
||||
|
||||
G4ExcitedString* BuildString(G4PartonPair* aParton);
|
||||
|
||||
private:
|
||||
G4DiffractiveStringBuilder(const G4DiffractiveStringBuilder &right);
|
||||
G4int operator==(const G4DiffractiveStringBuilder &right) const;
|
||||
G4int operator!=(const G4DiffractiveStringBuilder &right) const;
|
||||
G4ExcitedString* BuildString(G4PartonPair* aParton);
|
||||
|
||||
private:
|
||||
G4DiffractiveStringBuilder(const G4DiffractiveStringBuilder &right);
|
||||
G4int operator==(const G4DiffractiveStringBuilder &right) const;
|
||||
G4int operator!=(const G4DiffractiveStringBuilder &right) const;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
+8
-8
@@ -33,15 +33,15 @@
|
||||
|
||||
class G4GammaAnnCrossSection : public G4VAnnihilationCrossSection
|
||||
{
|
||||
public:
|
||||
G4GammaAnnCrossSection();
|
||||
G4bool InCharge(G4int aCode, G4int bCode);
|
||||
G4double GetXsec(G4double S);
|
||||
virtual ~G4GammaAnnCrossSection(){}
|
||||
public:
|
||||
G4GammaAnnCrossSection();
|
||||
G4bool InCharge(G4int aCode, G4int bCode);
|
||||
G4double GetXsec(G4double S);
|
||||
virtual ~G4GammaAnnCrossSection(){}
|
||||
|
||||
private:
|
||||
|
||||
std::vector<G4ASCCrossSection*> theGammaNucXSections;
|
||||
private:
|
||||
std::vector<G4ASCCrossSection*> theGammaNucXSections;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -36,14 +36,12 @@
|
||||
|
||||
class G4GammaParticipants : public G4QGSParticipants
|
||||
{
|
||||
public:
|
||||
virtual ~G4GammaParticipants(){}
|
||||
|
||||
private:
|
||||
virtual G4VSplitableHadron* SelectInteractions(const G4ReactionProduct &thePrimary);
|
||||
public:
|
||||
virtual ~G4GammaParticipants(){}
|
||||
|
||||
private:
|
||||
virtual G4VSplitableHadron* SelectInteractions(const G4ReactionProduct &thePrimary);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
|
||||
class G4MesonSplitter
|
||||
{
|
||||
public:
|
||||
G4bool SplitMeson(G4int PDGcode, G4int* aEnd, G4int* bEnd);
|
||||
|
||||
private:
|
||||
public:
|
||||
G4bool SplitMeson(G4int PDGcode, G4int* aEnd, G4int* bEnd);
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -34,69 +34,64 @@
|
||||
|
||||
class G4PartonPair
|
||||
{
|
||||
public:
|
||||
enum {
|
||||
DIFFRACTIVE = 1,
|
||||
SOFT = 2,
|
||||
HARD = 3
|
||||
};
|
||||
enum
|
||||
{
|
||||
PROJECTILE = 1,
|
||||
TARGET = -1
|
||||
};
|
||||
public:
|
||||
G4PartonPair(G4Parton* P1, G4Parton* P2, G4int Type, G4int Direction);
|
||||
~G4PartonPair();
|
||||
public:
|
||||
enum {
|
||||
DIFFRACTIVE = 1,
|
||||
SOFT = 2,
|
||||
HARD = 3
|
||||
};
|
||||
enum {
|
||||
PROJECTILE = 1,
|
||||
TARGET = -1
|
||||
};
|
||||
public:
|
||||
G4PartonPair(G4Parton* P1, G4Parton* P2, G4int Type, G4int Direction);
|
||||
~G4PartonPair();
|
||||
|
||||
private:
|
||||
G4PartonPair(const G4PartonPair &right);
|
||||
int operator==(const G4PartonPair &right) const;
|
||||
int operator!=(const G4PartonPair &right) const;
|
||||
private:
|
||||
G4PartonPair(const G4PartonPair &right);
|
||||
int operator==(const G4PartonPair &right) const;
|
||||
int operator!=(const G4PartonPair &right) const;
|
||||
|
||||
public:
|
||||
void SetPartons(G4Parton* P1, G4Parton* P2);
|
||||
void SetCollisionType(G4int Type);
|
||||
G4int GetCollisionType();
|
||||
G4Parton* GetParton1(void);
|
||||
G4Parton* GetParton2(void);
|
||||
G4int GetDirection();
|
||||
|
||||
|
||||
private:
|
||||
G4Parton* Parton1;
|
||||
G4Parton* Parton2;
|
||||
G4int CollisionType;
|
||||
G4int Direction;
|
||||
public:
|
||||
void SetPartons(G4Parton* P1, G4Parton* P2);
|
||||
void SetCollisionType(G4int Type);
|
||||
G4int GetCollisionType();
|
||||
G4Parton* GetParton1(void);
|
||||
G4Parton* GetParton2(void);
|
||||
G4int GetDirection();
|
||||
|
||||
private:
|
||||
G4Parton* Parton1;
|
||||
G4Parton* Parton2;
|
||||
G4int CollisionType;
|
||||
G4int Direction;
|
||||
};
|
||||
|
||||
inline G4Parton* G4PartonPair::GetParton1(void)
|
||||
{
|
||||
return Parton1;
|
||||
return Parton1;
|
||||
}
|
||||
|
||||
inline G4Parton* G4PartonPair::GetParton2(void)
|
||||
{
|
||||
return Parton2;
|
||||
return Parton2;
|
||||
}
|
||||
|
||||
inline void G4PartonPair::SetCollisionType(G4int Type)
|
||||
{
|
||||
CollisionType = Type;
|
||||
CollisionType = Type;
|
||||
}
|
||||
|
||||
inline G4int G4PartonPair::GetCollisionType()
|
||||
{
|
||||
return CollisionType;
|
||||
return CollisionType;
|
||||
}
|
||||
|
||||
inline G4int G4PartonPair::GetDirection()
|
||||
{
|
||||
return Direction;
|
||||
return Direction;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
+26
-19
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4QGSDiffractiveExcitation.hh 94750 2015-12-07 08:24:29Z gcosmo $
|
||||
// $Id: G4QGSDiffractiveExcitation.hh 100828 2016-11-02 15:25:59Z gcosmo $
|
||||
|
||||
#ifndef G4QGSDiffractiveExcitation_h
|
||||
#define G4QGSDiffractiveExcitation_h 1
|
||||
@@ -50,33 +50,40 @@ class G4ExcitedString;
|
||||
|
||||
class G4QGSDiffractiveExcitation
|
||||
{
|
||||
public:
|
||||
|
||||
public:
|
||||
G4QGSDiffractiveExcitation();
|
||||
virtual ~G4QGSDiffractiveExcitation();
|
||||
|
||||
G4QGSDiffractiveExcitation();
|
||||
virtual ~G4QGSDiffractiveExcitation();
|
||||
virtual G4bool ExciteParticipants (G4VSplitableHadron *aPartner, G4VSplitableHadron * bPartner) const;
|
||||
virtual G4ExcitedString * String(G4VSplitableHadron * aHadron, G4bool isProjectile) const;
|
||||
|
||||
virtual G4bool ExciteParticipants (G4VSplitableHadron *aPartner, G4VSplitableHadron * bPartner) const;
|
||||
virtual G4ExcitedString * String(G4VSplitableHadron * aHadron, G4bool isProjectile) const;
|
||||
//void SetPtWidth(G4double aValue) { widthOfPtSquare = aValue*aValue; }
|
||||
//void SetExtraMass(G4double aValue) { minExtraMass = aValue; }
|
||||
//void SetMinimumMass(G4double aValue) { minmass = aValue; }
|
||||
|
||||
// void SetPtWidth(G4double aValue) { widthOfPtSquare = aValue*aValue; }
|
||||
// void SetExtraMass(G4double aValue) { minExtraMass = aValue; }
|
||||
// void SetMinimumMass(G4double aValue) { minmass = aValue; }
|
||||
private:
|
||||
|
||||
G4QGSDiffractiveExcitation(const G4QGSDiffractiveExcitation &right);
|
||||
|
||||
private:
|
||||
//G4double ChooseX(G4double Xmin, G4double Xmax) const;
|
||||
G4double ChooseP(G4double Pmin, G4double Pmax) const;
|
||||
|
||||
G4QGSDiffractiveExcitation(const G4QGSDiffractiveExcitation &right);
|
||||
//G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const;
|
||||
G4ThreeVector GaussianPt(G4double AveragePt2, G4double maxPtSquare) const; // Uzhi
|
||||
|
||||
G4double ChooseP(G4double Pmin, G4double Pmax) const;
|
||||
const G4QGSDiffractiveExcitation & operator=(const G4QGSDiffractiveExcitation &right);
|
||||
int operator==(const G4QGSDiffractiveExcitation &right) const;
|
||||
int operator!=(const G4QGSDiffractiveExcitation &right) const;
|
||||
|
||||
G4ThreeVector GaussianPt(G4double AveragePt2, G4double maxPtSquare) const;
|
||||
|
||||
const G4QGSDiffractiveExcitation & operator=(const G4QGSDiffractiveExcitation &right);
|
||||
int operator==(const G4QGSDiffractiveExcitation &right) const;
|
||||
int operator!=(const G4QGSDiffractiveExcitation &right) const;
|
||||
|
||||
private:
|
||||
private:
|
||||
// Model Parameters:
|
||||
/*
|
||||
const G4double widthOfPtSquare; // width^2 of pt for string excitation
|
||||
const G4double minExtraMass; // minimum excitation mass
|
||||
const G4double minmass; // mean pion transverse mass; used for Xmin
|
||||
*/
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -29,15 +29,16 @@
|
||||
#include "globals.hh"
|
||||
|
||||
class G4QGSMParameters
|
||||
{
|
||||
public:
|
||||
G4QGSMParameters();
|
||||
~G4QGSMParameters();
|
||||
{
|
||||
public:
|
||||
G4QGSMParameters();
|
||||
~G4QGSMParameters();
|
||||
|
||||
private:
|
||||
G4QGSMParameters(const G4QGSMParameters &right);
|
||||
int operator==(const G4QGSMParameters &right) const;
|
||||
int operator!=(const G4QGSMParameters &right) const;
|
||||
};
|
||||
private:
|
||||
G4QGSMParameters(const G4QGSMParameters &right);
|
||||
int operator==(const G4QGSMParameters &right) const;
|
||||
int operator!=(const G4QGSMParameters &right) const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
+53
-73
@@ -40,97 +40,77 @@
|
||||
|
||||
class G4QGSMSplitableHadron : public G4VSplitableHadron
|
||||
{
|
||||
public:
|
||||
G4QGSMSplitableHadron();
|
||||
G4QGSMSplitableHadron(const G4ReactionProduct & aPrimary);
|
||||
G4QGSMSplitableHadron(const G4ReactionProduct & aPrimary, G4bool Direction);
|
||||
G4QGSMSplitableHadron(const G4Nucleon & aNucleon);
|
||||
G4QGSMSplitableHadron(const G4Nucleon & aNucleon, G4bool Direction);
|
||||
|
||||
public:
|
||||
G4QGSMSplitableHadron();
|
||||
G4QGSMSplitableHadron(const G4ReactionProduct & aPrimary);
|
||||
G4QGSMSplitableHadron(const G4ReactionProduct & aPrimary, G4bool Direction);
|
||||
G4QGSMSplitableHadron(const G4Nucleon & aNucleon);
|
||||
G4QGSMSplitableHadron(const G4Nucleon & aNucleon, G4bool Direction);
|
||||
virtual ~G4QGSMSplitableHadron();
|
||||
|
||||
virtual ~G4QGSMSplitableHadron();
|
||||
private:
|
||||
const G4QGSMSplitableHadron & operator=(const G4QGSMSplitableHadron &right);
|
||||
|
||||
private:
|
||||
const G4QGSMSplitableHadron & operator=(const G4QGSMSplitableHadron &right);
|
||||
public:
|
||||
virtual void SplitUp();
|
||||
virtual void SetFirstParton(G4int PDGcode); // Uzhi 24.11.10
|
||||
virtual void SetSecondParton(G4int PDGcode); // Uzhi 24.11.10
|
||||
virtual G4Parton * GetNextParton();
|
||||
virtual G4Parton * GetNextAntiParton();
|
||||
|
||||
public:
|
||||
virtual void SplitUp();
|
||||
virtual void SetFirstParton(G4int PDGcode); // Uzhi 24.11.10
|
||||
virtual void SetSecondParton(G4int PDGcode); // Uzhi 24.11.10
|
||||
virtual G4Parton * GetNextParton();
|
||||
virtual G4Parton * GetNextAntiParton();
|
||||
private:
|
||||
void InitParameters();
|
||||
void DiffractiveSplitUp();
|
||||
void SoftSplitUp();
|
||||
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare);
|
||||
void GetValenceQuarkFlavors(const G4ParticleDefinition * aPart,
|
||||
G4Parton *& Parton1, G4Parton *& Parton2);
|
||||
G4Parton * BuildSeaQuark(G4bool isAntiQuark, G4int aPDGCode, G4int nSeaPair);
|
||||
G4double SampleX(G4double anXmin, G4int nSea, G4int theTotalSea, G4double aBeta);
|
||||
|
||||
private:
|
||||
void InitParameters();
|
||||
void DiffractiveSplitUp();
|
||||
void SoftSplitUp();
|
||||
private:
|
||||
// aggregated data
|
||||
G4bool Direction; // FALSE is target. - candidate for more detailed design. @@@@ HPW
|
||||
|
||||
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare);
|
||||
void GetValenceQuarkFlavors(const G4ParticleDefinition * aPart,
|
||||
G4Parton *& Parton1, G4Parton *& Parton2);
|
||||
G4Parton * BuildSeaQuark(G4bool isAntiQuark, G4int aPDGCode, G4int nSeaPair);
|
||||
G4double SampleX(G4double anXmin, G4int nSea, G4int theTotalSea, G4double aBeta);
|
||||
std::deque<G4Parton *> Color;
|
||||
std::deque<G4Parton *> AntiColor;
|
||||
private:
|
||||
// associated classes
|
||||
G4MesonSplitter theMesonSplitter;
|
||||
G4BaryonSplitter theBaryonSplitter;
|
||||
|
||||
private:
|
||||
// aggregated data
|
||||
G4bool Direction; // FALSE is target. - candidate for more detailed design. @@@@ HPW
|
||||
|
||||
std::deque<G4Parton *> Color;
|
||||
std::deque<G4Parton *> AntiColor;
|
||||
//std::deque<G4Parton *>::iterator iP; // Uzhi
|
||||
//std::deque<G4Parton *>::iterator iAP; // Uzhi
|
||||
unsigned int iP; // Uzhi 5.06.2015
|
||||
unsigned int iAP; // Uzhi 5.06.2015
|
||||
private:
|
||||
|
||||
// associated classes
|
||||
G4MesonSplitter theMesonSplitter;
|
||||
G4BaryonSplitter theBaryonSplitter;
|
||||
|
||||
private:
|
||||
// model parameters
|
||||
G4double alpha;
|
||||
G4double beta;
|
||||
G4double theMinPz;
|
||||
G4double StrangeSuppress;
|
||||
G4double sigmaPt;
|
||||
G4double widthOfPtSquare;
|
||||
G4double minTransverseMass;
|
||||
private:
|
||||
// model parameters
|
||||
G4double alpha;
|
||||
G4double beta;
|
||||
G4double theMinPz;
|
||||
G4double StrangeSuppress;
|
||||
G4double sigmaPt;
|
||||
G4double widthOfPtSquare;
|
||||
G4double minTransverseMass;
|
||||
};
|
||||
|
||||
inline G4Parton* G4QGSMSplitableHadron::GetNextParton()
|
||||
{
|
||||
if(Color.size()==0) return 0;
|
||||
//Uzhi G4Parton * result = Color.back();
|
||||
//Uzhi Color.pop_back();
|
||||
/*
|
||||
G4Parton * result = *iP;
|
||||
iP++; if( iP == Color.end()) iP=Color.begin();
|
||||
*/
|
||||
|
||||
G4Parton * result = Color.operator[](iP);
|
||||
iP++; if(iP == Color.size()) iP=0;
|
||||
return result;
|
||||
if(Color.size()==0) return 0;
|
||||
G4Parton * result = Color.back();
|
||||
Color.pop_back();
|
||||
return result;
|
||||
}
|
||||
|
||||
inline G4Parton* G4QGSMSplitableHadron::GetNextAntiParton()
|
||||
{
|
||||
if(AntiColor.size() == 0) return 0;
|
||||
//Uzhi G4Parton * result = AntiColor.front();
|
||||
//Uzhi AntiColor.pop_front();
|
||||
/*
|
||||
G4Parton * result = *iAP;
|
||||
iAP++; if( iAP == AntiColor.end()) iAP=AntiColor.begin();
|
||||
*/
|
||||
G4Parton * result = AntiColor.operator[](iAP);
|
||||
iAP++; if(iAP == AntiColor.size()) iAP=0;
|
||||
return result;
|
||||
if(AntiColor.size() == 0) return 0;
|
||||
G4Parton * result = AntiColor.front();
|
||||
AntiColor.pop_front();
|
||||
return result;
|
||||
}
|
||||
|
||||
inline void G4QGSMSplitableHadron::SetFirstParton(G4int PDGcode) // Uzhi 24.11.10
|
||||
inline void G4QGSMSplitableHadron::SetFirstParton(G4int PDGcode)
|
||||
{PDGcode++;}
|
||||
inline void G4QGSMSplitableHadron::SetSecondParton(G4int PDGcode) // Uzhi 24.11.10
|
||||
inline void G4QGSMSplitableHadron::SetSecondParton(G4int PDGcode)
|
||||
{PDGcode++;}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -46,42 +46,35 @@
|
||||
#include "G4SoftStringBuilder.hh"
|
||||
#include "G4PartonPair.hh"
|
||||
|
||||
//***********************************************************************************************
|
||||
|
||||
|
||||
//*****************************************************************************************
|
||||
|
||||
template<class ParticipantType>
|
||||
class G4QGSModel : public G4VPartonStringModel
|
||||
{
|
||||
// Constructors
|
||||
public:
|
||||
{
|
||||
// Constructors
|
||||
public:
|
||||
G4QGSModel();
|
||||
virtual ~G4QGSModel();
|
||||
G4QGSModel(const G4QGSModel &right);
|
||||
G4QGSModel& operator=(const G4QGSModel &right);
|
||||
|
||||
// Method
|
||||
public:
|
||||
// Method
|
||||
public:
|
||||
virtual G4V3DNucleus* GetWoundedNucleus() const;
|
||||
virtual G4V3DNucleus* GetProjectileNucleus() const; // Uzhi Nov. 2012
|
||||
virtual void Init(const G4Nucleus& Nucleus, const G4DynamicParticle& Projectile);
|
||||
virtual G4ExcitedStringVector * GetStrings();
|
||||
virtual void ModelDescription(std::ostream& outFile) const;
|
||||
|
||||
private:
|
||||
ParticipantType theParticipants;
|
||||
G4DiffractiveStringBuilder theDiffractiveStringBuilder;
|
||||
G4SoftStringBuilder theSoftStringBuilder;
|
||||
|
||||
private:
|
||||
// cash theCurrentVelocity for lorentztrafo HPW
|
||||
G4ThreeVector theCurrentVelocity;
|
||||
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------------------------------
|
||||
private:
|
||||
ParticipantType theParticipants;
|
||||
G4DiffractiveStringBuilder theDiffractiveStringBuilder;
|
||||
G4SoftStringBuilder theSoftStringBuilder;
|
||||
|
||||
private:
|
||||
// cash theCurrentVelocity for lorentztrafo HPW
|
||||
G4ThreeVector theCurrentVelocity;
|
||||
};
|
||||
|
||||
//*****************************************************************************************
|
||||
|
||||
@@ -89,4 +82,3 @@ private:
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -25,107 +25,109 @@
|
||||
//
|
||||
|
||||
//****************************************************************************************************************
|
||||
|
||||
template<class ParticipantType>
|
||||
G4QGSModel<ParticipantType>::G4QGSModel()
|
||||
{
|
||||
G4VPartonStringModel::SetThisPointer(this);
|
||||
SetEnergyMomentumCheckLevels(2*CLHEP::perCent, 150*CLHEP::MeV);
|
||||
}
|
||||
{
|
||||
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);
|
||||
}
|
||||
{
|
||||
G4VPartonStringModel::SetThisPointer(this);
|
||||
std::pair<G4double, G4double> levels=right.GetEnergyMomentumCheckLevels();
|
||||
SetEnergyMomentumCheckLevels(levels.first, levels.second);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
{
|
||||
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)
|
||||
{
|
||||
// clean-up and consistency with design, HPW Feb 1999
|
||||
/*
|
||||
G4cout<<"QGSM Init A Z "<<aNucleus.GetA_asInt()<<" "<<aNucleus.GetZ_asInt()<<G4endl;
|
||||
G4cout<<"Projectile "<<aProjectile.GetDefinition()->GetParticleName()<<" "<<aProjectile.GetDefinition()->GetBaryonNumber()<<G4endl;
|
||||
G4cout<<" "<<aProjectile.Get4Momentum()<<G4endl;
|
||||
*/
|
||||
theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt());
|
||||
theCurrentVelocity.setX(0);
|
||||
theCurrentVelocity.setY(0);
|
||||
// HPW Feb 1999
|
||||
// this is an approximation, neglecting the motion of nucleons in the nucleus & p,n mass differences. @@@
|
||||
// G4double vz_old = aProjectile.Get4Momentum().pz()/
|
||||
// (aProjectile.Get4Momentum().e() + G4Proton::Proton()->GetPDGMass());
|
||||
/* //Uzhi 15.05.2015
|
||||
G4double nCons = 1;
|
||||
if(std::abs(aProjectile.GetDefinition()->GetBaryonNumber()) !=0)
|
||||
{
|
||||
nCons = std::abs(aProjectile.GetDefinition()->GetBaryonNumber());
|
||||
}
|
||||
*/
|
||||
// Transformation to hN/NN CMS system ---------------------------------
|
||||
//Uzhi 15.05.2015 G4double pz_per_projectile = aProjectile.Get4Momentum().pz()/nCons;
|
||||
//Uzhi 15.05.2015 G4double EperHN=aProjectile.Get4Momentum().e()/nCons + G4Proton::Proton()->GetPDGMass();
|
||||
G4double vz = 0.; //pz_per_projectile/EperHN;
|
||||
|
||||
theCurrentVelocity.setZ(vz);
|
||||
theParticipants.DoLorentzBoost(-theCurrentVelocity); // Lorentz boost of the target nucleus
|
||||
G4LorentzVector Mom = aProjectile.Get4Momentum();
|
||||
Mom.boost(-theCurrentVelocity); // Lorentz boost of the projectile
|
||||
// End of the transformation ------------------------------------------
|
||||
|
||||
G4ReactionProduct theProjectile;
|
||||
theProjectile.SetDefinition(aProjectile.GetDefinition());
|
||||
theProjectile.SetTotalEnergy(Mom.e());
|
||||
theProjectile.SetMomentum(Mom.vect());
|
||||
|
||||
theParticipants.BuildInteractions(theProjectile);
|
||||
theParticipants.GetWoundedNucleus()->DoLorentzBoost(theCurrentVelocity); // Backward transformation
|
||||
}
|
||||
{
|
||||
// clean-up and consistency with design, HPW Feb 1999
|
||||
theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt());
|
||||
theCurrentVelocity.setX(0);
|
||||
theCurrentVelocity.setY(0);
|
||||
// HPW Feb 1999
|
||||
// this is an approximation, neglecting the motion of nucleons in the nucleus & p,n mass differences. @@@
|
||||
//G4double vz_old = aProjectile.Get4Momentum().pz()/
|
||||
// (aProjectile.Get4Momentum().e() + G4Proton::Proton()->GetPDGMass());
|
||||
G4double nCons = 1;
|
||||
if(std::abs(aProjectile.GetDefinition()->GetBaryonNumber()) !=0)
|
||||
{
|
||||
nCons = std::abs(aProjectile.GetDefinition()->GetBaryonNumber());
|
||||
}
|
||||
G4double pz_per_projectile = aProjectile.Get4Momentum().pz()/nCons;
|
||||
//G4double e_per_projectile = aProjectile.Get4Momentum().vect()*aProjectile.Get4Momentum().vect();
|
||||
// e_per_projectile /=nCons*nCons;
|
||||
// e_per_projectile += G4Proton::Proton()->GetPDGMass()*G4Proton::Proton()->GetPDGMass();
|
||||
G4double e_per_projectile = aProjectile.Get4Momentum()*aProjectile.Get4Momentum();
|
||||
e_per_projectile += aProjectile.Get4Momentum().vect()*aProjectile.Get4Momentum().vect();
|
||||
e_per_projectile /=nCons*nCons;
|
||||
e_per_projectile = std::sqrt(e_per_projectile);
|
||||
e_per_projectile += G4Proton::Proton()->GetPDGMass();
|
||||
G4double vz = pz_per_projectile/e_per_projectile;
|
||||
//--DEBUG-- G4cout << "IncomingMomentum - vz "<<aProjectile.Get4Momentum()<< ", " << vz <<G4endl;
|
||||
theCurrentVelocity.setZ(vz);
|
||||
theParticipants.DoLorentzBoost(-theCurrentVelocity);
|
||||
G4LorentzVector Mom = aProjectile.Get4Momentum();
|
||||
Mom.boost(-theCurrentVelocity);
|
||||
G4ReactionProduct theProjectile;
|
||||
theProjectile.SetDefinition(aProjectile.GetDefinition());
|
||||
theProjectile.SetTotalEnergy(Mom.e());
|
||||
theProjectile.SetMomentum(Mom.vect());
|
||||
//--DEBUG-- G4cout << "PreInteractionMomentum "<<Mom<<G4endl;
|
||||
theParticipants.BuildInteractions(theProjectile);
|
||||
theParticipants.GetWoundedNucleus()->DoLorentzBoost(theCurrentVelocity);
|
||||
}
|
||||
|
||||
template<class ParticipantType>
|
||||
G4ExcitedStringVector * G4QGSModel<ParticipantType>::GetStrings()
|
||||
{
|
||||
//G4cout<<"G4ExcitedStringVector * G4QGSModel<ParticipantType>::GetStrings()"<<G4endl;
|
||||
// clean-up and consistancy with design, HPW Feb 1999
|
||||
// also fixing a memory leak, removing unnecessary caching, and
|
||||
// streamlining of logic
|
||||
G4PartonPair* aPair;
|
||||
G4ExcitedStringVector* theStrings = new G4ExcitedStringVector;
|
||||
G4ExcitedString * aString;
|
||||
while( (aPair = theParticipants.GetNextPartonPair()) ) /* Loop checking, 07.08.2015, A.Ribon */
|
||||
while( (aPair = theParticipants.GetNextPartonPair()) ) /* Loop checking, 26.10.2015, A.Ribon */
|
||||
{
|
||||
//G4cout<<"aPair->GetCollisionType() "<<aPair->GetCollisionType()<<G4endl;
|
||||
if (aPair->GetCollisionType() == G4PartonPair::DIFFRACTIVE)
|
||||
{
|
||||
aString = theDiffractiveStringBuilder.BuildString(aPair);
|
||||
//G4cout << "diffractive "<<aString->Get4Momentum()<<G4endl;
|
||||
// G4cout << "diffractive "<<aString->Get4Momentum()<<G4endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
aString = theSoftStringBuilder.BuildString(aPair);
|
||||
//G4cout << "soft "<<aString->Get4Momentum()<<G4endl;
|
||||
// G4cout << "soft "<<aString->Get4Momentum()<<G4endl;
|
||||
}
|
||||
|
||||
//--DEBUG-- G4cout << " QGSModel.icc::GetStrings() theCurrentVelocity " << theCurrentVelocity << G4endl;
|
||||
aString->Boost(theCurrentVelocity);
|
||||
theStrings->push_back(aString);
|
||||
delete aPair;
|
||||
}
|
||||
|
||||
//--DEBUG-- G4cout << G4endl;
|
||||
// for(G4int i=0; i<theStrings->size(); i++)
|
||||
// {
|
||||
// G4cout << "String = "<<theStrings->operator[](i)->Get4Momentum()<<G4endl;
|
||||
// }
|
||||
return theStrings;
|
||||
}
|
||||
|
||||
@@ -135,7 +137,7 @@ G4V3DNucleus* G4QGSModel<ParticipantType>::GetWoundedNucleus() const
|
||||
return theParticipants.GetWoundedNucleus();
|
||||
}
|
||||
|
||||
template<class ParticipantType> // Uzhi Nov. 2012
|
||||
template<class ParticipantType>
|
||||
G4V3DNucleus* G4QGSModel<ParticipantType>::GetProjectileNucleus() const
|
||||
{
|
||||
return 0;
|
||||
@@ -151,5 +153,6 @@ 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";
|
||||
}
|
||||
|
||||
//*********************************************************************************************************************
|
||||
|
||||
|
||||
@@ -37,205 +37,64 @@
|
||||
#include "G4QGSMSplitableHadron.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
#include "G4VSplitableHadron.hh" // Uzhi
|
||||
|
||||
class G4QGSParticipants : public G4VParticipants
|
||||
{
|
||||
public:
|
||||
G4QGSParticipants();
|
||||
G4QGSParticipants(const G4QGSParticipants &right);
|
||||
const G4QGSParticipants & operator=(const G4QGSParticipants &right);
|
||||
virtual ~G4QGSParticipants();
|
||||
public:
|
||||
G4QGSParticipants();
|
||||
G4QGSParticipants(const G4QGSParticipants &right);
|
||||
const G4QGSParticipants & operator=(const G4QGSParticipants &right);
|
||||
virtual ~G4QGSParticipants();
|
||||
|
||||
int operator==(const G4QGSParticipants &right) const;
|
||||
int operator!=(const G4QGSParticipants &right) const;
|
||||
int operator==(const G4QGSParticipants &right) const;
|
||||
int operator!=(const G4QGSParticipants &right) const;
|
||||
|
||||
virtual void DoLorentzBoost(G4ThreeVector aBoost)
|
||||
{
|
||||
theCurrentVelocity = -aBoost; // Uzhi 17 Apr. 2015
|
||||
if(theNucleus) theNucleus->DoLorentzBoost(aBoost);
|
||||
theBoost = aBoost;
|
||||
}
|
||||
virtual void DoLorentzBoost(G4ThreeVector aBoost)
|
||||
{
|
||||
if(theNucleus) theNucleus->DoLorentzBoost(aBoost);
|
||||
theBoost = aBoost;
|
||||
}
|
||||
|
||||
G4PartonPair* GetNextPartonPair();
|
||||
void BuildInteractions(const G4ReactionProduct &thePrimary);
|
||||
void StartPartonPairLoop();
|
||||
G4PartonPair* GetNextPartonPair();
|
||||
void BuildInteractions(const G4ReactionProduct &thePrimary);
|
||||
void StartPartonPairLoop();
|
||||
|
||||
//Uzhi Start copy from FTFmodel
|
||||
private:
|
||||
//Uzhi G4V3DNucleus* GetWoundedNucleus() const;
|
||||
G4V3DNucleus* GetTargetNucleus() const;
|
||||
G4V3DNucleus* GetProjectileNucleus() const;
|
||||
protected:
|
||||
virtual G4VSplitableHadron* SelectInteractions(const G4ReactionProduct &thePrimary);
|
||||
void SplitHadrons();
|
||||
void PerformSoftCollisions();
|
||||
void PerformDiffractiveCollisions();
|
||||
|
||||
void PrepareInitialState( const G4ReactionProduct& thePrimary );
|
||||
void GetList( const G4ReactionProduct& thePrimary );
|
||||
protected:
|
||||
struct DeleteInteractionContent {void operator()(G4InteractionContent*aC){delete aC;}};
|
||||
std::vector<G4InteractionContent*> theInteractions;
|
||||
struct DeleteSplitableHadron{void operator()(G4VSplitableHadron*aS){delete aS;}};
|
||||
std::vector<G4VSplitableHadron*> theTargets;
|
||||
struct DeletePartonPair{void operator()(G4PartonPair*aP){delete aP;}};
|
||||
std::vector<G4PartonPair*> thePartonPairs;
|
||||
|
||||
void StoreInvolvedNucleon();
|
||||
void ReggeonCascade();
|
||||
G4bool PutOnMassShell();
|
||||
//Uzhi G4bool ExciteParticipants();
|
||||
//Uzhi G4ExcitedStringVector* BuildStrings();
|
||||
void GetResiduals();
|
||||
G4SingleDiffractiveExcitation theSingleDiffExcitation;
|
||||
G4QGSDiffractiveExcitation theDiffExcitaton;
|
||||
G4int ModelMode;
|
||||
G4bool IsSingleDiffractive();
|
||||
|
||||
//Uzhi G4bool AdjustNucleons( G4VSplitableHadron* SelectedAntiBaryon,
|
||||
//Uzhi G4Nucleon* ProjectileNucleon,
|
||||
//Uzhi G4VSplitableHadron* SelectedTargetNucleon,
|
||||
//Uzhi G4Nucleon* TargetNucleon,
|
||||
//Uzhi G4bool Annihilation );
|
||||
G4ThreeVector GaussianPt( G4double AveragePt2, G4double maxPtSquare ) const;
|
||||
|
||||
G4bool ComputeNucleusProperties( G4V3DNucleus* nucleus, G4LorentzVector& nucleusMomentum,
|
||||
G4LorentzVector& residualMomentum, G4double& sumMasses,
|
||||
G4double& residualExcitationEnergy, G4double& residualMass,
|
||||
G4int& residualMassNumber, G4int& residualCharge );
|
||||
// Utility method used by PutOnMassShell.
|
||||
|
||||
G4bool GenerateDeltaIsobar( const G4double sqrtS, const G4int numberOfInvolvedNucleons,
|
||||
G4Nucleon* involvedNucleons[], G4double& sumMasses );
|
||||
// Utility method used by PutOnMassShell.
|
||||
|
||||
G4bool SamplingNucleonKinematics( G4double averagePt2, const G4double maxPt2,
|
||||
G4double dCor, G4V3DNucleus* nucleus,
|
||||
const G4LorentzVector& pResidual,
|
||||
const G4double residualMass, const G4int residualMassNumber,
|
||||
const G4int numberOfInvolvedNucleons,
|
||||
G4Nucleon* involvedNucleons[], G4double& mass2 );
|
||||
// Utility method used by PutOnMassShell.
|
||||
|
||||
G4bool CheckKinematics( const G4double sValue, const G4double sqrtS,
|
||||
const G4double projectileMass2, const G4double targetMass2,
|
||||
const G4double nucleusY, const G4bool isProjectileNucleus,
|
||||
const G4int numberOfInvolvedNucleons, G4Nucleon* involvedNucleons[],
|
||||
G4double& targetWminus, G4double& projectileWplus, G4bool& success );
|
||||
// Utility method used by PutOnMassShell.
|
||||
|
||||
G4bool FinalizeKinematics( const G4double w, const G4bool isProjectileNucleus,
|
||||
const G4LorentzRotation& boostFromCmsToLab,
|
||||
const G4double residualMass, const G4int residualMassNumber,
|
||||
const G4int numberOfInvolvedNucleons,
|
||||
G4Nucleon* involvedNucleons[],
|
||||
G4LorentzVector& residual4Momentum );
|
||||
// Utility method used by PutOnMassShell.
|
||||
|
||||
//Uzhi End copy from FTFmodel
|
||||
|
||||
void CreateStrings();
|
||||
|
||||
//Uzhi Start copy from FTFparameters
|
||||
private:
|
||||
// Set parameters of nuclear destruction
|
||||
void SetCofNuclearDestruction( const G4double aValue );
|
||||
void SetR2ofNuclearDestruction( const G4double aValue );
|
||||
|
||||
void SetExcitationEnergyPerWoundedNucleon( const G4double aValue );
|
||||
|
||||
void SetDofNuclearDestruction( const G4double aValue );
|
||||
void SetPt2ofNuclearDestruction( const G4double aValue );
|
||||
void SetMaxPt2ofNuclearDestruction( const G4double aValue );
|
||||
|
||||
// Get parameters of nuclear destruction
|
||||
G4double GetCofNuclearDestruction();
|
||||
G4double GetR2ofNuclearDestruction();
|
||||
|
||||
G4double GetExcitationEnergyPerWoundedNucleon();
|
||||
|
||||
G4double GetDofNuclearDestruction();
|
||||
G4double GetPt2ofNuclearDestruction();
|
||||
G4double GetMaxPt2ofNuclearDestruction();
|
||||
//Uzhi End copy from FTFparameters
|
||||
|
||||
protected:
|
||||
virtual G4VSplitableHadron* SelectInteractions(const G4ReactionProduct &thePrimary);
|
||||
void SplitHadrons();
|
||||
void PerformSoftCollisions();
|
||||
void PerformDiffractiveCollisions();
|
||||
G4bool DeterminePartonMomenta();
|
||||
|
||||
protected:
|
||||
struct DeleteInteractionContent {void operator()(G4InteractionContent*aC){delete aC;}};
|
||||
std::vector<G4InteractionContent*> theInteractions;
|
||||
struct DeleteSplitableHadron{void operator()(G4VSplitableHadron*aS){delete aS;}};
|
||||
std::vector<G4VSplitableHadron*> theTargets;
|
||||
struct DeletePartonPair{void operator()(G4PartonPair*aP){delete aP;}};
|
||||
std::vector<G4PartonPair*> thePartonPairs;
|
||||
|
||||
G4SingleDiffractiveExcitation theSingleDiffExcitation;
|
||||
G4QGSDiffractiveExcitation theDiffExcitaton;
|
||||
G4int ModelMode;
|
||||
G4bool IsSingleDiffractive();
|
||||
|
||||
G4ThreeVector theBoost;
|
||||
G4double SampleX(G4double anXmin, G4int nSea, G4int theTotalSea, G4double aBeta);
|
||||
protected:
|
||||
// model parameters HPW
|
||||
enum { SOFT, DIFFRACTIVE };
|
||||
const G4int nCutMax;
|
||||
const G4double ThresholdParameter;
|
||||
const G4double QGSMThreshold;
|
||||
const G4double theNucleonRadius;
|
||||
|
||||
// cash theCurrentVelocity for lorentztrafo HPW
|
||||
G4ThreeVector theCurrentVelocity; // Uzhi 17 Apr. 2015
|
||||
G4QGSMSplitableHadron* theProjectileSplitable; // Uzhi 21.05.2015
|
||||
private:
|
||||
//Uzhi Start copy from FTFmodel
|
||||
G4ReactionProduct theProjectile;
|
||||
// G4QGSMSplitableHadron* theProjectileSplitable;
|
||||
|
||||
G4double alpha;
|
||||
G4double beta;
|
||||
|
||||
G4double sigmaPt;
|
||||
//Uzhi G4FTFParticipants theParticipants;
|
||||
|
||||
G4Nucleon* TheInvolvedNucleonsOfTarget[250];
|
||||
G4int NumberOfInvolvedNucleonsOfTarget;
|
||||
|
||||
G4Nucleon* TheInvolvedNucleonsOfProjectile[250];
|
||||
G4int NumberOfInvolvedNucleonsOfProjectile;
|
||||
|
||||
//Uzhi G4FTFParameters* theParameters;
|
||||
//Uzhi G4DiffractiveExcitation* theExcitation;
|
||||
//Uzhi G4ElasticHNScattering* theElastic;
|
||||
//Uzhi G4FTFAnnihilation* theAnnihilation;
|
||||
|
||||
//Uzhi std::vector< G4VSplitableHadron* > theAdditionalString;
|
||||
|
||||
//Uzhi G4double LowEnergyLimit;
|
||||
//Uzhi G4bool HighEnergyInter;
|
||||
|
||||
G4LorentzVector ProjectileResidual4Momentum;
|
||||
G4int ProjectileResidualMassNumber;
|
||||
G4int ProjectileResidualCharge;
|
||||
G4double ProjectileResidualExcitationEnergy;
|
||||
|
||||
G4LorentzVector TargetResidual4Momentum;
|
||||
G4int TargetResidualMassNumber;
|
||||
G4int TargetResidualCharge;
|
||||
G4double TargetResidualExcitationEnergy;
|
||||
//Uzhi End copy from FTFmodel
|
||||
|
||||
//Uzhi Start copy from FTFparameters
|
||||
private:
|
||||
// Parameters of nuclear destruction
|
||||
G4double CofNuclearDestruction; // Cnd of nuclear destruction
|
||||
G4double R2ofNuclearDestruction; // R2nd
|
||||
|
||||
G4double ExcitationEnergyPerWoundedNucleon;
|
||||
|
||||
G4double DofNuclearDestruction; // D for momentum sampling
|
||||
G4double Pt2ofNuclearDestruction; // Pt2
|
||||
G4double MaxPt2ofNuclearDestruction; // Max Pt2
|
||||
//Uzhi End copy from FTFparameters
|
||||
G4ThreeVector theBoost;
|
||||
|
||||
protected:
|
||||
// model parameters HPW
|
||||
enum { SOFT, DIFFRACTIVE };
|
||||
const G4int nCutMax;
|
||||
const G4double ThresholdParameter;
|
||||
const G4double QGSMThreshold;
|
||||
const G4double theNucleonRadius;
|
||||
};
|
||||
|
||||
|
||||
inline G4bool G4QGSParticipants::IsSingleDiffractive()
|
||||
{
|
||||
G4bool result=false;
|
||||
if(G4UniformRand()<1.) result = true;
|
||||
return result;
|
||||
G4bool result=false;
|
||||
if(G4UniformRand()<1.) result = true;
|
||||
return result;
|
||||
}
|
||||
|
||||
inline void G4QGSParticipants::StartPartonPairLoop()
|
||||
@@ -244,111 +103,20 @@ inline void G4QGSParticipants::StartPartonPairLoop()
|
||||
|
||||
inline G4PartonPair* G4QGSParticipants::GetNextPartonPair()
|
||||
{
|
||||
if (thePartonPairs.empty()) return 0;
|
||||
G4PartonPair * result = thePartonPairs.back();
|
||||
thePartonPairs.pop_back();
|
||||
return result;
|
||||
if (thePartonPairs.empty()) return 0;
|
||||
G4PartonPair * result = thePartonPairs.back();
|
||||
thePartonPairs.pop_back();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
inline void G4QGSParticipants::SplitHadrons()
|
||||
{
|
||||
//G4cout<<"----------------------------------- SplitHadrons -------------"<<G4endl;
|
||||
//G4cout<<"theInteractions.size() "<<theInteractions.size()<<G4endl;
|
||||
|
||||
unsigned int i;
|
||||
for(i = 0; i < theInteractions.size(); i++)
|
||||
{
|
||||
//G4cout<<i<<" "<<theInteractions[i]->GetProjectile()<<" "<<theInteractions[i]->GetProjectileNucleon()<<" "
|
||||
// <<theInteractions[i]->GetTarget()<<" "<<theInteractions[i]->GetTargetNucleon()<<G4endl;
|
||||
|
||||
//G4cout<<i<<" "<<theInteractions[i]->GetProjectile()->GetDefinition()->GetParticleName()<<G4endl;
|
||||
//G4cout<<i<<" "<<theInteractions[i]->GetTarget()->GetDefinition()->GetParticleName()<<G4endl;
|
||||
}
|
||||
for(i = 0; i < theInteractions.size(); i++)
|
||||
{
|
||||
//G4cout<<i<<" "<<theInteractions[i]->GetNumberOfSoftCollisions()<<" "
|
||||
// <<theInteractions[i]->GetNumberOfHardCollisions()<<" "
|
||||
// <<theInteractions[i]->GetNumberOfDiffractiveCollisions()<<G4endl;
|
||||
|
||||
}
|
||||
//G4cout<<"******************************** SplitHadrons ************"<<G4endl;
|
||||
for(i = 0; i < theInteractions.size(); i++)
|
||||
{
|
||||
//G4cout<<"Interaction # "<<i<<" QGSPartic"<<G4endl;
|
||||
theInteractions[i]->SplitHadrons();
|
||||
}
|
||||
}
|
||||
//--------------------------------------
|
||||
//Uzhi Copy from FTF Model.hh
|
||||
/*
|
||||
inline G4V3DNucleus* G4QGSParticipants::GetWoundedNucleus() const {
|
||||
return theNucleus;
|
||||
}
|
||||
*/
|
||||
|
||||
inline G4V3DNucleus* G4QGSParticipants::GetTargetNucleus() const {
|
||||
return theNucleus;
|
||||
unsigned int i;
|
||||
for(i = 0; i < theInteractions.size(); i++)
|
||||
{
|
||||
theInteractions[i]->SplitHadrons();
|
||||
}
|
||||
}
|
||||
|
||||
inline G4V3DNucleus* G4QGSParticipants::GetProjectileNucleus() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Uzhi Start copy from FTFparameters
|
||||
|
||||
|
||||
// Set parameters of nuclear destruction
|
||||
|
||||
inline void G4QGSParticipants::SetCofNuclearDestruction( const G4double aValue ) {
|
||||
CofNuclearDestruction = aValue;
|
||||
}
|
||||
|
||||
inline void G4QGSParticipants::SetR2ofNuclearDestruction( const G4double aValue ) {
|
||||
R2ofNuclearDestruction = aValue;
|
||||
}
|
||||
|
||||
inline void G4QGSParticipants::SetExcitationEnergyPerWoundedNucleon( const G4double aValue ) {
|
||||
ExcitationEnergyPerWoundedNucleon = aValue;
|
||||
}
|
||||
|
||||
inline void G4QGSParticipants::SetDofNuclearDestruction( const G4double aValue ) {
|
||||
DofNuclearDestruction = aValue;
|
||||
}
|
||||
|
||||
inline void G4QGSParticipants::SetPt2ofNuclearDestruction( const G4double aValue ) {
|
||||
Pt2ofNuclearDestruction = aValue;
|
||||
}
|
||||
|
||||
inline void G4QGSParticipants::SetMaxPt2ofNuclearDestruction( const G4double aValue ) {
|
||||
MaxPt2ofNuclearDestruction = aValue;
|
||||
}
|
||||
|
||||
// Get parameters of nuclear destruction
|
||||
inline G4double G4QGSParticipants::GetCofNuclearDestruction() {
|
||||
return CofNuclearDestruction;
|
||||
}
|
||||
|
||||
inline G4double G4QGSParticipants::GetR2ofNuclearDestruction() {
|
||||
return R2ofNuclearDestruction;
|
||||
}
|
||||
|
||||
inline G4double G4QGSParticipants::GetExcitationEnergyPerWoundedNucleon() {
|
||||
return ExcitationEnergyPerWoundedNucleon;
|
||||
}
|
||||
|
||||
inline G4double G4QGSParticipants::GetDofNuclearDestruction() {
|
||||
return DofNuclearDestruction;
|
||||
}
|
||||
|
||||
inline G4double G4QGSParticipants::GetPt2ofNuclearDestruction() {
|
||||
return Pt2ofNuclearDestruction;
|
||||
}
|
||||
|
||||
inline G4double G4QGSParticipants::GetMaxPt2ofNuclearDestruction() {
|
||||
return MaxPt2ofNuclearDestruction;
|
||||
}
|
||||
//Uzhi End copy from FTFparameters
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -55,45 +55,46 @@
|
||||
|
||||
class G4SPBaryon
|
||||
{
|
||||
public:
|
||||
G4SPBaryon(G4Proton * aProton);
|
||||
G4SPBaryon(G4Neutron * aNeutron);
|
||||
G4SPBaryon(G4Lambda * aLambda);
|
||||
G4SPBaryon(G4SigmaPlus * aSigmaPlus);
|
||||
G4SPBaryon(G4SigmaZero * aSigmaZero);
|
||||
G4SPBaryon(G4SigmaMinus * aSigmaMinus);
|
||||
G4SPBaryon(G4XiMinus * aXiMinus);
|
||||
G4SPBaryon(G4XiZero * aXiZero);
|
||||
G4SPBaryon(G4OmegaMinus * anOmegaMinus);
|
||||
public:
|
||||
G4SPBaryon(G4Proton * aProton);
|
||||
G4SPBaryon(G4Neutron * aNeutron);
|
||||
G4SPBaryon(G4Lambda * aLambda);
|
||||
G4SPBaryon(G4SigmaPlus * aSigmaPlus);
|
||||
G4SPBaryon(G4SigmaZero * aSigmaZero);
|
||||
G4SPBaryon(G4SigmaMinus * aSigmaMinus);
|
||||
G4SPBaryon(G4XiMinus * aXiMinus);
|
||||
G4SPBaryon(G4XiZero * aXiZero);
|
||||
G4SPBaryon(G4OmegaMinus * anOmegaMinus);
|
||||
|
||||
G4SPBaryon(G4AntiProton * aAntiProton);
|
||||
G4SPBaryon(G4AntiNeutron * aAntiNeutron);
|
||||
G4SPBaryon(G4AntiLambda * aAntiLambda);
|
||||
G4SPBaryon(G4AntiSigmaPlus * aAntiSigmaPlus);
|
||||
G4SPBaryon(G4AntiSigmaZero * aAntiSigmaZero);
|
||||
G4SPBaryon(G4AntiSigmaMinus * aAntiSigmaMinus);
|
||||
G4SPBaryon(G4AntiXiMinus * aAntiXiMinus);
|
||||
G4SPBaryon(G4AntiXiZero * aAntiXiZero);
|
||||
G4SPBaryon(G4AntiOmegaMinus * anAntiOmegaMinus);
|
||||
G4SPBaryon(G4AntiProton * aAntiProton);
|
||||
G4SPBaryon(G4AntiNeutron * aAntiNeutron);
|
||||
G4SPBaryon(G4AntiLambda * aAntiLambda);
|
||||
G4SPBaryon(G4AntiSigmaPlus * aAntiSigmaPlus);
|
||||
G4SPBaryon(G4AntiSigmaZero * aAntiSigmaZero);
|
||||
G4SPBaryon(G4AntiSigmaMinus * aAntiSigmaMinus);
|
||||
G4SPBaryon(G4AntiXiMinus * aAntiXiMinus);
|
||||
G4SPBaryon(G4AntiXiZero * aAntiXiZero);
|
||||
G4SPBaryon(G4AntiOmegaMinus * anAntiOmegaMinus);
|
||||
|
||||
G4SPBaryon(G4ParticleDefinition * aDefinition);
|
||||
G4SPBaryon(G4ParticleDefinition * aDefinition);
|
||||
|
||||
~G4SPBaryon();
|
||||
private:
|
||||
G4bool operator == ( const G4SPBaryon & aBaryon) const;
|
||||
|
||||
public:
|
||||
G4ParticleDefinition * GetDefinition() {return theDefinition;}
|
||||
void SampleQuarkAndDiquark(G4int & quark, G4int & diQuark) const;
|
||||
void FindDiquark(G4int quark, G4int & diQuark) const;
|
||||
G4int FindQuark(G4int diQuark) const;
|
||||
G4double GetProbability(G4int diQuark) const;
|
||||
G4int MatchDiQuarkAndGetQuark(const G4SPBaryon & aBaryon, G4int & aDiQuark) const;
|
||||
private:
|
||||
G4bool operator == ( const G4SPBaryon & aBaryon) const;
|
||||
|
||||
private:
|
||||
public:
|
||||
G4ParticleDefinition * GetDefinition() {return theDefinition;}
|
||||
void SampleQuarkAndDiquark(G4int & quark, G4int & diQuark) const;
|
||||
void FindDiquark(G4int quark, G4int & diQuark) const;
|
||||
G4int FindQuark(G4int diQuark) const;
|
||||
G4double GetProbability(G4int diQuark) const;
|
||||
G4int MatchDiQuarkAndGetQuark(const G4SPBaryon & aBaryon, G4int & aDiQuark) const;
|
||||
|
||||
G4ParticleDefinition * theDefinition;
|
||||
std::vector<G4SPPartonInfo *> thePartonInfo;
|
||||
private:
|
||||
G4ParticleDefinition * theDefinition;
|
||||
std::vector<G4SPPartonInfo *> thePartonInfo;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -31,33 +31,33 @@
|
||||
|
||||
class G4SPBaryonTable
|
||||
{
|
||||
public:
|
||||
struct DeleteSPBaryon{void operator()(G4SPBaryon* aS){delete aS;} };
|
||||
public:
|
||||
struct DeleteSPBaryon{void operator()(G4SPBaryon* aS){delete aS;} };
|
||||
|
||||
~G4SPBaryonTable() {std::for_each(theBaryons.begin(), theBaryons.end(), G4SPBaryonTable::DeleteSPBaryon());}
|
||||
void insert(G4SPBaryon * aBaryon) { theBaryons.push_back(aBaryon);}
|
||||
G4double length() {return theBaryons.size();}
|
||||
~G4SPBaryonTable() {std::for_each(theBaryons.begin(), theBaryons.end(), G4SPBaryonTable::DeleteSPBaryon());}
|
||||
void insert(G4SPBaryon * aBaryon) { theBaryons.push_back(aBaryon);}
|
||||
G4double length() {return theBaryons.size();}
|
||||
|
||||
const G4SPBaryon * GetBaryon(G4ParticleDefinition * aDefinition);
|
||||
|
||||
private:
|
||||
std::vector<G4SPBaryon *> theBaryons;
|
||||
const G4SPBaryon * GetBaryon(G4ParticleDefinition * aDefinition);
|
||||
|
||||
private:
|
||||
std::vector<G4SPBaryon *> theBaryons;
|
||||
};
|
||||
|
||||
inline const G4SPBaryon * G4SPBaryonTable::
|
||||
GetBaryon(G4ParticleDefinition * aDefinition)
|
||||
{
|
||||
G4SPBaryon * result = 0;
|
||||
for(unsigned int i=0; i<theBaryons.size(); i++)
|
||||
{
|
||||
if(theBaryons[i]->GetDefinition()==aDefinition)
|
||||
{
|
||||
result = theBaryons[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
G4SPBaryon * result = 0;
|
||||
for(unsigned int i=0; i<theBaryons.size(); i++)
|
||||
{
|
||||
if(theBaryons[i]->GetDefinition()==aDefinition)
|
||||
{
|
||||
result = theBaryons[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -28,19 +28,20 @@
|
||||
|
||||
class G4SPPartonInfo
|
||||
{
|
||||
public:
|
||||
G4SPPartonInfo(G4int diq, G4int q, G4double prob)
|
||||
{ diQuarkPDGCode = diq; quarkPDGCode = q; probability = prob; }
|
||||
G4int GetQuark() const {return quarkPDGCode;}
|
||||
G4int GetDiQuark() const {return diQuarkPDGCode;}
|
||||
G4double GetProbability() const {return probability;}
|
||||
private:
|
||||
G4bool operator == (const G4SPPartonInfo & aInfo) const;
|
||||
public:
|
||||
G4SPPartonInfo(G4int diq, G4int q, G4double prob)
|
||||
{ diQuarkPDGCode = diq; quarkPDGCode = q; probability = prob; }
|
||||
G4int GetQuark() const {return quarkPDGCode;}
|
||||
G4int GetDiQuark() const {return diQuarkPDGCode;}
|
||||
G4double GetProbability() const {return probability;}
|
||||
private:
|
||||
G4bool operator == (const G4SPPartonInfo & aInfo) const;
|
||||
|
||||
private:
|
||||
G4int quarkPDGCode;
|
||||
G4int diQuarkPDGCode;
|
||||
G4double probability;
|
||||
private:
|
||||
G4int quarkPDGCode;
|
||||
G4int diQuarkPDGCode;
|
||||
G4double probability;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+23
-24
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4SingleDiffractiveExcitation.hh 69570 2013-05-08 13:23:39Z gcosmo $
|
||||
// $Id: G4SingleDiffractiveExcitation.hh 100828 2016-11-02 15:25:59Z gcosmo $
|
||||
|
||||
#ifndef G4SingleDiffractiveExcitation_h
|
||||
#define G4SingleDiffractiveExcitation_h 1
|
||||
@@ -49,37 +49,36 @@ class G4ExcitedString;
|
||||
|
||||
class G4SingleDiffractiveExcitation : public G4QGSDiffractiveExcitation
|
||||
{
|
||||
public:
|
||||
|
||||
public:
|
||||
G4SingleDiffractiveExcitation(G4double sigmaPt=0.6*CLHEP::GeV,
|
||||
G4double minExtraMass=250*CLHEP::MeV,
|
||||
G4double x0mass=250*CLHEP::MeV);
|
||||
~G4SingleDiffractiveExcitation();
|
||||
|
||||
G4SingleDiffractiveExcitation(G4double sigmaPt=0.6*CLHEP::GeV,
|
||||
G4double minExtraMass=250*CLHEP::MeV,
|
||||
G4double x0mass=250*CLHEP::MeV);
|
||||
~G4SingleDiffractiveExcitation();
|
||||
G4bool ExciteParticipants(G4VSplitableHadron *aPartner, G4VSplitableHadron * bPartner) const;
|
||||
|
||||
G4bool ExciteParticipants (G4VSplitableHadron *aPartner, G4VSplitableHadron * bPartner) const;
|
||||
//void SetPtWidth(G4double aValue) { widthOfPtSquare = aValue*aValue; }
|
||||
//void SetExtraMass(G4double aValue) { minExtraMass = aValue; }
|
||||
//void SetMinimumMass(G4double aValue) { minmass = aValue; }
|
||||
|
||||
// void SetPtWidth(G4double aValue) { widthOfPtSquare = aValue*aValue; }
|
||||
// void SetExtraMass(G4double aValue) { minExtraMass = aValue; }
|
||||
// void SetMinimumMass(G4double aValue) { minmass = aValue; }
|
||||
private:
|
||||
|
||||
G4SingleDiffractiveExcitation(const G4SingleDiffractiveExcitation &right);
|
||||
|
||||
private:
|
||||
G4double ChooseX(G4double Xmin, G4double Xmax) const;
|
||||
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const;
|
||||
|
||||
G4SingleDiffractiveExcitation(const G4SingleDiffractiveExcitation &right);
|
||||
const G4SingleDiffractiveExcitation & operator=(const G4SingleDiffractiveExcitation &right);
|
||||
int operator==(const G4SingleDiffractiveExcitation &right) const;
|
||||
int operator!=(const G4SingleDiffractiveExcitation &right) const;
|
||||
|
||||
G4double ChooseX(G4double Xmin, G4double Xmax) const;
|
||||
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const;
|
||||
|
||||
const G4SingleDiffractiveExcitation & operator=(const G4SingleDiffractiveExcitation &right);
|
||||
int operator==(const G4SingleDiffractiveExcitation &right) const;
|
||||
int operator!=(const G4SingleDiffractiveExcitation &right) const;
|
||||
|
||||
private:
|
||||
// Model Parameters:
|
||||
const G4double widthOfPtSquare; // width^2 of pt for string excitation
|
||||
const G4double minExtraMass; // minimum excitation mass
|
||||
const G4double minmass; // mean pion transverse mass; used for Xmin
|
||||
private:
|
||||
// Model Parameters:
|
||||
const G4double widthOfPtSquare; // width^2 of pt for string excitation
|
||||
const G4double minExtraMass; // minimum excitation mass
|
||||
const G4double minmass; // mean pion transverse mass; used for Xmin
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -33,18 +33,18 @@
|
||||
|
||||
|
||||
class G4SoftStringBuilder
|
||||
{
|
||||
public:
|
||||
{
|
||||
public:
|
||||
G4SoftStringBuilder();
|
||||
~G4SoftStringBuilder();
|
||||
|
||||
|
||||
G4ExcitedString* BuildString(G4PartonPair * aPair);
|
||||
|
||||
private:
|
||||
private:
|
||||
G4SoftStringBuilder(const G4SoftStringBuilder &right);
|
||||
G4int operator==(const G4SoftStringBuilder &right) const;
|
||||
G4int operator!=(const G4SoftStringBuilder &right) const;
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
+4
-3
@@ -30,9 +30,10 @@
|
||||
|
||||
class G4VAnnihilationCrossSection
|
||||
{
|
||||
public:
|
||||
virtual G4bool InCharge(G4int aCode, G4int bCode) = 0;
|
||||
virtual G4double GetXsec(G4double s) = 0;
|
||||
public:
|
||||
virtual G4bool InCharge(G4int aCode, G4int bCode) = 0;
|
||||
virtual G4double GetXsec(G4double s) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user