Import Geant4 1.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 15:28:20 +02:00
parent aaa409b6ee
commit ca1c8cb059
2995 changed files with 106830 additions and 299600 deletions
@@ -0,0 +1,81 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// The set of hits is defined
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6CalorHit_h
#define Em6CalorHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6CalorHit : public G4VHit
{
public: // Without description
Em6CalorHit();
~Em6CalorHit();
Em6CalorHit(const Em6CalorHit&);
const Em6CalorHit& operator=(const Em6CalorHit&);
int operator==(const Em6CalorHit&) const;
inline void* operator new(size_t);
inline void operator delete(void*);
void Print();
public:
void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;};
void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;};
G4double GetEdepAbs() { return EdepAbs; };
G4double GetTrakAbs() { return TrackLengthAbs; };
G4double GetEdepGap() { return EdepGap; };
G4double GetTrakGap() { return TrackLengthGap; };
private:
G4double EdepAbs, TrackLengthAbs;
G4double EdepGap, TrackLengthGap;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
typedef G4THitsCollection<Em6CalorHit> Em6CalorHitsCollection;
extern G4Allocator<Em6CalorHit> Em6CalorHitAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void* Em6CalorHit::operator new(size_t)
{
void* aHit;
aHit = (void*) Em6CalorHitAllocator.MallocSingle();
return aHit;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void Em6CalorHit::operator delete(void* aHit)
{
Em6CalorHitAllocator.FreeSingle((Em6CalorHit*) aHit);
}
#endif
@@ -0,0 +1,50 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// The sensitive detector is defined
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6CalorimeterSD_h
#define Em6CalorimeterSD_h 1
#include "G4VSensitiveDetector.hh"
#include "globals.hh"
class Em6DetectorConstruction;
class G4HCofThisEvent;
class G4Step;
#include "Em6CalorHit.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6CalorimeterSD : public G4VSensitiveDetector
{
public: // Without description
Em6CalorimeterSD(G4String, Em6DetectorConstruction* );
~Em6CalorimeterSD();
void Initialize(G4HCofThisEvent*);
G4bool ProcessHits(G4Step*,G4TouchableHistory*);
void EndOfEvent(G4HCofThisEvent*);
void clear();
void PrintAll();
private:
Em6CalorHitsCollection* CalCollection;
Em6DetectorConstruction* Detector;
G4int* HitID;
};
#endif
@@ -0,0 +1,138 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// -------------------------------------------------------------
// GEANT 4 class example
//
// For information related to this code contact:
// CERN, IT Division, ASD group
// History: based on object model of
// 2nd December 1995, G.Cosmo
// ---------- Em6DetectorConstruction -------
// by Vladimir Ivanchenko, 23 July 1999
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6DetectorConstruction_h
#define Em6DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
#include "G4UnitsTable.hh"
#include "G4ios.hh"
class G4Box;
class G4LogicalVolume;
class G4VPhysicalVolume;
class G4Material;
class G4UniformMagField;
class Em6DetectorMessenger;
class Em6CalorimeterSD;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6DetectorConstruction : public G4VUserDetectorConstruction
{
public:
Em6DetectorConstruction();
~Em6DetectorConstruction();
public:
void SetAbsorberMaterial (G4String);
void SetAbsorberThickness(G4double);
void SetAbsorberSizeYZ (G4double);
void SetAbsorberXpos(G4double);
void SetWorldMaterial(G4String);
void SetWorldSizeX (G4double);
void SetWorldSizeYZ (G4double);
void SetMagField(G4double);
G4VPhysicalVolume* Construct();
void UpdateGeometry();
public:
void PrintCalorParameters();
G4Material* GetAbsorberMaterial() {return AbsorberMaterial;};
G4double GetAbsorberThickness() {return AbsorberThickness;};
G4double GetAbsorberSizeYZ() {return AbsorberSizeYZ;};
G4double GetAbsorberXpos() {return XposAbs;};
G4double GetxstartAbs() {return xstartAbs;};
G4double GetxendAbs() {return xendAbs;};
G4Material* GetWorldMaterial() {return WorldMaterial;};
G4double GetWorldSizeX() {return WorldSizeX;};
G4double GetWorldSizeYZ() {return WorldSizeYZ;};
const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;};
const G4VPhysicalVolume* GetAbsorber() {return physiAbsorber;};
private:
G4Material* AbsorberMaterial;
G4double AbsorberThickness;
G4double AbsorberSizeYZ;
G4int NumberOfAbsorbers;
G4double XposAbs;
G4double xstartAbs, xendAbs;
G4Material* WorldMaterial;
G4double WorldSizeX;
G4double WorldSizeYZ;
G4bool defaultWorld;
G4Box* solidWorld; //pointer to the solid World
G4LogicalVolume* logicWorld; //pointer to the logical World
G4VPhysicalVolume* physiWorld; //pointer to the physical World
G4Box* solidAbsorber; //pointer to the solid Absorber
G4LogicalVolume* logicAbsorber; //pointer to the logical Absorber
G4VPhysicalVolume* physiAbsorber; //pointer to the physical Absorber
G4UniformMagField* magField; //pointer to the magnetic field
Em6DetectorMessenger* detectorMessenger; //pointer to the Messenger
Em6CalorimeterSD* calorimeterSD; //pointer to the sensitive detector
private:
void DefineMaterials();
void ComputeCalorParameters();
G4VPhysicalVolume* ConstructCalorimeter();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void Em6DetectorConstruction::ComputeCalorParameters()
{
// Compute derived parameters of the 1st absorber
xstartAbs = XposAbs-0.5*AbsorberThickness;
xendAbs = XposAbs+0.5*AbsorberThickness;
if (defaultWorld)
{
WorldSizeX = 2.0*AbsorberThickness*NumberOfAbsorbers;
WorldSizeYZ = 1.2*AbsorberSizeYZ;
}
}
#endif
@@ -0,0 +1,66 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// Detector mesenger is defined.
// Class Description - end
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6DetectorMessenger_h
#define Em6DetectorMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class Em6DetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithoutParameter;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6DetectorMessenger: public G4UImessenger
{
public: // Without description
Em6DetectorMessenger(Em6DetectorConstruction* );
~Em6DetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
Em6DetectorConstruction* Em6Detector;
G4UIdirectory* Em6detDir;
G4UIcmdWithAString* AbsMaterCmd;
G4UIcmdWithADoubleAndUnit* AbsThickCmd;
G4UIcmdWithADoubleAndUnit* AbsSizYZCmd;
G4UIcmdWithADoubleAndUnit* AbsXposCmd;
G4UIcmdWithAString* WorldMaterCmd;
G4UIcmdWithADoubleAndUnit* WorldXCmd;
G4UIcmdWithADoubleAndUnit* WorldYZCmd;
G4UIcmdWithADoubleAndUnit* MagFieldCmd;
G4UIcmdWithoutParameter* UpdateCmd;
};
#endif
@@ -0,0 +1,65 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// Event action definition.
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6EventAction_h
#define Em6EventAction_h 1
#include "G4UserEventAction.hh"
#include "globals.hh"
class Em6RunAction;
class Em6EventActionMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6EventAction : public G4UserEventAction
{
public: // Without description
Em6EventAction(Em6RunAction* Em6RA);
~Em6EventAction();
void BeginOfEventAction(const G4Event*);
void EndOfEventAction(const G4Event*);
G4int GetEventno();
void setEventVerbose(G4int level);
void CountStepsCharged() ;
void CountStepsNeutral() ;
void AddCharged() ;
void AddNeutral() ;
void AddE();
void AddP();
void SetTr();
void SetRef();
void SetDrawFlag(G4String val) {drawFlag = val;};
private:
G4int calorimeterCollID;
Em6EventActionMessenger* eventMessenger;
Em6RunAction* runaction;
G4int verboselevel;
G4double nstep,nstepCharged,nstepNeutral;
G4double Nch,Nne;
G4double NE,NP;
G4double Transmitted,Reflected ;
G4String drawFlag;
};
#endif
@@ -0,0 +1,44 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// Event action messenger.
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6EventActionMessenger_h
#define Em6EventActionMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class Em6EventAction;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
class G4UIcmdWithADoubleAndUnit;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6EventActionMessenger: public G4UImessenger
{
public: // Without description
Em6EventActionMessenger(Em6EventAction*);
~Em6EventActionMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
Em6EventAction* eventAction;
G4UIcmdWithAnInteger* setVerboseCmd;
G4UIcmdWithAString* DrawCmd;
};
#endif
@@ -0,0 +1,78 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// The list of particles and processes are defined in this class.
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6PhysicsList_h
#define Em6PhysicsList_h 1
#include "G4VUserPhysicsList.hh"
#include "globals.hh"
class Em6DetectorConstruction;
class Em6PhysicsListMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6PhysicsList: public G4VUserPhysicsList
{
public: // Without description
Em6PhysicsList( Em6DetectorConstruction*);
~Em6PhysicsList();
protected:
// Construct particle and physics
void ConstructParticle();
void ConstructProcess();
void SetCuts();
protected:
// these methods Construct particles
void ConstructBosons();
void ConstructLeptons();
void ConstructMesons();
void ConstructBarions();
void ConstructIons();
protected:
// these methods Construct physics processes and register them
void ConstructGeneral();
void ConstructEM();
public: // Without description
void SetGammaCut(G4double);
void SetElectronCut(G4double);
void SetProtonCut(G4double);
void SetCutsByEnergy(G4double);
void GetRange(G4double);
void SetMaxStep(G4double);
private:
G4double cutForGamma;
G4double cutForElectron;
G4double cutForProton;
G4double MaxChargedStep;
Em6DetectorConstruction* pDet;
Em6PhysicsListMessenger* physicsListMessenger;
};
#endif
@@ -0,0 +1,49 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// The messenger for physics list class.
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6PhysicsListMessenger_h
#define Em6PhysicsListMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class Em6PhysicsList;
class G4UIcmdWithADoubleAndUnit;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6PhysicsListMessenger: public G4UImessenger
{
public: // Without description
Em6PhysicsListMessenger(Em6PhysicsList*);
~Em6PhysicsListMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
Em6PhysicsList* Em6List;
G4UIcmdWithADoubleAndUnit* cutGCmd;
G4UIcmdWithADoubleAndUnit* cutECmd;
G4UIcmdWithADoubleAndUnit* cutPCmd;
G4UIcmdWithADoubleAndUnit* rCmd;
G4UIcmdWithADoubleAndUnit* eCmd;
G4UIcmdWithADoubleAndUnit* setMaxStepCmd;
};
#endif
@@ -0,0 +1,47 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// Inicialisation of particle gun.
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6PrimaryGeneratorAction_h
#define Em6PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
class G4ParticleGun;
class G4Event;
class Em6DetectorConstruction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public: // Without description
Em6PrimaryGeneratorAction(Em6DetectorConstruction*);
~Em6PrimaryGeneratorAction();
void GeneratePrimaries(G4Event*);
static G4String GetPrimaryName() ;
private:
G4ParticleGun* particleGun;
Em6DetectorConstruction* Em6Detector;
static G4String thePrimaryParticleName;
};
#endif
@@ -0,0 +1,194 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// The user has a possibility to define and to fill his histograms in this class.
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6RunAction_h
#define Em6RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
#include "G4Proton.hh"
#include "G4Alpha.hh"
#include "G4IonC12.hh"
#include "G4IonAr40.hh"
#include "G4IonFe56.hh"
#include "G4Electron.hh"
#include <iostream.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6RunMessenger;
class HepTupleManager;
class HepHistogram;
class G4Run;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6RunAction : public G4UserRunAction
{
public: // Without description
Em6RunAction();
~Em6RunAction();
public: // With description
void BeginOfRunAction(const G4Run*);
// In this method histogramms are booked
void EndOfRunAction(const G4Run*);
// In this method bookHisto method is called in which histogramms are filled
public: // Without description
void CountEvent();
void CountParticles(G4double,G4double);
void AddEP(G4double,G4double);
void AddEdeps(G4double Eabs);
void AddTrackLength(G4double tlabs);
void AddnStepsCharged(G4double ns);
void AddnStepsNeutral(G4double ns);
void AddTrRef(G4double tr,G4double ref);
void FillEn(G4double En);
void FillTh(G4double Th);
void FillThBack(G4double Th);
void FillR(G4double R);
void FillTt(G4double Tt);
void FillTb(G4double Tt);
void FillTsec(G4double T);
void FillGammaSpectrum(G4double E);
void FillNbOfSteps(G4double nstep);
void Fillvertexz(G4double z);
void SethistName(G4String name) ;
void SetnbinStep(G4int nbin);
void SetSteplow(G4double Slow);
void SetStephigh(G4double Shigh);
void SetnbinEn(G4int nbin);
void SetEnlow(G4double Elow);
void SetEnhigh(G4double Enhigh);
void SetnbinTt(G4int nbin);
void SetTtlow(G4double Ttlow);
void SetTthigh(G4double Tthigh);
void SetnbinTb(G4int nbin);
void SetTblow(G4double Tblow);
void SetTbhigh(G4double Tbhigh);
void SetnbinTsec(G4int nbin);
void SetTseclow(G4double Tlow);
void SetTsechigh(G4double Thigh);
void SetnbinTh(G4int nbin);
void SetThlow(G4double Thlow);
void SetThhigh(G4double Thhigh);
void SetnbinThBack(G4int nbin);
void SetThlowBack(G4double Thlow);
void SetThhighBack(G4double Thhigh);
void SetnbinR(G4int nbin);
void SetRlow(G4double Rlow);
void SetRhigh(G4double Rhigh);
void SetnbinGamma(G4int nbin);
void SetElowGamma(G4double Elow);
void SetEhighGamma(G4double Ehigh);
void Setnbinzvertex(G4int nbin);
void Setzlow(G4double z);
void Setzhigh(G4double z);
private:
void bookHisto();
void FillLowEnergyTest();
private:
G4String histName ;
HepTupleManager* hbookManager;
HepHistogram *histo1, *histo2, *histo3, *histo4, *histo5 ;
HepHistogram *histo6, *histo7, *histo8, *histo9, *histo10;
HepHistogram *histo11, *histo12, *histo13, *histo14, *histo15;
HepHistogram *histo21, *histo22, *histo23, *histo24, *histo25;
HepHistogram *histo31, *histo32, *histo33, *histo34, *histo35;
HepHistogram *histo41, *histo42, *histo43, *histo44, *histo45;
HepHistogram *histo51, *histo52, *histo53, *histo54, *histo55;
HepHistogram *histo61, *histo62, *histo63, *histo64, *histo65;
HepHistogram *histo71, *histo72, *histo73, *histo74, *histo75, *histo76;
HepHistogram *histo81, *histo82, *histo83, *histo84, *histo85, *histo86;
G4double LowestEnergy,HighestEnergy;
G4int TotBin;
G4ParticleDefinition* theProton ;
const G4Electron* theElectron ;
G4double EnergySumAbs,EnergySquareSumAbs;
G4double tlSumAbs,tlsquareSumAbs;
G4double nStepSumCharged,nStepSum2Charged ;
G4double nStepSumNeutral,nStepSum2Neutral ;
G4double TotNbofEvents;
G4double SumCharged,Sum2Charged,SumNeutral,Sum2Neutral;
G4double Selectron,Spositron;
G4double Transmitted,Reflected ;
G4double entryStep,underStep,overStep,distStep[200];
G4double Steplow,Stephigh,dStep;
G4int nbinStep;
G4double entryEn,underEn,overEn,distEn[200];
G4double Enlow,Enhigh,dEn;
G4int nbinEn;
G4double entryTt,underTt,overTt,distTt[200];
G4double Ttlow,Tthigh,dTt;
G4int nbinTt;
G4double Ttmean,Tt2mean;
G4double entryTb,underTb,overTb,distTb[200];
G4double Tblow,Tbhigh,dTb;
G4int nbinTb;
G4double Tbmean,Tb2mean;
G4double entryTsec,underTsec,overTsec,distTsec[200];
G4double Tseclow,Tsechigh,dTsec;
G4int nbinTsec;
G4double entryTh,underTh,overTh,distTh[200];
G4double Thlow,Thhigh,dTh;
G4int nbinTh;
G4double entryThback,underThback,overThback,distThback[200];
G4double Thlowback,Thhighback,dThback;
G4int nbinThback;
G4double entryR ,underR ,overR ,distR[200];
G4double Rlow,Rhigh,dR;
G4int nbinR;
G4double Rmean,R2mean;
G4double entryGamma,underGamma,overGamma,distGamma[200];
G4double ElowGamma,EhighGamma,dEGamma;
G4int nbinGamma ;
G4double entryvertexz,undervertexz,oververtexz,distvertexz[200];
G4double zlow,zhigh,dz;
G4int nbinvertexz;
Em6RunMessenger* runMessenger ;
};
#endif
@@ -0,0 +1,95 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// The run messenger is defined
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6RunMessenger_h
#define Em6RunMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
#include "G4ios.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6RunAction;
class G4UIdirectory;
class G4UIcmdWithAnInteger;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithADouble;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6RunMessenger: public G4UImessenger
{
public: // Without description
Em6RunMessenger(Em6RunAction* );
~Em6RunMessenger();
void SetNewValue(G4UIcommand* ,G4String );
private:
Em6RunAction* runAction;
G4UIdirectory* plotDir;
G4UIcmdWithAString* sethistNameCmd;
G4UIcmdWithAnInteger* setnbinStepCmd;
G4UIcmdWithADouble* setSteplowCmd;
G4UIcmdWithADouble* setStephighCmd;
G4UIcmdWithAnInteger* setnbinEnCmd;
G4UIcmdWithADoubleAndUnit* setEnlowCmd;
G4UIcmdWithADoubleAndUnit* setEnhighCmd;
G4UIcmdWithAnInteger* setnbinGammaCmd;
G4UIcmdWithADoubleAndUnit* setElowGammaCmd;
G4UIcmdWithADoubleAndUnit* setEhighGammaCmd;
G4UIcmdWithAnInteger* setnbinTtCmd;
G4UIcmdWithADoubleAndUnit* setTtlowCmd;
G4UIcmdWithADoubleAndUnit* setTthighCmd;
G4UIcmdWithAnInteger* setnbinTbCmd;
G4UIcmdWithADoubleAndUnit* setTblowCmd;
G4UIcmdWithADoubleAndUnit* setTbhighCmd;
G4UIcmdWithAnInteger* setnbinTsecCmd;
G4UIcmdWithADoubleAndUnit* setTseclowCmd;
G4UIcmdWithADoubleAndUnit* setTsechighCmd;
G4UIcmdWithAnInteger* setnbinRCmd;
G4UIcmdWithADoubleAndUnit* setRlowCmd;
G4UIcmdWithADoubleAndUnit* setRhighCmd;
G4UIcmdWithAnInteger* setnbinThCmd;
G4UIcmdWithADoubleAndUnit* setThlowCmd;
G4UIcmdWithADoubleAndUnit* setThhighCmd;
G4UIcmdWithAnInteger* setnbinThbackCmd;
G4UIcmdWithADoubleAndUnit* setThlowbackCmd;
G4UIcmdWithADoubleAndUnit* setThhighbackCmd;
G4UIcmdWithAnInteger* setnbinzvertexCmd;
G4UIcmdWithADoubleAndUnit* setzlowCmd;
G4UIcmdWithADoubleAndUnit* setzhighCmd;
};
#endif
@@ -0,0 +1,120 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// Step cut is defined
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6StepCut_h
#define Em6StepCut_h 1
#include "G4ios.hh"
#include "globals.hh"
#include "G4VDiscreteProcess.hh"
#include "G4Step.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6StepCut : public G4VDiscreteProcess
{
public: // Without description
Em6StepCut(const G4String& processName ="UserStepCut" );
Em6StepCut(Em6StepCut &);
~Em6StepCut();
G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition
);
G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
void SetMaxStep(G4double);
protected:
// it is not needed here !
G4double GetMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition
);
private:
// hide assignment operator as private
Em6StepCut& operator=(const Em6StepCut &right);
private:
G4double MaxChargedStep;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
// inlined function members implementation
#include "G4Step.hh"
#include "G4Track.hh"
#include "G4UserLimits.hh"
#include "G4VParticleChange.hh"
#include "G4EnergyLossTables.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double Em6StepCut::PostStepGetPhysicalInteractionLength(
const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition
)
{
// condition is set to "Not Forced"
*condition = NotForced;
G4double ProposedStep = DBL_MAX;
if((MaxChargedStep > 0.) &&
(aTrack.GetVolume() != NULL) &&
(aTrack.GetVolume()->GetName() == "Absorber") &&
(aTrack.GetDynamicParticle()->GetDefinition()->GetPDGCharge() != 0.))
ProposedStep = MaxChargedStep;
return ProposedStep;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4VParticleChange* Em6StepCut::PostStepDoIt(
const G4Track& aTrack,
const G4Step&
)
{
// do nothing
aParticleChange.Initialize(aTrack);
return &aParticleChange;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double Em6StepCut::GetMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition
)
{
return 0.;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -0,0 +1,53 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// Actions on each step are defined
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6SteppingAction_h
#define Em6SteppingAction_h 1
#include "G4UserSteppingAction.hh"
#include "G4Event.hh"
#include "G4EventManager.hh"
#include "G4ios.hh"
#include "globals.hh"
class Em6DetectorConstruction;
class Em6RunAction;
class Em6EventAction;
class Em6SteppingMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6SteppingAction : public G4UserSteppingAction
{
public: // Without description
Em6SteppingAction(Em6DetectorConstruction*, Em6EventAction*,
Em6RunAction* );
~Em6SteppingAction();
void UserSteppingAction(const G4Step*);
private:
Em6DetectorConstruction* detector;
Em6EventAction* eventaction;
Em6RunAction* runaction;
Em6SteppingMessenger* steppingMessenger;
G4int IDnow,IDold;
G4int evnoold ;
};
#endif
@@ -0,0 +1,48 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// Class Description:
// The stepping messenger is defined
// Class Description - end
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6SteppingMessenger_h
#define Em6SteppingMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
#include "G4ios.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6SteppingAction;
class G4UIdirectory;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6SteppingMessenger: public G4UImessenger
{
public: // Without description
Em6SteppingMessenger(Em6SteppingAction* );
~Em6SteppingMessenger();
void SetNewValue(G4UIcommand* ,G4String );
private:
Em6SteppingAction* steppingAction;
G4UIdirectory* steppingDir;
};
#endif
@@ -0,0 +1,48 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
// Class Description:
// Example Visualization Manager implementing virtual function
// RegisterGraphicsSystems. Exploits C-pre-processor variables
// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if
// environment variables of the same name are set.
// So all you have to do is set environment variables and compile and
// instantiate this in your main().
// Alternatively, you can implement an empty function here and just
// register the systems you want in your main(), e.g.:
// G4VisManager* myVisManager = new MyVisManager;
// myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem);
// The run messenger is defined
// Class Description - end
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef Em6VisManager_h
#define Em6VisManager_h 1
#include "G4VisManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class Em6VisManager: public G4VisManager {
public: // Without description
Em6VisManager ();
private:
void RegisterGraphicsSystems ();
};
#endif
@@ -0,0 +1,81 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4IonAr40.hh,v 1.2.4.1 1999/12/07 20:47:15 gunter Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 4-th April 1996, G.Cosmo
// ****************************************************************
// Added particle definitions, H.Kurashige, 19 April 1996
// Revised, G.Cosmo, 6 June 1996
// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996
// ----------------------------------------------------------------
// Class Description:
// The new ion Ar40+ is defined as G4VIon.
// Each class inheriting from G4VIon
// corresponds to a particle type; one and only one
// instance for each class is guaranteed.
// Class Description - end
#ifndef G4IonAr40_h
#define G4IonAr40_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VIon.hh"
// ######################################################################
// ### IonAr40 ###
// ######################################################################
class G4IonAr40 : public G4VIon
{
private:
static G4IonAr40 theIonAr40;
static G4double theIonAr40LengthCut;
static G4double* theIonAr40KineticEnergyCuts;
public: // Without description
G4IonAr40(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable
);
virtual ~G4IonAr40();
static G4IonAr40* IonAr40Definition();
static G4IonAr40* IonAr40() {return &theIonAr40;}
static G4double GetCuts() {return theIonAr40LengthCut;}
static G4double* GetCutsInEnergy() {return theIonAr40KineticEnergyCuts;};
void SetCuts(G4double aCut);
};
inline void G4IonAr40::SetCuts(G4double aCut)
{
CalcEnergyCuts(aCut);
theIonAr40LengthCut = theCutInMaxInteractionLength;
theIonAr40KineticEnergyCuts = theKineticEnergyCuts;
}
#endif
@@ -0,0 +1,82 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4IonC12.hh,v 1.2.4.1 1999/12/07 20:47:15 gunter Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 4-th April 1996, G.Cosmo
// ****************************************************************
// Added particle definitions, H.Kurashige, 19 April 1996
// Revised, G.Cosmo, 6 June 1996
// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996
// ----------------------------------------------------------------
// Class Description:
// The new ion C12+ is defined as G4VIon.
// Each class inheriting from G4VIon
// corresponds to a particle type; one and only one
// instance for each class is guaranteed.
// Class Description - end
#ifndef G4IonC12_h
#define G4IonC12_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VIon.hh"
// ######################################################################
// ### IonC12 ###
// ######################################################################
class G4IonC12 : public G4VIon
{
private:
static G4IonC12 theIonC12;
static G4double theIonC12LengthCut;
static G4double* theIonC12KineticEnergyCuts;
public: // Without description
G4IonC12(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable
);
virtual ~G4IonC12();
static G4IonC12* IonC12Definition();
static G4IonC12* IonC12() {return &theIonC12;}
static G4double GetCuts() {return theIonC12LengthCut;}
static G4double* GetCutsInEnergy() {return theIonC12KineticEnergyCuts;};
void SetCuts(G4double aCut);
};
inline void G4IonC12::SetCuts(G4double aCut)
{
CalcEnergyCuts(aCut);
theIonC12LengthCut = theCutInMaxInteractionLength;
theIonC12KineticEnergyCuts = theKineticEnergyCuts;
}
#endif
@@ -0,0 +1,82 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4IonFe56.hh,v 1.2.4.1 1999/12/07 20:47:15 gunter Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 4-th April 1996, G.Cosmo
// ****************************************************************
// Added particle definitions, H.Kurashige, 19 April 1996
// Revised, G.Cosmo, 6 June 1996
// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996
// ----------------------------------------------------------------
// Class Description:
// The new ion Fe56+ is defined as G4VIon.
// Each class inheriting from G4VIon
// corresponds to a particle type; one and only one
// instance for each class is guaranteed.
// Class Description - end
#ifndef G4IonFe56_h
#define G4IonFe56_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VIon.hh"
// ######################################################################
// ### IonFe56 ###
// ######################################################################
class G4IonFe56 : public G4VIon
{
private:
static G4IonFe56 theIonFe56;
static G4double theIonFe56LengthCut;
static G4double* theIonFe56KineticEnergyCuts;
public: // Without description
G4IonFe56(
const G4String& aName, G4double mass,
G4double width, G4double charge,
G4int iSpin, G4int iParity,
G4int iConjugation, G4int iIsospin,
G4int iIsospin3, G4int gParity,
const G4String& pType, G4int lepton,
G4int baryon, G4int encoding,
G4bool stable, G4double lifetime,
G4DecayTable *decaytable
);
virtual ~G4IonFe56();
static G4IonFe56* IonFe56Definition();
static G4IonFe56* IonFe56() {return &theIonFe56;}
static G4double GetCuts() {return theIonFe56LengthCut;}
static G4double* GetCutsInEnergy() {return theIonFe56KineticEnergyCuts;};
void SetCuts(G4double aCut);
};
inline void G4IonFe56::SetCuts(G4double aCut)
{
CalcEnergyCuts(aCut);
theIonFe56LengthCut = theCutInMaxInteractionLength;
theIonFe56KineticEnergyCuts = theKineticEnergyCuts;
}
#endif