Import Geant4 11.0.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2021-06-25 16:12:29 +02:00
parent c968e26a39
commit 6399a014b6
4200 changed files with 207479 additions and 237366 deletions
+1 -4
View File
@@ -1,9 +1,6 @@
#----------------------------------------------------------------------------
# Setup the project
cmake_minimum_required(VERSION 3.8...3.18)
if(${CMAKE_VERSION} VERSION_LESS 3.12)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
endif()
cmake_minimum_required(VERSION 3.12...3.20)
project(microbeam)
#----------------------------------------------------------------------------
+20
View File
@@ -7,6 +7,26 @@
Package History file
--------------------
10 June 2021 - V. Ivanchenko - tag microbeam-V10-07-03
- an attempt to fix problems at nightly and some clean-up:
microbeam.cc - do not initialize run and number of threads, let
these be done in microbeam.mac
DetectorConstruction - use CLHEP::twopi; do not have fField pointer
as the class member, instead use G4AutoDelete registration
CellParameterisation - initilize all data members
24 May 2021 - B. Morgan (microbeam-V10-07-02)
- Bump required CMake version range to 3.12...3.20, matching core Geant4
15 Feb 2021 - S. Guatelli - tag microbeam-V10-07-01
- explicit constructors and "override" instead of "virtual" in derived classes.
Initialisation of G4double/G4int variables in the DetectorConstruction
09 Feb 2021 - S. Guatelli - tag microbeam-V10-07-00
- Initialisation of fDose3DDose and fMapVoxels in the
constructor of the RunAction class
15 Nov 2020 - S. Guatelli - tag microbeam-V10-06-01
- Migration to G4RunManagerFactory
@@ -42,7 +42,7 @@ class DetectorConstruction;
class ActionInitialization : public G4VUserActionInitialization
{
public:
ActionInitialization(DetectorConstruction*);
explicit ActionInitialization(DetectorConstruction*);
virtual ~ActionInitialization();
virtual void BuildForMaster() const;
@@ -44,73 +44,73 @@ class CellParameterisation : public G4VPVParameterisation
{
public:
CellParameterisation
explicit CellParameterisation
(G4Material* nucleus1, G4Material* cytoplasm1,
G4Material* nucleus2, G4Material* cytoplasm2,
G4Material* nucleus3, G4Material* cytoplasm3
);
virtual ~CellParameterisation();
~CellParameterisation() override;
void ComputeTransformation (const G4int copyNo,G4VPhysicalVolume* physVol) const;
void ComputeTransformation (const G4int copyNo,G4VPhysicalVolume* physVol) const override;
void ComputeDimensions(G4Box&,
const G4int,
const G4VPhysicalVolume* ) const;
const G4VPhysicalVolume* ) const override;
void ComputeDimensions(G4Tubs &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override {}
void ComputeDimensions(G4Trd &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override {}
void ComputeDimensions(G4Trap &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override {}
void ComputeDimensions(G4Cons &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
void ComputeDimensions(G4Sphere &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
void ComputeDimensions(G4Ellipsoid &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
void ComputeDimensions(G4Orb &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
void ComputeDimensions(G4Torus &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
void ComputeDimensions(G4Para &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
void ComputeDimensions(G4Polycone &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
void ComputeDimensions(G4Polyhedra &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
void ComputeDimensions(G4Hype &,
const G4int,
const G4VPhysicalVolume *) const {}
const G4VPhysicalVolume *) const override{}
G4int GetNoBoxes() const {return fPhantomTotalPixels;}
G4Material* ComputeMaterial(const G4int copyNo,
G4VPhysicalVolume* physVol,
const G4VTouchable*);
const G4VTouchable*) override;
// NEW
@@ -136,7 +136,8 @@ class CellParameterisation : public G4VPVParameterisation
}
private:
static CellParameterisation* gInstance;
G4Material * fNucleusMaterial1;
G4Material * fCytoplasmMaterial1;
G4Material * fNucleusMaterial2;
@@ -152,24 +153,20 @@ class CellParameterisation : public G4VPVParameterisation
G4VisAttributes * fCytoplasmAttributes3;
G4ThreeVector * fMapCell; // VOXEL COORDINATES
G4double * fMaterial; // MATERIAL
G4double * fMass; // DENSITY REGION
G4int * fTissueType; // DENSITY REGION
G4int fPhantomTotalPixels;
G4int fNucleusTotalPixels;
G4int fCytoplasmTotalPixels;
G4double fDimCellBoxX;
G4double fDimCellBoxY;
G4double fDimCellBoxZ;
G4double fNucleusMass;
G4double fCytoplasmMass;
static CellParameterisation* gInstance;
G4int * fTissueType; // DENSITY REGION
G4int fPhantomTotalPixels;
G4int fNucleusTotalPixels;
G4int fCytoplasmTotalPixels;
};
#endif
@@ -35,6 +35,8 @@
#ifndef DetectorConstruction_h
#define DetectorConstruction_h 1
#include "CellParameterisation.hh"
#include "EMField.hh"
#include "G4VUserDetectorConstruction.hh"
#include "G4Box.hh"
#include "G4Cons.hh"
@@ -42,27 +44,24 @@
#include "G4PVPlacement.hh"
#include "G4UserLimits.hh"
#include "G4PVParameterised.hh"
#include "CellParameterisation.hh"
#include "EMField.hh"
#include "G4EqMagElectricField.hh"
#include "G4PropagatorInField.hh"
#include "G4TransportationManager.hh"
#include "G4ChordFinder.hh"
#include "G4ClassicalRK4.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
DetectorConstruction();
virtual ~DetectorConstruction();
explicit DetectorConstruction();
~DetectorConstruction() override;
virtual G4VPhysicalVolume* Construct();
G4VPhysicalVolume* Construct() override;
virtual void ConstructSDandField();
void DefineMaterials();
void ConstructSDandField() override;
void SetMassNucleus(G4double mN) {fMassNucleus = mN;}
G4double GetMassNucleus() const {return fMassNucleus;}
@@ -88,30 +87,14 @@ public:
const CellParameterisation * GetCellParameterisation() const
{return fMyCellParameterisation;};
G4VPhysicalVolume* ConstructLine();
private:
G4double fMassNucleus;
G4double fMassCytoplasm;
G4double fDensityPhantom;
G4double fDensityNucleus;
G4double fDensityCytoplasm;
G4int fNbOfPixelsInPhantom;
G4double fWorldSizeXY;
G4double fWorldSizeZ;
G4double fCollObjSizeXY;
G4double fCollObjSizeZ;
G4double fCiblePositionX;
G4double fCiblePositionY;
G4double fCiblePositionZ;
G4double fLineAngle;
// Materials
CellParameterisation * fMyCellParameterisation;
// Materials
G4Material* fDefaultMaterial;
G4Material* fCollimatorMaterial;
G4Material* fBoiteMaterial;
@@ -127,7 +110,7 @@ private:
G4Material* fCytoplasmMaterial2;
G4Material* fNucleusMaterial3;
G4Material* fCytoplasmMaterial3;
// Volumes
G4VPhysicalVolume* fPhysiWorld;
@@ -208,15 +191,25 @@ private:
G4LogicalVolume* fLogicPhantom;
G4Box* fSolidPhantom;
CellParameterisation * fMyCellParameterisation;
// EM FIELD
static G4ThreadLocal EMField * fField;
void DefineMaterials();
G4VPhysicalVolume* ConstructLine();
G4double fMassNucleus;
G4double fMassCytoplasm;
G4double fDensityPhantom;
G4double fDensityNucleus;
G4double fDensityCytoplasm;
G4double fWorldSizeXY;
G4double fWorldSizeZ;
G4double fCollObjSizeXY;
G4double fCollObjSizeZ;
G4double fCiblePositionX;
G4double fCiblePositionY;
G4double fCiblePositionZ;
G4double fLineAngle;
G4int fNbOfPixelsInPhantom;
};
#endif
@@ -46,11 +46,10 @@ class EMField
{
public:
EMField();
explicit EMField();
void GetFieldValue( const double Point[4], double *Bfield ) const;
G4bool DoesFieldChangeEnergy() const {return true;}
};
#endif
@@ -40,23 +40,18 @@
class RunAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class EventAction : public G4UserEventAction
{
public:
EventAction(RunAction*);
virtual ~EventAction();
explicit EventAction(RunAction*);
~EventAction() override;
virtual void BeginOfEventAction(const G4Event*);
virtual void EndOfEventAction(const G4Event*);
void BeginOfEventAction(const G4Event*) override;
void EndOfEventAction(const G4Event*) override;
private:
private:
RunAction* fRun;
};
#endif
@@ -37,22 +37,20 @@
#include "G4VModularPhysicsList.hh"
class PhysicsListMessenger;
class G4VPhysicsConstructor;
class G4StepLimiter;
class PhysicsListMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsList: public G4VModularPhysicsList
{
public:
PhysicsList();
virtual ~PhysicsList();
explicit PhysicsList();
~PhysicsList() override;
virtual void ConstructParticle();
void ConstructParticle()override;
virtual void ConstructProcess();
void ConstructProcess()override;
void AddPhysicsList(const G4String& name);
@@ -60,7 +58,6 @@ public:
G4StepLimiter* GetStepMaxProcess() {return fStepMaxProcess;};
private:
G4String fEmName;
G4VPhysicsConstructor* fEmPhysicsList;
G4VPhysicsConstructor* fDecPhysicsList;
@@ -69,6 +66,5 @@ private:
PhysicsListMessenger* fMessenger;
};
#endif
@@ -27,9 +27,6 @@
/// \brief Definition of the PhysicsListMessenger class
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsListMessenger_h
#define PhysicsListMessenger_h 1
@@ -41,16 +38,14 @@ class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithADoubleAndUnit;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsListMessenger: public G4UImessenger
{
public:
PhysicsListMessenger(PhysicsList* );
explicit PhysicsListMessenger(PhysicsList* );
~PhysicsListMessenger();
virtual void SetNewValue(G4UIcommand*, G4String);
void SetNewValue(G4UIcommand*, G4String) override;
inline G4double GetMaxChargedStep() const { return fMaxChargedStep; }
@@ -63,8 +58,5 @@ private:
G4UIcmdWithADoubleAndUnit* fStepMaxCmd;
G4double fMaxChargedStep;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -40,20 +40,17 @@
class G4Event;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction();
virtual ~PrimaryGeneratorAction();
explicit PrimaryGeneratorAction();
~PrimaryGeneratorAction() override;
virtual void GeneratePrimaries(G4Event*);
void GeneratePrimaries(G4Event*) override;
private:
G4ParticleGun* fParticleGun;
};
#endif
@@ -31,28 +31,25 @@
//
// If you use this example, please cite the following publication:
// Rad. Prot. Dos. 133 (2009) 2-11
//
#ifndef RunAction_h
#define RunAction_h 1
#include "DetectorConstruction.hh"
#include "G4UserRunAction.hh"
//#include "G4ThreeVector.hh"
#include "DetectorConstruction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class G4Run;
class RunAction : public G4UserRunAction
{
public:
RunAction(const DetectorConstruction*);
virtual ~RunAction();
explicit RunAction(const DetectorConstruction*);
~RunAction() override;
virtual void BeginOfRunAction(const G4Run*);
virtual void EndOfRunAction(const G4Run*);
void BeginOfRunAction(const G4Run*) override;
void EndOfRunAction(const G4Run*) override;
void SetRndmFreq(G4int val) {fSaveRndm = val;}
G4int GetRndmFreq() const {return fSaveRndm;}
@@ -86,19 +83,17 @@ private:
const DetectorConstruction* fDetector;
G4int fSaveRndm;
G4int fNumEvent;
G4int fNbOfPixels;
G4int fNbOfHitsGas;
G4ThreeVector * fMapVoxels;
G4double fDoseN;
G4double fDoseC;
G4double fMassCytoplasm;
G4double fMassNucleus;
G4double * fDose3DDose;
G4ThreeVector * fMapVoxels;
G4int fSaveRndm;
G4int fNumEvent;
G4int fNbOfPixels;
G4int fNbOfHitsGas;
};
#endif
+17 -17
View File
@@ -23,10 +23,15 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// This example is provided by the Geant4-DNA collaboration
// Any report or published results obtained using the Geant4-DNA software
// shall cite the following Geant4-DNA collaboration publication:
// Med. Phys. 37 (2010) 4692-4708
// The Geant4-DNA web site is available at http://geant4-dna.org
//
// If you use this example, please cite the following publication:
// Rad. Prot. Dos. 133 (2009) 2-11
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef StepMax_h
#define StepMax_h 1
@@ -37,28 +42,26 @@
class PhysicsListMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class StepMax : public G4VEmProcess
{
public:
StepMax(PhysicsListMessenger* mess);
virtual ~StepMax();
explicit StepMax(PhysicsListMessenger* mess);
~StepMax() override;
virtual G4bool IsApplicable(const G4ParticleDefinition&);
G4bool IsApplicable(const G4ParticleDefinition&) override;
virtual void PreparePhysicsTable(const G4ParticleDefinition&);
void PreparePhysicsTable(const G4ParticleDefinition&)override;
virtual void BuildPhysicsTable(const G4ParticleDefinition&);
void BuildPhysicsTable(const G4ParticleDefinition&)override;
virtual void InitialiseProcess(const G4ParticleDefinition*);
void InitialiseProcess(const G4ParticleDefinition*)override;
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
G4double previousStep,
G4ForceCondition* cond);
G4ForceCondition* cond)override;
virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&) override;
private:
@@ -67,8 +70,5 @@ private:
G4double fMaxChargedStep;
G4bool isInitialised;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -40,23 +40,19 @@
#include "RunAction.hh"
#include "DetectorConstruction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class SteppingAction : public G4UserSteppingAction
{
public:
SteppingAction(RunAction* ,const DetectorConstruction*);
virtual ~SteppingAction();
explicit SteppingAction(RunAction* ,const DetectorConstruction*);
~SteppingAction() override;
virtual void UserSteppingAction(const G4Step*);
void UserSteppingAction(const G4Step*)override;
private:
RunAction* fRun;
const DetectorConstruction* fDetector;
const CellParameterisation * fMyCellParameterisation;
};
#endif
+3 -8
View File
@@ -54,8 +54,6 @@ int main(int argc,char** argv) {
// Construct the default run manager
auto* runManager = G4RunManagerFactory::CreateRunManager();
G4int nThreads = 4;
runManager->SetNumberOfThreads(nThreads);
// Set mandatory user initialization classes
@@ -68,14 +66,9 @@ int main(int argc,char** argv) {
runManager->SetUserInitialization(new ActionInitialization(detector));
// Initialize G4 kernel
runManager->Initialize();
// Visualization
G4VisManager* visManager = new G4VisExecutive;
visManager->Initialize();
G4VisManager* visManager = nullptr;
// Get the pointer to the User Interface manager
G4UImanager* UImanager = G4UImanager::GetUIpointer();
@@ -90,6 +83,8 @@ int main(int argc,char** argv) {
}
else {
// interactive mode
visManager = new G4VisExecutive;
visManager->Initialize();
UImanager->ApplyCommand("/control/execute vis.mac");
ui->SessionStart();
delete ui;
+5 -3
View File
@@ -1,6 +1,8 @@
/control/verbose 0
/run/numberOfThreads 4
/run/verbose 0
/tracking/verbose 0
/run/initialize
/tracking/verbose 0
/run/verbose 0
/run/beamOn 10
+135 -187
View File
@@ -4,8 +4,14 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
!!! WARNING - FPE detection is activated !!!
############################################
################################
!!! G4Backtrace is activated !!!
################################
**************************************************************
Geant4 version Name: geant4-10-07-patch-02 (11-June-2021)
Geant4 version Name: geant4-10-07-ref-06 (25-June-2021)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -313,6 +319,8 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
*** /run/numberOfThreads command is issued in sequential mode.
Command is ignored.
==========> The phantom contains 53480 voxels
==========> Nucleus mass (kg)=4.94494e-13
==========> Cytoplasm mass (kg)=8.75855e-13
@@ -320,59 +328,6 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
==========> Voxel size Y (um)=0.35906
==========> Voxel size Z (um)=0.16281
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
Registering graphics systems...
You have successfully registered the following graphics systems.
Registered graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
RayTracer (RayTracer)
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
OpenGLImmediateQt (OGLIQt, OGLI)
OpenGLStoredQt (OGLSQt, OGL, OGLS)
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
RayTracerX (RayTracerX)
Registering model factories...
You have successfully registered the following model factories.
Registered model factories:
generic
drawByAttribute
drawByCharge
drawByOriginVolume
drawByParticleID
drawByEncounteredVolume
Registered models:
None
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
encounteredVolumeFilter
Registered filters:
None
You have successfully registered the following user vis actions.
Run Duration User Vis Actions: none
End of Event User Vis Actions: none
End of Run User Vis Actions: none
Some /vis commands (optionally) take a string to specify colour.
"/vis/list" to see available colours.
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
DefaultRegionForTheWorld 1 0 0
@@ -381,57 +336,57 @@ Some /vis commands (optionally) take a string to specify colour.
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 174 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila Fluo
LivermorePhElectric : Emin= 0 meV Emax= 100 TeV SauterGavrila Fluo
compt: for gamma SubType=13 BuildTable=1
Lambda table from 100 eV to 1 MeV, 20 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 160 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreCompton : Emin= 0 eV Emax= 1 GeV Fluo
LivermoreCompton : Emin= 0 meV Emax= 1 GeV Fluo
KleinNishina : Emin= 1 GeV Emax= 100 TeV Fluo
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
Livermore5DConversion : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Livermore5DConversion : Emin= 0 meV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 100 keV, 20 bins/decade, spline: 0
LambdaPrime table from 100 keV to 100 TeV in 180 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
LivermoreRayleigh : Emin= 0 meV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
GoudsmitSaunderson : Emin= 0 meV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
eIoni: for e- SubType=2
eIoni: for e- XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
LowEnergyIoni : Emin= 0 eV Emax= 100 keV deltaVI
LowEnergyIoni : Emin= 0 meV Emax= 100 keV deltaVI
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e- SubType=3
eBrem: for e- XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremSB : Emin= 0 meV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e- SubType=4
ePairProd: for e- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
ePairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
CoulombScat: for e- XStype:3 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
@@ -440,38 +395,38 @@ UserMaxStep: SubType= 401 Step limit(mm)= 1
msc: for e+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
GoudsmitSaunderson : Emin= 0 meV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
eIoni: for e+ SubType=2
eIoni: for e+ XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV deltaVI
MollerBhabha : Emin= 0 meV Emax= 100 TeV deltaVI
eBrem: for e+ SubType=3
eBrem: for e+ XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremSB : Emin= 0 meV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e+ SubType=4
ePairProd: for e+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
ePairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
annihil: for e+, integral:1 SubType=5 BuildTable=0
annihil: for e+ XStype:2 SubType=5 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 100 TeV
eplus2gg : Emin= 0 meV Emax= 100 TeV
CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
CoulombScat: for e+ XStype:3 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
@@ -479,301 +434,299 @@ CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
msc: for proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for proton SubType=2
hIoni: for proton XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV deltaVI
Bragg : Emin= 0 meV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for proton SubType=3
hBrems: for proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for proton SubType=4
hPairProd: for proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for proton, integral:1 SubType=1 BuildTable=1
CoulombScat: for proton XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
nuclearStopping: for proton SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
msc: for GenericIon SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
UrbanMsc : Emin= 0 meV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
ionIoni: for GenericIon SubType=2
ionIoni: for GenericIon XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
ParamICRU73 : Emin= 0 eV Emax= 100 TeV deltaVI
ParamICRU73 : Emin= 0 meV Emax= 100 TeV deltaVI
nuclearStopping: for GenericIon SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
msc: for alpha SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
UrbanMsc : Emin= 0 meV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
ionIoni: for alpha SubType=2
ionIoni: for alpha XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax=7.9452 MeV deltaVI
BraggIon : Emin= 0 meV Emax=7.9452 MeV deltaVI
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV deltaVI
nuclearStopping: for alpha SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
msc: for anti_proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for anti_proton SubType=2
hIoni: for anti_proton XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV deltaVI
ICRU73QO : Emin= 0 meV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for anti_proton SubType=3
hBrems: for anti_proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for anti_proton SubType=4
hPairProd: for anti_proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for anti_proton, integral:1 SubType=1 BuildTable=1
CoulombScat: for anti_proton XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for kaon+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for kaon+ SubType=2
hIoni: for kaon+ XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=1.05231 MeV deltaVI
Bragg : Emin= 0 meV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon+ SubType=3
hBrems: for kaon+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon+ SubType=4
hPairProd: for kaon+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon+, integral:1 SubType=1 BuildTable=1
CoulombScat: for kaon+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for kaon- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for kaon- SubType=2
hIoni: for kaon- XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV deltaVI
ICRU73QO : Emin= 0 meV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon- SubType=3
hBrems: for kaon- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon- SubType=4
hPairProd: for kaon- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon-, integral:1 SubType=1 BuildTable=1
CoulombScat: for kaon- XStype:3 SubType=1 BuildTable=1
Used Lambda table of kaon+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for mu+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
muIoni: for mu+ SubType=2
muIoni: for mu+ XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV deltaVI
Bragg : Emin= 0 meV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu+ SubType=3
muBrems: for mu+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
MuBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
muPairProd: for mu+ SubType=4
muPairProd: for mu+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu+, integral:1 SubType=1 BuildTable=1
CoulombScat: for mu+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for mu- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
muIoni: for mu- SubType=2
muIoni: for mu- XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV deltaVI
ICRU73QO : Emin= 0 meV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu- SubType=3
muBrems: for mu- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
MuBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
muPairProd: for mu- SubType=4
muPairProd: for mu- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu-, integral:1 SubType=1 BuildTable=1
CoulombScat: for mu- XStype:3 SubType=1 BuildTable=1
Used Lambda table of mu+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for pi+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for pi+ SubType=2
hIoni: for pi+ XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=297.505 keV deltaVI
Bragg : Emin= 0 meV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi+ SubType=3
hBrems: for pi+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for pi+ SubType=4
hPairProd: for pi+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi+, integral:1 SubType=1 BuildTable=1
CoulombScat: for pi+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for pi- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for pi- SubType=2
hIoni: for pi- XStype:1 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=297.505 keV deltaVI
ICRU73QO : Emin= 0 meV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi- SubType=3
hBrems: for pi- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for pi- SubType=4
hPairProd: for pi- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Used Lambda table of pi+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
##### Create analysis manager 0x21e7c80
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
##### Create analysis manager 0x14933f0
Using Root analysis manager
All Ntuples have been created
-> Event # 1 generated
@@ -781,8 +734,8 @@ All Ntuples have been created
-> Event # 2 generated
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.29742504062042
-----> total absorbed dose within Cytoplasm is (Gy) = 0.037565765905129
-----> total absorbed dose within Nucleus is (Gy) = 0.29757452037102
-----> total absorbed dose within Cytoplasm is (Gy) = 0.037570357139502
-> Event # 3 generated
===> Sorry, the incident alpha particle has missed the targeted cell !
@@ -798,24 +751,19 @@ All Ntuples have been created
-> Event # 7 generated
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.32122858192571
-----> total absorbed dose within Cytoplasm is (Gy) = 0.058497168523494
-----> total absorbed dose within Nucleus is (Gy) = 0.32122862361442
-----> total absorbed dose within Cytoplasm is (Gy) = 0.058497147049515
-> Event # 8 generated
===> Sorry, the incident alpha particle has missed the targeted cell !
-> Event # 9 generated
===> Sorry, the incident alpha particle has missed the targeted cell !
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.31521898707499
-----> total absorbed dose within Cytoplasm is (Gy) = 0.024969238306048
-> Event # 10 generated
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.30452573909279
-----> total absorbed dose within Cytoplasm is (Gy) = 0.048417545311347
===> Sorry, the incident alpha particle has missed the targeted cell !
-> Total number of particles detected by the gas detector : 3
0 events have been kept for refreshing and/or reviewing.
"/vis/reviewKeptEvents" to review them one by one.
"/vis/enable", then "/vis/viewer/flush" or "/vis/viewer/rebuild" to see them accumulated.
Graphics systems deleted.
Visualization Manager deleting...
@@ -39,30 +39,22 @@
#include "SteppingAction.hh"
#include "DetectorConstruction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ActionInitialization::ActionInitialization(DetectorConstruction* detConstruction)
: G4VUserActionInitialization(),
fDetectorConstruction(detConstruction)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ActionInitialization::~ActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::BuildForMaster() const
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::Build() const
{
SetUserAction(new PrimaryGeneratorAction());
RunAction* runAction= new RunAction(fDetectorConstruction);
RunAction* runAction = new RunAction(fDetectorConstruction);
SetUserAction(runAction);
SetUserAction(new EventAction(runAction));
@@ -36,12 +36,9 @@
#include "G4LogicalVolume.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// SINGLETON
CellParameterisation * CellParameterisation::gInstance = 0;
CellParameterisation::CellParameterisation
(G4Material * nucleus1, G4Material * cytoplasm1,
G4Material * nucleus2, G4Material * cytoplasm2,
@@ -59,21 +56,16 @@ CellParameterisation::CellParameterisation
G4int shiftX, shiftY, shiftZ;
G4double x,y,z,mat,den,tmp,density;
G4double denCyto1, denCyto2, denCyto3, denNucl1, denNucl2, denNucl3;
ncols = nlines = shiftX = shiftY = shiftZ = 0;
x = y = z = mat = den = tmp = density =
denCyto1 = denCyto2 = denCyto3 = denNucl1 = denNucl2 = denNucl3 = 0.0;
density=0;
denCyto1=0;
denCyto2=0;
denCyto3=0;
denNucl1=0;
denNucl2=0;
denNucl3=0;
ncols=0; nlines=0;
// READ PHANTOM
// READ PHANTOM
fNucleusMass = 0;
fCytoplasmMass = 0;
fDimCellBoxX = fDimCellBoxY = fDimCellBoxZ = micrometer;
FILE *fMap;
fMap = fopen("phantom.dat","r");
@@ -91,14 +83,14 @@ CellParameterisation::CellParameterisation
if (nlines == 1)
{
ncols = fscanf(fMap,"%lf %lf %lf",&fDimCellBoxX,&fDimCellBoxY,&fDimCellBoxZ);
ncols = fscanf(fMap,"%lf %lf %lf",&fDimCellBoxX,&fDimCellBoxY,&fDimCellBoxZ);
fDimCellBoxX=fDimCellBoxX*micrometer;
fDimCellBoxY=fDimCellBoxY*micrometer;
fDimCellBoxZ=fDimCellBoxZ*micrometer;
}
if (nlines == 2) ncols = fscanf(fMap,"%i %i %i",&shiftX,&shiftY,&shiftZ); // VOXEL SHIFT IN Z ASSUMED TO BE NEGATIVE
// VOXEL SHIFT IN Z ASSUMED TO BE NEGATIVE
if (nlines == 2) ncols = fscanf(fMap,"%i %i %i",&shiftX,&shiftY,&shiftZ);
if (nlines == 3) ncols = fscanf(fMap,"%lf %lf %lf",&denCyto1, &denCyto2, &denCyto3);
@@ -108,8 +100,8 @@ CellParameterisation::CellParameterisation
if (ncols < 0) break;
G4ThreeVector v(x+shiftX,y+shiftY,z-1500/(fDimCellBoxZ/micrometer)-shiftZ); // VOXEL SHIFT IN ORDER TO CENTER PHANTOM
// VOXEL SHIFT IN ORDER TO CENTER PHANTOM
G4ThreeVector v(x+shiftX,y+shiftY,z-1500/(fDimCellBoxZ/micrometer)-shiftZ);
if (nlines>4)
{
@@ -204,13 +196,9 @@ CellParameterisation::CellParameterisation
fCytoplasmAttributes3->SetForceSolid(false);
//
gInstance = this;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
CellParameterisation::~CellParameterisation()
{
delete[] fMapCell;
@@ -219,8 +207,6 @@ CellParameterisation::~CellParameterisation()
delete[] fTissueType;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void CellParameterisation::ComputeTransformation
(const G4int copyNo, G4VPhysicalVolume* physVol) const
{
@@ -234,14 +220,10 @@ void CellParameterisation::ComputeTransformation
physVol->SetTranslation(origin);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void CellParameterisation::ComputeDimensions
(G4Box&, const G4int, const G4VPhysicalVolume*) const
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4Material*
CellParameterisation::ComputeMaterial(const G4int copyNo,
G4VPhysicalVolume* physVol,
@@ -36,12 +36,7 @@
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4MagIntegratorDriver.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4ThreadLocal EMField* DetectorConstruction::fField = nullptr;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4AutoDelete.hh"
DetectorConstruction::DetectorConstruction()
@@ -72,31 +67,38 @@ DetectorConstruction::DetectorConstruction()
fPhysiPhantom(nullptr),fLogicPhantom(nullptr),fSolidPhantom(nullptr)
{
fWorldSizeXY=fWorldSizeZ=0;
DefineMaterials();
// Initialisation of variables which
// will then be appropriately fixed in methods of this class
// to implement the simulation geometry set-up
fDensityPhantom = 0.; // in g/cm3
fDensityNucleus = 0.; // in g/cm3
fDensityCytoplasm = 0.; // in g/cm3
fWorldSizeXY=fWorldSizeZ=0.;
fCollObjSizeXY = 0.;
fCollObjSizeZ = 0.;
// TARGET POSITION
fCiblePositionX = 0.;
fCiblePositionY = 0.;
fCiblePositionZ = 0.;
// MICROBEAM LINE ANGLE
fLineAngle = 0.;
fNbOfPixelsInPhantom=0;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
DetectorConstruction::~DetectorConstruction()
{
if(fField) {
delete fField;
fField = nullptr;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
{}
G4VPhysicalVolume* DetectorConstruction::Construct()
{
if(fPhysiWorld) { return fPhysiWorld; }
return ConstructLine();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void DetectorConstruction::DefineMaterials()
{
G4String name, symbol;
@@ -285,8 +287,6 @@ void DetectorConstruction::DefineMaterials()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4VPhysicalVolume* DetectorConstruction::ConstructLine()
{
// WORLD
@@ -353,9 +353,9 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
PosZ = PosZ + 1.3 * micrometer * std::sin(fLineAngle);
G4RotationMatrix *rot = new G4RotationMatrix();
rot->rotateX(0*deg);
// rot->rotateX(0*deg);
rot->rotateY(10*deg);
rot->rotateZ(0*deg);
// rot->rotateZ(0*deg);
fSolidBoite = new G4Box("Boite", 4*cm, 4*cm, 6958.3*mm/2);
@@ -388,7 +388,7 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
fSolid1Gap = new G4Cons("_CollObj_gap1_", 0.*micrometer, 6*micrometer,
0.*micrometer,2.5*micrometer,
3.5*micrometer,
0, ((360*CLHEP::pi)/180));
0, twopi);
fLogic1Gap = new G4LogicalVolume(fSolid1Gap, fDefaultMaterial, "_CollObj_gap1_");
@@ -401,7 +401,7 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
fSolid2Gap = new G4Cons("_CollObj_gap2_", 0.*micrometer, 15*micrometer,
0.*micrometer,6*micrometer,
6.5*micrometer,
0, ((360*CLHEP::pi)/180));
0, twopi);
fLogic2Gap = new G4LogicalVolume(fSolid2Gap, fDefaultMaterial, "_CollObj_gap2_");
@@ -414,7 +414,7 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
fSolid3Gap = new G4Cons("_CollObj_gap3_", 0.*micrometer, 105*micrometer,
0.*micrometer,15*micrometer,
25*micrometer,
0, ((360*CLHEP::pi)/180));
0, twopi);
fLogic3Gap = new G4LogicalVolume(fSolid3Gap, fDefaultMaterial, "_CollObj_gap3_");
@@ -439,7 +439,7 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
fSolid4Gap = new G4Cons("_CollDet_gap4_", 0.*micrometer, 8*micrometer,
0.*micrometer,5*micrometer,
7.5*micrometer,
0, ((360*CLHEP::pi)/180));
0, twopi);
fLogic4Gap = new G4LogicalVolume(fSolid4Gap, fDefaultMaterial, "_CollDet_gap4_");
@@ -451,7 +451,7 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
fSolid5Gap = new G4Cons("_CollDet_gap5_", 0.*micrometer, 105*micrometer,
0.*micrometer,8*micrometer,
27.5*micrometer,
0, ((360*CLHEP::pi)/180));
0, twopi);
fLogic5Gap = new G4LogicalVolume(fSolid5Gap, fDefaultMaterial, "_CollDet_gap5_");
@@ -690,13 +690,12 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
return fPhysiWorld;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void DetectorConstruction::ConstructSDandField()
{
if(!fField) { fField = new EMField(); }
EMField* field = new EMField();
G4AutoDelete::Register(field);
G4EqMagElectricField* fEquation = new G4EqMagElectricField(fField);
G4EqMagElectricField* fEquation = new G4EqMagElectricField(field);
G4MagIntegratorStepper* fStepper = new G4ClassicalRK4 (fEquation,8);
G4FieldManager* fFieldMgr =
G4TransportationManager::GetTransportationManager()->GetFieldManager();
@@ -707,7 +706,7 @@ void DetectorConstruction::ConstructSDandField()
G4ChordFinder* fChordFinder = new G4ChordFinder(fIntgrDriver);
fFieldMgr->SetChordFinder(fChordFinder);
fFieldMgr->SetDetectorField(fField);
fFieldMgr->SetDetectorField(field);
// FOLLOWING PARAMETERS TUNED FROM RAY-TRACING SIMULATIONS OF THE AIFIRA NANOBEAM LINE
/*
@@ -39,14 +39,9 @@
#include "G4Exp.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
EMField::EMField()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void EMField::GetFieldValue(const double point[4], double *Bfield ) const
{
// Magnetic field
@@ -530,6 +525,4 @@ if (z>=-1400*mm && z <-200*mm)
Bfield[5] = 0;
}
//
}
@@ -39,19 +39,13 @@
#include "RunAction.hh"
#include "Analysis.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
EventAction::EventAction(RunAction* run)
:fRun(run)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
EventAction::~EventAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void EventAction::BeginOfEventAction(const G4Event* evt)
{
G4int evtNb = evt->GetEventID();
@@ -60,8 +54,6 @@ void EventAction::BeginOfEventAction(const G4Event* evt)
fRun->SetDoseC(0);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void EventAction::EndOfEventAction(const G4Event* )
{
G4AnalysisManager* man = G4AnalysisManager::Instance();
@@ -37,7 +37,6 @@
#include "G4SystemOfUnits.hh"
#include "StepMax.hh"
#include "G4EmStandardPhysics.hh"
#include "G4EmStandardPhysics_option1.hh"
#include "G4EmStandardPhysics_option2.hh"
@@ -46,15 +45,11 @@
#include "G4EmLivermorePhysics.hh"
#include "G4EmPenelopePhysics.hh"
#include "G4DecayPhysics.hh"
#include "G4ProcessManager.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::PhysicsList() : G4VModularPhysicsList()
{
fMessenger = new PhysicsListMessenger(this);
@@ -70,8 +65,6 @@ PhysicsList::PhysicsList() : G4VModularPhysicsList()
fDecPhysicsList = new G4DecayPhysics();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::~PhysicsList()
{
delete fMessenger;
@@ -79,15 +72,11 @@ PhysicsList::~PhysicsList()
delete fDecPhysicsList;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::ConstructParticle()
{
fDecPhysicsList->ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::ConstructProcess()
{
// transportation
@@ -104,8 +93,6 @@ void PhysicsList::ConstructProcess()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::AddPhysicsList(const G4String& name)
{
if (verboseLevel>1) {
@@ -159,8 +146,6 @@ void PhysicsList::AddPhysicsList(const G4String& name)
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::AddStepMax()
{
// Step limitation seen as a process
@@ -178,5 +163,3 @@ void PhysicsList::AddStepMax()
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -27,19 +27,14 @@
/// \brief Implementation of the PhysicsListMessenger class
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysicsListMessenger.hh"
#include "G4SystemOfUnits.hh"
#include "PhysicsList.hh"
#include "G4SystemOfUnits.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
:G4UImessenger(),fPhysicsList(pPhys),fMaxChargedStep(1*CLHEP::mm)
{
@@ -60,8 +55,6 @@ PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
fStepMaxCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::~PhysicsListMessenger()
{
delete fListCmd;
@@ -69,8 +62,6 @@ PhysicsListMessenger::~PhysicsListMessenger()
delete fStepMaxCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsListMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
{
if( command == fListCmd )
@@ -79,4 +70,3 @@ void PhysicsListMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
{ fMaxChargedStep = fStepMaxCmd->GetNewDoubleValue(newValue); }
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -31,30 +31,23 @@
//
// If you use this example, please cite the following publication:
// Rad. Prot. Dos. 133 (2009) 2-11
//
#include "PrimaryGeneratorAction.hh"
#include "G4SystemOfUnits.hh"
#include "G4Event.hh"
#include "G4ParticleTable.hh"
#include "Randomize.hh"
#include "PrimaryGeneratorAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
PrimaryGeneratorAction::PrimaryGeneratorAction()
{
fParticleGun = new G4ParticleGun(1);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete fParticleGun;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
G4int numEvent;
+6 -14
View File
@@ -31,31 +31,27 @@
//
// If you use this example, please cite the following publication:
// Rad. Prot. Dos. 133 (2009) 2-11
//
#include "RunAction.hh"
#include "G4UImanager.hh"
#include "Randomize.hh"
#include "RunAction.hh"
#include "Analysis.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
RunAction::RunAction(const DetectorConstruction* det)
:fDetector(det)
{
fSaveRndm = 0;
fDose3DDose = nullptr;
fMapVoxels = nullptr;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
RunAction::~RunAction()
{
delete[] fDose3DDose;
delete[] fMapVoxels;
if (fDose3DDose) delete[] fDose3DDose;
if (fMapVoxels) delete[] fMapVoxels;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void RunAction::BeginOfRunAction(const G4Run*)
{
// Read phantom - Singleton
@@ -150,11 +146,8 @@ void RunAction::BeginOfRunAction(const G4Run*)
fMapVoxels [i]=fMyCellParameterisation->GetVoxelThreeVector(i);
fDose3DDose[i]=0;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void RunAction::EndOfRunAction(const G4Run* /*aRun*/)
{
G4AnalysisManager* man = G4AnalysisManager::Instance();
@@ -189,5 +182,4 @@ void RunAction::EndOfRunAction(const G4Run* /*aRun*/)
// Complete clean-up
delete G4AnalysisManager::Instance();
}
+10 -20
View File
@@ -24,16 +24,21 @@
// ********************************************************************
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// This example is provided by the Geant4-DNA collaboration
// Any report or published results obtained using the Geant4-DNA software
// shall cite the following Geant4-DNA collaboration publication:
// Med. Phys. 37 (2010) 4692-4708
// The Geant4-DNA web site is available at http://geant4-dna.org
//
// If you use this example, please cite the following publication:
// Rad. Prot. Dos. 133 (2009) 2-11
//
#include "StepMax.hh"
#include "PhysicsListMessenger.hh"
#include "G4VPhysicalVolume.hh"
#include "G4TransportationProcessType.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
StepMax::StepMax(PhysicsListMessenger* mess)
: G4VEmProcess("UserMaxStep", fGeneral),fMessenger(mess),
fMaxChargedStep(DBL_MAX),isInitialised(false)
@@ -41,20 +46,14 @@ StepMax::StepMax(PhysicsListMessenger* mess)
SetProcessSubType(static_cast<G4int>(STEP_LIMITER));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
StepMax::~StepMax()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4bool StepMax::IsApplicable(const G4ParticleDefinition& part)
{
return (part.GetPDGCharge() != 0. && !part.IsShortLived());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void StepMax::PreparePhysicsTable(const G4ParticleDefinition&)
{
if(isInitialised) {
@@ -62,8 +61,6 @@ void StepMax::PreparePhysicsTable(const G4ParticleDefinition&)
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void StepMax::BuildPhysicsTable(const G4ParticleDefinition&)
{
if(!isInitialised) {
@@ -76,13 +73,9 @@ void StepMax::BuildPhysicsTable(const G4ParticleDefinition&)
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void StepMax::InitialiseProcess(const G4ParticleDefinition*)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4double
StepMax::PostStepGetPhysicalInteractionLength(const G4Track&,
G4double,
@@ -93,8 +86,6 @@ StepMax::PostStepGetPhysicalInteractionLength(const G4Track&,
return fMaxChargedStep;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack, const G4Step&)
{
// do nothing
@@ -102,5 +93,4 @@ G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack, const G4Step&)
return &aParticleChange;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -31,31 +31,23 @@
//
// If you use this example, please cite the following publication:
// Rad. Prot. Dos. 133 (2009) 2-11
#include "G4SystemOfUnits.hh"
#include "G4SteppingManager.hh"
//
#include "SteppingAction.hh"
#include "RunAction.hh"
#include "DetectorConstruction.hh"
#include "Analysis.hh"
#include "G4SystemOfUnits.hh"
#include "G4SteppingManager.hh"
#include "G4Alpha.hh"
#include "G4Electron.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
SteppingAction::SteppingAction(RunAction* run,const DetectorConstruction* det)
:fRun(run),fDetector(det)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
SteppingAction::~SteppingAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void SteppingAction::UserSteppingAction(const G4Step* aStep)
{