Import Geant4 10.5.0.beta source tree
This commit is contained in:
+37
-2
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4DiffractiveExcitation.hh 100828 2016-11-02 15:25:59Z gcosmo $
|
||||
// $Id: G4DiffractiveExcitation.hh 110870 2018-06-22 12:14:16Z gcosmo $
|
||||
|
||||
#ifndef G4DiffractiveExcitation_h
|
||||
#define G4DiffractiveExcitation_h 1
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4FTFParameters.hh"
|
||||
#include "G4ElasticHNScattering.hh" // Uzhi 3.09.09
|
||||
#include "G4ElasticHNScattering.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
|
||||
class G4VSplitableHadron;
|
||||
@@ -78,6 +78,41 @@ class G4DiffractiveExcitation {
|
||||
void UnpackMeson( G4int IdPDG, G4int& Q1, G4int& Q2 ) const;
|
||||
void UnpackBaryon( G4int IdPDG, G4int& Q1, G4int& Q2, G4int& Q3 ) const;
|
||||
G4int NewNucleonId( G4int Q1, G4int Q2, G4int Q3 ) const;
|
||||
|
||||
// The "ExciteParticipants" method uses the following struct and 3 new utility methods:
|
||||
struct CommonVariables {
|
||||
G4int ProjectilePDGcode = 0, absProjectilePDGcode = 0, TargetPDGcode = 0,
|
||||
absTargetPDGcode = 0;
|
||||
G4double M0projectile = 0.0, M0projectile2 = 0.0, M0target = 0.0, M0target2 = 0.0,
|
||||
ProjMassT = 0.0, ProjMassT2 = 0.0, TargMassT = 0.0, TargMassT2 = 0.0,
|
||||
MminProjectile = 0.0, MminTarget = 0.0,
|
||||
ProjectileDiffStateMinMass = 0.0, ProjectileDiffStateMinMass2 = 0.0,
|
||||
ProjectileNonDiffStateMinMass = 0.0, ProjectileNonDiffStateMinMass2 = 0.0,
|
||||
TargetDiffStateMinMass = 0.0, TargetDiffStateMinMass2 = 0.0,
|
||||
TargetNonDiffStateMinMass = 0.0, TargetNonDiffStateMinMass2 = 0.0,
|
||||
S = 0.0, SqrtS = 0.0, Pt2 = 0.0, PZcms = 0.0, PZcms2 = 0.0,
|
||||
AveragePt2 = 0.0, maxPtSquare = 0.0,
|
||||
ProbExc = 0.0, Qminus = 0.0, Qplus = 0.0,
|
||||
PMinusNew = 0.0, PPlusNew = 0.0, TMinusNew = 0.0, TPlusNew = 0.0,
|
||||
PMinusMin = 0.0, PMinusMax = 0.0, TPlusMin = 0.0, TPlusMax = 0.0,
|
||||
ProbProjectileDiffraction = 0.0, ProbTargetDiffraction = 0.0, ProbOfDiffraction = 0.0;
|
||||
G4LorentzVector Pprojectile, Ptarget, Qmomentum;
|
||||
G4LorentzRotation toCms, toLab;
|
||||
G4SampleResonance BrW;
|
||||
};
|
||||
G4int ExciteParticipants_doChargeExchange( G4VSplitableHadron* projectile,
|
||||
G4VSplitableHadron* target,
|
||||
G4FTFParameters* theParameters,
|
||||
G4ElasticHNScattering* theElastic,
|
||||
CommonVariables& common ) const;
|
||||
G4bool ExciteParticipants_doDiffraction( G4VSplitableHadron* projectile,
|
||||
G4VSplitableHadron* target,
|
||||
G4FTFParameters* theParameters,
|
||||
CommonVariables& common ) const;
|
||||
G4bool ExciteParticipants_doNonDiffraction( G4VSplitableHadron* projectile,
|
||||
G4VSplitableHadron* target,
|
||||
G4FTFParameters* theParameters,
|
||||
CommonVariables& common ) const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+26
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFAnnihilation.hh 100828 2016-11-02 15:25:59Z gcosmo $
|
||||
// $Id: G4FTFAnnihilation.hh 110870 2018-06-22 12:14:16Z gcosmo $
|
||||
|
||||
#ifndef G4FTFAnnihilation_h
|
||||
#define G4FTFAnnihilation_h 1
|
||||
@@ -63,6 +63,31 @@ class G4FTFAnnihilation {
|
||||
int operator==( const G4FTFAnnihilation& right ) const;
|
||||
int operator!=( const G4FTFAnnihilation& right ) const;
|
||||
|
||||
// The "Annihilate" method uses the following struct and 4 new utility methods:
|
||||
struct CommonVariables {
|
||||
G4int AQ[3], Q[3];
|
||||
G4bool RotateStrings = false;
|
||||
G4double S = 0.0, SqrtS = 0.0;
|
||||
G4LorentzVector Pprojectile, Ptarget;
|
||||
G4LorentzRotation toLab, RandomRotation;
|
||||
};
|
||||
G4bool Create3QuarkAntiQuarkStrings( G4VSplitableHadron* aPartner,
|
||||
G4VSplitableHadron* bPartner,
|
||||
G4VSplitableHadron*& AdditionalString,
|
||||
G4FTFParameters* theParameters,
|
||||
CommonVariables& common ) const;
|
||||
G4int Create1DiquarkAntiDiquarkString( G4VSplitableHadron* aPartner,
|
||||
G4VSplitableHadron* bPartner,
|
||||
CommonVariables& common ) const;
|
||||
G4int Create2QuarkAntiQuarkStrings( G4VSplitableHadron* aPartner,
|
||||
G4VSplitableHadron* bPartner,
|
||||
G4FTFParameters* theParameters,
|
||||
CommonVariables& common ) const;
|
||||
G4bool Create1QuarkAntiQuarkString( G4VSplitableHadron* aPartner,
|
||||
G4VSplitableHadron* bPartner,
|
||||
G4FTFParameters* theParameters,
|
||||
CommonVariables& common ) const;
|
||||
|
||||
G4ThreeVector GaussianPt( G4double AveragePt2, G4double maxPtSquare ) const;
|
||||
G4double ChooseX( G4double Alpha, G4double Beta ) const;
|
||||
void UnpackBaryon( G4int IdPDG, G4int& Q1, G4int& Q2, G4int& Q3 ) const;
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFModel.hh 100828 2016-11-02 15:25:59Z gcosmo $
|
||||
// $Id: G4FTFModel.hh 110870 2018-06-22 12:14:16Z gcosmo $
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
// Class Description
|
||||
@@ -84,12 +84,45 @@ class G4FTFModel : public G4VPartonStringModel {
|
||||
G4bool PutOnMassShell();
|
||||
G4bool ExciteParticipants();
|
||||
G4ExcitedStringVector* BuildStrings();
|
||||
void GetResiduals();
|
||||
void GetResiduals();
|
||||
|
||||
G4bool AdjustNucleons( G4VSplitableHadron* SelectedAntiBaryon,
|
||||
G4Nucleon* ProjectileNucleon,
|
||||
G4VSplitableHadron* SelectedTargetNucleon,
|
||||
G4Nucleon* TargetNucleon,
|
||||
G4bool Annihilation );
|
||||
// The "AdjustNucleons" method uses the following struct and 3 new utility methods:
|
||||
struct CommonVariables {
|
||||
G4int TResidualMassNumber = 0, TResidualCharge = 0, PResidualMassNumber = 0,
|
||||
PResidualCharge = 0;
|
||||
G4double SqrtS = 0.0, S = 0.0, SumMasses = 0.0,
|
||||
TResidualExcitationEnergy = 0.0, TResidualMass = 0.0, TNucleonMass = 0.0,
|
||||
PResidualExcitationEnergy = 0.0, PResidualMass = 0.0, PNucleonMass = 0.0,
|
||||
Mprojectile = 0.0, M2projectile = 0.0, Pzprojectile = 0.0, Eprojectile = 0.0,
|
||||
WplusProjectile = 0.0,
|
||||
Mtarget = 0.0, M2target = 0.0, Pztarget = 0.0, Etarget = 0.0, WminusTarget = 0.0,
|
||||
Mt2targetNucleon = 0.0, PztargetNucleon = 0.0, EtargetNucleon = 0.0,
|
||||
Mt2projectileNucleon = 0.0, PzprojectileNucleon = 0.0, EprojectileNucleon = 0.0,
|
||||
YtargetNucleus = 0.0, YprojectileNucleus = 0.0,
|
||||
XminusNucleon = 0.0, XplusNucleon = 0.0, XminusResidual = 0.0, XplusResidual = 0.0;
|
||||
G4ThreeVector PtNucleon, PtResidual, PtNucleonP, PtResidualP, PtNucleonT, PtResidualT;
|
||||
G4LorentzVector Psum, Pprojectile, Ptmp, Ptarget, TResidual4Momentum, PResidual4Momentum;
|
||||
G4LorentzRotation toCms, toLab;
|
||||
};
|
||||
G4int AdjustNucleonsAlgorithm_beforeSampling( G4int interactionCase,
|
||||
G4VSplitableHadron* SelectedAntiBaryon,
|
||||
G4Nucleon* ProjectileNucleon,
|
||||
G4VSplitableHadron* SelectedTargetNucleon,
|
||||
G4Nucleon* TargetNucleon,
|
||||
G4bool Annihilation,
|
||||
CommonVariables& common );
|
||||
G4bool AdjustNucleonsAlgorithm_Sampling( G4int interactionCase,
|
||||
CommonVariables& common );
|
||||
void AdjustNucleonsAlgorithm_afterSampling( G4int interactionCase,
|
||||
G4VSplitableHadron* SelectedAntiBaryon,
|
||||
G4VSplitableHadron* SelectedTargetNucleon,
|
||||
CommonVariables& common );
|
||||
|
||||
G4ThreeVector GaussianPt( G4double AveragePt2, G4double maxPtSquare ) const;
|
||||
|
||||
G4bool ComputeNucleusProperties( G4V3DNucleus* nucleus, G4LorentzVector& nucleusMomentum,
|
||||
|
||||
+192
-185
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFParameters.hh 107317 2017-11-08 16:25:57Z gcosmo $
|
||||
// $Id: G4FTFParameters.hh 107868 2017-12-07 14:45:15Z gcosmo $
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
#ifndef G4FTFParameters_h
|
||||
@@ -46,197 +46,205 @@
|
||||
// * "undefined" projectile - nucleon assumed
|
||||
|
||||
class G4FTFParamCollection {
|
||||
public:
|
||||
//dtor
|
||||
virtual ~G4FTFParamCollection() {}
|
||||
|
||||
// parameters of excitation
|
||||
//
|
||||
// Proc=0 --> Qexchg w/o excitation
|
||||
//
|
||||
double GetProc0A1() const { return fProc0A1; }
|
||||
double GetProc0B1() const { return fProc0B1; }
|
||||
double GetProc0A2() const { return fProc0A2; }
|
||||
double GetProc0B2() const { return fProc0B2; }
|
||||
double GetProc0A3() const { return fProc0A3; }
|
||||
double GetProc0Atop() const { return fProc0Atop; }
|
||||
double GetProc0Ymin() const { return fProc0Ymin; }
|
||||
//
|
||||
// Proc=1 --> Qexchg w/excitation
|
||||
//
|
||||
// Proc=2 & Proc=3 for the case ( AbsProjectileBaryonNumber > 1 || NumberOfTargetNucleons > 1 )
|
||||
// (diffraction dissociation)
|
||||
//
|
||||
bool IsProjDiffDissociation() const { return fProjDiffDissociation; }
|
||||
bool IsTgtDiffDissociation() const { return fTgtDiffDissociation; }
|
||||
//
|
||||
double GetProc1A1() const { return fProc1A1; }
|
||||
double GetProc1B1() const { return fProc1B1; }
|
||||
double GetProc1A2() const { return fProc1A2; }
|
||||
double GetProc1B2() const { return fProc1B2; }
|
||||
double GetProc1A3() const { return fProc1A3; }
|
||||
double GetProc1Atop() const { return fProc1Atop; }
|
||||
double GetProc1Ymin() const { return fProc0Ymin; }
|
||||
//
|
||||
// Proc=4 --> Qexchg "w/additional multiplier" in excitation
|
||||
//
|
||||
double GetProc4A1() const { return fProc4A1; }
|
||||
double GetProc4B1() const { return fProc4B1; }
|
||||
double GetProc4A2() const { return fProc4A2; }
|
||||
double GetProc4B2() const { return fProc4B2; }
|
||||
double GetProc4A3() const { return fProc4A3; }
|
||||
double GetProc4Atop() const { return fProc4Atop; }
|
||||
double GetProc4Ymin() const { return fProc4Ymin; }
|
||||
//
|
||||
//
|
||||
double GetDeltaProbAtQuarkExchange() const { return fDeltaProbAtQuarkExchange; }
|
||||
double GetProbOfSameQuarkExchange() const { return fProbOfSameQuarkExchange; }
|
||||
double GetProjMinDiffMass() const { return fProjMinDiffMass; }
|
||||
double GetProjMinNonDiffMass() const { return fProjMinNonDiffMass; }
|
||||
double GetTgtMinDiffMass() const { return fTgtMinDiffMass; }
|
||||
double GetTgtMinNonDiffMass() const { return fTgtMinNonDiffMass; }
|
||||
double GetAveragePt2() const { return fAveragePt2; }
|
||||
double GetProbLogDistrPrD() const { return fProbLogDistrPrD; }
|
||||
double GetProbLogDistr() const { return fProbLogDistr; }
|
||||
|
||||
// NOTE (JVY): There is also the Pt2Kind parameter but for now it's set to 0., so we'll leave it aside
|
||||
// --> FIXME !!! --> void Get/SetBaryonMaxNumberOfCollisions( const double, const double ); // 1st is Plab, 2nd - D=2.
|
||||
// NOTE (JVY): These parameters are COMMON among various projectiles !!!
|
||||
//
|
||||
double GetNuclearProjDestructP1() const { return fNuclearProjDestructP1; }
|
||||
bool IsNuclearProjDestructP1_NBRNDEP() const { return fNuclearProjDestructP1_NBRNDEP; }
|
||||
double GetNuclearTgtDestructP1() const { return fNuclearTgtDestructP1; }
|
||||
bool IsNuclearTgtDestructP1_ADEP() const { return fNuclearTgtDestructP1_ADEP; }
|
||||
double GetNuclearProjDestructP2() const { return fNuclearProjDestructP2; }
|
||||
double GetNuclearProjDestructP3() const { return fNuclearProjDestructP3; }
|
||||
double GetNuclearTgtDestructP2() const { return fNuclearTgtDestructP2; }
|
||||
double GetNuclearTgtDestructP3() const { return fNuclearTgtDestructP3; }
|
||||
double GetPt2NuclearDestructP1() const { return fPt2NuclearDestructP1; }
|
||||
double GetPt2NuclearDestructP2() const { return fPt2NuclearDestructP2; }
|
||||
double GetPt2NuclearDestructP3() const { return fPt2NuclearDestructP3; }
|
||||
double GetPt2NuclearDestructP4() const { return fPt2NuclearDestructP4; }
|
||||
//
|
||||
// separately for baryons, mesons, etc.
|
||||
//
|
||||
double GetR2ofNuclearDestruct() const { return fR2ofNuclearDestruct; }
|
||||
double GetExciEnergyPerWoundedNucleon() const { return fExciEnergyPerWoundedNucleon; }
|
||||
double GetDofNuclearDestruct() const { return fDofNuclearDestruct; }
|
||||
double GetMaxPt2ofNuclearDestruct() const { return fMaxPt2ofNuclearDestruct; }
|
||||
public:
|
||||
|
||||
protected:
|
||||
// ctor
|
||||
G4FTFParamCollection();
|
||||
//dtor
|
||||
virtual ~G4FTFParamCollection() {}
|
||||
|
||||
// parameters of excitation
|
||||
//
|
||||
//
|
||||
// these are for Inelastic interactions, i.e. Xinelastic=(Xtotal-Xelastix)>0.
|
||||
// for elastic, all the A's & B's, Atop & Ymin are zeros
|
||||
// general formula: Pp = A1*exp(B1*Y) + A2*exp(B2*Y) + A3
|
||||
// but if Y<Ymin, then Pp=max(0.,Atop)
|
||||
// for details, see also G4FTFParameters::GetProcProb( ProcN, y )
|
||||
//
|
||||
// Proc=0 --> Qexchg w/o excitation
|
||||
double fProc0A1; // D=13.71
|
||||
double fProc0B1; // D=1.75
|
||||
double fProc0A2; // D=-30.69 (or -214.5 as in Doc ?)
|
||||
double fProc0B2; // D=3. ( or 4. as in Doc ?)
|
||||
double fProc0A3; // D=0.
|
||||
double fProc0Atop; // D=1. ( or 0.5 as in Doc ?)
|
||||
double fProc0Ymin; // D=0.93 (or 1.1 as in Doc ?)
|
||||
// Proc=1 --> Qexchg w/excitation
|
||||
double fProc1A1; // D=25.
|
||||
double fProc1B1; // D=1.
|
||||
double fProc1A2; // D=-50.34
|
||||
double fProc1B2; // D=1.5
|
||||
double fProc1A3; // D=0.
|
||||
double fProc1Atop; // D=0.
|
||||
double fProc1Ymin; // D=1.4
|
||||
//
|
||||
// NOTE: Proc #2 & 3 are projectile & target diffraction
|
||||
// they have more complex definition of A1 & A2
|
||||
// (see around line 540 or so)
|
||||
// SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93);// Projectile diffraction
|
||||
// SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93);// Target diffraction
|
||||
//
|
||||
// Also, for ( AbsProjectileBaryonNumber > 1 || NumberOfTargetNucleons > 1 )
|
||||
// projectile and/or target diffraction (dissociation) may be switched ON/OFF
|
||||
bool fProjDiffDissociation;
|
||||
bool fTgtDiffDissociation;
|
||||
//
|
||||
// Proc=4 --> Qexchg w/additional multiplier in excitation
|
||||
double fProc4A1; // D=0.6 (or 1. as in Doc ?)
|
||||
double fProc4B1; // D=0.
|
||||
double fProc4A2; // D=-1.2 (or -2.01 as in Doc ?)
|
||||
double fProc4B2; // D=0.5
|
||||
double fProc4A3; // D=0.
|
||||
double fProc4Atop; // D=0.
|
||||
double fProc4Ymin; // D=1.4
|
||||
//
|
||||
// parameters of participating baryon excitation
|
||||
//
|
||||
double fDeltaProbAtQuarkExchange; // D=0.
|
||||
double fProbOfSameQuarkExchange; // D=0. if A<=26, otherwise D=1.
|
||||
double fProjMinDiffMass; // projectile, D=1.16GeV
|
||||
double fProjMinNonDiffMass; // projectile, D=1.16GeV
|
||||
double fTgtMinDiffMass; // target, D=1.16GeV
|
||||
double fTgtMinNonDiffMass; // target, D=1.16GeV
|
||||
double fAveragePt2; // D=0.3GeV**2 ( or 0.15 as in the Doc ???)
|
||||
double fProbLogDistrPrD; // D=0.6 (or 0.3 ???)
|
||||
double fProbLogDistr; // D=0.6 (or 0.3 ???)
|
||||
// parameters of excitation
|
||||
//
|
||||
// Proc=0 --> Qexchg w/o excitation
|
||||
//
|
||||
double GetProc0A1() const { return fProc0A1; }
|
||||
double GetProc0B1() const { return fProc0B1; }
|
||||
double GetProc0A2() const { return fProc0A2; }
|
||||
double GetProc0B2() const { return fProc0B2; }
|
||||
double GetProc0A3() const { return fProc0A3; }
|
||||
double GetProc0Atop() const { return fProc0Atop; }
|
||||
double GetProc0Ymin() const { return fProc0Ymin; }
|
||||
//
|
||||
// Proc=1 --> Qexchg w/excitation
|
||||
//
|
||||
// Proc=2 & Proc=3 for the case ( AbsProjectileBaryonNumber > 1 || NumberOfTargetNucleons > 1 )
|
||||
// (diffraction dissociation)
|
||||
//
|
||||
bool IsProjDiffDissociation() const { return fProjDiffDissociation; }
|
||||
bool IsTgtDiffDissociation() const { return fTgtDiffDissociation; }
|
||||
//
|
||||
double GetProc1A1() const { return fProc1A1; }
|
||||
double GetProc1B1() const { return fProc1B1; }
|
||||
double GetProc1A2() const { return fProc1A2; }
|
||||
double GetProc1B2() const { return fProc1B2; }
|
||||
double GetProc1A3() const { return fProc1A3; }
|
||||
double GetProc1Atop() const { return fProc1Atop; }
|
||||
double GetProc1Ymin() const { return fProc0Ymin; }
|
||||
//
|
||||
// Proc=4 --> Qexchg "w/additional multiplier" in excitation
|
||||
//
|
||||
double GetProc4A1() const { return fProc4A1; }
|
||||
double GetProc4B1() const { return fProc4B1; }
|
||||
double GetProc4A2() const { return fProc4A2; }
|
||||
double GetProc4B2() const { return fProc4B2; }
|
||||
double GetProc4A3() const { return fProc4A3; }
|
||||
double GetProc4Atop() const { return fProc4Atop; }
|
||||
double GetProc4Ymin() const { return fProc4Ymin; }
|
||||
//
|
||||
//
|
||||
double GetDeltaProbAtQuarkExchange() const { return fDeltaProbAtQuarkExchange; }
|
||||
double GetProbOfSameQuarkExchange() const { return fProbOfSameQuarkExchange; }
|
||||
double GetProjMinDiffMass() const { return fProjMinDiffMass; }
|
||||
double GetProjMinNonDiffMass() const { return fProjMinNonDiffMass; }
|
||||
double GetTgtMinDiffMass() const { return fTgtMinDiffMass; }
|
||||
double GetTgtMinNonDiffMass() const { return fTgtMinNonDiffMass; }
|
||||
double GetAveragePt2() const { return fAveragePt2; }
|
||||
double GetProbLogDistrPrD() const { return fProbLogDistrPrD; }
|
||||
double GetProbLogDistr() const { return fProbLogDistr; }
|
||||
|
||||
// parameters of nuclear distruction
|
||||
//
|
||||
// NOTE (JVY): there're 3 cases here:
|
||||
// * baryon projectile
|
||||
// * anti-baryon projectile
|
||||
// * meson projectile
|
||||
//
|
||||
// double fBaryonMaxNumberOfCollisions; // D=2.
|
||||
// void SetBaryonProbOfInteraction( const double ); // ??? this is prob. of inelastic interaction
|
||||
// that is set internally based on certain conditions...
|
||||
// general (i.e. for used for baryons,anti-baryons, and mesons)
|
||||
// NOTE: these parameters have stayed THE SAME for quite a while
|
||||
double fNuclearProjDestructP1; // D=0.00481 in 10.3.ref04 !!!
|
||||
// BUT !!! In 10.3.ref04 as well as in 10.2-seriesit's multiplied of AbsProjectileBaryonNumber
|
||||
// which somehow is 0 for the proton projectile (see in 10.3.ref04 around lines 130-140 In G4FTFParameters.cc).
|
||||
// For the target destr. it's multipled by the number of target nucleons (12 for Carbon).
|
||||
// In 10.3.p01 it's set to 1. FLAT OUT for both projectile & target, no multiplications, etc.
|
||||
// Now, make default at 1.
|
||||
bool fNuclearProjDestructP1_NBRNDEP;
|
||||
double fNuclearTgtDestructP1; // Make D=1. as in 10.3.p01
|
||||
bool fNuclearTgtDestructP1_ADEP;
|
||||
double fNuclearProjDestructP2; // D=4.0
|
||||
double fNuclearProjDestructP3; // D=2.1
|
||||
double fNuclearTgtDestructP2; // D=4.0
|
||||
double fNuclearTgtDestructP3; // D=2.1
|
||||
//
|
||||
double fPt2NuclearDestructP1; // D=0.035
|
||||
double fPt2NuclearDestructP2; // D=0.04
|
||||
double fPt2NuclearDestructP3; // D=4.0
|
||||
double fPt2NuclearDestructP4; // D=2.5
|
||||
// baryons
|
||||
double fR2ofNuclearDestruct; // D=1.5*fermi*fermi
|
||||
double fExciEnergyPerWoundedNucleon; // D=40MeV
|
||||
double fDofNuclearDestruct; // D=0.3
|
||||
// NOTE: this parameter has changed from 1. to 9. between 10.2 and 10.4.ref04 !!!
|
||||
double fMaxPt2ofNuclearDestruct; // D=9GeV**2
|
||||
// NOTE (JVY): There is also the Pt2Kind parameter but for now it's set to 0., so we'll leave it aside
|
||||
|
||||
// --> FIXME !!! --> void Get/SetBaryonMaxNumberOfCollisions( const double, const double ); // 1st is Plab, 2nd - D=2.
|
||||
//
|
||||
// NOTE (JVY): These parameters are COMMON among various projectiles !!!
|
||||
//
|
||||
double GetNuclearProjDestructP1() const { return fNuclearProjDestructP1; }
|
||||
bool IsNuclearProjDestructP1_NBRNDEP() const { return fNuclearProjDestructP1_NBRNDEP; }
|
||||
double GetNuclearTgtDestructP1() const { return fNuclearTgtDestructP1; }
|
||||
bool IsNuclearTgtDestructP1_ADEP() const { return fNuclearTgtDestructP1_ADEP; }
|
||||
double GetNuclearProjDestructP2() const { return fNuclearProjDestructP2; }
|
||||
double GetNuclearProjDestructP3() const { return fNuclearProjDestructP3; }
|
||||
double GetNuclearTgtDestructP2() const { return fNuclearTgtDestructP2; }
|
||||
double GetNuclearTgtDestructP3() const { return fNuclearTgtDestructP3; }
|
||||
double GetPt2NuclearDestructP1() const { return fPt2NuclearDestructP1; }
|
||||
double GetPt2NuclearDestructP2() const { return fPt2NuclearDestructP2; }
|
||||
double GetPt2NuclearDestructP3() const { return fPt2NuclearDestructP3; }
|
||||
double GetPt2NuclearDestructP4() const { return fPt2NuclearDestructP4; }
|
||||
//
|
||||
// separately for baryons, mesons, etc.
|
||||
//
|
||||
double GetR2ofNuclearDestruct() const { return fR2ofNuclearDestruct; }
|
||||
double GetExciEnergyPerWoundedNucleon() const { return fExciEnergyPerWoundedNucleon; }
|
||||
double GetDofNuclearDestruct() const { return fDofNuclearDestruct; }
|
||||
double GetMaxPt2ofNuclearDestruct() const { return fMaxPt2ofNuclearDestruct; }
|
||||
|
||||
protected:
|
||||
|
||||
// ctor
|
||||
G4FTFParamCollection();
|
||||
|
||||
// parameters of excitation
|
||||
//
|
||||
//
|
||||
// these are for Inelastic interactions, i.e. Xinelastic=(Xtotal-Xelastix)>0.
|
||||
// for elastic, all the A's & B's, Atop & Ymin are zeros
|
||||
// general formula: Pp = A1*exp(B1*Y) + A2*exp(B2*Y) + A3
|
||||
// but if Y<Ymin, then Pp=max(0.,Atop)
|
||||
// for details, see also G4FTFParameters::GetProcProb( ProcN, y )
|
||||
//
|
||||
// Proc=0 --> Qexchg w/o excitation
|
||||
double fProc0A1; // D=13.71
|
||||
double fProc0B1; // D=1.75
|
||||
double fProc0A2; // D=-30.69 (or -214.5 as in Doc ?)
|
||||
double fProc0B2; // D=3. ( or 4. as in Doc ?)
|
||||
double fProc0A3; // D=0.
|
||||
double fProc0Atop; // D=1. ( or 0.5 as in Doc ?)
|
||||
double fProc0Ymin; // D=0.93 (or 1.1 as in Doc ?)
|
||||
// Proc=1 --> Qexchg w/excitation
|
||||
double fProc1A1; // D=25.
|
||||
double fProc1B1; // D=1.
|
||||
double fProc1A2; // D=-50.34
|
||||
double fProc1B2; // D=1.5
|
||||
double fProc1A3; // D=0.
|
||||
double fProc1Atop; // D=0.
|
||||
double fProc1Ymin; // D=1.4
|
||||
//
|
||||
// NOTE: Proc #2 & 3 are projectile & target diffraction
|
||||
// they have more complex definition of A1 & A2
|
||||
// (see around line 540 or so)
|
||||
// SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93);// Projectile diffraction
|
||||
// SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93);// Target diffraction
|
||||
//
|
||||
// Also, for ( AbsProjectileBaryonNumber > 1 || NumberOfTargetNucleons > 1 )
|
||||
// projectile and/or target diffraction (dissociation) may be switched ON/OFF
|
||||
bool fProjDiffDissociation;
|
||||
bool fTgtDiffDissociation;
|
||||
//
|
||||
// Proc=4 --> Qexchg w/additional multiplier in excitation
|
||||
double fProc4A1; // D=0.6 (or 1. as in Doc ?)
|
||||
double fProc4B1; // D=0.
|
||||
double fProc4A2; // D=-1.2 (or -2.01 as in Doc ?)
|
||||
double fProc4B2; // D=0.5
|
||||
double fProc4A3; // D=0.
|
||||
double fProc4Atop; // D=0.
|
||||
double fProc4Ymin; // D=1.4
|
||||
//
|
||||
// parameters of participating baryon excitation
|
||||
//
|
||||
double fDeltaProbAtQuarkExchange; // D=0.
|
||||
double fProbOfSameQuarkExchange; // D=0. if A<=26, otherwise D=1.
|
||||
double fProjMinDiffMass; // projectile, D=1.16GeV
|
||||
double fProjMinNonDiffMass; // projectile, D=1.16GeV
|
||||
double fTgtMinDiffMass; // target, D=1.16GeV
|
||||
double fTgtMinNonDiffMass; // target, D=1.16GeV
|
||||
double fAveragePt2; // D=0.3GeV**2 ( or 0.15 as in the Doc ???)
|
||||
double fProbLogDistrPrD; // D=0.6 (or 0.3 ???)
|
||||
double fProbLogDistr; // D=0.6 (or 0.3 ???)
|
||||
|
||||
// parameters of nuclear distruction
|
||||
//
|
||||
// NOTE (JVY): there're 3 cases here:
|
||||
// * baryon projectile
|
||||
// * anti-baryon projectile
|
||||
// * meson projectile
|
||||
//
|
||||
// double fBaryonMaxNumberOfCollisions; // D=2.
|
||||
// void SetBaryonProbOfInteraction( const double ); // ??? this is prob. of inelastic interaction
|
||||
// that is set internally based on certain conditions...
|
||||
// general (i.e. for used for baryons,anti-baryons, and mesons)
|
||||
// NOTE: these parameters have stayed THE SAME for quite a while
|
||||
double fNuclearProjDestructP1; // D=0.00481 in 10.3.ref04 !!!
|
||||
// BUT !!! In 10.3.ref04 as well as in 10.2-seriesit's multiplied of AbsProjectileBaryonNumber
|
||||
// which somehow is 0 for the proton projectile (see in 10.3.ref04 around lines 130-140 In G4FTFParameters.cc).
|
||||
// For the target destr. it's multipled by the number of target nucleons (12 for Carbon).
|
||||
// In 10.3.p01 it's set to 1. FLAT OUT for both projectile & target, no multiplications, etc.
|
||||
// Now, make default at 1.
|
||||
bool fNuclearProjDestructP1_NBRNDEP;
|
||||
double fNuclearTgtDestructP1; // Make D=1. as in 10.3.p01
|
||||
bool fNuclearTgtDestructP1_ADEP;
|
||||
double fNuclearProjDestructP2; // D=4.0
|
||||
double fNuclearProjDestructP3; // D=2.1
|
||||
double fNuclearTgtDestructP2; // D=4.0
|
||||
double fNuclearTgtDestructP3; // D=2.1
|
||||
//
|
||||
double fPt2NuclearDestructP1; // D=0.035
|
||||
double fPt2NuclearDestructP2; // D=0.04
|
||||
double fPt2NuclearDestructP3; // D=4.0
|
||||
double fPt2NuclearDestructP4; // D=2.5
|
||||
// baryons
|
||||
double fR2ofNuclearDestruct; // D=1.5*fermi*fermi
|
||||
double fExciEnergyPerWoundedNucleon; // D=40MeV
|
||||
double fDofNuclearDestruct; // D=0.3
|
||||
// NOTE: this parameter has changed from 1. to 9. between 10.2 and 10.4.ref04 !!!
|
||||
double fMaxPt2ofNuclearDestruct; // D=9GeV**2
|
||||
|
||||
private:
|
||||
|
||||
void Reset();
|
||||
|
||||
private:
|
||||
void Reset();
|
||||
};
|
||||
|
||||
|
||||
class G4FTFParamCollBaryonProj : public G4FTFParamCollection {
|
||||
public:
|
||||
// ctor
|
||||
G4FTFParamCollBaryonProj();
|
||||
|
||||
public:
|
||||
|
||||
// ctor
|
||||
G4FTFParamCollBaryonProj();
|
||||
|
||||
};
|
||||
|
||||
|
||||
class G4FTFParameters {
|
||||
public:
|
||||
// G4FTFParameters( const G4ParticleDefinition* , G4int theA, G4int theZ, G4double s );
|
||||
G4FTFParameters();
|
||||
~G4FTFParameters();
|
||||
|
||||
@@ -346,11 +354,10 @@ class G4FTFParameters {
|
||||
G4double GetPt2ofNuclearDestruction();
|
||||
G4double GetMaxPt2ofNuclearDestruction();
|
||||
|
||||
// JVY, July 31, 2017: Is there any reason for NOT making
|
||||
// all the members data private ???
|
||||
//
|
||||
//private:
|
||||
// ---> G4FTFParameters();
|
||||
// JVY, July 31, 2017: Is there any reason for NOT making
|
||||
// all the members data private ???
|
||||
//
|
||||
// private:
|
||||
|
||||
// Initial energy of hN interactions
|
||||
G4double FTFhNcmsEnergy; // Initial hN CMS energy
|
||||
@@ -407,7 +414,7 @@ class G4FTFParameters {
|
||||
|
||||
void Reset();
|
||||
|
||||
// JVY, Oct. 31, 2017: encapsulates (current set of) parameters for the baryon projectile
|
||||
// JVY, July 31, 2017: encapsulates (current set of) parameters for the baryon projectile
|
||||
//
|
||||
G4FTFParamCollBaryonProj fParCollBaryonProj;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user