Import Geant4 10.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 11:51:14 +02:00
parent e2d2f9810a
commit 286caacf06
12421 changed files with 730077 additions and 502383 deletions
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/DetectorConstruction.hh
/// \brief Definition of the DetectorConstruction class
//
// $Id$
// $Id: DetectorConstruction.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
/////////////////////////////////////////////////////////////////////////
//
@@ -46,6 +46,7 @@
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
#include "G4Material.hh"
#include "G4SystemOfUnits.hh"
class CheckVolumeSD;
class TargetSD;
@@ -61,9 +62,7 @@ public:
DetectorConstruction();
virtual ~DetectorConstruction();
public:
G4VPhysicalVolume* Construct();
virtual G4VPhysicalVolume* Construct();
void SetWorldMaterial(const G4String&);
void SetTargetMaterial(const G4String&);
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/DetectorMessenger.hh
/// \brief Definition of the DetectorMessenger class
//
// $Id$
// $Id: DetectorMessenger.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
/////////////////////////////////////////////////////////////////////////
//
@@ -62,7 +62,7 @@ public:
DetectorMessenger(DetectorConstruction* );
virtual ~DetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
virtual void SetNewValue(G4UIcommand*, G4String);
private:
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/EventAction.hh
/// \brief Definition of the EventAction class
//
// $Id$
// $Id: EventAction.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
/////////////////////////////////////////////////////////////////////////
//
@@ -60,13 +60,13 @@ public: // Without description
EventAction();
virtual ~EventAction();
void BeginOfEventAction(const G4Event*);
void EndOfEventAction(const G4Event*);
virtual void BeginOfEventAction(const G4Event*);
virtual void EndOfEventAction(const G4Event*);
void SetPrintModulo(G4int val) {printModulo = val;};
void SetDrawFlag(G4String val) {drawFlag = val;};
void AddEventToDebug(G4int val) {selectedEvents.push_back(val);
nSelected++;};
inline void SetPrintModulo(G4int val) {printModulo = val;};
inline void SetDrawFlag(G4String val) {drawFlag = val;};
inline void AddEventToDebug(G4int val) {selectedEvents.push_back(val);
nSelected++;};
private:
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/EventActionMessenger.hh
/// \brief Definition of the EventActionMessenger class
//
// $Id$
// $Id: EventActionMessenger.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
/////////////////////////////////////////////////////////////////////////
//
@@ -59,7 +59,7 @@ public:
EventActionMessenger(EventAction*);
virtual ~EventActionMessenger();
void SetNewValue(G4UIcommand*, G4String);
virtual void SetNewValue(G4UIcommand*, G4String);
private:
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4DPMJET2_5CrossSection.hh
/// \brief Definition of the G4DPMJET2_5CrossSection class
//
// $Id: G4DPMJET2_5CrossSection.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4DPMJET2_5CrossSection_h
#define G4DPMJET2_5CrossSection_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -66,50 +69,56 @@
#include "G4VCrossSectionDataSet.hh"
#include "G4DPMJET2_5CrossSectionParamSet.hh"
#include "G4SystemOfUnits.hh"
#include "G4PhysicalConstants.hh"
#include <map>
typedef std::map< G4int, G4DPMJET2_5CrossSectionParamSet *, std::less< G4int > >
typedef std::map< G4int, G4DPMJET2_5CrossSectionParamSet*, std::less< G4int > >
G4DPMJET2_5CrossSectionIndex;
///////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4DPMJET2_5CrossSection : public G4VCrossSectionDataSet
{
public:
G4DPMJET2_5CrossSection();
~G4DPMJET2_5CrossSection();
virtual G4bool IsApplicable(const G4DynamicParticle* theProjectile,
const G4Element* theTarget);
public:
virtual G4bool IsZAApplicable(const G4DynamicParticle* theProjectile,
G4double ZZ, G4double AA);
G4DPMJET2_5CrossSection();
virtual G4double GetCrossSection(const G4DynamicParticle* theProjectile,
const G4Element* theTarget, G4double theTemperature);
virtual ~G4DPMJET2_5CrossSection();
virtual
G4double GetIsoZACrossSection(const G4DynamicParticle* theProjectile,
G4double ZZ, G4double AA,
G4double theTemperature);
virtual G4bool IsIsoApplicable(const G4DynamicParticle* theProjectile,
G4int ZZ, G4int AA,
const G4Element* elm = 0,
const G4Material* mat = 0);
virtual void BuildPhysicsTable(const G4ParticleDefinition&);
virtual
G4double GetIsoCrossSection(const G4DynamicParticle* theProjectile,
G4int ZZ, G4int AA,
const G4Isotope*,
const G4Element* elm = 0,
const G4Material* mat = 0);
virtual void BuildPhysicsTable(const G4ParticleDefinition&);
virtual void DumpPhysicsTable(const G4ParticleDefinition&);
virtual void DumpPhysicsTable(const G4ParticleDefinition&);
private:
void Initialise ();
private:
G4int APmin;
G4int APmax;
G4int ATmin;
G4int ATmax;
void Initialise ();
G4DPMJET2_5CrossSectionIndex theCrossSectionIndex;
G4int APmin;
G4int APmax;
G4int ATmin;
G4int ATmax;
G4DPMJET2_5CrossSectionIndex theCrossSectionIndex;
const G4double upperLimit;
const G4double lowerLimit;
const G4int maxA;
const G4double upperLimit;
const G4double lowerLimit;
const G4int maxA;
};
///////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4DPMJET2_5CrossSectionParamSet.hh
/// \brief Definition of the G4DPMJET2_5CrossSectionParamSet class
//
// $Id: G4DPMJET2_5CrossSectionParamSet.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4DPMJET2_5CrossSectionParamSet_h
#define G4DPMJET2_5CrossSectionParamSet_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -61,23 +64,26 @@
//
#include "globals.hh"
///////////////////////////////////////////////////////////////////////////////
//
class G4DPMJET2_5CrossSectionParamSet
{
public:
G4DPMJET2_5CrossSectionParamSet () {c[0]=0.0; c[1]=0.0; c[2]=0.0;}
G4DPMJET2_5CrossSectionParamSet (const G4double c0, const G4double c1,
const G4double c2) {c[0]=c0; c[1]=c1; c[2]=c2;}
~G4DPMJET2_5CrossSectionParamSet () {};
public:
G4DPMJET2_5CrossSectionParamSet () {c[0]=0.0; c[1]=0.0; c[2]=0.0;}
G4DPMJET2_5CrossSectionParamSet (const G4double c0, const G4double c1,
const G4double c2)
{c[0]=c0; c[1]=c1; c[2]=c2;}
~G4DPMJET2_5CrossSectionParamSet () {};
G4double operator[](const G4int i) const {return c[i];}
G4DPMJET2_5CrossSectionParamSet &operator=(G4DPMJET2_5CrossSectionParamSet &right);
G4DPMJET2_5CrossSectionParamSet operator=(G4DPMJET2_5CrossSectionParamSet right)
{c[0] = right.c[0]; c[1] = right.c[1]; c[2] = right.c[2]; return *this;};
G4double operator[](const G4int i) const {return c[i];}
G4DPMJET2_5CrossSectionParamSet &operator=
(G4DPMJET2_5CrossSectionParamSet &right);
G4DPMJET2_5CrossSectionParamSet operator=
(G4DPMJET2_5CrossSectionParamSet right)
{c[0] = right.c[0]; c[1] = right.c[1]; c[2] = right.c[2]; return *this;};
protected:
G4double c[3];
protected:
G4double c[3];
};
#endif
@@ -36,8 +36,12 @@
/// \file hadronic/Hadr02/include/G4DPMJET2_5Interface.hh
/// \brief Definition of the G4DPMJET2_5Interface class
//
// $Id: G4DPMJET2_5Interface.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4DPMJET2_5Interface_hh
#define G4DPMJET2_5Interface_hh 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4DPMJET2_5Interface.hh
@@ -115,12 +119,12 @@ struct ccdpm25diffra
};
struct ccdpm25diqsum
{
G4int ndvuu, ndvus, ndvss, nvduu, nvdus, nvdss,
ndsuu, ndsus, ndsss, nsduu, nsdus, nsdss,
ndzuu, ndzus, ndzss, nzduu, nzdus, nzdss,
nadvuu, nadvus, nadvss, navduu, navdus, navdss,
nadsuu, nadsus, nadsss, nasduu, nasdus, nasdss,
nadzuu, nadzus, nadzss, nazduu, nazdus, nazdss;
G4int ndvuu, ndvus, ndvss, nvduu, nvdus, nvdss,
ndsuu, ndsus, ndsss, nsduu, nsdus, nsdss,
ndzuu, ndzus, ndzss, nzduu, nzdus, nzdss,
nadvuu, nadvus, nadvss, navduu, navdus, navdss,
nadsuu, nadsus, nadsss, nasduu, nasdus, nasdss,
nadzuu, nadzus, nadzss, nazduu, nazdus, nazdss;
};
struct ccdpm25diquax
{
@@ -129,8 +133,8 @@ struct ccdpm25diquax
};
struct ccdpm25diqrej
{
G4int idiqre[7], idvre[3], ivdre[3], idsre[3], isdre[3],
idzre[3], izdre[3], idiqrz[7];
G4int idiqre[7], idvre[3], ivdre[3], idsre[3], isdre[3],
idzre[3], izdre[3], idiqrz[7];
};
struct ccdpm25dprin
{
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4DPMJET2_5Model.hh
/// \brief Definition of the G4DPMJET2_5Model class
//
// $Id: G4DPMJET2_5Model.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4DPMJET2_5Model_h
#define G4DPMJET2_5Model_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -81,224 +84,181 @@
class G4GlaubAADataSetHandler;
enum G4DPMJET2_5InitialisationType { DEFAULT=1, DPM2_5=2, DPM3=3, CORSIKA=4 };
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4DPMJET2_5Model : public G4HadronicInteraction
{
public:
public:
//
//
// Standard constructor, destructor, copy etc declarations.
//
G4DPMJET2_5Model ();
G4DPMJET2_5Model (const G4DPMJET2_5InitialisationType);
G4DPMJET2_5Model (G4ExcitationHandler *,
const G4DPMJET2_5InitialisationType initType = DEFAULT);
G4DPMJET2_5Model (G4VPreCompoundModel *,
const G4DPMJET2_5InitialisationType initType = DEFAULT);
~G4DPMJET2_5Model ();
G4DPMJET2_5Model ();
G4DPMJET2_5Model (const G4DPMJET2_5InitialisationType);
G4DPMJET2_5Model (G4ExcitationHandler *,
const G4DPMJET2_5InitialisationType initType = DEFAULT);
G4DPMJET2_5Model (G4VPreCompoundModel *,
const G4DPMJET2_5InitialisationType initType = DEFAULT);
virtual ~G4DPMJET2_5Model ();
G4DPMJET2_5Model(const G4DPMJET2_5Model &right);
G4DPMJET2_5Model(const G4DPMJET2_5Model &right);
const G4DPMJET2_5Model& operator=(G4DPMJET2_5Model &right);
const G4DPMJET2_5Model& operator=(G4DPMJET2_5Model &right);
virtual G4bool IsApplicable(const G4HadProjectile &theTrack,
G4Nucleus &theTarget);
virtual G4HadFinalState *ApplyYourself(const G4HadProjectile &,
G4Nucleus &);
G4GlaubAADataSetHandler *GetGlauberDataSetHandler ();
virtual const std::pair<G4double, G4double> GetFatalEnergyCheckLevels() const;
G4bool IsApplicable (const G4HadProjectile &theTrack, G4Nucleus &theTarget);
virtual G4HadFinalState *ApplyYourself
(const G4HadProjectile &, G4Nucleus &);
void SetVerboseLevel (G4int);
void SetExcitationHandler (G4ExcitationHandler *);
void SetNoDeexcitation ();
void SetDefaultDeexcitation ();
G4ExcitationHandler *GetExcitationHandler () const;
void SetPreCompoundModel(G4VPreCompoundModel* value);
void SetNoPreCompoundModel ();
void SetDefaultPreCompoundModel ();
G4VPreCompoundModel* GetPreCompoundModel() const;
void SetDPMInitialRandomSeeds (const G4int seed1, const G4int seed2);
G4int GetDPMInitialRandomSeeds (const G4int i) const;
inline G4GlaubAADataSetHandler *GetGlauberDataSetHandler ();
G4double GetMinEnergy( const G4Material *aMaterial,
const G4Element *anElement ) const;
G4double GetMaxEnergy( const G4Material *aMaterial,
const G4Element *anElement ) const;
G4bool SetVerboseFortranOutput (const G4String filename);
G4String GetVerboseFortranOutput () const;
inline void SetVerboseLevel (G4int);
void SetDPMVariablesTAUFOR (const G4double TAUFOR_P,
const G4int KTAUGE_P,
const G4int ITAUVE_P);
/* void SetDPMVariablesXCUTS (const G4double CVQ_P,
const G4double CDQ_P,
const G4double CSEA_P,
const G4double SSMIMA_P);
void SetDPMVariablesCRONINPT (const G4int MKCRON_P,
const G4double CRONCO_P);
void SetDPMVariablesSEADISTR (const G4double
const G4double UNON_P,
const G4double UNOM_P,
const G4double UNOSEA_P);*/
void SetNoDeexcitation ();
void SetDefaultDeexcitation ();
inline void SetExcitationHandler (G4ExcitationHandler *);
inline G4ExcitationHandler *GetExcitationHandler () const;
void SetNoPreCompoundModel ();
void SetDefaultPreCompoundModel ();
inline void SetPreCompoundModel(G4VPreCompoundModel* value);
inline G4VPreCompoundModel* GetPreCompoundModel() const;
inline void SetDPMInitialRandomSeeds (const G4int seed1, const G4int seed2);
inline G4int GetDPMInitialRandomSeeds (const G4int i) const;
inline G4double GetMinEnergy( const G4Material *aMaterial,
const G4Element *anElement ) const;
inline G4double GetMaxEnergy( const G4Material *aMaterial,
const G4Element *anElement ) const;
inline G4bool SetVerboseFortranOutput (const G4String filename);
G4String GetVerboseFortranOutput () const;
inline void SetDPMVariablesTAUFOR (const G4double TAUFOR_P,
const G4int KTAUGE_P,
const G4int ITAUVE_P);
private:
void DumpVerboseInformation1 (const G4int n) const;
void DumpVerboseInformation2 (const G4String particleName,
const G4ThreeVector p, const G4double E, const G4double T,
const G4ThreeVector pinit) const;
void DumpVerboseInformation3 (const G4int i, const G4int A, const G4int Z,
const G4ThreeVector p, const G4double E, const G4double T,
const G4ThreeVector pinit) const;
void DumpVerboseInformation4 (const G4int i, const G4String particleName,
const G4ThreeVector p, const G4double E, const G4double T,
const G4ThreeVector pinit) const;
void PrintWelcomeMessage () const;
void Initialise ();
private:
void DumpVerboseInformation1 (const G4int n) const;
void DumpVerboseInformation2 (const G4String particleName,
const G4ThreeVector p,
const G4double E,
const G4double T,
const G4ThreeVector pinit) const;
void DumpVerboseInformation3 (const G4int i, const G4int A,
const G4int Z,
const G4ThreeVector p,
const G4double E,
const G4double T,
const G4ThreeVector pinit) const;
void DumpVerboseInformation4 (const G4int i,
const G4String particleName,
const G4ThreeVector p,
const G4double E,
const G4double T,
const G4ThreeVector pinit) const;
void PrintWelcomeMessage () const;
void Initialise ();
private:
G4DPMJET2_5InitialisationType
theInitType;
G4DPMJET2_5InitialisationType theInitType;
G4GlaubAADataSetHandler *theGlauberDataSetHandler;
G4GlaubAADataSetHandler *theGlauberDataSetHandler;
G4ParticleTable *theParticleTable;
G4IonTable *theIonTable;
G4ParticleTable *theParticleTable;
G4IonTable *theIonTable;
G4bool debug;
G4int debug_level;
G4int lunber;
G4double dpmver;
G4String defaultDirName;
G4bool debug;
G4int debug_level;
G4int lunber;
G4double dpmver;
G4String defaultDirName;
G4ExcitationHandler *theExcitationHandler;
G4VPreCompoundModel *thePreComp;
G4ExcitationHandler *theExcitationHandler;
G4VPreCompoundModel *thePreComp;
G4double TAUFOR;
G4int KTAUGE;
G4int ITAUVE;
G4double UNON;
G4double UNOM;
G4double UNOSEA;
G4double CVQ;
G4double CDQ;
G4double CSEA;
G4double SSMIMA;
G4double VVMTHR;
G4double SEASQ;
G4int MKCRON;
G4double CRONCO;
G4int ISINGD;
G4int ISINGX;
G4int IDUBLD;
G4double SDFRAC;
G4double TAUFOR;
G4int KTAUGE;
G4int ITAUVE;
G4double UNON;
G4double UNOM;
G4double UNOSEA;
G4double CVQ;
G4double CDQ;
G4double CSEA;
G4double SSMIMA;
G4double VVMTHR;
G4double SEASQ;
G4int MKCRON;
G4double CRONCO;
G4int ISINGD;
G4int ISINGX;
G4int IDUBLD;
G4double SDFRAC;
ftnlogical LTRUE;
ftnlogical LFALSE;
ftnlogical LTRUE;
ftnlogical LFALSE;
G4String verboseFortranFile;
G4String verboseFortranFile;
};
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4GlaubAADataSetHandler *G4DPMJET2_5Model::GetGlauberDataSetHandler ()
{return theGlauberDataSetHandler;}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline void G4DPMJET2_5Model::SetExcitationHandler
(G4ExcitationHandler *aExcitationHandler)
{theExcitationHandler = aExcitationHandler;}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4ExcitationHandler *G4DPMJET2_5Model::GetExcitationHandler () const
{return theExcitationHandler;}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline void G4DPMJET2_5Model::SetPreCompoundModel
(G4VPreCompoundModel *aPreCompoundModel)
{thePreComp = aPreCompoundModel;}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4VPreCompoundModel *G4DPMJET2_5Model::GetPreCompoundModel () const
{return thePreComp;}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline void G4DPMJET2_5Model::SetVerboseLevel (G4int verboseLevel1)
{verboseLevel = verboseLevel1;}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4double G4DPMJET2_5Model::GetMinEnergy( const G4Material *,
const G4Element * ) const
{return theMinEnergy;}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4double G4DPMJET2_5Model::GetMaxEnergy( const G4Material *,
const G4Element * ) const
{return theMaxEnergy;}
////////////////////////////////////////////////////////////////////////////////
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// SetVerboseFortranOutput
//
inline G4String G4DPMJET2_5Model::GetVerboseFortranOutput () const
{return verboseFortranFile;}
////////////////////////////////////////////////////////////////////////////////
//
inline void G4DPMJET2_5Model::DumpVerboseInformation2
(const G4String particleName, const G4ThreeVector p,
const G4double E, const G4double T, const G4ThreeVector pinit) const
{
G4cout <<"Name = " <<particleName <<G4endl;
G4cout <<" Momentum = " <<p/MeV <<" MeV/c" <<G4endl;
G4cout <<" T. Energy = " <<E/MeV <<" MeV" <<G4endl;
G4cout <<" K. Energy = " <<T/MeV <<" MeV" <<G4endl;
if (verboseLevel >= 3)
{
G4ThreeVector axis = pinit.unit();
G4double pz = p.dot(axis);
G4cout <<" Transverse mass = " <<std::sqrt(E*E-pz*pz)/MeV <<" MeV"
<<G4endl;
G4cout <<" Rapidity = "
<<0.5*std::log((E+pz)/(E-pz)) <<G4endl;
}
}
////////////////////////////////////////////////////////////////////////////////
//
inline void G4DPMJET2_5Model::DumpVerboseInformation3 (const G4int i,
const G4int A, const G4int Z, const G4ThreeVector p,
const G4double E, const G4double T, const G4ThreeVector pinit) const
{
G4cout <<"----------------------------------------"
<<"----------------------------------------" <<G4endl;
G4cout <<"The nuclear fragment #" <<i <<" before" <<G4endl;
G4cout <<"----------------------------------------"
<<"----------------------------------------" <<G4endl;
std::ostringstream tmpStream;
tmpStream <<"(A = " <<A <<", Z = " <<Z <<")";
G4String AZ = tmpStream.str();
DumpVerboseInformation2(AZ, p, E, T, pinit);
}
////////////////////////////////////////////////////////////////////////////////
//
inline void G4DPMJET2_5Model::DumpVerboseInformation4 (const G4int i,
const G4String particleName, const G4ThreeVector p,
const G4double E, const G4double T, const G4ThreeVector pinit) const
{
G4cout <<"----------------------------------------"
<<"----------------------------------------" <<G4endl;
G4cout <<"The nuclear fragment #" <<i <<" after" <<G4endl;
G4cout <<"----------------------------------------"
<<"----------------------------------------" <<G4endl;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DumpVerboseInformation2(particleName, p, E, T, pinit);
}
////////////////////////////////////////////////////////////////////////////////
//
inline void G4DPMJET2_5Model::SetDPMInitialRandomSeeds (const G4int seed1,
const G4int seed2)
{
@@ -306,8 +266,9 @@ inline void G4DPMJET2_5Model::SetDPMInitialRandomSeeds (const G4int seed1,
G4int s2 = seed2;
rd2in_ (&s1, &s2);
}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4int G4DPMJET2_5Model::GetDPMInitialRandomSeeds (const G4int i)
const
{
@@ -317,8 +278,9 @@ inline G4int G4DPMJET2_5Model::GetDPMInitialRandomSeeds (const G4int i)
else if (i == 2) return seed2;
else return 0;
}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline void G4DPMJET2_5Model::SetDPMVariablesTAUFOR (const G4double TAUFOR_P,
const G4int KTAUGE_P, const G4int ITAUVE_P)
{
@@ -329,6 +291,7 @@ inline void G4DPMJET2_5Model::SetDPMVariablesTAUFOR (const G4double TAUFOR_P,
taufo_.ktauge = KTAUGE;
taufo_.itauve = ITAUVE;
}
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4FullGlaubAADataSet.hh
/// \brief Definition of the G4FullGlaubAADataSet class
//
// $Id: G4FullGlaubAADataSet.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4FullGlaubAADataSet_h
#define G4FullGlaubAADataSet_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -65,30 +68,34 @@
#include <fstream>
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4FullGlaubAADataSet : public G4GlaubAADataSet
{
public:
G4FullGlaubAADataSet ();
G4FullGlaubAADataSet (const G4int AP1, const G4int AT1);
~G4FullGlaubAADataSet ();
G4FullGlaubAADataSet (const G4FullGlaubAADataSet &right);
public:
const G4FullGlaubAADataSet& operator=(G4FullGlaubAADataSet &right);
G4FullGlaubAADataSet ();
G4FullGlaubAADataSet (const G4int AP1, const G4int AT1);
virtual ~G4FullGlaubAADataSet ();
G4bool CreateGlauberData (const G4int AP1, const G4int AT1);
G4double *GetArrayPointerN (const G4double ppn = 0.0);
G4double *GetArrayPointerM (const G4double ppn = 0.0);
G4FullGlaubAADataSet (const G4FullGlaubAADataSet &right);
std::ofstream & WriteDataToFile (std::ofstream &File) const;
std::ifstream & ReadDataFromFile (std::ifstream &File);
const G4FullGlaubAADataSet& operator=(G4FullGlaubAADataSet &right);
public:
G4double bsiten[24][200];
G4double bsitem[24][200];
G4bool CreateGlauberData (const G4int AP1, const G4int AT1);
G4double *GetArrayPointerN (const G4double ppn = 0.0);
G4double *GetArrayPointerM (const G4double ppn = 0.0);
G4double wu10;
std::ofstream & WriteDataToFile (std::ofstream &File) const;
std::ifstream & ReadDataFromFile (std::ifstream &File);
G4double bsiten[24][200];
G4double bsitem[24][200];
G4double wu10;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4GlaubAADataSet.hh
/// \brief Definition of the G4GlaubAADataSet class
//
// $Id: G4GlaubAADataSet.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4GlaubAADataSet_h
#define G4GlaubAADataSet_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -60,34 +63,33 @@
///////////////////////////////////////////////////////////////////////////////
//
#include "G4VGlauberDataSet.hh"
#include "globals.hh"
#include <fstream>
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4GlaubAADataSet : public G4VGlauberDataSet
{
public:
G4GlaubAADataSet ();
virtual ~G4GlaubAADataSet ();
G4GlaubAADataSet (const G4GlaubAADataSet &right);
public:
const G4GlaubAADataSet& operator=(G4GlaubAADataSet &right);
G4GlaubAADataSet ();
virtual ~G4GlaubAADataSet ();
G4GlaubAADataSet (const G4GlaubAADataSet &right);
const G4GlaubAADataSet& operator=(G4GlaubAADataSet &right);
private:
G4int GetZP () const;
G4int GetZT () const;
virtual G4bool CreateGlauberData (const G4int AP1, const G4int AT1);
void DefineAZStabilityLine();
private:
G4int GetZP () const;
G4int GetZT () const;
virtual G4bool CreateGlauberData (const G4int AP1, const G4int AT1);
void DefineAZStabilityLine();
public:
G4int stabZ[211];
public:
G4int stabZ[211];
};
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4GlaubAADataSetHandler.hh
/// \brief Definition of the G4GlaubAADataSetHandler class
//
// $Id: G4GlaubAADataSetHandler.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4GlaubAADataSetHandler_h
#define G4GlaubAADataSetHandler_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -59,6 +62,7 @@
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
///////////////////////////////////////////////////////////////////////////////
//
#include "G4ParticleDefinition.hh"
#include "G4Isotope.hh"
#include "globals.hh"
@@ -76,63 +80,73 @@ class G4DPMJET2_5Model;
typedef std::map< G4int, G4ParamType1GlaubAADataSet *, std::less< G4int > >
G4GlaubAADataSetIndex;
////////////////////////////////////////////////////////////////////////////////
//
//class G4GlaubAADataSetHandler : public G4VGlauberDataSetHandler
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4GlaubAADataSetHandler
{
protected:
G4GlaubAADataSetHandler ();
protected:
G4GlaubAADataSetHandler ();
public:
virtual ~G4GlaubAADataSetHandler ();
static G4GlaubAADataSetHandler* getInstance ();
public:
G4bool IsGlauberDataSetAvailable (const G4int AP, const G4int AT) const;
G4bool SetCurrentGlauberDataSet (const G4int AP, const G4int AT,
const G4double ppn = 0.0);
G4GlaubAADataSet *GetCurrentGlauberDataSet () const;
void ResetCurrentGlauberDataSet ();
G4double GetValueN (const G4double v, const G4double ppn1 = 0.0);
G4double GetValueM (const G4double v, const G4double ppn1 = 0.0);
virtual ~G4GlaubAADataSetHandler ();
static G4GlaubAADataSetHandler* getInstance ();
void SetMaxGlauberDataSets (const G4int n);
G4int GetMaxGlauberDataSets () const;
G4bool IsGlauberDataSetAvailable (const G4int AP, const G4int AT) const;
G4bool SetCurrentGlauberDataSet (const G4int AP, const G4int AT,
const G4double ppn = 0.0);
G4GlaubAADataSet *GetCurrentGlauberDataSet () const;
void ResetCurrentGlauberDataSet ();
G4double GetValueN (const G4double v, const G4double ppn1 = 0.0);
G4double GetValueM (const G4double v, const G4double ppn1 = 0.0);
void SetMaxGlauberDataSets (const G4int n);
G4int GetMaxGlauberDataSets () const;
void SetVerboseLevel (const G4int i);
G4int GetVerboseLevel () const;
G4int UnloadAllGlauberData ();
inline void SetVerboseLevel (const G4int i);
inline G4int GetVerboseLevel () const;
G4int UnloadAllGlauberData ();
private:
G4VGlauberDataSet *LoadGlauberDataReturnPtr(const G4int AP, const G4int AT);
private:
G4bool CheckIfSpace () const;
G4int GetIndexID (const G4int AP, const G4int AT) const;
G4String GetStringID (const G4int AP, const G4int AT) const;
G4String GetProjectileStringID (const G4int AP) const;
G4String GetTargetStringID (const G4int AT) const;
G4VGlauberDataSet *LoadGlauberDataReturnPtr(const G4int AP, const G4int AT);
G4bool CheckIfSpace () const;
G4int GetIndexID (const G4int AP, const G4int AT) const;
G4String GetStringID (const G4int AP, const G4int AT) const;
G4String GetProjectileStringID (const G4int AP) const;
G4String GetTargetStringID (const G4int AT) const;
static G4GlaubAADataSetHandler *instance;
static G4GlaubAADataSetHandler *instance;
G4GlaubAADataSetIndex theIndex;
G4String glauberDataSetDir;
G4GlaubAADataSetIndex theIndex;
G4String glauberDataSetDir;
G4int maxGlauberDataSets;
G4int cntGlauberDataSets;
G4int maxGlauberDataSets;
G4int cntGlauberDataSets;
G4GlaubAADataSet *theCurrentGlauberDataSet;
G4double ppnCurrent;
G4bool usingLocalGlauberDataSet;
G4GlaubAADataSet *theCurrentGlauberDataSet;
G4double ppnCurrent;
G4bool usingLocalGlauberDataSet;
G4int maxArray;
G4int maxArray;
G4int verboseLevel;
G4int verboseLevel;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline void G4GlaubAADataSetHandler::SetVerboseLevel (const G4int i)
{verboseLevel = i;}
{verboseLevel = i;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4int G4GlaubAADataSetHandler::GetVerboseLevel () const
{return verboseLevel;}
{return verboseLevel;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,296 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
#ifndef G4HIJING_Interface_hh
#define G4HIJING_Interface_hh
//
// MODULE: G4HIJING_Model.hh
//
// Version: 1.B
// Date: 10/09/2013
// Author: Khaled Abdel-Waged
// Institute: Umm Al-Qura University
// Country: SAUDI ARABIA
//
// First: 1-COMMON BLOCK FOR OPTIONS AND PARAMETERS
//-----
// HIPARNT
// input parameters
// HIPR1, HIPR2 for event options
// HINT1, HINT2 of current event
//---------------------------------
struct cchijinghiparnt
{
float hipr1[100];
G4int ihpr2[50];
float hint1[100];
G4int ihnt2[50];
};
//****************************************************************************
// Second: 5-COMMON BLOCKS FOR EVENT INFORMATION
//----------------------------------------------------------------------------
//
// HIMAIN1-> Global information of the events are defined
//
struct cchijinghimain1
{
G4int natt;
float eatt;
G4int jatt, nt, np,n0,n01,n10,n11;
};
//-----------
// HIMAIN2->information of produced stable and undecayed particles
//-------
struct cchijinghimain2
{
G4int katt[4][130000];
float patt[4][130000];
};
//--------
// HIJJET1-> information about produced partons which
// are connected with the valence quarks, diquarks,...
//--------
struct cchijinghijjet1
{
G4int npj[300], kfpj[500][300];
float pjpx[500][300],pjpy[500][300], pjpz[500][300],pjpe[500][300];
float pjpm[500][300];
G4int ntj[300], kftj[500][300];
float pjtx[500][300], pjty[500][300], pjtz[500][300];
float pjte[500][300], pjtm[500][300];
};
//--------
// HIJJET1-> information about produced partons which
// will form string systems without being connected with
// valence quarks, diquarks,...
// ------
struct cchijinghijjet2
{
G4int nsg, njsg[900], iasg[3][900], k1sg[100][900];
G4int k2sg[100][900];
float pxsg[100][900], pysg[100][900], pzsg[100][900];
float pesg[100][900], pmsg[100][900];
};
//------
// HISTRNG
// contain information about the projectile and target nucleons
//-----
struct cchijinghistrng
{
G4int nfp[15][300];
float pp[15][300];
G4int nft[15][300];
float pt[15][300];
};
//****************************************************************************
// third: 2-COMMON BLOCKS which contain specific information
//----------------------------------------------------------------------------
struct cchijinghijjet4
{
G4int ndr, iadr[2][900], kfdr[900];
float pdr[5][900];
};
struct cchijinghijcrdn
{
float yp[300][3], yt[300][3];
};
//---------------------------------------------------------
// fourth: 5-Other common blocks
// --------------------------------------------------------
struct cchijingbveg1
{
float xl, xu, acc;
G4int ndim, ncall, itmx, nprn;
};
struct cchijingseedvax
{
G4int num1;
};
struct cchijingranseed
{
float nseed;
};
struct cchijinghijdat
{
float hidat0[10][10],hidat[10];
};
struct cchijinghipyint
{
G4int mint4, mint5;
float atco[20][200], atxs[200+1];
};
// hijing
extern "C"
{
// initialize HIJING for specified event type,
// collision frame and energy
//extern void hijset_ (float*,
//// const char*, const char*,const char*,
// G4int*, G4int*, G4int*, G4int*);
extern void hijset_ (float*);
// to generate a complete event as specified by sybroutine HIJSET
//extern void hijing_ (const char*,
// float*, float*);
extern void hijing_ (float*,float*);
extern float ulmass_ (G4int*);
// reset all relevant common blocks and variables and initialize HIJING
// for each event
extern void hijini_ ();
// calculate cross sections for minijet production, cross section of
// the triggered processes, elastic, inelastic, total cross section..
extern void hijcrs_ ();
//
// initialize program for generating hard scattering
//as specified by parameters and options
extern void jetini_ (G4int*, G4int*, G4int*);
//
// re-initiate PYTHIA for the triggered hard processe
// or simulate one hard scattering among the multiple jet production
//per NN-collision
extern void hijhrd_ (G4int*, G4int*, G4int*, G4int*, G4int*);
//
//generate soft interaction for each binary NN-collision
extern void hijsft_ (G4int*, G4int*, G4int*);
// rearrange gluon jets in a string system according to their rapidities
extern void hijsrt_ (G4int*, G4int*);
// perform jet quenching by allowing final state interaction of produced jet
// inside excited strings
extern void quench_ (G4int*, G4int*);
//
// arrange produced partons together with the valence quarks and diquarks
extern void hijfrg_ (G4int*, G4int*, G4int*);
// perform soft radiation according to the Lund dipole approx.
extern void attrad_ (G4int*);
// generate flavor codes of the valence quark (diquark)
//inside a given nucleon (hadron).
extern void attflv_ (G4int*, G4int*, G4int*);
// perform elastic scattering and possible elastic NN cascading
extern void hijcsc_ (G4int*, G4int*);
// three parameter Wood-Sax distribution
extern void hijwds_ (G4int*, G4int*, float*);
// gives profile function of 2 colliding nuclei at a given impact parameter
extern float profile_ (float*);
// transform the produced particles from c.m to lab frame
extern void hiboost_ ();
//----------------------------------------
// the default values of the parametrs and options to initialize
// the event record common blocks
extern void g4hijingblockdata_ ();
// ----------------------
// random generator
extern void rlu_ (G4int*);
//-----------------------------------------
extern struct cchijinghiparnt hiparnt_;
extern struct cchijinghimain1 himain1_;
extern struct cchijinghimain2 himain2_;
extern struct cchijinghijjet1 hijjet1_;
extern struct cchijinghijjet2 hijjet2_;
extern struct cchijinghistrng histrng_;
extern struct cchijinghijjet4 hijjet4_;
extern struct cchijinghijcrdn hijcrdn_;
extern struct cchijingbveg1 bveg1_;
extern struct cchijingseedvax seedvax_;
extern struct cchijingranseed ranseed_;
extern struct cchijinghijdat hijdat_;
extern struct cchijinghipyint hipyint_;
}
#endif
@@ -0,0 +1,129 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
#ifndef G4HIJING_Model_hh
#define G4HIJING_Model_hh
//
// MODULE: G4HIJING_Model.hh
//
// Version: 1.B
// Date: 10/90/2013
// Author: Khaled Abdel-Waged
// Institute: Umm Al-Qura University
//Country: SAUDI ARABIA
//
// Class Description
//
//
// Class Description - End
//
#include "G4Nucleon.hh"
#include "G4Nucleus.hh"
#include "G4VIntraNuclearTransportModel.hh"
#include "G4KineticTrackVector.hh"
#include "G4FragmentVector.hh"
#include "G4ParticleChange.hh"
#include "G4ReactionProductVector.hh"
#include "G4ReactionProduct.hh"
#include "G4IntraNucleiCascader.hh"
#include "G4Track.hh"
#include <fstream>
#include <string>
//---------------
class G4HadFinalState; //khaled new
class HistoManager;
//-------------------------------------------------------------
class G4HIJING_Model : public G4VIntraNuclearTransportModel {
public:
G4HIJING_Model(const G4String& name = "HIJING");
virtual ~G4HIJING_Model ();
// G4double GetMinEnergy( const G4Material *aMaterial,
// const G4Element *anElement ) const;
// G4double GetMaxEnergy( const G4Material *aMaterial,
// const G4Element *anElement ) const;
G4ReactionProductVector* Propagate(G4KineticTrackVector*
theSecondaries, G4V3DNucleus* theTarget);
virtual G4HadFinalState *ApplyYourself
(const G4HadProjectile &, G4Nucleus &);
private:
G4int operator==(G4HIJING_Model& right) {
return (this == &right);
}
G4int operator!=(G4HIJING_Model& right) {
return (this != &right);
}
// -------------initialize HIJING ------------------------
float efrm; //CM energy per nucleon (GeV/A)
float bmin; //impact parameter
float bmax;
G4int Nproduce; //Number of produced particles
//-------------------------------------------------------
G4int verbose; //print options
//
void InitialiseDataTables();
G4double Eplab(G4double, G4double);
G4int CurrentEvent;
// void ConvertToFortran(char*, const char*);
private:
void WelcomeMessage () const;
// -------------------------------------------
G4HadFinalState theResult; //khaled new
HistoManager *fHistoManager;
//-------------------------------------------
};
#endif
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4ParamType1GlaubAADataSet.hh
/// \brief Definition of the G4ParamType1GlaubAADataSet class
//
// $Id: G4ParamType1GlaubAADataSet.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4ParamType1GlaubAADataSet_h
#define G4ParamType1GlaubAADataSet_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -68,50 +71,53 @@
#include "globals.hh"
#include <fstream>
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4ParamType1GlaubAADataSet : public G4GlaubAADataSet,
public G4Type1GlauberParameterisation
public G4Type1GlauberParameterisation
{
public:
G4ParamType1GlaubAADataSet ();
G4ParamType1GlaubAADataSet (const G4int AP1, const G4int AT1);
G4ParamType1GlaubAADataSet (G4FullGlaubAADataSet *fullGlauberDataSet);
~G4ParamType1GlaubAADataSet ();
G4ParamType1GlaubAADataSet (const G4ParamType1GlaubAADataSet &right);
public:
const G4ParamType1GlaubAADataSet& operator=(G4ParamType1GlaubAADataSet &right);
G4ParamType1GlaubAADataSet ();
G4ParamType1GlaubAADataSet (const G4int AP1, const G4int AT1);
G4ParamType1GlaubAADataSet (G4FullGlaubAADataSet *fullGlauberDataSet);
~G4ParamType1GlaubAADataSet ();
G4ParamType1GlaubAADataSet (const G4ParamType1GlaubAADataSet &right);
G4bool CreateGlauberData (const G4int AP1, const G4int AT1);
G4bool CreateGlauberData (G4FullGlaubAADataSet *fullGlauberDataSet);
// G4FullGlaubAADataSet *GetFullGlauberDataSet ();
const
G4ParamType1GlaubAADataSet& operator=(G4ParamType1GlaubAADataSet &right);
G4double GetValueN (const G4double f, const G4double ppn = 0.0) const;
G4double GetValueM (const G4double f, const G4double ppn = 0.0) const;
G4bool CreateGlauberData (const G4int AP1, const G4int AT1);
G4bool CreateGlauberData (G4FullGlaubAADataSet *fullGlauberDataSet);
inline G4double GetValueN (const G4double f, const G4double ppn = 0.0) const;
inline G4double GetValueM (const G4double f, const G4double ppn = 0.0) const;
// G4double *GetArrayPointerN (const G4double ppn);
// G4double *GetArrayPointerM (const G4double ppn);
std::ofstream & WriteDataToFile (std::ofstream &File) const;
std::ifstream & ReadDataFromFile (std::ifstream &File);
public:
// G4double bsiten[200];
// G4double bsitem[200];
std::ofstream & WriteDataToFile (std::ofstream &File) const;
std::ifstream & ReadDataFromFile (std::ifstream &File);
};
////////////////////////////////////////////////////////////////////////////////
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// GetValueN
//
inline G4double G4ParamType1GlaubAADataSet::GetValueN (const G4double f,
const G4double ppn) const
{return GetParameterisedValueN (f, ppn);}
////////////////////////////////////////////////////////////////////////////////
inline
G4double G4ParamType1GlaubAADataSet::GetValueN (const G4double f,
const G4double ppn) const
{return GetParameterisedValueN (f, ppn);}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// GetValueM
//
inline G4double G4ParamType1GlaubAADataSet::GetValueM (const G4double f,
const G4double ppn) const
{return GetParameterisedValueM (f, ppn);}
inline
G4double G4ParamType1GlaubAADataSet::GetValueM (const G4double f,
const G4double ppn) const
{return GetParameterisedValueM (f, ppn);}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4Type1GlauberParameterisation.hh
/// \brief Definition of the G4Type1GlauberParameterisation class
//
// $Id: G4Type1GlauberParameterisation.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4Type1GlauberParameterisation_h
#define G4Type1GlauberParameterisation_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -62,38 +65,40 @@
#include "globals.hh"
#include <fstream>
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4Type1GlauberParameterisation
{
public:
G4Type1GlauberParameterisation ();
~G4Type1GlauberParameterisation ();
public:
G4double GetFitParameters (const G4double *bsite, G4double *p) const;
G4Type1GlauberParameterisation ();
~G4Type1GlauberParameterisation ();
G4double GetParameterisedValueN (const G4double f, const G4double ppn) const;
G4double GetParameterisedValueM (const G4double f, const G4double ppn) const;
G4double GetFitParameters (const G4double *bsite, G4double *p) const;
public:
G4int maxArrayp;
G4int maxigp;
G4double GetParameterisedValueN (const G4double f, const G4double ppn) const;
G4double GetParameterisedValueM (const G4double f, const G4double ppn) const;
G4double paramn[24][10];
G4double paramm[24][10];
G4int maxArrayp;
G4int maxigp;
G4double paramn[24][10];
G4double paramm[24][10];
G4double mun1[24];
G4double mun2[24];
G4double cn[24];
G4double mum1[24];
G4double mum2[24];
G4double cm[24];
G4double mun1[24];
G4double mun2[24];
G4double cn[24];
G4double mum1[24];
G4double mum2[24];
G4double cm[24];
G4double limit1;
G4double limit2;
G4double limit3;
G4double limit4;
G4double limit1;
G4double limit2;
G4double limit3;
G4double limit4;
};
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -32,6 +32,9 @@
/// \file hadronic/Hadr02/include/G4UrQMD1_3Interface.hh
/// \brief Definition of the G4UrQMD1_3Interface class
//
// $Id: G4UrQMD1_3Interface.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4UrQMD1_3Interface_hh
#define G4UrQMD1_3Interface_hh
@@ -57,7 +60,10 @@
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
///////////////////////////////////////////////////////////////////////////////
#include "globals.hh"
#include "G4SystemOfUnits.hh"
// coms
//
const G4int nmax = 500;
@@ -149,6 +155,7 @@ const G4int jmax=7;
typedef G4int ftnlogical;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// Standard common block for UrQMD
// Common options for coms.f
@@ -162,14 +169,16 @@ G4double u_elab,u_imp;
G4int u_sptar,u_spproj;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13sys
{
G4int npart, nbar, nmes, ctag,nsteps,uid_cnt,
ranseed,event,ap,at,zp,zt,eos,dectag,
nhardres, nsoftres, ndecres, nelcoll, nblcoll;
{
G4int npart, nbar, nmes, ctag,nsteps,uid_cnt,
ranseed,event,ap,at,zp,zt,eos,dectag,
nhardres, nsoftres, ndecres, nelcoll, nblcoll;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13rsys
{
@@ -178,140 +187,147 @@ G4double time,acttime,bdist,bimp,bmin,ebeam,ecm;
struct ccurqmd13comseed
{
ftnlogical
firstseed;
ftnlogical firstseed;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13logic
{
ftnlogical
lsct[nmax], logSky, logYuk, logCb, logPau;
ftnlogical lsct[nmax], logSky, logYuk, logCb, logPau;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13mdprop
{
G4double
r0_t[nmax], rx_t[nmax], ry_t[nmax], rz_t[nmax];
G4double r0_t[nmax], rx_t[nmax], ry_t[nmax], rz_t[nmax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13cuts
{
G4double
cutmax, cutPau, cutCb, cutYuk, cutSky, cutdww;
G4double cutmax, cutPau, cutCb, cutYuk, cutSky, cutdww;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13spdata
{
G4double
spx[nspl], spPauy[nspl], outPau[nspl],
spCby[nspl], outCb[nspl],
spYuky[nspl], outYuk[nspl],
spSkyy[nspl], outSky[nspl],
spdwwy[nspl], outdww[nspl];
G4double spx[nspl], spPauy[nspl], outPau[nspl],
spCby[nspl], outCb[nspl],
spYuky[nspl], outYuk[nspl],
spSkyy[nspl], outSky[nspl],
spdwwy[nspl], outdww[nspl];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13isys
{
G4int spin[nmax],ncoll[nmax],charge[nmax],ityp[nmax],
lstcoll[nmax],
iso3[nmax],origin[nmax],strid[nmax],uid[nmax];
lstcoll[nmax],
iso3[nmax],origin[nmax],strid[nmax],uid[nmax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13coor
{
G4double
r0[nmax], rx[nmax], ry[nmax], rz[nmax],
p0[nmax], px[nmax], py[nmax], pz[nmax],
fmass[nmax], rww[nmax],dectime[nmax];
G4double r0[nmax], rx[nmax], ry[nmax], rz[nmax],
p0[nmax], px[nmax], py[nmax], pz[nmax],
fmass[nmax], rww[nmax],dectime[nmax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13frag
{
G4double
tform[nmax], xtotfac[nmax];
G4double tform[nmax], xtotfac[nmax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13aios
{
G4double
airx[nmax], airy[nmax], airz[nmax],
aipx[nmax], aipy[nmax], aipz[nmax],
aorx [4][nmax], aory[4][nmax], aorz[4][nmax],
aopx[4][nmax], aopy[4][nmax], aopz[4][nmax];
G4double airx[nmax], airy[nmax], airz[nmax],
aipx[nmax], aipy[nmax], aipz[nmax],
aorx [4][nmax], aory[4][nmax], aorz[4][nmax],
aopx[4][nmax], aopy[4][nmax], aopz[4][nmax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13pots
{
G4double
Cb0, Yuk0, Pau0, Sky20, Sky30, gamSky,
gamYuk, drPau, dpPau, gw, sgw, delr, fdel,
dt,da, db,dtimestep;
G4double Cb0, Yuk0, Pau0, Sky20, Sky30, gamSky,
gamYuk, drPau, dpPau, gw, sgw, delr, fdel,
dt,da, db,dtimestep;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13scoor
{
G4double
r0s[smax], rxs[smax], rys[smax], rzs[smax],
p0s[smax], pxs[smax], pys[smax], pzs[smax],
sfmass[smax];
G4double r0s[smax], rxs[smax], rys[smax], rzs[smax],
p0s[smax], pxs[smax], pys[smax], pzs[smax],
sfmass[smax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13sisys
{
G4int
sspin[smax], scharge[smax], sityp[smax], siso3[smax],
suid[smax];
G4int sspin[smax], scharge[smax], sityp[smax], siso3[smax],
suid[smax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13ssys
{
G4int nspec;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13rtdelay
{
G4double
p0td[nmax][2],pxtd[nmax][2],pytd[nmax][2],pztd[nmax][2],
fmasstd[nmax][2];
G4double p0td[nmax][2],pxtd[nmax][2],pytd[nmax][2],pztd[nmax][2],
fmasstd[nmax][2];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13itdelay
{
G4int
ityptd[nmax][2],iso3td[nmax][2];
G4int ityptd[nmax][2],iso3td[nmax][2];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13svinfo
{
G4int
itypt[2],uidt[2],origint[2],iso3t[2];
G4int itypt[2],uidt[2],origint[2],iso3t[2];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13ffermi
{
G4double
ffermpx[nmax], ffermpy[nmax], ffermpz[nmax];
G4double ffermpx[nmax], ffermpy[nmax], ffermpz[nmax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13peq
{
G4double peq1, peq2;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// Definition for Collision Term
// Commons comres
@@ -323,49 +339,54 @@ struct ccurqmd13versioning
char versiontag[45];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13resonances
{
G4double massres[maxbar-minbar+1],widres[maxbar-minbar+1];
G4double massmes[maxmes-minmes+1];
G4double widmes[maxmes-minmes+1];
G4double mmesmn[maxmes-minmes+1];
G4double branres[maxdel-minnuc][maxbra+1];
G4double branmes[maxmes-minmes][maxbrm+1];
G4double massres[maxbar-minbar+1],widres[maxbar-minbar+1];
G4double massmes[maxmes-minmes+1];
G4double widmes[maxmes-minmes+1];
G4double mmesmn[maxmes-minmes+1];
G4double branres[maxdel-minnuc][maxbra+1];
G4double branmes[maxmes-minmes][maxbrm+1];
G4double branbs1[maxsig-minlam][maxbrs1+1];
G4double branbs2[maxcas-mincas][maxbrs2+1];
G4double branbs1[maxsig-minlam][maxbrs1+1];
G4double branbs2[maxcas-mincas][maxbrs2+1];
G4int bs1type[maxbrs1+1][4],bs2type[maxbrs2+1][4];
G4int lbs1[maxsig-minlam][maxbrs1+1];
G4int lbs2[maxcas-mincas][maxbrs2+1];
G4int lbm[maxmes-minmes][maxbrm+1];
G4int bs1type[maxbrs1+1][4],bs2type[maxbrs2+1][4];
G4int lbs1[maxsig-minlam][maxbrs1+1];
G4int lbs2[maxcas-mincas][maxbrs2+1];
G4int lbm[maxmes-minmes][maxbrm+1];
G4int jres[maxbar-minbar+1];
G4int jmes[maxmes-minmes+1];
G4int lbr[maxdel-minnuc][maxbra+1];
G4int brtype[maxbra+1][4];
G4int pares[maxbar-minbar+1],pames[maxmes-minmes+1];
G4int bmtype[maxbrm+1][4];
G4int isores[maxbar-minbar+1], isomes[maxmes-minmes+1];
G4int strres[maxbar-minbar+1],strmes[maxmes-minmes+1];
G4int mlt2it[maxmes-minmes];
G4int jres[maxbar-minbar+1];
G4int jmes[maxmes-minmes+1];
G4int lbr[maxdel-minnuc][maxbra+1];
G4int brtype[maxbra+1][4];
G4int pares[maxbar-minbar+1],pames[maxmes-minmes+1];
G4int bmtype[maxbrm+1][4];
G4int isores[maxbar-minbar+1], isomes[maxmes-minmes+1];
G4int strres[maxbar-minbar+1],strmes[maxmes-minmes+1];
G4int mlt2it[maxmes-minmes];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13sigtabi
{
G4int sigmaln[maxreac][2][maxpsig];
G4int sigmainf[20][nsigs];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13sigtabr
{
G4double sigmas[itblsz][nsigs],sigmascal[5][nsigs];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//comwid
struct ccurqmd13decaywidth
{
@@ -378,6 +399,7 @@ G4int wtabflg;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13brwignorm
{
@@ -385,6 +407,7 @@ G4double bwbarnorm[maxbar-minbar+1];
G4double bwmesnorm[maxmes-minmes+1];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13xsections
{
@@ -392,22 +415,24 @@ G4double tabxnd [widnsp];
G4double frrtaby[maxdel-1][2][2][widnsp];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13tabnames
{
char tabname[77];
};
//-----------------
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// options
//
struct ccurqmd13options
{
G4int CTOption[numcto];
G4double CTParam[numctp];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13optstrings
{
@@ -415,41 +440,39 @@ char ctodc[numcto][2];
char ctpdc[numctp][2];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13loptions
{
ftnlogical
fixedseed,bf13,bf14,bf15,bf16,bf17,bf18,bf19,
bf20;
ftnlogical fixedseed,bf13,bf14,bf15,bf16,bf17,bf18,bf19,
bf20;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13stables
{
G4int nstable;
G4int stabvec[maxstables];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
//colltab
//
struct ccurqmd13colltab
{
G4double
cttime[ncollmax+1],ctsqrts[ncollmax],
ctsigtot[ncollmax],tmin;
G4int
cti1[ncollmax],cti2[ncollmax];
G4int
nct,actcol;
ftnlogical
ctvalid[ncollmax];
G4int
ctsav[ncollmax];
G4int
nsav,apt;
G4double
ctcolfluc[ncollmax];
G4double cttime[ncollmax+1],ctsqrts[ncollmax],
ctsigtot[ncollmax],tmin;
G4int cti1[ncollmax],cti2[ncollmax];
G4int nct,actcol;
ftnlogical ctvalid[ncollmax];
G4int ctsav[ncollmax];
G4int nsav,apt;
G4double ctcolfluc[ncollmax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// inputs
//
@@ -460,49 +483,61 @@ G4int trspflg,spiso3[2],outsteps,bflag,srtflag,efuncflag;
G4int nsrt,firstev,npb;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13input2
{
G4double srtmin,srtmax,pbeam,betann,betatar,betapro;
G4double pbmin,pbmax;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13protarints
{
G4int pt_iso3[2][aamax],pt_ityp[2][aamax],pt_spin[2][aamax];
G4int pt_charge[2][aamax],pt_aa[2],pt_uid[2][aamax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13protarreals
{
G4double pt_r0[2][aamax],pt_rx[2][aamax],pt_ry[2][aamax],
pt_rz[2][aamax],pt_fmass[2][aamax],pt_dectime[2][aamax];
pt_rz[2][aamax],pt_fmass[2][aamax],pt_dectime[2][aamax];
G4double pt_p0[2][aamax],pt_px[2][aamax],pt_py[2][aamax],
pt_pz[2][aamax];
pt_pz[2][aamax];
G4double pt_rho[2][aamax];
G4double pt_pmax[2][aamax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// newpart
struct ccurqmd13inewpart
{
G4int itypnew[mprt],i3new[mprt],itot[mprt],inew[mprt],nexit;
G4int iline,strcount,pslot[oprt],nstring1, nstring2,
sidnew[mprt],itypold[oprt],iso3old[oprt];
sidnew[mprt],itypold[oprt],iso3old[oprt];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13rnewpart
{
G4double pnew[mprt][5],xnew[mprt][4],betax,betay,betaz,
pold[oprt][5],p0nn,pxnn,pynn,pznn,pnn, mstring[2],
pnnout,xtotfacold[oprt];
G4double pnew[mprt][5],xnew[mprt][4],betax,betay,betaz,
pold[oprt][5],p0nn,pxnn,pynn,pznn,pnn, mstring[2],
pnnout,xtotfacold[oprt];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13fnewpart
{
G4double leadfac[mprt];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// boxinc
//
@@ -515,6 +550,8 @@ G4int bptityp[bptmax],bptiso3[bptmax],bptpart[bptmax];
G4int edensflag,para,solid, mbflag,mtest;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13boxrc
{
G4double bptpmax[bptmax];
@@ -524,76 +561,88 @@ G4double lboxhalbe;
G4double lboxd;
G4double mbp0, mbpx, mbpy, mbpz;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// comnorm
struct ccurqmd13normsplin
{
G4double x_norm[n][4],y_norm[n][4];
G4double y2a[n][4],y2b[n][4], dx;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// comstr
struct ccurqmd13FRGSPA
{
G4double
pjspns, pmix1s[njspin][3], pmix2s[njspin][3]
, pbars, parqls, parrs;
G4double pjspns, pmix1s[njspin][3], pmix2s[njspin][3], pbars, parqls, parrs;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13FRGCPA
{
G4double
pjspnc, pmix1c[njspin][3], pmix2c[njspin][3], pbarc;
G4double pjspnc, pmix1c[njspin][3], pmix2c[njspin][3], pbarc;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13coparm
{
G4double parm[njspin];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13const
{
G4double pi;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//// freezeout
//
struct ccurqmd13frcoor
{
G4double frr0[nmax], frrx[nmax], frry[nmax], frrz[nmax],
frp0[nmax], frpx[nmax], frpy[nmax], frpz[nmax];
frp0[nmax], frpx[nmax], frpy[nmax], frpz[nmax];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// input
struct ccurqmd13values
{
G4double valint[1];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// cascinit
struct ccurqmd13ini
{
ftnlogical bcorr;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// iso
struct ccurqmd13factorials
{
G4double logfak[101];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
struct ccurqmd13cgks
{
G4double cgktab[jmax+1][2*jmax+1][2*jmax+1][jmax+1][jmax+1];
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// UrQMD
//
struct ccurqmd13energies
{
G4double ekinbar, ekinmes, esky2, esky3,
eyuk, ecb, epau;
G4double ekinbar, ekinmes, esky2, esky3, eyuk, ecb, epau;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// urqmd
extern "C"
{
@@ -679,5 +728,6 @@ extern struct ccurqmd13factorials factorials_;
extern struct ccurqmd13cgks cgks_;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -32,6 +32,9 @@
/// \file hadronic/Hadr02/include/G4UrQMD1_3Model.hh
/// \brief Definition of the G4UrQMD1_3Model class
//
// $Id: G4UrQMD1_3Model.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4UrQMD1_3Model_hh
#define G4UrQMD1_3Model_hh
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -55,6 +58,7 @@
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
///////////////////////////////////////////////////////////////////////////////
#include "G4Nucleon.hh"
#include "G4Nucleus.hh"
#include "G4VIntraNuclearTransportModel.hh"
@@ -65,84 +69,39 @@
#include "G4ReactionProduct.hh"
#include "G4IntraNucleiCascader.hh"
#include "G4Track.hh"
#include <fstream>
#include <string>
//--------------------------------
//AND->
//This should be included in the .cc to
//avoid multiple definition issues
//#include "G4UrQMD1_3Interface.hh"
//AND<-
////////////////////////////////////////////////////////////////////////////////
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4UrQMD1_3Model : public G4VIntraNuclearTransportModel {
public:
G4UrQMD1_3Model(const G4String& name = "UrQMD1_3");
G4UrQMD1_3Model(const G4String& name = "UrQMD1_3");
virtual ~G4UrQMD1_3Model ();
// G4double GetMinEnergy( const G4Material *aMaterial,
// const G4Element *anElement ) const;
// G4double GetMaxEnergy( const G4Material *aMaterial,
// const G4Element *anElement ) const;
virtual ~G4UrQMD1_3Model ();
G4ReactionProductVector* Propagate(G4KineticTrackVector*
theSecondaries, G4V3DNucleus* theTarget);
virtual G4HadFinalState *ApplyYourself
(const G4HadProjectile &, G4Nucleus &);
G4ReactionProductVector* Propagate(G4KineticTrackVector*
theSecondaries,
G4V3DNucleus* theTarget);
virtual G4HadFinalState* ApplyYourself(const G4HadProjectile&,
G4Nucleus&);
private:
private:
G4int operator==(G4UrQMD1_3Model& right) {
return (this == &right);
}
G4int operator==(G4UrQMD1_3Model& right);
G4int operator!=(G4UrQMD1_3Model& right);
void InitialiseDataTables();
G4int operator!=(G4UrQMD1_3Model& right) {
return (this != &right);
}
G4int verbose;
void InitialiseDataTables();
void WelcomeMessage () const;
G4int CurrentEvent;
private:
void WelcomeMessage () const;
G4HadFinalState theResult;
G4int verbose;
G4HadFinalState theResult;
};
// inline G4double G4UrQMD1_3Model::GetMinEnergy( const G4Material *,
// const G4Element * ) const
// {return theMinEnergy;}
////////////////////////////////////////////////////////////////////////////////
//
// inline G4double G4UrQMD1_3Model::GetMaxEnergy( const G4Material *,
// const G4Element * ) const
// {return theMaxEnergy;}
////////////////////////////////////////////////////////////////////////////////
//
#endif
@@ -36,6 +36,9 @@
/// \file hadronic/Hadr02/include/G4VGlauberDataSet.hh
/// \brief Definition of the G4VGlauberDataSet class
//
// $Id: G4VGlauberDataSet.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef G4VGlauberDataSet_h
#define G4VGlauberDataSet_h
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -60,73 +63,76 @@
///////////////////////////////////////////////////////////////////////////////
//
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include <fstream>
////////////////////////////////////////////////////////////////////////////////
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4VGlauberDataSet
{
public:
G4VGlauberDataSet ();
virtual ~G4VGlauberDataSet ();
G4VGlauberDataSet (const G4VGlauberDataSet &right);
public:
const G4VGlauberDataSet& operator=(G4VGlauberDataSet &right);
G4VGlauberDataSet ();
virtual ~G4VGlauberDataSet ();
G4VGlauberDataSet (const G4VGlauberDataSet &right);
const G4VGlauberDataSet& operator=(G4VGlauberDataSet &right);
G4int GetVerboseLevel () const;
void SetVerboseLevel (const G4int i);
inline G4int GetVerboseLevel () const;
inline void SetVerboseLevel (const G4int i);
G4int GetAP () const;
G4int GetZP () const;
G4int GetAT () const;
G4int GetZT () const;
G4int GetAP () const;
G4int GetZP () const;
G4int GetAT () const;
G4int GetZT () const;
G4int GetGlauberDataSetType () const;
G4int GetGlauberDataSetType () const;
void SetArrayPointer (const G4int i);
G4double *GetArrayPointerN (const G4double ppn = 0.0);
G4double *GetArrayPointerM (const G4double ppn = 0.0);
void SetArrayPointer (const G4int i);
inline G4double *GetArrayPointerN (const G4double ppn = 0.0);
inline G4double *GetArrayPointerM (const G4double ppn = 0.0);
// G4double GetValueN (const G4double f);
// G4double GetValueM (const G4double f);
virtual std::ofstream & WriteDataToFile (std::ofstream &File) const;
virtual std::ifstream & ReadDataFromFile (std::ifstream &File);
public:
virtual std::ofstream & WriteDataToFile (std::ofstream &File) const;
virtual std::ifstream & ReadDataFromFile (std::ifstream &File);
public:
public:
G4double rproj;
G4double rtarg;
G4double bstep;
G4double bmax;
G4int AP;
G4int ZP;
G4int AT;
G4int ZT;
G4double rproj;
G4double rtarg;
G4double bstep;
G4double bmax;
G4int AP;
G4int ZP;
G4int AT;
G4int ZT;
G4double * baseArrayPtrn;
G4double * baseArrayPtrm;
G4double * arrayPtrn;
G4double * arrayPtrm;
G4double * baseArrayPtrn;
G4double * baseArrayPtrm;
G4double * arrayPtrn;
G4double * arrayPtrm;
G4int glauberDataSetType;
G4int glauberDataSetType;
G4int maxArray;
G4int maxig;
G4int maxArray;
G4int maxig;
G4int verboseLevel;
G4int verboseLevel;
friend std::ofstream & operator << (std::ofstream &File, const G4VGlauberDataSet &q);
friend std::ifstream & operator >> (std::ifstream &File, G4VGlauberDataSet &q);
friend std::ofstream & operator << (std::ofstream &File,
const G4VGlauberDataSet &q);
friend std::ifstream & operator >> (std::ifstream &File,
G4VGlauberDataSet &q);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline void G4VGlauberDataSet::SetVerboseLevel (const G4int verboseLevel1)
{verboseLevel = verboseLevel1;}
{verboseLevel = verboseLevel1;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline G4int G4VGlauberDataSet::GetVerboseLevel () const
{return verboseLevel;}
////////////////////////////////////////////////////////////////////////////////
//
{return verboseLevel;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,86 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file hadronic/Hadr02/include/HIJING.hh
/// \brief Definition of the HIJING class
//
// $Id: HIJING.hh,v 1.1 2007-10-19 15:35:08 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
//---------------------------------------------------------------------------
//
// ClassName:
//
// Author: 2012 Andrea Dotti
// created from FTFP_BERT
//
// Modified:
//
//----------------------------------------------------------------------------
//
#ifndef THIJING_h
#define THIJING_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class THIJING: public T
{
public:
THIJING(G4int ver = 1);
virtual ~THIJING();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#ifdef G4_USE_HIJING
#include "HIJING.icc"
#else
template<class T>
THIJING<T>::THIJING(G4int) : T()
{
G4ExceptionDescription de;
de<<"Support for HIJING not enabled"<<G4endl;
G4Exception(__FILE__,"HIJING-01",FatalException,de,
"Code should be compiled with G4_USE_HIJING environment variable set.");
}
template<class T>
THIJING<T>::~THIJING() { }
template<class T>
void THIJING<T>::SetCuts() { }
#endif
typedef THIJING<G4VModularPhysicsList> HIJING;
#endif //THIJING_h
@@ -0,0 +1,116 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file hadronic/Hadr02/include/HIJING.icc
/// \brief Implementation of the HIJING class inline functions
//
// $Id: HIJING.icc,v 1.7 2010-08-16 07:14:44 kurasige Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
//---------------------------------------------------------------------------
//
// ClassName:
//
// Author: 2012 Andrea Dotti
//
// created from FTFP_BERT
//
// Modified:
//
//----------------------------------------------------------------------------
//
#include "globals.hh"
//#include "G4ProcessManager.hh"
//#include "G4ProcessVector.hh"
//#include "G4ParticleTypes.hh"
//#include "G4ParticleTable.hh"
//#include "G4Material.hh"
//#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4DecayPhysics.hh"
#include "G4EmStandardPhysics.hh"
#include "G4EmExtraPhysics.hh"
#include "IonHIJINGPhysics.hh"
#include "G4HadronElasticPhysics.hh"
#include "G4NeutronTrackingCut.hh"
#include "G4StoppingPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsHIJING.hh"
template<class T> THIJING<T>::THIJING(G4int ver): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "<<< Geant4 Physics List simulation engine: HIJING 0.1"<<G4endl;
G4cout <<G4endl;
this->defaultCutValue = 0.7*mm;
this->SetVerboseLevel(ver);
// EM Physics
this->RegisterPhysics( new G4EmStandardPhysics(ver));
// Synchroton Radiation & GN Physics
this->RegisterPhysics( new G4EmExtraPhysics(ver) );
// Decays
this->RegisterPhysics( new G4DecayPhysics(ver) );
// Hadron Elastic scattering
this->RegisterPhysics( new G4HadronElasticPhysics(ver) );
// Hadron Physics
this->RegisterPhysics( new HadronPhysicsHIJING(ver));
// Stopping Physics
this->RegisterPhysics( new G4StoppingPhysics(ver) );
// Ion Physics
this->RegisterPhysics( new IonHIJINGPhysics(ver));
// Neutron tracking cut
this->RegisterPhysics( new G4NeutronTrackingCut(ver));
}
template<class T> THIJING<T>::~THIJING()
{
}
template<class T> void THIJING<T>::SetCuts()
{
if (this->verboseLevel >1){
G4cout << "HIJING::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
this->SetCutsWithDefault();
}
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file hadronic/Hadr02/include/HIJINGNeutronBuilder.hh
/// \brief Definition of the HIJINGNeutronBuilder class
//
// $Id: HIJINGNeutronBuilder.hh,v 1.2 2009-03-31 18:38:33 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
//---------------------------------------------------------------------------
//
// ClassName: HIJINGNeutronBuilder
//
// Author: 2012 Andrea Dotti
//
// Modified:
//
//----------------------------------------------------------------------------
//
#ifndef HIJINGNeutronBuilder_h
#define HIJINGNeutronBuilder_h 1
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4HIJING_Model.hh"
#include "G4NeutronRadCapture.hh"
#include "G4LFission.hh"
class HIJINGNeutronBuilder : public G4VNeutronBuilder
{
public:
HIJINGNeutronBuilder();
virtual ~HIJINGNeutronBuilder();
virtual void Build(G4HadronElasticProcess * aP);
virtual void Build(G4HadronFissionProcess * aP);
virtual void Build(G4HadronCaptureProcess * aP);
virtual void Build(G4NeutronInelasticProcess * aP);
void SetMinEnergy(G4double aM) {fMin = aM;}
void SetMaxEnergy(G4double aM) {fMax = aM;}
private:
G4double fMin;
G4double fMax;
G4HIJING_Model * fModel;
G4NeutronRadCapture* captureModel;
G4LFission* fissionModel;
};
#endif
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file hadronic/Hadr02/include/HIJINGProtonBuilder.hh
/// \brief Definition of the HIJINGProtonBuilder class
//
// $Id: HIJINGProtonBuilder.hh,v 1.2 2009-03-31 18:38:33 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
//---------------------------------------------------------------------------
//
#ifndef HIJINGProtonBuilder_h
#define HIJINGProtonBuilder_h
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4VProtonBuilder.hh"
#include "G4HIJING_Model.hh"
class HIJINGProtonBuilder : public G4VProtonBuilder
{
public:
HIJINGProtonBuilder();
virtual ~HIJINGProtonBuilder();
virtual void Build(G4HadronElasticProcess * aP);
virtual void Build(G4ProtonInelasticProcess * aP);
inline void SetMinEnergy(G4double aM) {fMin = aM;}
inline void SetMaxEnergy(G4double aM) {fMax = aM;}
private:
G4HIJING_Model * fModel;
G4double fMin;
G4double fMax;
};
#endif
@@ -0,0 +1,98 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file hadronic/Hadr02/include/HadronPhysicsHIJING.hh
/// \brief Definition of the HadronPhysicsHIJING class
//
// $Id: HadronPhysicsHIJING.hh,v 1.5 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
//---------------------------------------------------------------------------
//
// ClassName:
//
// Author: 2012 Andrea Dotti
// created from HadronPhysicsFTFP_BERT
// Modified:
// 07.02.2012 A. Dotti: First version
//----------------------------------------------------------------------------
//
#ifndef HadronPhysicsHIJING_h
#define HadronPhysicsHIJING_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4PiKBuilder.hh"
#include "HIJINGPiKBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "HIJINGProtonBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "HIJINGNeutronBuilder.hh"
#include "G4HyperonFTFPBuilder.hh"
#include "G4AntiBarionBuilder.hh"
#include "HIJINGAntiBarionBuilder.hh"
class HadronPhysicsHIJING : public G4VPhysicsConstructor
{
public:
HadronPhysicsHIJING(G4int verbose =1);
virtual ~HadronPhysicsHIJING();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
void CreateModels();
G4HadronicProcess* FindInelasticProcess(const G4ParticleDefinition*);
G4NeutronBuilder * fNeutrons;
HIJINGNeutronBuilder * fHIJINGNeutron;
G4PiKBuilder * fPiK;
HIJINGPiKBuilder * fHIJINGPiK;
G4ProtonBuilder * fPro;
HIJINGProtonBuilder * fHIJINGPro;
G4HyperonFTFPBuilder * fHyperon;
G4AntiBarionBuilder * fAntiBaryon;
HIJINGAntiBarionBuilder * fHIJINGAntiBaryon;
G4VCrossSectionDataSet * fCHIPSInelastic;
};
#endif
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/HadronPhysicsUrQMD.hh
/// \brief Definition of the HadronPhysicsUrQMD class
//
// $Id$
// $Id: HadronPhysicsUrQMD.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -44,8 +44,6 @@
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4PiKBuilder.hh"
#include "UrQMDPiKBuilder.hh"
@@ -54,7 +52,6 @@
#include "G4NeutronBuilder.hh"
#include "UrQMDNeutronBuilder.hh"
#include "G4LEPNeutronBuilder.hh"
#include "G4HyperonFTFPBuilder.hh"
@@ -63,36 +60,33 @@
class HadronPhysicsUrQMD : public G4VPhysicsConstructor
{
public:
public:
HadronPhysicsUrQMD(G4int verbose =1);
virtual ~HadronPhysicsUrQMD();
HadronPhysicsUrQMD(G4int verbose =1);
virtual ~HadronPhysicsUrQMD();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
private:
void CreateModels();
G4HadronicProcess* FindInelasticProcess(const G4ParticleDefinition*);
void CreateModels();
G4HadronicProcess* FindInelasticProcess(const G4ParticleDefinition*);
G4NeutronBuilder * fNeutrons;
UrQMDNeutronBuilder * fUrQMDNeutron;
G4LEPNeutronBuilder * fLEPNeutron; //needed for capture&fission
G4NeutronBuilder * fNeutrons;
UrQMDNeutronBuilder * fUrQMDNeutron;
G4PiKBuilder * fPiK;
UrQMDPiKBuilder * fUrQMDPiK;
G4PiKBuilder * fPiK;
UrQMDPiKBuilder * fUrQMDPiK;
G4ProtonBuilder * fPro;
UrQMDProtonBuilder * fUrQMDPro;
G4ProtonBuilder * fPro;
UrQMDProtonBuilder * fUrQMDPro;
G4HyperonFTFPBuilder * fHyperon;
G4HyperonFTFPBuilder * fHyperon;
G4AntiBarionBuilder * fAntiBaryon;
UrQMDAntiBarionBuilder * fUrQMDAntiBaryon;
G4AntiBarionBuilder * fAntiBaryon;
UrQMDAntiBarionBuilder * fUrQMDAntiBaryon;
G4VCrossSectionDataSet * fCHIPSInelastic;
};
#endif
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/Histo.hh
/// \brief Definition of the Histo class
//
// $Id$
// $Id: Histo.hh 77519 2013-11-25 10:54:57Z gcosmo $
#ifndef Histo_h
#define Histo_h 1
@@ -69,7 +69,7 @@ public:
// In this method 1-D histogramms are predefined
void Add1D(const G4String&, const G4String&, G4int nb, G4double x1,
G4double x2, G4double u=1.);
G4double x2, G4double u=1.);
// It change bins and boundaries
void SetHisto1D(G4int, G4int, G4double, G4double, G4double);
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/HistoManager.hh
/// \brief Definition of the HistoManager class
//
// $Id$
// $Id: HistoManager.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -26,8 +26,7 @@
/// \file hadronic/Hadr02/include/HistoMessenger.hh
/// \brief Definition of the HistoMessenger class
//
// $Id$
//
// $Id: HistoMessenger.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -26,8 +26,8 @@
/// \file hadronic/Hadr02/include/IonDPMJETPhysics.hh
/// \brief Definition of the IonDPMJETPhysics class
//
// $Id$
// GRAS tag $Name: gras-02-05-02 $
// $Id: IonDPMJETPhysics.hh 77665 2013-11-27 10:15:08Z gcosmo $
// GRAS tag Name: gras-02-05-02
//
//---------------------------------------------------------------------------
//
@@ -71,7 +71,7 @@ public:
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
void ConstructProcess();
virtual void ConstructProcess();
private:
@@ -83,9 +83,11 @@ private:
G4VCrossSectionDataSet* fShen;
G4VCrossSectionDataSet* fIonH;
G4BinaryLightIonReaction* fIonBC;
#ifdef G4_USE_DPMJET
G4DPMJET2_5Model* fDPM;
G4DPMJET2_5CrossSection* fDpmXS;
G4bool fUseDPMJETXS;
#endif
};
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file hadronic/Hadr02/include/IonHIJINGPhysics.hh
/// \brief Definition of the IonHIJINGPhysics class
//
// $Id: G4IonHIJINGPhysics.hh,v 1.0 2010/08/26 10:51:25 antoni Exp $
// GRAS tag $Name: $
//
//---------------------------------------------------------------------------
//
// Header: G4IonHIJINGPhysics
//
// Author: 2012 Andrea Dotti
//
//
//
// Modified:
//
// ------------------------------------------------------------
//
#ifndef G4IonHIJINGPhysics_h
#define G4IonHIJINGPhysics_h 1
#include "G4VHadronPhysics.hh"
#include "globals.hh"
class G4HadronicInteraction;
class G4VCrossSectionDataSet;
class G4HIJING_Model;
class G4FTFBuilder;
class G4BinaryLightIonReaction;
class G4HadronicInteraction;
class IonHIJINGPhysics : public G4VHadronPhysics
{
public:
IonHIJINGPhysics(G4int ver = 0);
virtual ~IonHIJINGPhysics();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
void ConstructProcess();
private:
void AddProcess(const G4String&, G4ParticleDefinition*, G4bool isIon);
G4VCrossSectionDataSet* theNuclNuclData;
G4HIJING_Model * fModel;
G4BinaryLightIonReaction* theIonBC;
G4FTFBuilder* theBuilder;
G4HadronicInteraction* theFTFP;
G4int fVerbose;
G4bool fWasActivated;
};
#endif
@@ -27,7 +27,7 @@
/// \brief Definition of the IonUrQMDPhysics class
//
// $Id: G4IonUrQMDPhysics.hh,v 1.0 2010/08/26 10:51:25 antoni Exp $
// GRAS tag $Name: $
// GRAS tag Name:
//
//---------------------------------------------------------------------------
//
@@ -62,7 +62,7 @@ public:
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
void ConstructProcess();
virtual void ConstructProcess();
private:
@@ -26,8 +26,7 @@
/// \file hadronic/Hadr02/include/PrimaryGeneratorAction.hh
/// \brief Definition of the PrimaryGeneratorAction class
//
// $Id$
//
// $Id: PrimaryGeneratorAction.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
/////////////////////////////////////////////////////////////////////////
//
@@ -56,10 +55,12 @@ class HistoManager;
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction();
virtual ~PrimaryGeneratorAction();
void GeneratePrimaries(G4Event*);
virtual void GeneratePrimaries(G4Event*);
private:
@@ -26,8 +26,9 @@
/// \file hadronic/Hadr02/include/RunAction.hh
/// \brief Definition of the RunAction class
//
// $Id$
// $Id: RunAction.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
#ifndef RunAction_h
#define RunAction_h 1
@@ -52,12 +53,12 @@ class RunAction : public G4UserRunAction
public: // Without description
RunAction();
~RunAction();
virtual ~RunAction();
void BeginOfRunAction(const G4Run*);
virtual void BeginOfRunAction(const G4Run*);
// In this method histogramms are booked
void EndOfRunAction(const G4Run*);
virtual void EndOfRunAction(const G4Run*);
// In this method bookHisto method is called in which histogramms are filled
};
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/StackingAction.hh
/// \brief Definition of the StackingAction class
//
// $Id$
// $Id: StackingAction.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
/////////////////////////////////////////////////////////////////////////
//
@@ -61,7 +61,7 @@ public:
inline void SetKillAll(G4bool value) {fKillAll = value;};
inline void SetKillEM (G4bool value) {fKillEM = value;};
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track*);
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track*);
private:
@@ -26,8 +26,7 @@
/// \file hadronic/Hadr02/include/StackingMessenger.hh
/// \brief Definition of the StackingMessenger class
//
// $Id$
//
// $Id: StackingMessenger.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
/////////////////////////////////////////////////////////////////////////
//
@@ -60,7 +59,7 @@ public:
StackingMessenger(StackingAction*);
virtual ~StackingMessenger();
void SetNewValue(G4UIcommand*, G4String);
virtual void SetNewValue(G4UIcommand*, G4String);
private:
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/TargetSD.hh
/// \brief Definition of the TargetSD class
//
// $Id$
// $Id: TargetSD.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
/////////////////////////////////////////////////////////////////////////
//
@@ -60,11 +60,11 @@ public: // Without description
TargetSD(const G4String&);
virtual ~TargetSD();
void Initialize(G4HCofThisEvent*);
G4bool ProcessHits(G4Step*,G4TouchableHistory*);
void EndOfEvent(G4HCofThisEvent*);
void clear();
void PrintAll();
virtual void Initialize(G4HCofThisEvent*);
virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*);
virtual void EndOfEvent(G4HCofThisEvent*);
virtual void clear();
virtual void PrintAll();
private:
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/UrQMD.hh
/// \brief Definition of the UrQMD class
//
// $Id$
// $Id: UrQMD.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -68,7 +68,8 @@ TUrQMD<T>::TUrQMD(G4int) : T()
{
G4ExceptionDescription de;
de<<"Support for UrQMD not enabled"<<G4endl;
G4Exception(__FILE__,"UrQMD-01",FatalException,de,"Code should be compiled with G4_USE_URQMD environment variable set.");
G4Exception(__FILE__,"UrQMD-01",FatalException,de,
"Code should be compiled with G4_USE_URQMD environment variable set.");
}
template<class T>
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/UrQMD.icc
/// \brief Implementation of the UrQMD class inline functions
//
// $Id$
// $Id: UrQMD.icc 77519 2013-11-25 10:54:57Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -42,13 +42,6 @@
//
#include "globals.hh"
//#include "G4ProcessManager.hh"
//#include "G4ProcessVector.hh"
//#include "G4ParticleTypes.hh"
//#include "G4ParticleTable.hh"
//#include "G4Material.hh"
//#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
@@ -63,14 +56,14 @@
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsUrQMD.hh"
#include "G4SystemOfUnits.hh"
template<class T> TUrQMD<T>::TUrQMD(G4int ver): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "<<< Geant4 Physics List simulation engine: UrQMD 0.1"<<G4endl;
G4cout <<G4endl;
this->defaultCutValue = 0.7*mm;
this->defaultCutValue = 0.7*CLHEP::mm;
this->SetVerboseLevel(ver);
// EM Physics
@@ -27,7 +27,6 @@
/// \brief Definition of the UrQMDAntiBarionBuilder class
//
// $Id: $
// GEANT4 tag $Name: $
//
//---------------------------------------------------------------------------
//
@@ -67,8 +66,8 @@ public:
virtual void Build(G4AntiHe3InelasticProcess * aP);
virtual void Build(G4AntiAlphaInelasticProcess * aP);
void SetMinEnergy(G4double val) {fMin = val;}
void SetMaxEnergy(G4double val) {fMax = val;}
inline void SetMinEnergy(G4double val) {fMin = val;}
inline void SetMaxEnergy(G4double val) {fMax = val;}
private:
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/UrQMDNeutronBuilder.hh
/// \brief Definition of the UrQMDNeutronBuilder class
//
// $Id$
// $Id: UrQMDNeutronBuilder.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -42,6 +42,7 @@
#define UrQMDNeutronBuilder_h 1
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
@@ -50,6 +51,9 @@
#include "G4VNeutronBuilder.hh"
#include "G4UrQMD1_3Model.hh"
#include "G4NeutronRadCapture.hh"
#include "G4LFission.hh"
class UrQMDNeutronBuilder : public G4VNeutronBuilder
{
@@ -63,14 +67,17 @@ public:
virtual void Build(G4HadronCaptureProcess * aP);
virtual void Build(G4NeutronInelasticProcess * aP);
void SetMinEnergy(G4double aM) {fMin = aM;}
void SetMaxEnergy(G4double aM) {fMax = aM;}
inline void SetMinEnergy(G4double aM) {fMin = aM;}
inline void SetMaxEnergy(G4double aM) {fMax = aM;}
private:
G4UrQMD1_3Model * fModel;
G4double fMin;
G4double fMax;
G4UrQMD1_3Model* fModel;
G4NeutronRadCapture* captureModel;
G4LFission* fissionModel;
};
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/UrQMDPiKBuilder.hh
/// \brief Definition of the UrQMDPiKBuilder class
//
// $Id$
// $Id: UrQMDPiKBuilder.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -42,6 +42,7 @@
#define UrQMDPiKBuilder_h 1
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
@@ -66,8 +67,8 @@ public:
virtual void Build(G4KaonZeroLInelasticProcess * aP);
virtual void Build(G4KaonZeroSInelasticProcess * aP);
void SetMinEnergy(G4double aM) {fMin = aM;}
void SetMaxEnergy(G4double aM) {fMax = aM;}
inline void SetMinEnergy(G4double aM) {fMin = aM;}
inline void SetMaxEnergy(G4double aM) {fMax = aM;}
private:
@@ -26,7 +26,7 @@
/// \file hadronic/Hadr02/include/UrQMDProtonBuilder.hh
/// \brief Definition of the UrQMDProtonBuilder class
//
// $Id$
// $Id: UrQMDProtonBuilder.hh 77519 2013-11-25 10:54:57Z gcosmo $
//
//---------------------------------------------------------------------------
//