Import Geant4 10.5.0 source tree
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
# -------------------------------------------------------------------
|
||||
# $Id: GNUmakefile 69157 2013-04-19 14:05:11Z gcosmo $
|
||||
# -----------
|
||||
# GNUmakefile
|
||||
# -----------
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
-------------------------------------------------------------------
|
||||
$Id: History 70524 2013-05-31 16:36:26Z gcosmo $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -9,6 +8,21 @@ $Id: History 70524 2013-05-31 16:36:26Z gcosmo $
|
||||
Package History file
|
||||
--------------------
|
||||
|
||||
04 Sep 2018 - S. Incerti - tag microbeam-V10-04-04
|
||||
- updated visualization
|
||||
|
||||
22 July 2018 - V.Ivanchenko - tag microbeam-V10-04-03
|
||||
- DetectorConstruction - removed user limits per volume
|
||||
- microbeam.cc - use default random engine
|
||||
|
||||
22 July 2018 - V.Ivanchenko - tag microbeam-V10-04-02
|
||||
- PhysicsListMessenger - the default step limit is set to 1 mm
|
||||
|
||||
20 July 2018 - V.Ivanchenko - tag microbeam-V10-04-01
|
||||
- StepMax - take thread safe class from EM extended examples
|
||||
- PhysicsList, PhysicsListMessenger - use StepMax
|
||||
- DetectorConstruction - protect from double initialisation
|
||||
|
||||
10 May 2018 - B. Morgan - tag microbeam-V10-04-00
|
||||
- Include G4Types before use of G4MULTITHREADED. For forward
|
||||
compatibility with move to #defines over -D for G4 preprocessor
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
-------------------------------------------------------------------
|
||||
$Id: README 70524 2013-05-31 16:36:26Z gcosmo $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
|
||||
@@ -23,44 +23,48 @@
|
||||
// * 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
|
||||
/// \file electromagnetic/TestEm5/include/PhysicsListMessenger.hh
|
||||
/// \brief Definition of the PhysicsListMessenger class
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef PhysicsListMessenger_h
|
||||
#define PhysicsListMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class PhysicsList;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class PhysicsListMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
PhysicsListMessenger(PhysicsList* );
|
||||
virtual ~PhysicsListMessenger();
|
||||
PhysicsListMessenger(PhysicsList* );
|
||||
~PhysicsListMessenger();
|
||||
|
||||
virtual void SetNewValue(G4UIcommand*, G4String);
|
||||
virtual void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
inline G4double GetMaxChargedStep() const { return fMaxChargedStep; }
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
PhysicsList* fPhysicsList;
|
||||
|
||||
G4UIdirectory* fPhysDir;
|
||||
G4UIcmdWithAString* fListCmd;
|
||||
PhysicsList* fPhysicsList;
|
||||
|
||||
G4UIdirectory* fPhysDir;
|
||||
G4UIcmdWithAString* fListCmd;
|
||||
G4UIcmdWithADoubleAndUnit* fStepMaxCmd;
|
||||
G4double fMaxChargedStep;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef StepMax_h
|
||||
#define StepMax_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmProcess.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4Step.hh"
|
||||
|
||||
class PhysicsListMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class StepMax : public G4VEmProcess
|
||||
{
|
||||
public:
|
||||
|
||||
StepMax(PhysicsListMessenger* mess);
|
||||
virtual ~StepMax();
|
||||
|
||||
virtual G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void PreparePhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void BuildPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void InitialiseProcess(const G4ParticleDefinition*);
|
||||
|
||||
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
|
||||
G4double previousStep,
|
||||
G4ForceCondition* cond);
|
||||
|
||||
virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
|
||||
|
||||
private:
|
||||
|
||||
PhysicsListMessenger* fMessenger;
|
||||
|
||||
G4double fMaxChargedStep;
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
@@ -42,10 +42,7 @@
|
||||
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4UIExecutive.hh"
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
#include "G4VisExecutive.hh"
|
||||
#endif
|
||||
#include "G4VisExecutive.hh"
|
||||
|
||||
#include "ActionInitialization.hh"
|
||||
#include "DetectorConstruction.hh"
|
||||
@@ -60,15 +57,11 @@ int main(int argc,char** argv) {
|
||||
ui = new G4UIExecutive(argc, argv);
|
||||
}
|
||||
|
||||
// Choose the Random engine
|
||||
|
||||
G4Random::setTheEngine(new CLHEP::RanecuEngine);
|
||||
|
||||
// Construct the default run manager
|
||||
|
||||
#ifdef G4MULTITHREADED
|
||||
G4MTRunManager* runManager = new G4MTRunManager;
|
||||
// runManager->SetNumberOfThreads(2);
|
||||
//runManager->SetNumberOfThreads(1);
|
||||
#else
|
||||
G4RunManager* runManager = new G4RunManager;
|
||||
#endif
|
||||
@@ -88,12 +81,10 @@ int main(int argc,char** argv) {
|
||||
|
||||
runManager->Initialize();
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
// Visualization
|
||||
|
||||
G4VisManager* visManager = new G4VisExecutive;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
|
||||
// Get the pointer to the User Interface manager
|
||||
|
||||
// Get the pointer to the User Interface manager
|
||||
G4UImanager* UImanager = G4UImanager::GetUIpointer();
|
||||
@@ -113,9 +104,7 @@ int main(int argc,char** argv) {
|
||||
delete ui;
|
||||
}
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
delete runManager;
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/run/initialize
|
||||
|
||||
/process/inactivate nuclearStopping
|
||||
|
||||
/tracking/verbose 0
|
||||
/run/verbose 0
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
############################################
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-10-05-beta-01 (29-June-2018)
|
||||
Geant4 version Name: geant4-10-05-ref-00 (7-December-2018)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -380,13 +380,14 @@ compt: for gamma SubType= 13 BuildTable= 1
|
||||
Lambda table from 100 eV to 1 MeV, 20 bins per 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= 100 TeV FluoActive
|
||||
LivermoreCompton : Emin= 0 eV Emax= 1 GeV FluoActive
|
||||
KleinNishina : Emin= 1 GeV Emax= 100 TeV FluoActive
|
||||
|
||||
conv: for gamma SubType= 14 BuildTable= 1
|
||||
Lambda table from 1.022 MeV to 100 TeV, 20 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
LivermoreConversion : Emin= 0 eV Emax= 80 GeV
|
||||
BetheHeitlerLPM : Emin= 80 GeV Emax= 100 TeV AngularGenUrban
|
||||
BetheHeitler5D : Emin= 0 eV Emax= 1 GeV AngularGenUrban
|
||||
BetheHeitlerLPM : Emin= 1 GeV Emax= 100 TeV AngularGenUrban
|
||||
|
||||
Rayl: for gamma SubType= 11 BuildTable= 1
|
||||
Lambda table from 100 eV to 100 keV, 20 bins per decade, spline: 0
|
||||
@@ -395,15 +396,15 @@ Rayl: for gamma SubType= 11 BuildTable= 1
|
||||
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
|
||||
|
||||
msc: for e- SubType= 10
|
||||
RangeFactor= 0.02, stepLimitType: 3, latDisplacement: 1, skin= 1, geomFactor= 2.5
|
||||
RangeFactor= 0.2, stepLimitType: 2, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 120 bins Emin= 100 eV Emax= 100 MeV
|
||||
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Table with 120 bins Emin= 100 eV Emax= 100 MeV
|
||||
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Table with 120 bins Emin= 100 MeV Emax= 100 TeV
|
||||
|
||||
eIoni: for e- 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
LowEnergyIoni : Emin= 0 eV Emax= 100 keV deltaVI
|
||||
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
|
||||
@@ -413,25 +414,33 @@ eBrem: for e- SubType= 3
|
||||
Lambda tables from threshold to 100 TeV, 20 bins per decade, spline: 1
|
||||
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
LowEnBrem : Emin= 0 eV Emax= 1 GeV AngularGen2BS
|
||||
eBremLPM : Emin= 1 GeV Emax= 100 TeV DipBustGen
|
||||
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
|
||||
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
|
||||
|
||||
ePairProd: for e- 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 per 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
|
||||
|
||||
CoulombScat: for e-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from 100 MeV to 100 TeV, 20 bins per decade, spline: 1
|
||||
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
|
||||
UserMaxStep: SubType= 401 Step limit(mm)= 1
|
||||
|
||||
msc: for e+ SubType= 10
|
||||
RangeFactor= 0.02, stepLimitType: 3, latDisplacement: 1, skin= 1, geomFactor= 2.5
|
||||
RangeFactor= 0.2, stepLimitType: 2, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 120 bins Emin= 100 eV Emax= 100 MeV
|
||||
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Table with 120 bins Emin= 100 eV Emax= 100 MeV
|
||||
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Table with 120 bins Emin= 100 MeV Emax= 100 TeV
|
||||
|
||||
eIoni: for e+ 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MollerBhabha : Emin= 0 eV Emax= 100 TeV deltaVI
|
||||
|
||||
@@ -441,7 +450,14 @@ eBrem: for e+ SubType= 3
|
||||
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
|
||||
eBremLPM : Emin= 1 GeV Emax= 100 TeV DipBustGen
|
||||
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
|
||||
|
||||
ePairProd: for e+ 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 per 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
|
||||
|
||||
annihil: for e+, integral: 1 SubType= 5 BuildTable= 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -479,6 +495,12 @@ hPairProd: for proton SubType= 4
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
CoulombScat: for proton, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 100 TeV, 20 bins per 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
|
||||
|
||||
nuclearStopping: for proton SubType= 8 BuildTable= 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
|
||||
@@ -507,7 +529,7 @@ msc: for alpha SubType= 10
|
||||
ionIoni: for alpha 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02
|
||||
finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.02
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BraggIon : Emin= 0 eV Emax= 7.9452 MeV deltaVI
|
||||
BetheBloch : Emin= 7.9452 MeV Emax= 100 TeV deltaVI
|
||||
@@ -542,6 +564,12 @@ hPairProd: for anti_proton SubType= 4
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
CoulombScat: for anti_proton, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 100 TeV, 20 bins per 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
|
||||
|
||||
nuclearStopping: for anti_proton SubType= 8 BuildTable= 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
|
||||
@@ -549,7 +577,7 @@ nuclearStopping: for anti_proton SubType= 8 BuildTable= 0
|
||||
msc: for kaon+ SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 TeV Table with 240 bins Emin= 100 eV Emax= 100 TeV
|
||||
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Table with 240 bins Emin= 100 eV Emax= 100 TeV
|
||||
|
||||
hIoni: for kaon+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
@@ -572,10 +600,16 @@ hPairProd: for kaon+ SubType= 4
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
CoulombScat: for kaon+, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 100 TeV, 20 bins per 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
|
||||
|
||||
msc: for kaon- SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 TeV Table with 240 bins Emin= 100 eV Emax= 100 TeV
|
||||
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Table with 240 bins Emin= 100 eV Emax= 100 TeV
|
||||
|
||||
hIoni: for kaon- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
@@ -598,6 +632,12 @@ hPairProd: for kaon- SubType= 4
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
CoulombScat: for kaon-, integral: 1 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
|
||||
|
||||
msc: for mu+ SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -659,7 +699,7 @@ muPairProd: for mu- SubType= 4
|
||||
muPairProd : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
CoulombScat: for mu-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 100 TeV, 20 bins per decade, spline: 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
|
||||
@@ -667,7 +707,7 @@ CoulombScat: for mu-, integral: 1 SubType= 1 BuildTable= 1
|
||||
msc: for pi+ SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 TeV Table with 240 bins Emin= 100 eV Emax= 100 TeV
|
||||
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Table with 240 bins Emin= 100 eV Emax= 100 TeV
|
||||
|
||||
hIoni: for pi+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
@@ -690,10 +730,16 @@ hPairProd: for pi+ SubType= 4
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
CoulombScat: for pi+, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 100 TeV, 20 bins per 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
|
||||
|
||||
msc: for pi- SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 TeV Table with 240 bins Emin= 100 eV Emax= 100 TeV
|
||||
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Table with 240 bins Emin= 100 eV Emax= 100 TeV
|
||||
|
||||
hIoni: for pi- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
@@ -715,7 +761,13 @@ hPairProd: for pi- SubType= 4
|
||||
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV
|
||||
##### Create analysis manager 0x1faa370
|
||||
|
||||
CoulombScat: for pi-, integral: 1 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
|
||||
##### Create analysis manager 0x24e4c10
|
||||
Using Root analysis manager
|
||||
All Ntuples have been created
|
||||
-> Event # 1 generated
|
||||
@@ -723,40 +775,48 @@ 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.33407672469762
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.044746158396084
|
||||
-----> total absorbed dose within Nucleus is (Gy) = 0.30832977717125
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.012658759300938
|
||||
|
||||
-> Event # 3 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.32818767799678
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.040445595179846
|
||||
|
||||
-> Event # 4 generated
|
||||
===> The incident alpha particle has reached the targeted cell :
|
||||
-----> total absorbed dose within Nucleus is (Gy) = 0.29504336694034
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.067840285655547
|
||||
-----> total absorbed dose within Nucleus is (Gy) = 0.32695560638599
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.020540824970027
|
||||
|
||||
-> Event # 5 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.30401818537386
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.032305503184608
|
||||
|
||||
-> Event # 6 generated
|
||||
===> Sorry, the incident alpha particle has missed the targeted cell !
|
||||
|
||||
-> Event # 7 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.33379213319348
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.041030536554798
|
||||
|
||||
-> Event # 8 generated
|
||||
===> The incident alpha particle has reached the targeted cell :
|
||||
-----> total absorbed dose within Nucleus is (Gy) = 0.3312460958573
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.042402316350712
|
||||
-----> total absorbed dose within Nucleus is (Gy) = 0.22434638824738
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.032582954657893
|
||||
|
||||
-> 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.32690860555838
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.047558167429359
|
||||
|
||||
-> Event # 10 generated
|
||||
===> The incident alpha particle has reached the targeted cell :
|
||||
-----> total absorbed dose within Nucleus is (Gy) = 0.21829490065516
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.010799521231078
|
||||
-----> total absorbed dose within Nucleus is (Gy) = 0.31993563391128
|
||||
-----> total absorbed dose within Cytoplasm is (Gy) = 0.021546217293899
|
||||
|
||||
-> Total number of particles detected by the gas detector : 4
|
||||
-> Total number of particles detected by the gas detector : 8
|
||||
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: plot.C 69157 2013-04-19 14:05:11Z gcosmo $
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// *********************************************************************
|
||||
|
||||
@@ -45,55 +45,45 @@ G4ThreadLocal EMField* DetectorConstruction::fField = nullptr;
|
||||
|
||||
DetectorConstruction::DetectorConstruction()
|
||||
|
||||
:fDefaultMaterial(NULL),fCollimatorMaterial(NULL),fBoiteMaterial(NULL),
|
||||
fCathodeMaterial(NULL),fVerreMaterial(NULL),fVerre2Material(NULL),
|
||||
fKgmMaterial(NULL),fBoite2Material(NULL),fBoite3Material(NULL),
|
||||
fNucleusMaterial1(NULL),fCytoplasmMaterial1(NULL),
|
||||
fNucleusMaterial2(NULL),fCytoplasmMaterial2(NULL),
|
||||
fNucleusMaterial3(NULL),fCytoplasmMaterial3(NULL),
|
||||
fPhysiWorld(NULL),fLogicWorld(NULL),fSolidWorld(NULL),
|
||||
fPhysiVol(NULL),fLogicVol(NULL),fSolidVol(NULL),
|
||||
fPhysiBoite(NULL),fLogicBoite(NULL),fSolidBoite(NULL),
|
||||
fPhysiYoke1(NULL),fLogicYoke1(NULL),fSolidYoke1(NULL),
|
||||
fPhysi1Gap(NULL),fLogic1Gap(NULL),fSolid1Gap(NULL),
|
||||
fPhysi2Gap(NULL),fLogic2Gap(NULL),fSolid2Gap(NULL),
|
||||
fPhysi3Gap(NULL),fLogic3Gap(NULL),fSolid3Gap(NULL),
|
||||
fPhysiYoke2(NULL),fLogicYoke2(NULL),fSolidYoke2(NULL),
|
||||
fPhysi4Gap(NULL),fLogic4Gap(NULL),fSolid4Gap(NULL),
|
||||
fPhysi5Gap(NULL),fLogic5Gap(NULL),fSolid5Gap(NULL),
|
||||
fPhysiBoiteIso(NULL),fLogicBoiteIso(NULL),fSolidBoiteIso(NULL),
|
||||
fPhysiCathode(NULL),fLogicCathode(NULL),fSolidCathode(NULL),
|
||||
fPhysiIso(NULL),fLogicIso(NULL),fSolidIso(NULL),
|
||||
fPhysiVerre(NULL),fLogicVerre(NULL),fSolidVerre(NULL),
|
||||
fPhysiBoite2(NULL),fLogicBoite2(NULL),fSolidBoite2(NULL),
|
||||
fPhysiBoite3(NULL),fLogicBoite3(NULL),fSolidBoite3(NULL),
|
||||
fPhysiKgm(NULL),fLogicKgm(NULL),fSolidKgm(NULL),
|
||||
fPhysiVerre2(NULL),fLogicVerre2(NULL),fSolidVerre2(NULL),
|
||||
fPhysiPhantom(NULL),fLogicPhantom(NULL),fSolidPhantom(NULL)
|
||||
:fDefaultMaterial(nullptr),fCollimatorMaterial(nullptr),fBoiteMaterial(nullptr),
|
||||
fCathodeMaterial(nullptr),fVerreMaterial(nullptr),fVerre2Material(nullptr),
|
||||
fKgmMaterial(nullptr),fBoite2Material(nullptr),fBoite3Material(nullptr),
|
||||
fNucleusMaterial1(nullptr),fCytoplasmMaterial1(nullptr),
|
||||
fNucleusMaterial2(nullptr),fCytoplasmMaterial2(nullptr),
|
||||
fNucleusMaterial3(nullptr),fCytoplasmMaterial3(nullptr),
|
||||
fPhysiWorld(nullptr),fLogicWorld(nullptr),fSolidWorld(nullptr),
|
||||
fPhysiVol(nullptr),fLogicVol(nullptr),fSolidVol(nullptr),
|
||||
fPhysiBoite(nullptr),fLogicBoite(nullptr),fSolidBoite(nullptr),
|
||||
fPhysiYoke1(nullptr),fLogicYoke1(nullptr),fSolidYoke1(nullptr),
|
||||
fPhysi1Gap(nullptr),fLogic1Gap(nullptr),fSolid1Gap(nullptr),
|
||||
fPhysi2Gap(nullptr),fLogic2Gap(nullptr),fSolid2Gap(nullptr),
|
||||
fPhysi3Gap(nullptr),fLogic3Gap(nullptr),fSolid3Gap(nullptr),
|
||||
fPhysiYoke2(nullptr),fLogicYoke2(nullptr),fSolidYoke2(nullptr),
|
||||
fPhysi4Gap(nullptr),fLogic4Gap(nullptr),fSolid4Gap(nullptr),
|
||||
fPhysi5Gap(nullptr),fLogic5Gap(nullptr),fSolid5Gap(nullptr),
|
||||
fPhysiBoiteIso(nullptr),fLogicBoiteIso(nullptr),fSolidBoiteIso(nullptr),
|
||||
fPhysiCathode(nullptr),fLogicCathode(nullptr),fSolidCathode(nullptr),
|
||||
fPhysiIso(nullptr),fLogicIso(nullptr),fSolidIso(nullptr),
|
||||
fPhysiVerre(nullptr),fLogicVerre(nullptr),fSolidVerre(nullptr),
|
||||
fPhysiBoite2(nullptr),fLogicBoite2(nullptr),fSolidBoite2(nullptr),
|
||||
fPhysiBoite3(nullptr),fLogicBoite3(nullptr),fSolidBoite3(nullptr),
|
||||
fPhysiKgm(nullptr),fLogicKgm(nullptr),fSolidKgm(nullptr),
|
||||
fPhysiVerre2(nullptr),fLogicVerre2(nullptr),fSolidVerre2(nullptr),
|
||||
fPhysiPhantom(nullptr),fLogicPhantom(nullptr),fSolidPhantom(nullptr)
|
||||
|
||||
{
|
||||
fWorldSizeXY=fWorldSizeZ=0;
|
||||
DefineMaterials();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
DetectorConstruction::~DetectorConstruction()
|
||||
{
|
||||
delete fDefaultMaterial;
|
||||
delete fCollimatorMaterial;
|
||||
delete fBoiteMaterial;
|
||||
delete fCathodeMaterial;
|
||||
delete fVerreMaterial;
|
||||
delete fVerre2Material;
|
||||
delete fKgmMaterial;
|
||||
delete fBoite2Material;
|
||||
delete fBoite3Material;
|
||||
delete fNucleusMaterial1;
|
||||
delete fCytoplasmMaterial1;
|
||||
delete fNucleusMaterial2;
|
||||
delete fCytoplasmMaterial2;
|
||||
delete fNucleusMaterial3;
|
||||
delete fCytoplasmMaterial3;
|
||||
if(fField) {
|
||||
delete fField;
|
||||
fField = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -101,7 +91,7 @@ DetectorConstruction::~DetectorConstruction()
|
||||
G4VPhysicalVolume* DetectorConstruction::Construct()
|
||||
|
||||
{
|
||||
DefineMaterials();
|
||||
if(fPhysiWorld) { return fPhysiWorld; }
|
||||
return ConstructLine();
|
||||
}
|
||||
|
||||
@@ -109,7 +99,6 @@ G4VPhysicalVolume* DetectorConstruction::Construct()
|
||||
|
||||
void DetectorConstruction::DefineMaterials()
|
||||
{
|
||||
|
||||
G4String name, symbol;
|
||||
G4double density;
|
||||
|
||||
@@ -328,7 +317,7 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
|
||||
G4ThreeVector(), //at (0,0,0)
|
||||
"World", //its name
|
||||
fLogicWorld, //its logical volume
|
||||
NULL, //its mother volume
|
||||
nullptr, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
@@ -644,36 +633,6 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
|
||||
G4cout << " ==========> Voxel size Y (um)=" << fMyCellParameterisation->GetPixelSizeY()/um << G4endl;
|
||||
G4cout << " ==========> Voxel size Z (um)=" << fMyCellParameterisation->GetPixelSizeZ()/um << G4endl;
|
||||
G4cout << G4endl;
|
||||
|
||||
// USER LIMITS ON STEP LENGTH
|
||||
|
||||
/*
|
||||
fLogicWorld->SetUserLimits(new G4UserLimits(100*mm));
|
||||
fLogicVol->SetUserLimits(new G4UserLimits(100*mm));
|
||||
fLogicBoite->SetUserLimits(new G4UserLimits(10*mm));
|
||||
*/
|
||||
|
||||
/*
|
||||
logicPhantom->SetUserLimits (new G4UserLimits(0.5*micrometer));
|
||||
logic1Gap->SetUserLimits (new G4UserLimits(5*micrometer));
|
||||
logic2Gap->SetUserLimits (new G4UserLimits(5*micrometer));
|
||||
logic3Gap->SetUserLimits (new G4UserLimits(5*micrometer));
|
||||
logic4Gap->SetUserLimits (new G4UserLimits(5*micrometer));
|
||||
logic5Gap->SetUserLimits (new G4UserLimits(5*micrometer));
|
||||
logicBoiteIso->SetUserLimits (new G4UserLimits(200.*micrometer));
|
||||
logicCathode->SetUserLimits (new G4UserLimits(100.*micrometer));
|
||||
logicIso->SetUserLimits (new G4UserLimits(100.*micrometer));
|
||||
logicVerre->SetUserLimits (new G4UserLimits(0.02*micrometer));
|
||||
logicBoite2->SetUserLimits (new G4UserLimits(10*micrometer));
|
||||
logicBoite3->SetUserLimits (new G4UserLimits(0.2*micrometer));
|
||||
logicKgm->SetUserLimits (new G4UserLimits(1*micrometer));
|
||||
logicVerre2->SetUserLimits (new G4UserLimits(10*micrometer));
|
||||
*/
|
||||
|
||||
// Relaxed
|
||||
fLogicWorld->SetUserLimits(new G4UserLimits(10*mm));
|
||||
fLogicVol->SetUserLimits(new G4UserLimits(10*mm));
|
||||
fLogicBoite->SetUserLimits(new G4UserLimits(1*mm));
|
||||
|
||||
// VISUALISATION ATTRIBUTES (for phantom, see in Parameterisation class)
|
||||
|
||||
@@ -735,7 +694,7 @@ G4VPhysicalVolume* DetectorConstruction::ConstructLine()
|
||||
|
||||
void DetectorConstruction::ConstructSDandField()
|
||||
{
|
||||
if(!fField) fField = new EMField();
|
||||
if(!fField) { fField = new EMField(); }
|
||||
|
||||
G4EqMagElectricField* fEquation = new G4EqMagElectricField(fField);
|
||||
G4MagIntegratorStepper* fStepper = new G4ClassicalRK4 (fEquation,8);
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#include "PhysicsListMessenger.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4StepLimiter.hh"
|
||||
#include "StepMax.hh"
|
||||
|
||||
#include "G4EmStandardPhysics.hh"
|
||||
#include "G4EmStandardPhysics_option1.hh"
|
||||
@@ -164,20 +164,17 @@ void PhysicsList::AddPhysicsList(const G4String& name)
|
||||
void PhysicsList::AddStepMax()
|
||||
{
|
||||
// Step limitation seen as a process
|
||||
|
||||
fStepMaxProcess = new G4StepLimiter();
|
||||
StepMax* stepMaxProcess = new StepMax(fMessenger);
|
||||
|
||||
auto particleIterator=GetParticleIterator();
|
||||
|
||||
particleIterator->reset();
|
||||
|
||||
while ((*particleIterator)()){
|
||||
G4ParticleDefinition* particle = particleIterator->value();
|
||||
G4ParticleDefinition* particle = particleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
if (fStepMaxProcess->IsApplicable(*particle) && pmanager)
|
||||
if (stepMaxProcess->IsApplicable(*particle))
|
||||
{
|
||||
pmanager ->AddDiscreteProcess(fStepMaxProcess);
|
||||
pmanager ->AddDiscreteProcess(stepMaxProcess);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,33 +23,41 @@
|
||||
// * 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
|
||||
/// \file electromagnetic/TestEm5/src/PhysicsListMessenger.cc
|
||||
/// \brief Implementation of the PhysicsListMessenger class
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysicsListMessenger.hh"
|
||||
#include "PhysicsList.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
#include "PhysicsList.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
|
||||
:fPhysicsList(pPhys)
|
||||
:G4UImessenger(),fPhysicsList(pPhys),fMaxChargedStep(1*CLHEP::mm)
|
||||
{
|
||||
fPhysDir = new G4UIdirectory("/microbeam/phys/");
|
||||
fPhysDir = new G4UIdirectory("/testem/phys/");
|
||||
fPhysDir->SetGuidance("physics list commands");
|
||||
|
||||
fListCmd = new G4UIcmdWithAString("/microbeam/phys/addPhysics",this);
|
||||
|
||||
fListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
|
||||
fListCmd->SetGuidance("Add modula physics list.");
|
||||
fListCmd->SetParameterName("PList",false);
|
||||
fListCmd->AvailableForStates(G4State_PreInit);
|
||||
fListCmd->AvailableForStates(G4State_PreInit);
|
||||
fListCmd->SetToBeBroadcasted(false);
|
||||
|
||||
fStepMaxCmd = new G4UIcmdWithADoubleAndUnit("/testem/stepMax",this);
|
||||
fStepMaxCmd->SetGuidance("Set max allowed step length");
|
||||
fStepMaxCmd->SetParameterName("mxStep",false);
|
||||
fStepMaxCmd->SetRange("mxStep>0.");
|
||||
fStepMaxCmd->SetUnitCategory("Length");
|
||||
fStepMaxCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -57,15 +65,18 @@ PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
|
||||
PhysicsListMessenger::~PhysicsListMessenger()
|
||||
{
|
||||
delete fListCmd;
|
||||
delete fPhysDir;
|
||||
delete fPhysDir;
|
||||
delete fStepMaxCmd;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
|
||||
G4String newValue)
|
||||
{
|
||||
void PhysicsListMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
if( command == fListCmd )
|
||||
{ fPhysicsList->AddPhysicsList(newValue);}
|
||||
{ fPhysicsList->AddPhysicsList(newValue); }
|
||||
if (command == fStepMaxCmd)
|
||||
{ fMaxChargedStep = fStepMaxCmd->GetNewDoubleValue(newValue); }
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#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)
|
||||
{
|
||||
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) {
|
||||
isInitialised = false;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void StepMax::BuildPhysicsTable(const G4ParticleDefinition&)
|
||||
{
|
||||
if(!isInitialised) {
|
||||
fMaxChargedStep = fMessenger->GetMaxChargedStep();
|
||||
isInitialised = true;
|
||||
if(fMaxChargedStep < DBL_MAX) {
|
||||
G4cout << GetProcessName() << ": SubType= " << GetProcessSubType()
|
||||
<< " Step limit(mm)= " << fMaxChargedStep << G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void StepMax::InitialiseProcess(const G4ParticleDefinition*)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double
|
||||
StepMax::PostStepGetPhysicalInteractionLength(const G4Track&,
|
||||
G4double,
|
||||
G4ForceCondition* condition)
|
||||
{
|
||||
// condition is set to "Not Forced"
|
||||
*condition = NotForced;
|
||||
return fMaxChargedStep;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack, const G4Step&)
|
||||
{
|
||||
// do nothing
|
||||
aParticleChange.Initialize(aTrack);
|
||||
return &aParticleChange;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
Reference in New Issue
Block a user