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,59 @@
// 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: G4DiffractiveExcitation.hh,v 1.3 1998/12/09 07:30:23 gunter Exp $
#ifndef G4DiffractiveExcitation_h
#define G4DiffractiveExcitation_h 1
// ------------------------------------------------------------
// GEANT 4 class header file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// ---------------- G4DiffractiveExcitation --------------
// by Gunter Folger, October 1998.
// diffractive Excitation used by strings models
// Take a projectile and a target
// excite the projectile and target
// ------------------------------------------------------------
#include "globals.hh"
class G4VSplitableHadron;
class G4ExcitedString;
#include "G4ThreeVector.hh"
class G4DiffractiveExcitation
{
public:
G4DiffractiveExcitation(G4double sigmaPt=0.6*GeV, G4double minExtraMass=250*MeV,G4double x0mass=250*MeV);
~G4DiffractiveExcitation();
G4bool ExciteParticipants (G4VSplitableHadron *aPartner, G4VSplitableHadron * bPartner) const;
G4ExcitedString * String(G4VSplitableHadron * aHadron, G4bool isProjectile) const;
private:
G4DiffractiveExcitation(const G4DiffractiveExcitation &right);
G4double ChooseX(G4double Xmin, G4double Xmax) const;
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const;
const G4DiffractiveExcitation & operator=(const G4DiffractiveExcitation &right);
int operator==(const G4DiffractiveExcitation &right) const;
int operator!=(const G4DiffractiveExcitation &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
};
#endif
@@ -0,0 +1,40 @@
// 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: G4EventGenerator.hh,v 1.1 1998/08/22 08:57:14 hpw Exp $
// GEANT4 tag $Name: geant4-00 $
//
#ifndef G4EventGenerator_h
#define G4EventGenerator_h 1
#include "G4HadronicInteraction.hh"
#include "G4VertexCode.hh"
#include "G4InteractionCode.hh"
class G4EventGenerator : public G4HadronicInteraction
{
public:
G4EventGenerator();
~G4EventGenerator();
private:
G4EventGenerator(const G4EventGenerator &right);
const G4EventGenerator & operator=(const G4EventGenerator &right);
int operator==(const G4EventGenerator &right) const;
int operator!=(const G4EventGenerator &right) const;
public:
virtual G4double GetWidth(G4VertexCode &theCode) = 0;
virtual G4double GetCrossSection(G4InteractionCode &theCode) = 0;
virtual G4ReactionProduct * GetFinalState(G4InteractionCode &theCode) = 0;
// please also define ApplyYourself for scattering off Hydrogen
};
#endif
@@ -0,0 +1,39 @@
// 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: G4InteractionCode.hh,v 1.1 1998/08/22 08:57:15 hpw Exp $
// GEANT4 tag $Name: geant4-00 $
//
#ifndef G4InteractionCode_h
#define G4InteractionCode_h 1
class G4InteractionCode
{
public:
G4InteractionCode(G4String & aCode);
void SetCode(G4String & aCode);
G4String GetCode();
private:
G4String theCode;
};
inline void G4InteractionCode::SetCode(G4String & aCode)
{
theCode = aCode;
}
inline G4String G4InteractionCode::GetCode()
{
return theCode;
}
#endif
@@ -0,0 +1,127 @@
// 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: G4InteractionContent.hh,v 1.2 1998/10/16 07:35:52 maxim Exp $
// GEANT4 tag $Name: geant4-00 $
//
#ifndef G4InteractionContent_h
#define G4InteractionContent_h 1
// ------------------------------------------------------------
// GEANT 4 class header file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// ---------------- G4InteractionContent----------------
// by Gunter Folger, June 1998.
// class for a storing colliding particles in PartonString Models
// ------------------------------------------------------------
#include "globals.hh"
#include"G4VSplitableHadron.hh"
class G4InteractionContent
{
public:
G4InteractionContent(G4VSplitableHadron *aPrimaryParticipant);
~G4InteractionContent();
int operator==(const G4InteractionContent &right) const;
int operator!=(const G4InteractionContent &right) const;
G4VSplitableHadron * GetProjectile() const ;
G4VSplitableHadron * GetTarget() const;
void SetTarget(G4VSplitableHadron *aTarget);
G4int GetNumberOfSoftCollisions();
G4int GetNumberOfHardCollisions();
void SetNumberOfSoftCollisions(int);
void SetNumberOfHardCollisions(int);
G4int GetNumberOfDiffractiveCollisions();
void SetNumberOfDiffractiveCollisions(int);
void SplitHadrons();
private:
G4InteractionContent();
G4InteractionContent(const G4InteractionContent &right);
const G4InteractionContent & operator=(const G4InteractionContent &right);
protected:
private:
G4VSplitableHadron * theTarget;
G4VSplitableHadron * theProjectile;
G4int theNumberOfHard;
G4int theNumberOfSoft;
G4int theNumberOfDiffractive;
};
// Class G4InteractionContent
inline G4VSplitableHadron * G4InteractionContent::GetProjectile() const
{
return theProjectile;
}
inline G4VSplitableHadron * G4InteractionContent::GetTarget() const
{
return theTarget;
}
inline void G4InteractionContent::SetTarget(G4VSplitableHadron *aTarget)
{
theTarget = aTarget;
}
inline G4int G4InteractionContent::GetNumberOfSoftCollisions()
{
return theNumberOfSoft;
}
inline G4int G4InteractionContent::GetNumberOfHardCollisions()
{
return theNumberOfHard;
}
inline void G4InteractionContent::SetNumberOfSoftCollisions(int nCol)
{
theNumberOfSoft = nCol;
}
inline void G4InteractionContent::SetNumberOfHardCollisions(int nCol)
{
theNumberOfHard = nCol;
}
inline G4int G4InteractionContent::GetNumberOfDiffractiveCollisions()
{
return theNumberOfDiffractive;
}
inline void G4InteractionContent::SetNumberOfDiffractiveCollisions(int nCol)
{
theNumberOfDiffractive = nCol;
}
inline void G4InteractionContent::SplitHadrons()
{
if ( theProjectile != NULL ) theProjectile->SplitUp();
if ( theTarget != NULL ) theTarget->SplitUp();
}
#endif
@@ -0,0 +1,100 @@
#ifndef G4PomeronCrossSection_h
#define G4PomeronCrossSection_h 1
// 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: G4PomeronCrossSection.hh,v 1.4 1998/12/12 19:13:51 hpw Exp $
// GEANT4 tag $Name: geant4-00 $
//
#include "G4Proton.hh"
#include "G4Neutron.hh"
#include "G4PionPlus.hh"
#include "G4PionMinus.hh"
#include "G4PionZero.hh"
#include "G4KaonPlus.hh"
#include "G4KaonMinus.hh"
#include "G4KaonZero.hh"
#include "G4KaonZeroShort.hh"
#include "G4KaonZeroLong.hh"
class G4PomeronCrossSection
{
public:
G4PomeronCrossSection(const G4ParticleDefinition * );
G4PomeronCrossSection(const G4Proton * );
G4PomeronCrossSection(const G4Neutron * );
G4PomeronCrossSection(const G4PionPlus * );
G4PomeronCrossSection(const G4PionMinus * );
G4PomeronCrossSection(const G4PionZero * );
G4PomeronCrossSection(const G4KaonPlus * );
G4PomeronCrossSection(const G4KaonMinus * );
G4PomeronCrossSection(const G4KaonZero * );
G4PomeronCrossSection(const G4KaonZeroLong * );
G4PomeronCrossSection(const G4KaonZeroShort * );
~G4PomeronCrossSection();
// s = (center of mass energy)**2
G4double GetTotalCrossSection(const G4double s);
G4double GetDiffractiveCrossSection(const G4double s);
G4double GetElasticCrossSection(const G4double s);
G4double GetInelasticCrossSection(const G4double s);
G4double GetTotalProbability(const G4double s,
const G4double impactsquare);
G4double GetDiffractiveProbability(const G4double s,
const G4double impactsquare);
G4double GetNondiffractiveProbability(const G4double s,
const G4double impactsquare);
G4double GetElasticProbability(const G4double s,
const G4double impactsquare);
G4double GetInelasticProbability(const G4double s,
const G4double impactsquare);
G4double GetCutPomeronProbability(const G4double s,
const G4double impactsquare, const G4int nPomerons);
void Setgamma(const G4double agam); // temporary only! GF.
G4double SoftEikonal(G4double s, G4double impactsquare);
G4double HardEikonal(G4double s, G4double impactsquare);
private:
G4double PowerSoft(const G4double s);
G4double PowerHard(const G4double s);
G4double LambdaSoft(const G4double s);
G4double LambdaHard(const G4double s);
G4double Zsoft(const G4double s);
G4double Zhard(const G4double s);
G4PomeronCrossSection();
void InitForNucleon();
void InitForPion();
void InitForKaon();
G4double Expand(G4double z);
inline G4double Z(const G4double Scms);
inline G4double SigP(const G4double Scms);
inline G4double Power(const G4double Scms);
inline G4double Lambda(const G4double s);
inline G4double Eikonal(const G4double s,const G4double impactsquare);
G4double pomeron_S;
G4double pomeron_Gamma;
G4double pomeron_C;
G4double pomeron_Rsquare;
G4double pomeron_Alpha;
G4double pomeron_Alphaprime;
G4double pomeron_Gamma_Hard;
G4double pomeron_Alpha_Hard;
};
#endif
@@ -0,0 +1,80 @@
// 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: G4StringModel.hh,v 1.1 1998/08/22 08:57:16 hpw Exp $
// GEANT4 tag $Name: geant4-00 $
//
#ifndef G4StringModel_h
#define G4StringModel_h 1
#include "G4VHighEnergyGenerator.hh"
#include "G4EventGenerator.hh"
class G4V3DNucleus;
class G4VStringFragmentation;
class G4StringModel : public G4VHighEnergyGenerator
{
public:
G4StringModel();
~G4StringModel();
private:
G4StringModel(const G4StringModel &right);
const G4StringModel & operator=(const G4StringModel &right);
int operator==(const G4StringModel &right) const;
int operator!=(const G4StringModel &right) const;
public:
void Set3DNucleus(G4V3DNucleus *const value);
void SetStringFragmentationModel(G4VStringFragmentation *const value);
void SetGenerator(G4EventGenerator *const value);
private:
const G4V3DNucleus * Get3DNucleus() const;
const G4VStringFragmentation * GetStringFragmentationModel() const;
const G4EventGenerator * GetGenerator() const;
private:
G4V3DNucleus *the3DNucleus;
G4VStringFragmentation *theStringFragmentationModel;
G4EventGenerator *theGenerator;
};
inline const G4V3DNucleus * G4StringModel::Get3DNucleus() const
{
return the3DNucleus;
}
inline void G4StringModel::Set3DNucleus(G4V3DNucleus *const value)
{
the3DNucleus = value;
}
inline const G4VStringFragmentation * G4StringModel::GetStringFragmentationModel() const
{
return theStringFragmentationModel;
}
inline void G4StringModel::SetStringFragmentationModel(G4VStringFragmentation *const value)
{
theStringFragmentationModel = value;
}
inline const G4EventGenerator * G4StringModel::GetGenerator() const
{
return theGenerator;
}
inline void G4StringModel::SetGenerator(G4EventGenerator *const value)
{
theGenerator = value;
}
#endif
@@ -0,0 +1,79 @@
// 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: G4VPartonStringModel.hh,v 1.2 1998/10/09 13:33:29 maxim Exp $
// GEANT4 tag $Name: geant4-00 $
//
#ifndef G4VPartonStringModel_h
#define G4VPartonStringModel_h 1
// ------------------------------------------------------------
// GEANT 4 class header file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// ---------------- G4VPartonStringModel ----------------
// by Gunter Folger, May 1998.
// abstract class for all Parton String Models
// ------------------------------------------------------------
// Modified at 8-Oct-1998 by Maxim Komogorov. Method EnergyAndMomentumCorrector was added.
#include "G4StringModel.hh"
#include "G4VParticipants.hh"
#include "G4ReactionProductVector.hh"
#include "G4ExcitedString.hh"
#include "G4ExcitedStringVector.hh"
#include "G4VStringFragmentation.hh"
#include "G4V3DNucleus.hh"
class G4VPartonStringModel : public G4VHighEnergyGenerator
{
public:
G4VPartonStringModel();
virtual ~G4VPartonStringModel();
private:
G4VPartonStringModel(const G4VPartonStringModel &right);
const G4VPartonStringModel & operator=(const G4VPartonStringModel &right);
int operator==(const G4VPartonStringModel &right) const;
int operator!=(const G4VPartonStringModel &right) const;
public:
void SetFragmentationModel(G4VStringFragmentation * aModel);
G4KineticTrackVector * Scatter(const G4Nucleus &theNucleus, const G4DynamicParticle &thePrimary);
virtual G4V3DNucleus * GetWoundedNucleus() const = 0;
protected:
virtual void Init(const G4Nucleus &theNucleus, const G4DynamicParticle &thePrimary) = 0;
virtual G4ExcitedStringVector * GetStrings() = 0;
void SetThisPointer(G4VPartonStringModel * aPointer);
G4bool EnergyAndMomentumCorrector(G4KineticTrackVector* Output, G4LorentzVector& TotalCollisionMomentum);
private:
G4VStringFragmentation * stringFragmentationModel;
G4VPartonStringModel * theThis;
};
inline void G4VPartonStringModel::SetFragmentationModel(G4VStringFragmentation * aModel)
{
stringFragmentationModel = aModel;
}
inline
void G4VPartonStringModel::SetThisPointer(G4VPartonStringModel * aPointer)
{
theThis=aPointer;
}
#endif
@@ -0,0 +1,38 @@
// 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: G4VertexCode.hh,v 1.1 1998/08/22 08:57:18 hpw Exp $
// GEANT4 tag $Name: geant4-00 $
//
#ifndef G4VertexCode_h
#define G4VertexCode_h 1
class G4VertexCode
{
public:
G4VertexCode(G4String & aCode);
void SetCode(G4String & aCode);
G4String GetCode();
private:
G4String theCode;
};
inline void G4VertexCode::SetCode(G4String & aCode)
{
theCode = aCode;
}
inline G4String G4VertexCode::GetCode()
{
return theCode;
}
#endif