Import Geant4 0.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-01 15:25:35 +02:00
parent 54d6b71f95
commit b97f8d0df7
3237 changed files with 807095 additions and 0 deletions
@@ -0,0 +1,40 @@
# $Id: GNUmakefile,v 1.1 1998/08/22 09:08:47 hpw Exp $
# -----------------------------------------------------------
# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96.
# -----------------------------------------------------------
name := G4hadronic_stringfrag
ifndef G4INSTALL
G4INSTALL = ../../../../../..
endif
include $(G4INSTALL)/config/architecture.gmk
G4TMPDIR = $(G4TMP)/$(G4SYSTEM)/$(name)
CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/global/HEPRandom/include \
-I$(G4BASE)/global/HEPNumerics/include \
-I$(G4BASE)/global/HEPGeometry/include \
-I$(G4BASE)/track/include \
-I$(G4BASE)/geometry/volumes/include \
-I$(G4BASE)/geometry/management/include \
-I$(G4BASE)/processes/management/include \
-I$(G4BASE)/processes/hadronic/management/include/ \
-I$(G4BASE)/processes/hadronic/util/include \
-I$(G4BASE)/processes/hadronic/processes/include \
-I$(G4BASE)/processes/hadronic/cross_sections/include \
-I$(G4BASE)/processes/hadronic/models/generator/management/include \
-I$(G4BASE)/processes/hadronic/models/generator/util/include \
-I$(G4BASE)/particles/management/include \
-I$(G4BASE)/particles/leptons/include \
-I$(G4BASE)/particles/bosons/include \
-I$(G4BASE)/particles/hadrons/mesons/include \
-I$(G4BASE)/particles/hadrons/barions/include \
-I$(G4BASE)/particles/hadrons/ions/include \
-I$(G4BASE)/particles/shortlived/include \
-I$(G4BASE)/materials/include
include $(G4INSTALL)/config/common.gmk
@@ -0,0 +1,53 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedStringDecay.hh,v 1.3 1998/12/09 07:53:39 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
#ifndef G4ExcitedStringDecay_h
#define G4ExcitedStringDecay_h 1
#include "G4VStringFragmentation.hh"
#include "G4ExcitedString.hh"
#include "G4KineticTrackVector.hh"
#include "G4LundStringFragmentation.hh"
class G4ExcitedStringDecay: public G4VStringFragmentation
{
public:
G4ExcitedStringDecay();
G4ExcitedStringDecay(G4VLongitudinalStringDecay * aStringDecay);
~G4ExcitedStringDecay();
private:
G4ExcitedStringDecay(const G4ExcitedStringDecay &right);
const G4ExcitedStringDecay & operator=(const G4ExcitedStringDecay &right);
int operator==(const G4ExcitedStringDecay &right) const;
int operator!=(const G4ExcitedStringDecay &right) const;
public:
// virtual G4ReactionProductVector * FragmentString(const G4ExcitedString &theString)=0;
virtual G4KineticTrackVector * FragmentString(const G4ExcitedString &theString);
private:
G4VLongitudinalStringDecay * theStringDecay;
};
inline
G4KineticTrackVector *G4ExcitedStringDecay::FragmentString(const G4ExcitedString &theString)
{
if ( theStringDecay == NULL )
theStringDecay=new G4LundStringFragmentation();
return theStringDecay->FragmentString(theString);
}
#endif
@@ -0,0 +1,48 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4LundStringFragmentation.hh,v 1.3 1998/12/09 07:59:36 gunter Exp $
// GEANT4 tag $Name: geant4-00 $ Maxim Komogorov
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, Maxim Komogorov, 10-Jul-1998
// -----------------------------------------------------------------------------
#ifndef G4LundStringFragmentation_h
#define G4LundStringFragmentation_h 1
#include "G4VLongitudinalStringDecay.hh"
//**************************************************************************************************************
class G4LundStringFragmentation: public G4VLongitudinalStringDecay
{
public:
G4LundStringFragmentation();
// G4LundStringFragmentation(G4double sigmaPt);
G4LundStringFragmentation(const G4LundStringFragmentation &right);
~G4LundStringFragmentation();
public:
const G4LundStringFragmentation & operator=(const G4LundStringFragmentation &right);
int operator==(const G4LundStringFragmentation &right) const;
int operator!=(const G4LundStringFragmentation &right) const;
private:
virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py);
};
//**************************************************************************************************************
// Class G4LundStringFragmentation
#endif
@@ -0,0 +1,44 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4QGSMFragmentation.hh,v 1.3 1998/12/01 15:35:46 maxim Exp $
// GEANT4 tag $Name: geant4-00 $
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, Maxim Komogorov, 10-Jul-1998
// -----------------------------------------------------------------------------
#ifndef G4QGSMFragmentation_h
#define G4QGSMFragmentation_h 1
#include "G4VLongitudinalStringDecay.hh"
//******************************************************************************
class G4QGSMFragmentation:public G4VLongitudinalStringDecay
{
public:
G4QGSMFragmentation();
G4QGSMFragmentation(const G4QGSMFragmentation &right);
~G4QGSMFragmentation();
const G4QGSMFragmentation & operator=(const G4QGSMFragmentation &right);
int operator==(const G4QGSMFragmentation &right) const;
int operator!=(const G4QGSMFragmentation &right) const;
private:
virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py);
};
//******************************************************************************
// Class G4QGSMFragmentation
#endif
@@ -0,0 +1,55 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4VKinkyStringDecay.hh,v 1.2 1998/11/03 10:10:34 maxim Exp $
// GEANT4 tag $Name: geant4-00 $
// Maxim Komogorov
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, Maxim Komogorov, 10-Oct-1998
// -----------------------------------------------------------------------------
#ifndef G4VKinkyStringDecay_h
#define G4VKinkyStringDecay_h 1
#include "G4VLongitudinalStringDecay.hh"
//***********************************************************************************************
class G4VKinkyStringDecay
{
// Constructors
public:
G4VKinkyStringDecay(G4VLongitudinalStringDecay* theModal);
~G4VKinkyStringDecay() {};
//
public:
G4KineticTrackVector* FragmentString(const G4ExcitedString& String);
virtual G4double GetLightConeGluonZ(G4double zmin, G4double zmax);
void SetLongitudinalStringDecay(G4VLongitudinalStringDecay*);
private:
G4VLongitudinalStringDecay* theLongitudinalStringDecay;
};
//*****************************************************************************************
inline void G4VKinkyStringDecay::SetLongitudinalStringDecay(G4VLongitudinalStringDecay* theModal)
{
theLongitudinalStringDecay = theModal;
}
//*****************************************************************************************************
#endif
@@ -0,0 +1,47 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ExcitedStringDecay.cc,v 1.2 1998/12/09 07:53:44 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
// G4ExcitedStringDecay
#include "G4ExcitedStringDecay.hh"
G4ExcitedStringDecay::G4ExcitedStringDecay()
{
theStringDecay=NULL;
}
G4ExcitedStringDecay::G4ExcitedStringDecay(G4VLongitudinalStringDecay * aStringDecay)
: theStringDecay(aStringDecay)
{}
G4ExcitedStringDecay::G4ExcitedStringDecay(const G4ExcitedStringDecay &right)
{
}
G4ExcitedStringDecay::~G4ExcitedStringDecay()
{
}
const G4ExcitedStringDecay & G4ExcitedStringDecay::operator=(const G4ExcitedStringDecay &right)
{
G4Exception("G4ExcitedStringDecay::operator= meant to not be accessable");
return *this;
}
int G4ExcitedStringDecay::operator==(const G4ExcitedStringDecay &right) const
{
return 0;
}
int G4ExcitedStringDecay::operator!=(const G4ExcitedStringDecay &right) const
{
return 1;
}
@@ -0,0 +1,85 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4LundStringFragmentation.cc,v 1.3 1998/12/09 07:59:43 gunter Exp $
// GEANT4 tag $Name: geant4-00 $
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, Maxim Komogorov, 10-Jul-1998
// -----------------------------------------------------------------------------
#include "G4LundStringFragmentation.hh"
#include "Randomize.hh"
// Class G4LundStringFragmentation
//****************************************************************************************
G4LundStringFragmentation::G4LundStringFragmentation()
{
}
// G4LundStringFragmentation::G4LundStringFragmentation(G4double sigmaPt)
// : G4VLongitudinalStringDecay(sigmaPt)
// {
// }
G4LundStringFragmentation::G4LundStringFragmentation(const G4LundStringFragmentation &right)
{
}
G4LundStringFragmentation::~G4LundStringFragmentation()
{
}
//****************************************************************************************
const G4LundStringFragmentation & G4LundStringFragmentation::operator=(const G4LundStringFragmentation &right)
{
G4Exception("G4LundStringFragmentation::operator= meant to not be accessable");
return *this;
}
int G4LundStringFragmentation::operator==(const G4LundStringFragmentation &right) const
{
return !memcmp(this, &right, sizeof(G4LundStringFragmentation));
}
int G4LundStringFragmentation::operator!=(const G4LundStringFragmentation &right) const
{
return memcmp(this, &right, sizeof(G4LundStringFragmentation));
}
//****************************************************************************************
G4double G4LundStringFragmentation::GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py)
{
const G4double alund = 0.7/GeV/GeV;
// If blund get restored, you MUST adapt the calculation of zOfMaxyf.
// const G4double blund = 1;
G4double z, yf;
G4double Mass = pHadron->GetPDGMass();
G4double Mt2 = Px*Px + Py*Py + Mass*Mass;
G4double zOfMaxyf=alund*Mt2/(alund*Mt2 + 1.);
G4double maxYf=(1-zOfMaxyf)/zOfMaxyf * exp(-alund*Mt2/zOfMaxyf);
do
{
z = zmin + G4UniformRand()*(zmax-zmin);
// yf = pow(1. - z, blund)/z*exp(-alund*Mt2/z);
yf = (1-z)/z * exp(-alund*Mt2/z);
}
while (G4UniformRand()*maxYf > yf);
return z;
}
//****************************************************************************************
@@ -0,0 +1,129 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4QGSMFragmentation.cc,v 1.3 1998/12/01 15:35:29 maxim Exp $
// GEANT4 tag $Name: geant4-00 $
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, Maxim Komogorov, 10-Jul-1998
// -----------------------------------------------------------------------------
#include "G4QGSMFragmentation.hh"
#include "Randomize.hh"
#include "G4ios.hh"
// Class G4QGSMFragmentation
//****************************************************************************************
G4QGSMFragmentation::G4QGSMFragmentation()
{
}
G4QGSMFragmentation::G4QGSMFragmentation(const G4QGSMFragmentation &right)
{
}
G4QGSMFragmentation::~G4QGSMFragmentation()
{
}
//****************************************************************************************
const G4QGSMFragmentation & G4QGSMFragmentation::operator=(const G4QGSMFragmentation &right)
{
G4Exception("G4QGSMFragmentation::operator= meant to not be accessable");
return *this;
}
int G4QGSMFragmentation::operator==(const G4QGSMFragmentation &right) const
{
return !memcmp(this, &right, sizeof(G4QGSMFragmentation));
}
int G4QGSMFragmentation::operator!=(const G4QGSMFragmentation &right) const
{
return memcmp(this, &right, sizeof(G4QGSMFragmentation));
}
//****************************************************************************************
G4double G4QGSMFragmentation::GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py)
{
const G4double arho = 0.5;
const G4double aphi = 0.;
const G4double an = -0.5;
const G4double ala = -0.75;
const G4double aksi = -1.;
const G4double alft = 0.5;
G4double z;
G4double theA, d1, d2, yf;
if (abs(PartonEncoding) < 10)
{
switch(abs(PartonEncoding))
{
case 1:
theA = arho;
break;
case 2:
theA = arho;
break;
case 3:
theA = aphi;
break;
default:
G4Exception("Unknown PDGencoding in G4QGSMFragmentation::G4LightConeZ");
}
do {
z = zmin + G4UniformRand() * (zmax - zmin);
d1 = (1. - z);
d2 = (alft - theA);
yf = pow(d1, d2);
}
while (G4UniformRand() > yf);
return z;
}
switch(abs(PartonEncoding))
{
case 1103:
d2 = (alft - (2.*an - arho));
break;
case 2101: case 2103:
d2 = (alft - (2.*an - arho));
break;
case 3101: case 3103:
d2 = (alft - (2.*ala - arho));
break;
case 2203:
d2 = (alft - (2.*an - arho));
break;
case 3201: case 3203:
d2 = (alft - (2.*ala - arho));
break;
case 3303:
default:
d2 = (alft - (2.*aksi - arho));
break;
}
do {
z = zmin + G4UniformRand() * (zmax - zmin);
d1 = (1. - z);
yf = pow(d1, d2);
}
while (G4UniformRand() > yf);
return z;
}
//*********************************************************************************************
@@ -0,0 +1,95 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4VKinkyStringDecay.cc,v 1.4 1998/12/13 15:46:21 pia Exp $
// GEANT4 tag $Name: geant4-00 $
// Maxim Komogorov
//
// -----------------------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD Group
// History: first implementation, Maxim Komogorov, 10-Oct-1998
// -----------------------------------------------------------------------------
#include "G4VKinkyStringDecay.hh"
//*****************************************************************************************************
G4VKinkyStringDecay::G4VKinkyStringDecay(G4VLongitudinalStringDecay* theModal)
{
this->SetLongitudinalStringDecay(theModal);
}
//*****************************************************************************************************
G4double G4VKinkyStringDecay::GetLightConeGluonZ(G4double zmin, G4double zmax)
{
G4double z, yf;
do {
z = zmin + G4UniformRand()*(zmax-zmin);
yf = z*z +sqr(1 - z);
}
while (G4UniformRand() > yf);
return z;
}
//*****************************************************************************************************
G4KineticTrackVector* G4VKinkyStringDecay::FragmentString(const G4ExcitedString& String)
{
G4LorentzVector Mom = String.GetGluon()->Get4Momentum();
G4ThreeVector Pos = String.GetGluon()->GetPosition();
G4int QuarkEncoding = theLongitudinalStringDecay->SampleQuarkFlavor();
G4double Px, Py;
theLongitudinalStringDecay->SampleQuarkPt(&Px, &Py);
G4double Pt2 = Px*Px + Py*Py;
G4double z = GetLightConeGluonZ(0, 1);
G4double w = Mom.e() + Mom.pz();
//... now compute quark longitudinal momentum and energy
G4double Pz = (z*w - Pt2/(z*w))*0.5;
G4double E = (z*w + Pt2/(z*w))*0.5;
G4Parton* AntiColor = new G4Parton(-QuarkEncoding);
AntiColor->SetPosition(Pos);
G4LorentzVector AntiColorMom(-Px, -Py, -Pz, E);
AntiColor->Set4Momentum(AntiColorMom);
G4Parton* Color = new G4Parton(*String.GetColorParton());
G4ExcitedString Str1(Color, AntiColor, String.GetDirection());
G4KineticTrackVector* KTV1 = theLongitudinalStringDecay->FragmentString(Str1);
Color = new G4Parton(QuarkEncoding);
Color->SetPosition(Pos);
G4LorentzVector ColorMom(Px, Py, Pz, E);
Color->Set4Momentum(ColorMom);
AntiColor = new G4Parton(*String.GetAntiColorParton());
G4ExcitedString Str2(Color, AntiColor, String.GetDirection());
G4KineticTrackVector* KTV2 = theLongitudinalStringDecay->FragmentString(Str2);
if (KTV1 && KTV2)
while(!KTV2->isEmpty())
KTV1->insert(KTV2->removeLast());
return KTV1;
}
//*****************************************************************************************************