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,39 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiKaonZeroInelastic_h
#define G4HEAntiKaonZeroInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiKaonZeroInelastic : public G4HEInelastic
{
public:
G4HEAntiKaonZeroInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiKaonZeroInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiKaonZero(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiLambdaInelastic_h
#define G4HEAntiLambdaInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiLambdaInelastic : public G4HEInelastic
{
public:
G4HEAntiLambdaInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiLambdaInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiLambda(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiNeutronInelastic_h
#define G4HEAntiNeutronInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiNeutronInelastic : public G4HEInelastic
{
public:
G4HEAntiNeutronInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiNeutronInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiNeutron(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiOmegaMinusInelastic_h
#define G4HEAntiOmegaMinusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiOmegaMinusInelastic : public G4HEInelastic
{
public:
G4HEAntiOmegaMinusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiOmegaMinusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiOmegaMinus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiProtonInelastic_h
#define G4HEAntiProtonInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiProtonInelastic : public G4HEInelastic
{
public:
G4HEAntiProtonInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiProtonInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiProton(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiSigmaMinusInelastic_h
#define G4HEAntiSigmaMinusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiSigmaMinusInelastic : public G4HEInelastic
{
public:
G4HEAntiSigmaMinusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiSigmaMinusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiSigmaMinus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiSigmaPlusInelastic_h
#define G4HEAntiSigmaPlusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiSigmaPlusInelastic : public G4HEInelastic
{
public:
G4HEAntiSigmaPlusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiSigmaPlusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiSigmaPlus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,35 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiSigmaZeroInelastic_h
#define G4HEAntiSigmaZeroInelastic_h 1
#include "G4HEAntiLambdaInelastic.hh"
class G4HEAntiSigmaZeroInelastic : public G4HEInelastic
{
public:
G4HEAntiSigmaZeroInelastic() : G4HEInelastic()
{
}
~G4HEAntiSigmaZeroInelastic(){ };
G4int verboseLevel;
G4int MAXPART;
G4int vecLength;
void SetMaxNumberOfSecondaries(G4int maxnumber)
{ MAXPART = maxnumber; };
void SetVerboseLevel(G4int verbose)
{ verboseLevel = verbose;};
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiXiMinusInelastic_h
#define G4HEAntiXiMinusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiXiMinusInelastic : public G4HEInelastic
{
public:
G4HEAntiXiMinusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiXiMinusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiXiMinus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEAntiXiZeroInelastic_h
#define G4HEAntiXiZeroInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEAntiXiZeroInelastic : public G4HEInelastic
{
public:
G4HEAntiXiZeroInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEAntiXiZeroInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasAntiXiZero(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,196 @@
// G4 Gheisha High Energy (GHE) model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
// It includes all Physics Routines from Geant3,
// relevant for simulation of hadronic processes
// above approx. 20 GeV incident momentum.
// Not included are the Physics Routines for
// stopping particles, the low energy neutron
// slowing down description and the low energy
// nuclear reactions a(A,A')b.
// All routines pass the compiler and give
// some reasonable numbers as output.
// A statistically significant comparison
// with GEANT3 and experimental data has
// still to be done.
#ifndef G4HEInelastic_h
#define G4HEInelastic_h 1
#include "G4HEVector.hh"
#include "G4HadronicInteraction.hh"
class G4HEInelastic : public G4HadronicInteraction
{
public:
G4HEInelastic()
{
SetMinEnergy(20*GeV);
SetMaxEnergy(10*TeV);
MAXPART = 512;
verboseLevel = 0;
SetParticles();
};
~G4HEInelastic(){ };
void SetMaxNumberOfSecondaries( const G4int maxnumber )
{ MAXPART = maxnumber;}
void SetVerboseLevel( const G4int level)
{ verboseLevel = level;}
G4int verboseLevel;
G4int MAXPART;
void FillParticleChange(G4HEVector pv[], G4int aVecLength);
G4double pmltpc(G4int np, G4int nm, G4int nz, G4int n, G4double b, G4double c);
G4int Factorial(G4int n);
G4double NuclearInelasticity(G4double incidentKineticEnergy,
G4double atomicWeight,
G4double atomicNumber);
G4double NuclearExcitation(G4double incidentKineticEnergy,
G4double atomicWeight,
G4double atomicNumber,
G4double& excitationEnergyCascade,
G4double& excitationEnergyEvaporation);
void HighEnergyCascading(G4bool &successful,
G4HEVector pv[],
G4int &vecLen,
G4double &excitationEnergyGNP,
G4double &excitationEnergyDTA,
G4HEVector incidentParticle,
G4HEVector targetParticle,
G4double atomicWeight,
G4double atomicNumber);
void HighEnergyClusterProduction(G4bool &successful,
G4HEVector pv[],
G4int &vecLen,
G4double &excitationEnergyGNP,
G4double &excitationEnergyDTA,
G4HEVector incidentParticle,
G4HEVector targetParticle,
G4double atomicWeight,
G4double atomicNumber);
void TuningOfHighEnergyCascading( G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
G4double atomicWeight,
G4double atomicNumber);
void MediumEnergyCascading(G4bool &successful,
G4HEVector pv[],
G4int &vecLen,
G4double &excitationEnergyGNP,
G4double &excitationEnergyDTA,
G4HEVector incidentParticle,
G4HEVector targetParticle,
G4double atomicWeight,
G4double atomicNumber);
void MediumEnergyClusterProduction(G4bool &successful,
G4HEVector pv[],
G4int &vecLen,
G4double &excitationEnergyGNP,
G4double &excitationEnergyDTA,
G4HEVector incidentParticle,
G4HEVector targetParticle,
G4double atomicWeight,
G4double atomicNumber);
void QuasiElasticScattering(G4bool &successful,
G4HEVector pv[],
G4int &vecLen,
G4double &excitationEnergyGNP,
G4double &excitationEnergyDTA,
G4HEVector incidentParticle,
G4HEVector targetParticle,
G4double atomicWeight,
G4double atomicNumber);
void ElasticScattering(G4bool &successful,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4double atomicWeight,
G4double atomicNumber);
G4int rtmi(G4double *x, G4double xli, G4double xri, G4double eps,
G4int iend,
G4double aa, G4double bb, G4double cc, G4double dd, G4double rr);
G4double fctcos(G4double t, G4double aa, G4double bb,G4double cc, G4double dd,
G4double rr);
void StrangeParticlePairProduction(const G4double availableEnergy,
const G4double centerOfMassEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle);
G4double NBodyPhaseSpace(const G4double totalEnergy,
const G4bool constantCrossSection,
G4HEVector pv[],
G4int &vecLen);
G4double NBodyPhaseSpace(G4int npart,
G4HEVector pv[],
G4double wmax,
G4double wfcn,
G4int maxtrial,
G4int ntrial);
G4double gpdk(G4double a, G4double b, G4double c);
void QuickSort(G4double arr[], const G4int lidx, const G4int ridx);
G4double Alam(G4double a, G4double b, G4double c);
G4double CalculatePhaseSpaceWeight( G4int npart);
G4double normal(void);
G4double GammaRand(G4double avalue);
G4double Erlang(G4int mvalue);
G4int Poisson(G4double x);
void SetParticles(void);
G4HEVector PionPlus;
G4HEVector PionZero;
G4HEVector PionMinus;
G4HEVector KaonPlus;
G4HEVector KaonZero;
G4HEVector AntiKaonZero;
G4HEVector KaonMinus;
G4HEVector KaonZeroShort;
G4HEVector KaonZeroLong;
G4HEVector Proton;
G4HEVector AntiProton;
G4HEVector Neutron;
G4HEVector AntiNeutron;
G4HEVector Lambda;
G4HEVector AntiLambda;
G4HEVector SigmaPlus;
G4HEVector SigmaZero;
G4HEVector SigmaMinus;
G4HEVector AntiSigmaPlus;
G4HEVector AntiSigmaZero;
G4HEVector AntiSigmaMinus;
G4HEVector XiZero;
G4HEVector XiMinus;
G4HEVector AntiXiZero;
G4HEVector AntiXiMinus;
G4HEVector OmegaMinus;
G4HEVector AntiOmegaMinus;
G4HEVector Deuteron;
G4HEVector Triton;
G4HEVector Alpha;
G4HEVector Gamma;
};
#endif
@@ -0,0 +1,39 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEKaonMinusInelastic_h
#define G4HEKaonMinusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEKaonMinusInelastic : public G4HEInelastic
{
public:
G4HEKaonMinusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEKaonMinusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasKaonMinus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEKaonPlusInelastic_h
#define G4HEKaonPlusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEKaonPlusInelastic : public G4HEInelastic
{
public:
G4HEKaonPlusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEKaonPlusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasKaonPlus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEKaonZeroInelastic_h
#define G4HEKaonZeroInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEKaonZeroInelastic : public G4HEInelastic
{
public:
G4HEKaonZeroInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEKaonZeroInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasKaonZero(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,38 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEKaonZeroLongInelastic_h
#define G4HEKaonZeroLongInelastic_h 1
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEAntiKaonZeroInelastic.hh"
class G4HEKaonZeroLongInelastic : public G4HEInelastic
{
public:
G4HEKaonZeroLongInelastic()
{
}
~G4HEKaonZeroLongInelastic(){ };
G4int verboseLevel;
G4int MAXPART;
G4int vecLength;
void SetMaxNumberOfSecondaries(G4int maxnumber)
{ MAXPART = maxnumber;};
void SetVerboseLevel(G4int verbose)
{ verboseLevel = verbose;};
G4int GetNumberOfSecondaries()
{ return vecLength;};
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
};
#endif
@@ -0,0 +1,36 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEKaonZeroShortInelastic_h
#define G4HEKaonZeroShortInelastic_h 1
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEAntiKaonZeroInelastic.hh"
class G4HEKaonZeroShortInelastic : public G4HEInelastic
{
public:
G4HEKaonZeroShortInelastic()
{
}
~G4HEKaonZeroShortInelastic(){ };
G4int vecLength;
void SetMaxNumberOfSecondaries(G4int maxnumber)
{ MAXPART = maxnumber;};
void SetVerboseLevel(G4int verbose)
{ verboseLevel = verbose;};
G4int GetNumberOfSecondaries()
{ return vecLength;};
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HELambdaInelastic_h
#define G4HELambdaInelastic_h 1
#include "G4HEInelastic.hh"
class G4HELambdaInelastic : public G4HEInelastic
{
public:
G4HELambdaInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HELambdaInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasLambda(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HENeutronInelastic_h
#define G4HENeutronInelastic_h 1
#include "G4HEInelastic.hh"
class G4HENeutronInelastic : public G4HEInelastic
{
public:
G4HENeutronInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HENeutronInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasNeutron(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEOmegaMinusInelastic_h
#define G4HEOmegaMinusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEOmegaMinusInelastic : public G4HEInelastic
{
public:
G4HEOmegaMinusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEOmegaMinusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasOmegaMinus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,39 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEPionMinusInelastic_h
#define G4HEPionMinusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEPionMinusInelastic : public G4HEInelastic
{
public:
G4HEPionMinusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEPionMinusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasPionMinus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEPionPlusInelastic_h
#define G4HEPionPlusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEPionPlusInelastic : public G4HEInelastic
{
public:
G4HEPionPlusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEPionPlusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasPionPlus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,82 @@
// G4 Gheisha friend class G4HEPlot -- header file
// last modified: H. Fesefeldt 18-November-1996
#include <stdio.h>
#include "globals.hh"
class G4HEPlot
{
protected:
G4double Xstart;
G4double Xbin;
G4double Weight;
G4int Nbin;
G4int Entries;
G4int EntriesOverflow;
G4int EntriesUnderflow;
G4double WeightOverflow;
G4double WeightUnderflow;
G4double* Xvalue;
G4double* Yvalue;
public:
G4HEPlot(){ };
~G4HEPlot(){ };
G4double getWeight()
{ return Weight;};
G4double getWeightUnderflow()
{ return WeightUnderflow; };
G4double getWeightOverflow()
{ return WeightOverflow;};
G4int getNumberOfEntries()
{ return Entries;};
G4int getNumberOfEntriesOverflow()
{ return EntriesOverflow;};
G4int getNumberOfEntriesUnderflow()
{ return EntriesUnderflow;};
G4int getNumberOfBins()
{ return Nbin;};
G4double getBinsize()
{ return Xbin;};
G4double getXstart()
{ return Xstart;};
void Init(G4int nbin, G4double xstart, G4double Xbin);
void Add( G4double s1, G4double s2, const G4HEPlot & p1, const G4HEPlot & p2 );
void Multiply( G4double s1, G4double s2, const G4HEPlot & p1, const G4HEPlot & p2 );
void Divide( G4double s1, G4double s2, const G4HEPlot & p1, const G4HEPlot & p2 );
void Scale( G4double s, const G4HEPlot & p);
void XScale( G4double a, G4double b, const G4HEPlot & p);
void Log( G4double s, const G4HEPlot & p);
void Sqrt( G4double s, const G4HEPlot & p);
void Reset();
void Fill(G4double x, G4double w);
void Print(G4String name, G4int i);
void DumpToFile(G4int aPlot, G4String aName);
void GetFromFile(G4int aPlot, G4String aName);
};
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEProtonInelastic_h
#define G4HEProtonInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEProtonInelastic : public G4HEInelastic
{
public:
G4HEProtonInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEProtonInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasProton(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HESigmaMinusInelastic_h
#define G4HESigmaMinusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HESigmaMinusInelastic : public G4HEInelastic
{
public:
G4HESigmaMinusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HESigmaMinusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasSigmaMinus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HESigmaPlusInelastic_h
#define G4HESigmaPlusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HESigmaPlusInelastic : public G4HEInelastic
{
public:
G4HESigmaPlusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HESigmaPlusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasSigmaPlus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,35 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HESigmaZeroInelastic_h
#define G4HESigmaZeroInelastic_h 1
#include "G4HELambdaInelastic.hh"
class G4HESigmaZeroInelastic : public G4HEInelastic
{
public:
G4HESigmaZeroInelastic() : G4HEInelastic()
{
}
~G4HESigmaZeroInelastic(){ };
G4int verboseLevel;
G4int MAXPART;
G4int vecLength;
void SetMaxNumberOfSecondaries(G4int maxnumber)
{ MAXPART = maxnumber; };
void SetVerboseLevel(G4int verbose)
{ verboseLevel = verbose;};
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
};
#endif
@@ -0,0 +1,230 @@
// G4 Gheisha friend class G4KinematicParticle -- header file
// J.L. Chuma, TRIUMF, 22-Feb-1996
// last modified: H. Fesefeldt 18-November-1996
#ifndef G4HEVector_hh
#define G4HEVector_hh 1
#include "G4ParticleMomentum.hh"
#include "Randomize.hh"
#include "G4DynamicParticle.hh"
class G4HEVector
{
protected:
G4double px;
G4double py;
G4double pz;
G4double energy;
G4double kineticEnergy;
G4double mass;
G4double charge;
G4double timeOfFlight;
G4int side;
G4bool flag;
G4int code;
G4String particleName;
G4String particleType;
G4int baryon;
enum {NumberOfQuarkFlavor = 8};
G4int theQuarkContent[NumberOfQuarkFlavor];
G4int theAntiQuarkContent[NumberOfQuarkFlavor];
public:
G4HEVector(const G4DynamicParticle * aParticle)
{
G4ThreeVector aMom = 1./GeV*aParticle->GetMomentum();
px = aMom.x();
py = aMom.y();
pz = aMom.z();
energy = aParticle->GetTotalEnergy()/GeV;
kineticEnergy = aParticle->GetKineticEnergy()/GeV;
mass = aParticle->GetMass()/GeV;
charge = aParticle->GetDefinition()->GetPDGCharge()/eplus;
timeOfFlight = 0.0;
side = 0;
flag = false;
code = aParticle->GetDefinition()->GetPDGEncoding();
baryon = aParticle->GetDefinition()->GetBaryonNumber();
particleName = getParticleName(code, baryon);
particleType = aParticle->GetDefinition()->GetParticleType();
}
G4HEVector()
{
px = 0.0;
py = 0.0;
pz = 0.0;
energy = 0.0;
kineticEnergy = 0.0;
mass = 0.0;
charge = 0.0;
timeOfFlight = 0.0;
side = 0;
flag = false;
code = 0;
particleName = "";
particleType = "";
baryon = 0;
}
G4HEVector( const G4HEVector & p )
{
px = p.px;
py = p.py;
pz = p.pz;
energy = p.energy;
kineticEnergy = p.kineticEnergy;
mass = p.mass;
charge = p.charge;
timeOfFlight = p.timeOfFlight;
side = p.side;
flag = p.flag;
code = p.code;
particleName = p.particleName;
particleType = p.particleType;
baryon = 0;
}
G4HEVector & operator = ( const G4HEVector & p )
{
px = p.px;
py = p.py;
pz = p.pz;
energy = p.energy;
kineticEnergy = p.kineticEnergy;
mass = p.mass;
charge = p.charge;
timeOfFlight = p.timeOfFlight;
side = p.side;
flag = p.flag;
code = p.code;
particleName = p.particleName;
particleType = p.particleType;
baryon = p.baryon;
return *this;
}
~G4HEVector(){ };
G4String getParticleName(G4int code, G4int baryon);
void setMomentum( G4ParticleMomentum mom );
void setMomentumAndUpdate( G4ParticleMomentum mom );
const G4ParticleMomentum getMomentum() const ;
G4double getTotalMomentum();
void setMomentum( G4double x, G4double y, G4double z);
void setMomentumAndUpdate( G4double x, G4double y, G4double z );
void setMomentum( G4double x, G4double y );
void setMomentumAndUpdate( G4double x, G4double y );
void setMomentum( G4double z );
void setMomentumAndUpdate( G4double z );
void setEnergy( G4double e );
void setEnergyAndUpdate( G4double e );
void setKineticEnergy( G4double ekin );
void setKineticEnergyAndUpdate(G4double ekin);
G4double getEnergy();
G4double getKineticEnergy();
void setMass( G4double m );
void setMassAndUpdate( G4double m );
G4double getMass();
void setCharge( G4double c );
G4double getCharge();
void setTOF( G4double t );
G4double getTOF();
void setSide( G4int s );
G4int getSide();
void setFlag( G4bool f );
G4bool getFlag();
void setCode( G4int c );
G4int getCode();
G4String getName();
G4int getBaryonNumber();
G4int getQuarkContent(G4int flavor);
G4int getAntiQuarkContent(G4int flavor);
void setZero();
G4String getType();
void Add( const G4HEVector & p1, const G4HEVector & p2 );
void Sub( const G4HEVector & p1, const G4HEVector & p2 );
void Lor( const G4HEVector & p1, const G4HEVector & p2 );
G4double CosAng( const G4HEVector & p );
G4double Ang(const G4HEVector & p );
G4double Dot4( const G4HEVector & p1, const G4HEVector & p2);
G4double Impu( const G4HEVector & p1, const G4HEVector & p2);
void Add3( const G4HEVector & p1, const G4HEVector & p2);
void Sub3( const G4HEVector & p1, const G4HEVector & p2);
void Cross( const G4HEVector & p1, const G4HEVector & p2);
G4double Dot( const G4HEVector & p1, const G4HEVector & p2);
void Smul( const G4HEVector & p, G4double h);
void SmulAndUpdate( const G4HEVector & p, G4double h);
void Norz( const G4HEVector & p );
G4double Length();
void Exch( G4HEVector & p1);
void Defs1( const G4HEVector & p1, const G4HEVector & p2);
void Defs( const G4HEVector & p1, const G4HEVector & p2,
G4HEVector & my, G4HEVector & mz );
void Trac( const G4HEVector & p1, const G4HEVector & mx,
const G4HEVector & my, const G4HEVector & mz);
void setDefinition(G4String name);
G4int FillQuarkContent();
void Print( G4int L);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEXiMinusInelastic_h
#define G4HEXiMinusInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEXiMinusInelastic : public G4HEInelastic
{
public:
G4HEXiMinusInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEXiMinusInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasXiMinus(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif
@@ -0,0 +1,40 @@
// G4 Gheisha High Energy model class -- header file
// H. Fesefeldt, RWTH Aachen 23-October-1996
// Last modified: 10-December-1996
// A prototype of the Gheisha High Energy collision model.
#ifndef G4HEXiZeroInelastic_h
#define G4HEXiZeroInelastic_h 1
#include "G4HEInelastic.hh"
class G4HEXiZeroInelastic : public G4HEInelastic
{
public:
G4HEXiZeroInelastic() : G4HEInelastic()
{
G4int vecLen = 0;
}
~G4HEXiZeroInelastic(){ };
G4int vecLength;
G4VParticleChange * ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus );
G4int GetNumberOfSecondaries()
{ return vecLength; }
private:
void FirstIntInCasXiZero(G4bool &inElastic, const G4double availableEnergy,
G4HEVector pv[],
G4int &vecLen,
G4HEVector incidentParticle,
G4HEVector targetParticle,
const G4double atomicWeight);
};
#endif