Import Geant4 8.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:07:44 +02:00
parent fe73f43734
commit 75c7fd177d
764 changed files with 45230 additions and 95238 deletions
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4ExcitedStringDecay.hh,v 1.5 2006/06/29 20:54:42 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: G4ExcitedStringDecay.hh,v 1.7 2007/05/03 22:06:17 gunter Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
#ifndef G4ExcitedStringDecay_h
#define G4ExcitedStringDecay_h 1
@@ -78,6 +78,7 @@ FragmentStrings(const G4ExcitedStringVector * theStrings)
G4KineticTrackVector * theResult = new G4KineticTrackVector;
G4LorentzVector KTsum;
G4LorentzVector KTsecondaries;
G4bool NeedEnergyCorrector=false;
for ( unsigned int astring=0; astring < theStrings->size(); astring++)
@@ -110,19 +111,36 @@ FragmentStrings(const G4ExcitedStringVector * theStrings)
theResult->push_back(generatedKineticTracks->operator[](aTrack));
KTsum1+= (*generatedKineticTracks)[aTrack]->Get4Momentum();
}
KTsecondaries+=KTsum1;
if ( std::abs((KTsum1.e()-theStrings->operator[](astring)->Get4Momentum().e()) / KTsum1.e()) > perMillion )
if ( KTsum1.e() > 0 && std::abs((KTsum1.e()-theStrings->operator[](astring)->Get4Momentum().e()) / KTsum1.e()) > perMillion )
{
//--debug-- G4cout << "String secondaries(" <<generatedKineticTracks->size()<< ") momentum: "
//--debug-- << theStrings->operator[](astring)->Get4Momentum() << " " << KTsum1 << G4endl;
NeedEnergyCorrector=true;
}
// clean up
delete generatedKineticTracks;
}
// G4cout << "String total energy and 4 momentum" <<KTsum.t()<<" "<< KTsum << endl;
if ( NeedEnergyCorrector ) EnergyAndMomentumCorrector(theResult, KTsum);
//--DEBUG G4cout << "Strings/secs total 4 momentum " << KTsum << " " <<KTsecondaries << G4endl;
G4bool success=true;
if ( NeedEnergyCorrector ) success=EnergyAndMomentumCorrector(theResult, KTsum);
#ifdef debug_ExcitedStringDecay
G4LorentzVector KTsum1=0;
for ( unsigned int aTrack=0; aTrack<theResult->size();aTrack++)
{
G4cout << " corrected tracks .. " << (*theResult)[aTrack]->GetDefinition()->GetParticleName()
<<" " << (*theResult)[aTrack]->Get4Momentum() << G4endl;
KTsum1+= (*theResult)[aTrack]->Get4Momentum();
}
G4cout << "Needcorrector/success " << NeedEnergyCorrector << "/" << success << ", Corrected total 4 momentum " << KTsum1 << G4endl;
if ( ! success ) G4cout << "failed to correct E/p" << G4endl;
#endif
return theResult;
}
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4LundStringFragmentation.hh,v 1.3 2006/06/29 20:54:49 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $ Maxim Komogorov
// $Id: G4LundStringFragmentation.hh,v 1.4 2007/04/24 14:55:23 gunter Exp $
// GEANT4 tag $Name: geant4-08-03 $ Maxim Komogorov
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
@@ -45,8 +45,9 @@ class G4LundStringFragmentation: public G4VLongitudinalStringDecay
public:
G4LundStringFragmentation();
// G4LundStringFragmentation(G4double sigmaPt);
G4LundStringFragmentation(const G4LundStringFragmentation &right);
virtual ~G4LundStringFragmentation();
G4LundStringFragmentation(const G4LundStringFragmentation &right);
virtual ~G4LundStringFragmentation();
virtual G4KineticTrackVector* FragmentString(const G4ExcitedString& theString);
public:
const G4LundStringFragmentation & operator=(const G4LundStringFragmentation &right);
@@ -56,6 +57,21 @@ public:
private:
virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py);
virtual void Sample4Momentum(G4LorentzVector* Mom, G4double Mass, G4LorentzVector* AntiMom, G4double AntiMass, G4double InitialMass);
virtual G4bool StopFragmenting(const G4FragmentingString * const string);
virtual G4bool IsFragmentable(const G4FragmentingString * const string);
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition * pHadron, G4FragmentingString * string);
virtual G4bool SplitLast(G4FragmentingString * string,
G4KineticTrackVector * LeftVector,
G4KineticTrackVector * RightVector);
void SetMinimalStringMass(const G4FragmentingString * const string);
void SetMinimalStringMass2(const G4double aValue);
private:
G4double MinimalStringMass;
G4double MinimalStringMass2;
G4double WminLUND;
};
//**************************************************************************************************************
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4QGSMFragmentation.hh,v 1.3 2006/06/29 20:54:51 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: G4QGSMFragmentation.hh,v 1.4 2007/04/24 14:55:23 gunter Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
@@ -43,6 +43,7 @@ class G4QGSMFragmentation:public G4VLongitudinalStringDecay
public:
G4QGSMFragmentation();
~G4QGSMFragmentation();
virtual G4KineticTrackVector* FragmentString(const G4ExcitedString& theString);
const G4QGSMFragmentation & operator=(const G4QGSMFragmentation &right);
int operator==(const G4QGSMFragmentation &right) const;
@@ -52,6 +53,14 @@ public:
virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py);
G4QGSMFragmentation(const G4QGSMFragmentation &right);
virtual void Sample4Momentum(G4LorentzVector* Mom, G4double Mass, G4LorentzVector* AntiMom, G4double AntiMass, G4double InitialMass);
virtual G4bool StopFragmenting(const G4FragmentingString * const string);
virtual G4bool IsFragmentable(const G4FragmentingString * const string);
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition * pHadron, G4FragmentingString * string);
virtual G4bool SplitLast(G4FragmentingString * string,
G4KineticTrackVector * LeftVector,
G4KineticTrackVector * RightVector);
private:
// model parameters
const G4double arho;
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VLongitudinalStringDecay.hh,v 1.3 2006/06/29 20:54:55 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: G4VLongitudinalStringDecay.hh,v 1.4 2007/04/24 14:55:23 gunter Exp $
// GEANT4 tag $Name: geant4-08-03 $
// Maxim Komogorov
//
// -----------------------------------------------------------------------------
@@ -57,7 +57,8 @@ private:
int operator!=(const G4VLongitudinalStringDecay &right) const;
public:
G4KineticTrackVector* FragmentString(const G4ExcitedString& theString);
virtual G4KineticTrackVector* FragmentString(const G4ExcitedString& theString)=0;
G4KineticTrackVector* DecayResonans (G4KineticTrackVector* aHadrons);
void SetSigmaTransverseMomentum(G4double aQT);
void SetStrangenessSuppression(G4double aValue);
@@ -74,7 +75,8 @@ public:
G4int SampleQuarkFlavor(void);
G4ThreeVector SampleQuarkPt();
private:
//private:
protected:
G4double GetDiquarkSuppress() {return DiquarkSuppress;};
G4double GetDiquarkBreakProb() {return DiquarkBreakProb;};
G4double GetStrangeSuppress() {return StrangeSuppress;};
@@ -82,13 +84,14 @@ private:
G4int GetClusterLoopInterrupt() {return ClusterLoopInterrupt;};
G4ParticleDefinition* CreateHadron(G4int id1, G4int id2, G4bool theGivenSpin, G4int theSpin);
void Sample4Momentum(G4LorentzVector* Mom, G4double Mass, G4LorentzVector* AntiMom, G4double AntiMass, G4double InitialMass);
virtual void Sample4Momentum(G4LorentzVector* Mom, G4double Mass, G4LorentzVector* AntiMom, G4double AntiMass, G4double InitialMass)=0;
protected:
// Additional protected declarations
virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py) = 0;
private:
//private:
protected:
G4double MassCut;
G4double ClusterMass;
G4double SigmaQT; // sigma_q_t is quark transverse momentum distribution parameter
@@ -112,8 +115,8 @@ private:
G4KineticTrackVector * LightFragmentationTest(const G4ExcitedString * const theString);
G4bool StopFragmenting(const G4FragmentingString * const string);
G4bool IsFragmentable(const G4FragmentingString * const string);
virtual G4bool StopFragmenting(const G4FragmentingString * const string)=0;
virtual G4bool IsFragmentable(const G4FragmentingString * const string)=0;
// G4double MinFragmentationMass(G4ExcitedString * theString,
// G4ParticleDefinition*& Hadron1,
// G4ParticleDefinition*& Hadron2);
@@ -125,10 +128,10 @@ private:
Pcreate build=0,
pDefPair * pdefs=0);
G4KineticTrack * Splitup(G4FragmentingString *string, G4FragmentingString *&newString);
G4LorentzVector * SplitEandP(G4ParticleDefinition * pHadron, G4FragmentingString * string);
G4bool SplitLast(G4FragmentingString * string,
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition * pHadron, G4FragmentingString * string)=0;
virtual G4bool SplitLast(G4FragmentingString * string,
G4KineticTrackVector * LeftVector,
G4KineticTrackVector * RightVector);
G4KineticTrackVector * RightVector)=0;
void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *);
G4ExcitedString *CPExcited(const G4ExcitedString& string);
G4ParticleDefinition* FindParticle(G4int Encoding);