Import Geant4 11.0.0.beta source tree
This commit is contained in:
@@ -16,6 +16,80 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
25th June 2021 Gabriele Cosmo (examples-V10-07-06)
|
||||
- Updated reference outputs according to reference tag geant4-10-07-ref-06.
|
||||
- Includes tags: exhgcaltb-V10-07-02, microbeam-V10-07-03, exampleB1-V10-07-01,
|
||||
STCyclotron-V10-07-04, exampleB2-V10-07-01, exdna-V10-07-00,
|
||||
exampleB3-V10-07-01, exampleB4-V10-07-03, exampleB5-V10-07-01,
|
||||
exEventGenerator-V10-07-03, exExtHadFissFrag-V10-07-01,
|
||||
p8decayer-V10-07-02, exGeometry-V10-07-02, AuNP-V10-07-01,
|
||||
VecGeomNavigation-V10-07-01, NeutronSource-V10-07-06,
|
||||
exTransforms-V10-07-02, exHadronic-V10-07-02
|
||||
exhadr06-V10-07-09, exhadr07-V10-07-07, OpNovice-V10-07-03,
|
||||
activation-V10-07-05, rdecay01-V10-07-01, rdecay02-V10-07-01.
|
||||
|
||||
28th May 2021 Gabriele Cosmo (examples-V10-07-05)
|
||||
- Updated reference outputs according to reference tag geant4-10-07-ref-05.
|
||||
- Includes tags: amsEcal-V10-07-01, ccal-V10-07-02, hadrontherapy-V10-07-05,
|
||||
STCyclotron-V10-07-03, testem1-V10-07-03, testem3-V10-07-01,
|
||||
testem4-V10-07-01, testem5-V10-07-04, testem6-V10-07-00,
|
||||
testem7-V10-07-02, testem11-V10-07-02, testem12-V10-07-02,
|
||||
testem13-V10-07-00, testem14-V10-07-00, testem15-V10-07-01,
|
||||
testem16-V10-07-00, testem17-V10-07-00, testem18-V10-07-00,
|
||||
exHadronic-V10-07-01, exhadr02-V10-07-03, exhadr10-V10-07-00,
|
||||
electronScattering-V10-07-00, fano-V10-07-01, fano2-V10-07-01,
|
||||
LXe-V10-07-01, OpNovice-V10-07-02, WLS-V10-07-01,
|
||||
exam-ext-vis-movies-V10-07-02.
|
||||
|
||||
30th April 2021 Gabriele Cosmo (examples-V10-07-04)
|
||||
- Updated reference outputs according to reference tag geant4-10-07-ref-04.
|
||||
- Includes tags: ICRP110Phantoms-V10-07-00, gammaknife-V10-07-01,
|
||||
purmag-V10-07-00, STCyclotron-V10-07-01, xraytel-V10-07-00,
|
||||
particleGunExample-V10-07-00, userPrimaryGenerator-V10-07-00,
|
||||
exTransforms-V10-07-00, exhadr03-V10-07-02, exhadr04-V10-07-02,
|
||||
exhadr06-V10-07-08, exhadr07-V10-07-06, gtherapy-V10-07-00,
|
||||
NeutronSource-V10-07-05, OpNovice-V10-07-01,
|
||||
activation-V10-07-04, rdecay01-V10-07-00, rdecay02-V10-07-00.
|
||||
|
||||
31st March 2021 Gabriele Cosmo (examples-V10-07-03)
|
||||
- Updated reference outputs according to reference tag geant4-10-07-ref-03.
|
||||
- Includes tags: gammaraytel-V10-07-04, gorad-V10-07-00, exhgcaltb-V10-07-00,
|
||||
microelectronics-V10-07-00, STCyclotron-V10-07-00,
|
||||
DMX-V10-07-05, exampleB4-V10-07-02, B03-V10-07-02,
|
||||
testem1-V10-07-02, testem2-V10-07-06, testem5-V10-07-03,
|
||||
testem7-V10-07-01, testem15-V10-07-00, exhadr01-V10-07-00,
|
||||
channelingExample-V10-07-00, exExtHadFissFrag-V10-07-00,
|
||||
exhadr02-V10-07-02, exhadr03-V10-07-01, exhadr04-V10-07-01,
|
||||
exhadr06-V10-07-07, exhadr07-V10-07-05, exhadr08-V10-07-02,
|
||||
exhadr09-V10-07-00, NeutronSource-V10-07-04, fano-V10-07-00,
|
||||
microdosimetry-V10-07-01, splitting-V10-07-00, fano2-V10-07-00,
|
||||
LXe-V10-07-00, OpNovice-V10-07-00, OpNovice2-V10-07-00,
|
||||
activation-V10-07-03, exam-ext-vis-movies-V10-07-01.
|
||||
|
||||
28th February 2021 Gabriele Cosmo (examples-V10-07-02)
|
||||
- Updated reference outputs according to reference tag geant4-10-07-ref-02.
|
||||
- Includes tags: brachy-V10-07-00, gammaraytel-V10-07-00, microbeam-V10-07-01,
|
||||
hadrontherapy-V10-07-03, iort_therapy-V10-07-00,
|
||||
radioprotection-V10-07-00, XRayFluo-V10-07-00,
|
||||
testem1-V10-07-01, testem2-V10-07-03, testem5-V10-07-02,
|
||||
testem7-V10-07-00, testem9-V10-07-01, testem11-V10-07-01,
|
||||
testem12-V10-07-01, exhadr06-V10-07-04, exhadr07-V10-07-03,
|
||||
NeutronSource-V10-07-03, microprox-V10-07-00, svalue-V10-07-00,
|
||||
microyz-V10-07-00, slowing-V10-07-00, exampleES2-V10-07-00,
|
||||
ThreadsafeScorers-V10-07-00, G01-V10-07-01, expol01-V10-07-01,
|
||||
exampleRE05-V10-07-00, exam-ext-vis-movies-V10-07-00,
|
||||
exampleRE06-V10-07-00.
|
||||
|
||||
31st January 2021 Gabriele Cosmo (examples-V10-07-01)
|
||||
- Updated reference outputs according to reference tag geant4-10-07-ref-01.
|
||||
- Includes tags: doiPET-V10-07-00, hadrontherapy-V10-07-02, exampleB4-V10-07-00,
|
||||
testem0-V10-07-00, testem1-V10-07-00, testem2-V10-07-00,
|
||||
testem3-V10-07-00, testem5-V10-07-00, testem9-V10-07-00,
|
||||
testem11-V10-07-00, testem12-V10-07-00, exhadr03-V10-07-00,
|
||||
exhadr06-V10-07-03, exhadr07-V10-07-02, DICOM-V10-07-00,
|
||||
NeutronSource-V10-07-02, chem2-V10-07-00, chem3-V10-07-00,
|
||||
neuron-V10-07-00, G01-V10-07-00, activation-V10-07-02.
|
||||
|
||||
4th December 2020 Gabriele Cosmo (examples-V10-07-00)
|
||||
- Updated reference outputs according to reference tag geant4-10-07-ref-00.
|
||||
- Includes tags: doxygen-V10-06-03, exadvanced-V10-06-00, air_shower-V10-06-04,
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
#---Adding all advanced examples subdirectories explicitly
|
||||
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)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# some examples require Geant4 build with optional packages
|
||||
@@ -50,3 +47,4 @@ add_subdirectory(underground_physics)
|
||||
add_subdirectory(xray_fluorescence)
|
||||
add_subdirectory(STCyclotron)
|
||||
add_subdirectory(HGCal_testbeam)
|
||||
add_subdirectory(ICRP110_HumanPhantoms)
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
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)
|
||||
include(CMakeDependentOption)
|
||||
|
||||
set(name ChargeExchangeMC)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,9 @@ cirrone@lns.infn.it
|
||||
History file of the ChargeExchangeMC application
|
||||
====================================================
|
||||
|
||||
24.05.2021 - B. Morgan (ChargeExchangeMC-V10-07-00)
|
||||
Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
02.11.2020 - B.Morgan, Tag ChargeExchangeMC-V10-06-01
|
||||
Support same CMake version range as core Geant4
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Setup the project
|
||||
cmake_minimum_required(VERSION 3.8...3.18 FATAL_ERROR)
|
||||
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(HGCal_testbeam)
|
||||
|
||||
|
||||
@@ -14,5 +14,19 @@ track of all tags.
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
10-June-21 V. Ivanchenko (exhgcaltb-V10-07-02)
|
||||
- SiliconPixelHit, SiPMHit - fixed bug in handling of NIEL energy
|
||||
deposition
|
||||
- CMSHadronPhysicsFTFP_BERT - added class from CMS
|
||||
- CMSEmStandardPhysicsHcal - removed obsolete
|
||||
- FTFPCMS_BERT_EMM - use correct combination of physics constructors
|
||||
|
||||
24-May-21 B. Morgan (exhgcaltb-V10-07-01)
|
||||
- Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
21-Mar-21 V. Ivanchenko (exhgcaltb-V10-07-00)
|
||||
- removed RanecuEngine
|
||||
- updated CMS EM physics to 11.0
|
||||
|
||||
02-Nov-20 A. Zaborowska (exhgcaltb-V10-06-00)
|
||||
- Create HGCal_testbeam example based on Thorben Quast application
|
||||
- Create HGCal_testbeam example based on Thorben Quast application
|
||||
|
||||
@@ -50,9 +50,6 @@ int main(int argc,char** argv)
|
||||
ui = new G4UIExecutive(argc, argv);
|
||||
}
|
||||
|
||||
// Choose the Random engine
|
||||
G4Random::setTheEngine(new CLHEP::RanecuEngine);
|
||||
|
||||
// Initialization of Run manager
|
||||
auto* runManager =
|
||||
G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default);
|
||||
|
||||
+21
-27
@@ -23,45 +23,39 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
// Author: Vladimir Ivanchenko
|
||||
// Date: March 2018
|
||||
//
|
||||
// Hadron inelastic physics for the new CMS physics list FTFP_BERT.
|
||||
// The hadron physics of FTFP_BERT has the transition between Bertini
|
||||
// (BERT) intra-nuclear cascade model and Fritiof (FTF) string model
|
||||
// optimized for CMS.
|
||||
//
|
||||
// 15.04.2021 V.Ivanchenko Hadron inelastic physics of CMS
|
||||
// mirgrated to Geant4 10.7
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: PhysListEm5DStandard
|
||||
//
|
||||
// Author: IgS 07.11.2017
|
||||
//
|
||||
// Modified:
|
||||
// 17.11.2017 Created using PhysListEmStandard from V.Ivanchenko
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// This class provides construction of default EM standard physics which
|
||||
// 5D generator model for gamma conversion
|
||||
//
|
||||
#ifndef CMSHadronPhysicsFTFP_BERT_h
|
||||
#define CMSHadronPhysicsFTFP_BERT_h
|
||||
|
||||
#ifndef PhysListEm5DStandard_h
|
||||
#define PhysListEm5DStandard_h 1
|
||||
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
#include "G4HadronPhysicsFTFP_BERT.hh"
|
||||
|
||||
class PhysListEm5DStandard : public G4VPhysicsConstructor
|
||||
{
|
||||
class CMSHadronPhysicsFTFP_BERT : public G4HadronPhysicsFTFP_BERT {
|
||||
public:
|
||||
explicit CMSHadronPhysicsFTFP_BERT(G4int verb);
|
||||
|
||||
explicit PhysListEm5DStandard(G4int ver=0, const G4String& name="");
|
||||
~CMSHadronPhysicsFTFP_BERT() override;
|
||||
|
||||
virtual ~PhysListEm5DStandard();
|
||||
|
||||
virtual void ConstructParticle();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
private:
|
||||
void ConstructProcess() override;
|
||||
|
||||
// copy constructor and hide assignment operator
|
||||
CMSHadronPhysicsFTFP_BERT(CMSHadronPhysicsFTFP_BERT &) = delete;
|
||||
CMSHadronPhysicsFTFP_BERT &operator=(const CMSHadronPhysicsFTFP_BERT &right) = delete;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -1,381 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "CMSEmStandardPhysicsHcal.hh"
|
||||
|
||||
#include "G4EmParameters.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4CoulombScattering.hh"
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4UrbanMscModel.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
#include "G4eCoulombScatteringModel.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4AntiLambdacPlus.hh"
|
||||
#include "G4AntiOmegaMinus.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4AntiSigmaMinus.hh"
|
||||
#include "G4AntiSigmaPlus.hh"
|
||||
#include "G4AntiXiMinus.hh"
|
||||
#include "G4AntiXicPlus.hh"
|
||||
#include "G4BMesonMinus.hh"
|
||||
#include "G4BMesonPlus.hh"
|
||||
#include "G4DMesonMinus.hh"
|
||||
#include "G4DMesonPlus.hh"
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
#include "G4He3.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4LambdacPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4OmegaMinus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4SigmaMinus.hh"
|
||||
#include "G4SigmaPlus.hh"
|
||||
#include "G4TauMinus.hh"
|
||||
#include "G4TauPlus.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4XiMinus.hh"
|
||||
#include "G4XicPlus.hh"
|
||||
|
||||
#include "G4BuilderType.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4RegionStore.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
CMSEmStandardPhysicsHcal::CMSEmStandardPhysicsHcal(G4int ver)
|
||||
: G4VPhysicsConstructor("CMSEmStandard_emm"), fVerbose(ver) {
|
||||
G4EmParameters *param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetVerbose(fVerbose);
|
||||
param->SetApplyCuts(true);
|
||||
param->SetMscRangeFactor(0.2);
|
||||
param->SetMscStepLimitType(fMinimal);
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
CMSEmStandardPhysicsHcal::~CMSEmStandardPhysicsHcal() {}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void CMSEmStandardPhysicsHcal::ConstructParticle() {
|
||||
// gamma
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
G4TauMinus::TauMinusDefinition();
|
||||
G4TauPlus::TauPlusDefinition();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
G4DMesonMinus::DMesonMinusDefinition();
|
||||
G4DMesonPlus::DMesonPlusDefinition();
|
||||
G4BMesonMinus::BMesonMinusDefinition();
|
||||
G4BMesonPlus::BMesonPlusDefinition();
|
||||
|
||||
// barions
|
||||
G4Proton::Proton();
|
||||
G4AntiProton::AntiProton();
|
||||
G4SigmaMinus::SigmaMinusDefinition();
|
||||
G4AntiSigmaMinus::AntiSigmaMinusDefinition();
|
||||
G4SigmaPlus::SigmaPlusDefinition();
|
||||
G4AntiSigmaPlus::AntiSigmaPlusDefinition();
|
||||
G4XiMinus::XiMinusDefinition();
|
||||
G4AntiXiMinus::AntiXiMinusDefinition();
|
||||
G4OmegaMinus::OmegaMinusDefinition();
|
||||
G4AntiOmegaMinus::AntiOmegaMinusDefinition();
|
||||
G4LambdacPlus::LambdacPlusDefinition();
|
||||
G4AntiLambdacPlus::AntiLambdacPlusDefinition();
|
||||
G4XicPlus::XicPlusDefinition();
|
||||
G4AntiXicPlus::AntiXicPlusDefinition();
|
||||
|
||||
// ions
|
||||
G4Deuteron::Deuteron();
|
||||
G4Triton::Triton();
|
||||
G4He3::He3();
|
||||
G4Alpha::Alpha();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void CMSEmStandardPhysicsHcal::ConstructProcess() {
|
||||
|
||||
if (fVerbose > 0) {
|
||||
G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
|
||||
}
|
||||
|
||||
// This EM builder takes default models of Geant4 10 EMV.
|
||||
// Multiple scattering by Urban for all particles
|
||||
// except e+e- below 100 MeV for which the Urban93 model is used
|
||||
|
||||
G4PhysicsListHelper *ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
// muon & hadron bremsstrahlung and pair production
|
||||
G4MuBremsstrahlung *mub = nullptr;
|
||||
G4MuPairProduction *mup = nullptr;
|
||||
G4hBremsstrahlung *pib = nullptr;
|
||||
G4hPairProduction *pip = nullptr;
|
||||
G4hBremsstrahlung *kb = nullptr;
|
||||
G4hPairProduction *kp = nullptr;
|
||||
G4hBremsstrahlung *pb = nullptr;
|
||||
G4hPairProduction *pp = nullptr;
|
||||
|
||||
// muon & hadron multiple scattering
|
||||
G4MuMultipleScattering *mumsc = nullptr;
|
||||
G4MuMultipleScattering *pimsc = nullptr;
|
||||
G4MuMultipleScattering *kmsc = nullptr;
|
||||
G4MuMultipleScattering *pmsc = nullptr;
|
||||
G4hMultipleScattering *hmsc = nullptr;
|
||||
|
||||
G4CoulombScattering *muss = nullptr;
|
||||
G4CoulombScattering *piss = nullptr;
|
||||
G4CoulombScattering *kss = nullptr;
|
||||
G4CoulombScattering *pss = nullptr;
|
||||
|
||||
// high energy limit for e+- scattering models and bremsstrahlung
|
||||
G4double highEnergyLimit = 100 * CLHEP::MeV;
|
||||
|
||||
G4Region *aRegion = G4RegionStore::GetInstance()->GetRegion("HcalRegion");
|
||||
|
||||
auto myParticleIterator = GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
while ((*myParticleIterator)()) {
|
||||
G4ParticleDefinition *particle = myParticleIterator->value();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
ph->RegisterProcess(new G4PhotoElectricEffect(), particle);
|
||||
ph->RegisterProcess(new G4ComptonScattering(), particle);
|
||||
ph->RegisterProcess(new G4GammaConversion(), particle);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
G4eIonisation *eioni = new G4eIonisation();
|
||||
eioni->SetStepFunction(0.8, 1.0 * CLHEP::mm);
|
||||
|
||||
G4eMultipleScattering *msc = new G4eMultipleScattering;
|
||||
msc->SetStepLimitType(fMinimal);
|
||||
G4UrbanMscModel *msc1 = new G4UrbanMscModel();
|
||||
G4WentzelVIModel *msc2 = new G4WentzelVIModel();
|
||||
G4UrbanMscModel *msc3 = new G4UrbanMscModel();
|
||||
msc3->SetLocked(true);
|
||||
msc1->SetHighEnergyLimit(highEnergyLimit);
|
||||
msc2->SetLowEnergyLimit(highEnergyLimit);
|
||||
msc3->SetHighEnergyLimit(highEnergyLimit);
|
||||
msc->AddEmModel(0, msc1);
|
||||
msc->AddEmModel(0, msc2);
|
||||
msc->AddEmModel(-1, msc3, aRegion);
|
||||
|
||||
G4eCoulombScatteringModel *ssm = new G4eCoulombScatteringModel();
|
||||
G4CoulombScattering *ss = new G4CoulombScattering();
|
||||
ss->SetEmModel(ssm, 1);
|
||||
ss->SetMinKinEnergy(highEnergyLimit);
|
||||
ssm->SetLowEnergyLimit(highEnergyLimit);
|
||||
ssm->SetActivationLowEnergyLimit(highEnergyLimit);
|
||||
|
||||
ph->RegisterProcess(msc, particle);
|
||||
ph->RegisterProcess(eioni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(ss, particle);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
G4eIonisation *eioni = new G4eIonisation();
|
||||
eioni->SetStepFunction(0.8, 1.0 * CLHEP::mm);
|
||||
|
||||
G4eMultipleScattering *msc = new G4eMultipleScattering;
|
||||
msc->SetStepLimitType(fMinimal);
|
||||
G4UrbanMscModel *msc1 = new G4UrbanMscModel();
|
||||
G4WentzelVIModel *msc2 = new G4WentzelVIModel();
|
||||
G4UrbanMscModel *msc3 = new G4UrbanMscModel();
|
||||
msc1->SetHighEnergyLimit(highEnergyLimit);
|
||||
msc2->SetLowEnergyLimit(highEnergyLimit);
|
||||
msc3->SetHighEnergyLimit(highEnergyLimit);
|
||||
msc3->SetLocked(true);
|
||||
msc->AddEmModel(0, msc1);
|
||||
msc->AddEmModel(0, msc2);
|
||||
msc->AddEmModel(-1, msc3, aRegion);
|
||||
|
||||
G4eCoulombScatteringModel *ssm = new G4eCoulombScatteringModel();
|
||||
G4CoulombScattering *ss = new G4CoulombScattering();
|
||||
ss->SetEmModel(ssm, 1);
|
||||
ss->SetMinKinEnergy(highEnergyLimit);
|
||||
ssm->SetLowEnergyLimit(highEnergyLimit);
|
||||
ssm->SetActivationLowEnergyLimit(highEnergyLimit);
|
||||
|
||||
ph->RegisterProcess(msc, particle);
|
||||
ph->RegisterProcess(eioni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
ph->RegisterProcess(ss, particle);
|
||||
|
||||
} else if (particleName == "mu+" || particleName == "mu-") {
|
||||
|
||||
if (nullptr == mub) {
|
||||
mub = new G4MuBremsstrahlung();
|
||||
mup = new G4MuPairProduction();
|
||||
mumsc = new G4MuMultipleScattering();
|
||||
mumsc->AddEmModel(0, new G4WentzelVIModel());
|
||||
muss = new G4CoulombScattering();
|
||||
}
|
||||
ph->RegisterProcess(mumsc, particle);
|
||||
ph->RegisterProcess(new G4MuIonisation(), particle);
|
||||
ph->RegisterProcess(mub, particle);
|
||||
ph->RegisterProcess(mup, particle);
|
||||
ph->RegisterProcess(muss, particle);
|
||||
|
||||
} else if (particleName == "alpha" || particleName == "He3") {
|
||||
|
||||
ph->RegisterProcess(new G4hMultipleScattering(), particle);
|
||||
ph->RegisterProcess(new G4ionIonisation(), particle);
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
|
||||
if (nullptr == hmsc) {
|
||||
hmsc = new G4hMultipleScattering("ionmsc");
|
||||
}
|
||||
ph->RegisterProcess(hmsc, particle);
|
||||
ph->RegisterProcess(new G4ionIonisation(), particle);
|
||||
|
||||
} else if (particleName == "pi+" || particleName == "pi-") {
|
||||
|
||||
if (nullptr == pib) {
|
||||
pib = new G4hBremsstrahlung();
|
||||
pip = new G4hPairProduction();
|
||||
pimsc = new G4MuMultipleScattering();
|
||||
pimsc->AddEmModel(0, new G4WentzelVIModel());
|
||||
piss = new G4CoulombScattering();
|
||||
}
|
||||
ph->RegisterProcess(pimsc, particle);
|
||||
ph->RegisterProcess(new G4hIonisation(), particle);
|
||||
ph->RegisterProcess(pib, particle);
|
||||
ph->RegisterProcess(pip, particle);
|
||||
ph->RegisterProcess(piss, particle);
|
||||
|
||||
} else if (particleName == "kaon+" || particleName == "kaon-") {
|
||||
|
||||
if (nullptr == kb) {
|
||||
kb = new G4hBremsstrahlung();
|
||||
kp = new G4hPairProduction();
|
||||
kmsc = new G4MuMultipleScattering();
|
||||
kmsc->AddEmModel(0, new G4WentzelVIModel());
|
||||
kss = new G4CoulombScattering();
|
||||
}
|
||||
ph->RegisterProcess(kmsc, particle);
|
||||
ph->RegisterProcess(new G4hIonisation(), particle);
|
||||
ph->RegisterProcess(kb, particle);
|
||||
ph->RegisterProcess(kp, particle);
|
||||
ph->RegisterProcess(kss, particle);
|
||||
|
||||
} else if (particleName == "proton" || particleName == "anti_proton") {
|
||||
|
||||
if (nullptr == pb) {
|
||||
pb = new G4hBremsstrahlung();
|
||||
pp = new G4hPairProduction();
|
||||
pmsc = new G4MuMultipleScattering();
|
||||
pmsc->AddEmModel(0, new G4WentzelVIModel());
|
||||
pss = new G4CoulombScattering();
|
||||
}
|
||||
ph->RegisterProcess(pmsc, particle);
|
||||
ph->RegisterProcess(new G4hIonisation(), particle);
|
||||
ph->RegisterProcess(pb, particle);
|
||||
ph->RegisterProcess(pp, particle);
|
||||
ph->RegisterProcess(pss, particle);
|
||||
|
||||
} else if (particleName == "B+" || particleName == "B-" ||
|
||||
particleName == "D+" || particleName == "D-" ||
|
||||
particleName == "Ds+" || particleName == "Ds-" ||
|
||||
particleName == "anti_He3" || particleName == "anti_alpha" ||
|
||||
particleName == "anti_deuteron" ||
|
||||
particleName == "anti_lambda_c+" ||
|
||||
particleName == "anti_omega-" ||
|
||||
particleName == "anti_sigma_c+" ||
|
||||
particleName == "anti_sigma_c++" ||
|
||||
particleName == "anti_sigma+" || particleName == "anti_sigma-" ||
|
||||
particleName == "anti_triton" || particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" || particleName == "deuteron" ||
|
||||
particleName == "lambda_c+" || particleName == "omega-" ||
|
||||
particleName == "sigma_c+" || particleName == "sigma_c++" ||
|
||||
particleName == "sigma+" || particleName == "sigma-" ||
|
||||
particleName == "tau+" || particleName == "tau-" ||
|
||||
particleName == "triton" || particleName == "xi_c+" ||
|
||||
particleName == "xi-") {
|
||||
|
||||
if (nullptr == hmsc) {
|
||||
hmsc = new G4hMultipleScattering("ionmsc");
|
||||
}
|
||||
ph->RegisterProcess(hmsc, particle);
|
||||
ph->RegisterProcess(new G4hIonisation(), particle);
|
||||
}
|
||||
}
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation *de = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
+21
-26
@@ -23,32 +23,27 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/// \file SteppingVerbose.hh
|
||||
/// \brief Definition of the SteppingVerbose class
|
||||
//
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
#include "CMSHadronPhysicsFTFP_BERT.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Threading.hh"
|
||||
|
||||
#ifndef SteppingVerbose_h
|
||||
#define SteppingVerbose_h 1
|
||||
CMSHadronPhysicsFTFP_BERT::CMSHadronPhysicsFTFP_BERT(G4int)
|
||||
: G4HadronPhysicsFTFP_BERT("hInelastic FTFP_BERT", false) {
|
||||
minFTFP_pion = 3 * CLHEP::GeV;
|
||||
maxBERT_pion = 12 * CLHEP::GeV;
|
||||
minFTFP_kaon = 3 * CLHEP::GeV;
|
||||
maxBERT_kaon = 6 * CLHEP::GeV;
|
||||
minFTFP_proton = 3 * CLHEP::GeV;
|
||||
maxBERT_proton = 6 * CLHEP::GeV;
|
||||
minFTFP_neutron = 3 * CLHEP::GeV;
|
||||
maxBERT_neutron = 6 * CLHEP::GeV;
|
||||
}
|
||||
|
||||
#include "G4SteppingVerbose.hh"
|
||||
CMSHadronPhysicsFTFP_BERT::~CMSHadronPhysicsFTFP_BERT() {}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class SteppingVerbose : public G4SteppingVerbose {
|
||||
|
||||
public:
|
||||
|
||||
SteppingVerbose();
|
||||
~SteppingVerbose();
|
||||
|
||||
virtual void TrackingStarted();
|
||||
virtual void StepInfo();
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
void CMSHadronPhysicsFTFP_BERT::ConstructProcess() {
|
||||
if (G4Threading::IsMasterThread()) {
|
||||
DumpBanner();
|
||||
}
|
||||
CreateModels();
|
||||
}
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "FTFPCMS_BERT_EMM.hh"
|
||||
#include "CMSEmStandardPhysicsHcal.hh"
|
||||
|
||||
#include "G4EmStandardPhysics.hh"
|
||||
#include "G4DecayPhysics.hh"
|
||||
#include "G4EmExtraPhysics.hh"
|
||||
#include "G4HadronElasticPhysics.hh"
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "G4StoppingPhysics.hh"
|
||||
|
||||
#include "G4HadronPhysicsFTFP_BERT.hh"
|
||||
#include "CMSHadronPhysicsFTFP_BERT.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -46,7 +47,7 @@ FTFPCMS_BERT_EMM::FTFPCMS_BERT_EMM(G4int ver) {
|
||||
<< "FTFP_BERT_EMM " << G4endl;
|
||||
|
||||
// EM Physics
|
||||
RegisterPhysics(new CMSEmStandardPhysicsHcal(ver));
|
||||
RegisterPhysics(new G4EmStandardPhysics(ver));
|
||||
|
||||
// Synchroton Radiation & GN Physics
|
||||
RegisterPhysics(new G4EmExtraPhysics(ver));
|
||||
@@ -57,7 +58,8 @@ FTFPCMS_BERT_EMM::FTFPCMS_BERT_EMM(G4int ver) {
|
||||
// Hadron Elastic scattering
|
||||
RegisterPhysics(new G4HadronElasticPhysics(ver));
|
||||
|
||||
RegisterPhysics(new G4HadronPhysicsFTFP_BERT(ver));
|
||||
// Hadron Inelastic physics
|
||||
RegisterPhysics(new CMSHadronPhysicsFTFP_BERT(ver));
|
||||
|
||||
// Stopping Physics
|
||||
RegisterPhysics(new G4StoppingPhysics(ver));
|
||||
|
||||
@@ -40,7 +40,7 @@ void SiPMHit::Digitise(const G4double aTimeWindow,
|
||||
const G4double aToaThreshold) {
|
||||
|
||||
// process energy deposits
|
||||
if (fEdep.size() == 0) {
|
||||
if (fEdep.empty()) {
|
||||
fIsValidHit = false;
|
||||
return;
|
||||
}
|
||||
@@ -53,7 +53,7 @@ void SiPMHit::Digitise(const G4double aTimeWindow,
|
||||
|
||||
G4double firstHitTime = fEdep[0].second;
|
||||
fEdepDigi = 0;
|
||||
for (size_t i = 0; i < fEdep.size(); i++) {
|
||||
for (size_t i = 0; i < fEdep.size(); ++i) {
|
||||
if (aTimeWindow < 0 || fEdep[i].second < firstHitTime + aTimeWindow)
|
||||
fEdepDigi += fEdep[i].first;
|
||||
#ifdef DEBUG
|
||||
@@ -68,7 +68,7 @@ void SiPMHit::Digitise(const G4double aTimeWindow,
|
||||
fIsValidHit = (fEdepDigi > 0);
|
||||
|
||||
// non ionizing part, does not contribute to TOAs
|
||||
if (fEdepNonIonizing.size() == 0)
|
||||
if (fEdepNonIonizing.empty())
|
||||
return;
|
||||
|
||||
std::sort(fEdepNonIonizing.begin(), fEdepNonIonizing.end(),
|
||||
@@ -78,7 +78,7 @@ void SiPMHit::Digitise(const G4double aTimeWindow,
|
||||
});
|
||||
|
||||
fEdepNonIonizingDigi = 0;
|
||||
for (size_t i = 0; i < fEdep.size(); i++) {
|
||||
for (size_t i = 0; i < fEdepNonIonizing.size(); ++i) {
|
||||
if (aTimeWindow == -1 ||
|
||||
fEdepNonIonizing[i].second < firstHitTime + aTimeWindow)
|
||||
fEdepNonIonizingDigi += fEdepNonIonizing[i].first;
|
||||
|
||||
@@ -47,7 +47,7 @@ void SiliconPixelHit::Digitise(const G4double aTimeWindow,
|
||||
const G4double aToaThreshold) {
|
||||
|
||||
// process energy deposits
|
||||
if (fEdep.size() == 0) {
|
||||
if (fEdep.empty()) {
|
||||
fIsValidHit = false;
|
||||
return;
|
||||
}
|
||||
@@ -60,7 +60,7 @@ void SiliconPixelHit::Digitise(const G4double aTimeWindow,
|
||||
|
||||
G4double firstHitTime = fEdep[0].second;
|
||||
fEdepDigi = 0;
|
||||
for (size_t i = 0; i < fEdep.size(); i++) {
|
||||
for (size_t i = 0; i < fEdep.size(); ++i) {
|
||||
if (aTimeWindow < 0 || fEdep[i].second < firstHitTime + aTimeWindow)
|
||||
fEdepDigi += fEdep[i].first;
|
||||
if (fEdepDigi > aToaThreshold) {
|
||||
@@ -72,7 +72,7 @@ void SiliconPixelHit::Digitise(const G4double aTimeWindow,
|
||||
fIsValidHit = (fEdepDigi > 0);
|
||||
|
||||
// non ionizing part, does not contribute to TOAs
|
||||
if (fEdepNonIonizing.size() == 0)
|
||||
if (fEdepNonIonizing.empty())
|
||||
return;
|
||||
|
||||
std::sort(fEdepNonIonizing.begin(), fEdepNonIonizing.end(),
|
||||
@@ -82,7 +82,7 @@ void SiliconPixelHit::Digitise(const G4double aTimeWindow,
|
||||
});
|
||||
|
||||
fEdepNonIonizingDigi = 0;
|
||||
for (size_t i = 0; i < fEdep.size(); i++) {
|
||||
for (size_t i = 0; i < fEdepNonIonizing.size(); ++i) {
|
||||
if (aTimeWindow == -1 ||
|
||||
fEdepNonIonizing[i].second < firstHitTime + aTimeWindow)
|
||||
fEdepNonIonizingDigi += fEdepNonIonizing[i].first;
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Setup the project
|
||||
cmake_minimum_required(VERSION 3.8...3.18 FATAL_ERROR)
|
||||
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(ICRPphantoms)
|
||||
|
||||
@@ -49,7 +46,7 @@ add_dependencies(ICRP110phantoms ICRPdata)
|
||||
# relies on these scripts being in the current working directory.
|
||||
#
|
||||
set(ICRPphantoms_SCRIPTS
|
||||
female.in female_head.in female_trunk.in male.in male_head.in male_trunk.in vis.mac primary.mac ColourMap.dat openGLVis.mac
|
||||
female.in female_head.in female_trunk.in male.in male_head.in male_trunk.in vis.mac primary.mac ColourMap.dat openGLVis.mac g4views/g4_00.g4view g4views/g4_01.g4view
|
||||
# ICRPdata/Data.dat
|
||||
# "ICRPdata/ICRP110_g4dat/AF/*.g4dat"
|
||||
# "ICRPdata/ICRP110_g4dat/AM/*.g4dat"
|
||||
|
||||
@@ -7,10 +7,16 @@
|
||||
|
||||
Category History file
|
||||
---------------------
|
||||
24.05.2021 - B. Morgan (ICRP110Phantoms-V10-07-01)
|
||||
- Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
29.03.2021 - J. Allison; ICRP110Phantoms-V10-07-00
|
||||
Introduced ICRP110PhantomVisAction
|
||||
See vis.mac for how to activate
|
||||
|
||||
15.11.2020 - S. Guatelli; ICRP110Phantoms-V10-06-01
|
||||
Migration to G4RunManagerFactory
|
||||
|
||||
|
||||
27.10.2020 - S. Guatelli; ICRP110Phantoms-V10-06-00
|
||||
New advanced example modelling ICRP110 phantom models
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "ICRP110PhantomActionInitialization.hh"
|
||||
#include "G4ScoringManager.hh"
|
||||
#include "ICRP110UserScoreWriter.hh"
|
||||
#include "ICRP110PhantomVisAction.hh"
|
||||
#include "QGSP_BIC_HP.hh"
|
||||
#include "G4RunManagerFactory.hh"
|
||||
|
||||
@@ -63,6 +64,8 @@ int main(int argc,char** argv)
|
||||
// runManager -> SetUserInitialization(new ICRP110PhantomPhysicsList);
|
||||
|
||||
G4VisManager* visManager = new G4VisExecutive;
|
||||
visManager->RegisterRunDurationUserVisAction
|
||||
("phantom",new ICRP110PhantomVisAction(userPhantom));
|
||||
visManager -> Initialize();
|
||||
|
||||
ICRP110PhantomActionInitialization* actions = new ICRP110PhantomActionInitialization();
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
#
|
||||
# Camera and lights commands
|
||||
/vis/viewer/set/viewpointVector -0.875284 -0.455741 0.162104
|
||||
/vis/viewer/set/upVector 0.473127 -0.736972 0.482725
|
||||
/vis/viewer/set/projection orthogonal
|
||||
/vis/viewer/zoomTo 2.5393
|
||||
/vis/viewer/scaleTo 1 1 1
|
||||
/vis/viewer/set/targetPoint 0 0 0 fm
|
||||
# Note that if you have not set a target point, the vis system sets
|
||||
# a target point based on the scene - plus any panning and dollying -
|
||||
# so don't be alarmed by strange coordinates here.
|
||||
/vis/viewer/dollyTo 0 fm
|
||||
/vis/viewer/set/lightsMove object
|
||||
/vis/viewer/set/lightsVector 1 1 1
|
||||
/vis/viewer/set/rotationStyle freeRotation
|
||||
/vis/viewer/set/background 0 0 0 1
|
||||
/vis/viewer/set/defaultColour 1 1 1 1
|
||||
/vis/viewer/set/defaultTextColour 0 0 1 1
|
||||
#
|
||||
# Drawing style commands
|
||||
/vis/viewer/set/style surface
|
||||
/vis/viewer/set/hiddenEdge false
|
||||
/vis/viewer/set/auxiliaryEdge false
|
||||
/vis/viewer/set/hiddenMarker true
|
||||
/vis/viewer/set/globalLineWidthScale 1
|
||||
/vis/viewer/set/globalMarkerScale 1
|
||||
/vis/viewer/set/numberOfCloudPoints 10000
|
||||
#
|
||||
# Scene-modifying commands
|
||||
/vis/viewer/set/culling global true
|
||||
/vis/viewer/set/culling invisible true
|
||||
/vis/viewer/set/culling density false
|
||||
/vis/viewer/set/culling coveredDaughters false
|
||||
/vis/viewer/colourByDensity 0 g/cm3
|
||||
/vis/viewer/set/sectionPlane off
|
||||
/vis/viewer/set/cutawayMode union
|
||||
/vis/viewer/clearCutawayPlanes
|
||||
/vis/viewer/addCutawayPlane -10 -0 -0 cm 1 0 0
|
||||
/vis/viewer/set/explodeFactor 1 0 0 0 fm
|
||||
/vis/viewer/set/lineSegmentsPerCircle 24
|
||||
#
|
||||
# Touchable commands
|
||||
# None
|
||||
/vis/viewer/clearVisAttributesModifiers
|
||||
#
|
||||
# Time window commands
|
||||
/vis/viewer/set/timeWindow/startTime -1e+100 ns
|
||||
/vis/viewer/set/timeWindow/endTime 1e+100 ns
|
||||
/vis/viewer/set/timeWindow/fadeFactor 0
|
||||
/vis/viewer/set/timeWindow/displayHeadTime false
|
||||
/vis/viewer/set/timeWindow/displayLightFront false
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
#
|
||||
# Camera and lights commands
|
||||
/vis/viewer/set/viewpointVector -0.875284 -0.455741 0.162104
|
||||
/vis/viewer/set/upVector 0.473127 -0.736972 0.482725
|
||||
/vis/viewer/set/projection orthogonal
|
||||
/vis/viewer/zoomTo 2.5393
|
||||
/vis/viewer/scaleTo 1 1 1
|
||||
/vis/viewer/set/targetPoint 0 0 0 fm
|
||||
# Note that if you have not set a target point, the vis system sets
|
||||
# a target point based on the scene - plus any panning and dollying -
|
||||
# so don't be alarmed by strange coordinates here.
|
||||
/vis/viewer/dollyTo 0 fm
|
||||
/vis/viewer/set/lightsMove object
|
||||
/vis/viewer/set/lightsVector 1 1 1
|
||||
/vis/viewer/set/rotationStyle freeRotation
|
||||
/vis/viewer/set/background 0 0 0 1
|
||||
/vis/viewer/set/defaultColour 1 1 1 1
|
||||
/vis/viewer/set/defaultTextColour 0 0 1 1
|
||||
#
|
||||
# Drawing style commands
|
||||
/vis/viewer/set/style surface
|
||||
/vis/viewer/set/hiddenEdge false
|
||||
/vis/viewer/set/auxiliaryEdge false
|
||||
/vis/viewer/set/hiddenMarker true
|
||||
/vis/viewer/set/globalLineWidthScale 1
|
||||
/vis/viewer/set/globalMarkerScale 1
|
||||
/vis/viewer/set/numberOfCloudPoints 10000
|
||||
#
|
||||
# Scene-modifying commands
|
||||
/vis/viewer/set/culling global true
|
||||
/vis/viewer/set/culling invisible true
|
||||
/vis/viewer/set/culling density false
|
||||
/vis/viewer/set/culling coveredDaughters false
|
||||
/vis/viewer/colourByDensity 0 g/cm3
|
||||
/vis/viewer/set/sectionPlane off
|
||||
/vis/viewer/set/cutawayMode union
|
||||
/vis/viewer/clearCutawayPlanes
|
||||
/vis/viewer/addCutawayPlane 10 0 0 cm 1 0 0
|
||||
/vis/viewer/set/explodeFactor 1 0 0 0 fm
|
||||
/vis/viewer/set/lineSegmentsPerCircle 24
|
||||
#
|
||||
# Touchable commands
|
||||
# None
|
||||
/vis/viewer/clearVisAttributesModifiers
|
||||
#
|
||||
# Time window commands
|
||||
/vis/viewer/set/timeWindow/startTime -1e+100 ns
|
||||
/vis/viewer/set/timeWindow/endTime 1e+100 ns
|
||||
/vis/viewer/set/timeWindow/fadeFactor 0
|
||||
/vis/viewer/set/timeWindow/displayHeadTime false
|
||||
/vis/viewer/set/timeWindow/displayLightFront false
|
||||
|
||||
@@ -53,11 +53,18 @@ class ICRP110PhantomConstruction : public G4VUserDetectorConstruction
|
||||
ICRP110PhantomConstruction();
|
||||
~ICRP110PhantomConstruction();
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
|
||||
G4VPhysicalVolume* GetMotherVolume() {return fMotherVolume;}
|
||||
G4VPhysicalVolume* GetPhantumContainer() {return fPhantomContainer;}
|
||||
|
||||
inline G4int GetNumberVoxelX(){return fNVoxelX;};
|
||||
inline G4int GetNumberVoxelY() {return fNVoxelY;};
|
||||
inline G4int GetNumberVoxelZ() {return fNVoxelZ;};
|
||||
|
||||
|
||||
inline G4double GetVoxelHalfDimX(){return fVoxelHalfDimX;};
|
||||
inline G4double GetVoxelHalfDimY() {return fVoxelHalfDimY;};
|
||||
inline G4double GetVoxelHalfDimZ() {return fVoxelHalfDimZ;};
|
||||
|
||||
void SetPhantomSex(G4String);
|
||||
void SetPhantomSection(G4String);
|
||||
|
||||
@@ -68,6 +75,8 @@ class ICRP110PhantomConstruction : public G4VUserDetectorConstruction
|
||||
ICRP110PhantomMaterial_Male* fMaterial_Male;
|
||||
ICRP110PhantomMessenger* fMessenger;
|
||||
// std::vector<G4Material*> fMaterials;
|
||||
G4VPhysicalVolume* fMotherVolume;
|
||||
G4VPhysicalVolume* fPhantomContainer;
|
||||
G4int fNVoxelX;
|
||||
G4int fNVoxelY;
|
||||
G4int fNVoxelZ;
|
||||
|
||||
+32
-40
@@ -23,51 +23,43 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Authors: M. Large, S. Guatelli - University of Wollongong, Australia
|
||||
// This class developed by John Allison, March 2021
|
||||
//
|
||||
//
|
||||
// **********************************
|
||||
// * *
|
||||
// * BrachyMaterial.hh *
|
||||
// * *
|
||||
// **********************************
|
||||
//
|
||||
//Code developed by: Susanna Guatelli, Albert Le
|
||||
//
|
||||
// This class manages the elements and materials
|
||||
//
|
||||
#ifndef BrachyMaterial_H
|
||||
#define BrachyMaterial_H 1
|
||||
|
||||
#include "globals.hh"
|
||||
#ifndef ICRP110PhantomPseudoScene_h
|
||||
#define ICRP110PhantomPseudoScene_h 1
|
||||
|
||||
#include "G4PseudoScene.hh"
|
||||
|
||||
#include "G4Colour.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
|
||||
#include <map>
|
||||
|
||||
class G4PhysicalVolumeModel;
|
||||
class G4Material;
|
||||
|
||||
class BrachyMaterial
|
||||
{
|
||||
class ICRP110PhantomPseudoScene: public G4PseudoScene
|
||||
{
|
||||
public:
|
||||
BrachyMaterial();
|
||||
~ BrachyMaterial();
|
||||
|
||||
public:
|
||||
void DefineMaterials();
|
||||
G4Material* GetMat(G4String); //returns the material
|
||||
|
||||
// Given a world volume, fill a multimap provided by the instantiator
|
||||
ICRP110PhantomPseudoScene
|
||||
(G4PhysicalVolumeModel* // input...the following are outputs
|
||||
,std::multimap<const G4Material*,G4ThreeVector>& positionByMaterial
|
||||
,std::map <const G4Material*,G4Colour>& colourByMaterial);
|
||||
~ICRP110PhantomPseudoScene();
|
||||
using G4PseudoScene::AddSolid; // except for...
|
||||
void AddSolid(const G4Box&);
|
||||
void ProcessVolume(const G4VSolid&);
|
||||
const std::multimap<const G4Material*,G4ThreeVector>& GetPositionByMaterial()
|
||||
{return fPositionByMaterial;}
|
||||
const std::map <const G4Material*,G4Colour>& GetColourByMaterial()
|
||||
{return fColourByMaterial;}
|
||||
private:
|
||||
G4Material* fW;
|
||||
G4Material* fPlexiglass;
|
||||
G4Material* fPb;
|
||||
G4Material* fIr192;
|
||||
G4Material* fTi;
|
||||
G4Material* fAir;
|
||||
G4Material* fH2O;
|
||||
G4Material* fSoft;
|
||||
G4Material* fSteel;
|
||||
G4Material* fMat304steel;
|
||||
G4Material* fAu;
|
||||
G4Material* fI;
|
||||
G4Material* fCeramic;
|
||||
G4Material* fVacuum;
|
||||
G4Material* fBone;
|
||||
G4Material* fMuscle;
|
||||
G4Material* fAg;
|
||||
G4PhysicalVolumeModel* fpPVModel;
|
||||
std::multimap<const G4Material*,G4ThreeVector>& fPositionByMaterial;
|
||||
std::map <const G4Material*,G4Colour>& fColourByMaterial;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Authors: M. Large, S. Guatelli - University of Wollongong, Australia
|
||||
// This class developed by John Allison, March 2021
|
||||
//
|
||||
|
||||
#ifndef ICRP110PhantomVisAction_h
|
||||
#define ICRP110PhantomVisAction_h 1
|
||||
|
||||
#include "G4VUserVisAction.hh"
|
||||
|
||||
#include "G4Colour.hh"
|
||||
|
||||
class G4Material;
|
||||
|
||||
#include <set>
|
||||
|
||||
class ICRP110PhantomConstruction;
|
||||
|
||||
class ICRP110PhantomVisAction: public G4VUserVisAction
|
||||
{
|
||||
public:
|
||||
ICRP110PhantomVisAction(ICRP110PhantomConstruction* dc)
|
||||
: fpDetectorConstruction(dc) {}
|
||||
void Draw();
|
||||
private:
|
||||
ICRP110PhantomConstruction* fpDetectorConstruction;
|
||||
std::multimap<const G4Material*,G4ThreeVector> fPositionByMaterial;
|
||||
std::map <const G4Material*,G4Colour> fColourByMaterial;
|
||||
std::set <const G4Material*> fSetOfMaterials;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -51,6 +51,7 @@
|
||||
#include "ICRP110PhantomNestedParameterisation.hh"
|
||||
|
||||
ICRP110PhantomConstruction::ICRP110PhantomConstruction():
|
||||
fMotherVolume(nullptr), fPhantomContainer(nullptr),
|
||||
fNVoxelX(0), fNVoxelY(0), fNVoxelZ(0),
|
||||
fVoxelHalfDimX(0), fVoxelHalfDimY(0), fVoxelHalfDimZ(0),
|
||||
fMinX(0),fMaxX(0), fMinY(0), fMaxY(0),
|
||||
@@ -214,16 +215,16 @@ if(fSex == "female"){
|
||||
G4double worldSize = 2.*m ;
|
||||
G4Box* world = new G4Box("world", worldSize, worldSize, worldSize);
|
||||
|
||||
G4LogicalVolume* logicWorld = new G4LogicalVolume(world,
|
||||
matAir,
|
||||
"logicalWorld", 0, 0,0);
|
||||
G4LogicalVolume* logicWorld = new G4LogicalVolume(world,
|
||||
matAir,
|
||||
"logicalWorld", 0, 0,0);
|
||||
|
||||
G4VPhysicalVolume* motherVolume = new G4PVPlacement(0,G4ThreeVector(),
|
||||
"physicalWorld",
|
||||
logicWorld,
|
||||
0,
|
||||
false,
|
||||
0);
|
||||
fMotherVolume = new G4PVPlacement(0,G4ThreeVector(),
|
||||
"physicalWorld",
|
||||
logicWorld,
|
||||
0,
|
||||
false,
|
||||
0);
|
||||
|
||||
logicWorld -> SetVisAttributes(G4VisAttributes::GetInvisible());
|
||||
|
||||
@@ -258,7 +259,8 @@ if(fSex == "female"){
|
||||
G4cout << " placing voxel container volume at " << posCentreVoxels << G4endl;
|
||||
|
||||
|
||||
new G4PVPlacement(0, // rotation
|
||||
fPhantomContainer
|
||||
= new G4PVPlacement(0, // rotation
|
||||
posCentreVoxels,
|
||||
fContainer_logic, // The logic volume
|
||||
"phantomContainer", // Name
|
||||
@@ -312,7 +314,7 @@ if(fSex == "female"){
|
||||
param -> SetMaterialIndices(fMateIDs); // fMateIDs is the vector with Material ID associated to each voxel, from ASCII input data files.
|
||||
param -> SetNoVoxel(fNVoxelX,fNVoxelY,fNVoxelZ);
|
||||
|
||||
return motherVolume;
|
||||
return fMotherVolume;
|
||||
}
|
||||
|
||||
void ICRP110PhantomConstruction::ReadPhantomData(const G4String& sex, const G4String& section)
|
||||
@@ -806,4 +808,4 @@ void ICRP110PhantomConstruction::SetPhantomSection(G4String newSection)
|
||||
if ((fSection != "head") && (fSection != "trunk") && (fSection != "full"))
|
||||
G4cout << fSection << " is not defined!" << G4endl;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Code developed by:
|
||||
// S.Guatelli, M. Large and A. Malaroda, University of Wollongong
|
||||
// This class developed by John Allison, March 2021
|
||||
//
|
||||
|
||||
#include "ICRP110PhantomPseudoScene.hh"
|
||||
|
||||
#include "G4PhysicalVolumeModel.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4Material.hh"
|
||||
|
||||
// Given a world volume, fill maps provided by the instantiator
|
||||
ICRP110PhantomPseudoScene::ICRP110PhantomPseudoScene
|
||||
(G4PhysicalVolumeModel* pvm // input...the following are outputs
|
||||
,std::multimap<const G4Material*,G4ThreeVector>& positionByMaterial
|
||||
,std::map <const G4Material*,G4Colour>& colourByMaterial)
|
||||
: fpPVModel(pvm)
|
||||
, fPositionByMaterial(positionByMaterial)
|
||||
, fColourByMaterial (colourByMaterial)
|
||||
{}
|
||||
|
||||
ICRP110PhantomPseudoScene::~ICRP110PhantomPseudoScene()
|
||||
{}
|
||||
|
||||
void ICRP110PhantomPseudoScene::AddSolid(const G4Box&)
|
||||
{
|
||||
const G4Material* material = fpPVModel->GetCurrentLV()->GetMaterial();
|
||||
const G4Colour& colour = fpPVModel->GetCurrentLV()->GetVisAttributes()->GetColour();
|
||||
const G4ThreeVector& position = fpCurrentObjectTransformation->getTranslation();
|
||||
|
||||
// Fill maps for vis action
|
||||
fPositionByMaterial.insert(std::make_pair(material,position));
|
||||
fColourByMaterial[material] = colour;
|
||||
}
|
||||
|
||||
void ICRP110PhantomPseudoScene::ProcessVolume(const G4VSolid&)
|
||||
{
|
||||
G4ExceptionDescription ed;
|
||||
ed << "ICRP110PhantomPseudoScene::ProcessVolume called for solid that is NOT a G4Box.";
|
||||
G4Exception("ICRP110PhantomPseudoScene::ProcessVolume", "ICRP110Phantom_0000",
|
||||
FatalException, ed, "Contact @allison");
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Code developed by:
|
||||
// S.Guatelli, M. Large and A. Malaroda, University of Wollongong
|
||||
// This class developed by John Allison, March 2021
|
||||
//
|
||||
|
||||
#include "ICRP110PhantomVisAction.hh"
|
||||
|
||||
#include "G4VisManager.hh"
|
||||
#include "ICRP110PhantomConstruction.hh"
|
||||
#include "ICRP110PhantomPseudoScene.hh"
|
||||
#include "G4PhysicalVolumeModel.hh"
|
||||
#include "G4Polymarker.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
void ICRP110PhantomVisAction::Draw ()
|
||||
{
|
||||
// Get actual vis manager
|
||||
G4VVisManager* pVisManager = G4VVisManager::GetConcreteInstance();
|
||||
if (!pVisManager) return;
|
||||
|
||||
auto container = fpDetectorConstruction->GetPhantumContainer();
|
||||
|
||||
static G4bool first = true;
|
||||
if (first && container) {
|
||||
first = false;
|
||||
// Use ICRP110PhantomPseudoScene to build dataset in fPositionByColour
|
||||
G4ModelingParameters tmpMP;
|
||||
tmpMP.SetCulling(true); // This avoids drawing transparent...
|
||||
tmpMP.SetCullingInvisible(true); // ... or invisble volumes.
|
||||
const G4bool useFullExtent = true; // To avoid clculating the extent
|
||||
G4PhysicalVolumeModel tmpPVModel
|
||||
(container,
|
||||
G4PhysicalVolumeModel::UNLIMITED,
|
||||
G4Transform3D(),
|
||||
&tmpMP,
|
||||
useFullExtent);
|
||||
ICRP110PhantomPseudoScene tmpScene
|
||||
(&tmpPVModel
|
||||
,fPositionByMaterial
|
||||
,fColourByMaterial);
|
||||
tmpPVModel.DescribeYourselfTo(tmpScene);
|
||||
// Make list of found materials
|
||||
for (const auto& entry: fColourByMaterial) {
|
||||
fSetOfMaterials.insert(entry.first);
|
||||
}
|
||||
for (const auto& material: fSetOfMaterials) {
|
||||
G4cout << "fSetOfMaterials: " << material->GetName() << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
// Seems the quantities in ICRP110PhantomConstruction don't have units
|
||||
const G4double voxelHalfDimX = fpDetectorConstruction->GetVoxelHalfDimX()*mm;
|
||||
const G4double voxelHalfDimY = fpDetectorConstruction->GetVoxelHalfDimY()*mm;
|
||||
const G4double voxelHalfDimZ = fpDetectorConstruction->GetVoxelHalfDimZ()*mm;
|
||||
|
||||
static G4bool firstPrint = true;
|
||||
G4int nDotsTotal = 0;
|
||||
const G4int nDotsPerPositionMin = 1;
|
||||
const G4int nDotsPerPositionMax = 10;
|
||||
const G4double densityMin = 1.*g/cm3;
|
||||
const G4double densityMax = 3.*g/cm3;;
|
||||
for (const auto& material: fSetOfMaterials) {
|
||||
auto& colour = fColourByMaterial[material];
|
||||
G4int nDots = 0;
|
||||
G4Polymarker dots;
|
||||
dots.SetVisAttributes(G4Colour(colour));
|
||||
dots.SetMarkerType(G4Polymarker::dots);
|
||||
dots.SetSize(G4VMarker::screen,1.);
|
||||
dots.SetInfo(material->GetName());
|
||||
const G4double currentDensity = material->GetDensity();
|
||||
const auto range = fPositionByMaterial.equal_range(material);
|
||||
for (auto posByMat = range.first; posByMat != range.second; ++posByMat) {
|
||||
G4int nDotsPerPosition
|
||||
= nDotsPerPositionMin
|
||||
+ (nDotsPerPositionMax-nDotsPerPositionMin)
|
||||
*(currentDensity-densityMin)/(densityMax-densityMin);
|
||||
nDotsPerPosition = std::max(nDotsPerPositionMin,nDotsPerPosition);
|
||||
nDotsPerPosition = std::min(nDotsPerPositionMax,nDotsPerPosition);
|
||||
for (G4int i = 0; i < nDotsPerPosition; ++i) {
|
||||
const G4double x = posByMat->second.getX() + (2.*G4UniformRand()-1.)*voxelHalfDimX;
|
||||
const G4double y = posByMat->second.getY() + (2.*G4UniformRand()-1.)*voxelHalfDimY;
|
||||
const G4double z = posByMat->second.getZ() + (2.*G4UniformRand()-1.)*voxelHalfDimZ;
|
||||
dots.push_back(G4ThreeVector(x,y,z));
|
||||
++nDots;
|
||||
}
|
||||
}
|
||||
pVisManager->Draw(dots);
|
||||
if (firstPrint) {
|
||||
G4cout
|
||||
<< "Number of dots for material " << material->GetName()
|
||||
<< ", colour " << colour
|
||||
<< ": " << nDots << G4endl;
|
||||
}
|
||||
nDotsTotal += nDots;
|
||||
}
|
||||
if (firstPrint) {
|
||||
G4cout << "Total number of dots: " << nDotsTotal << G4endl;
|
||||
firstPrint = false;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
# Use this open statement to create an OpenGL view:
|
||||
/phantom/setPhantomSection head
|
||||
|
||||
/run/initialize
|
||||
|
||||
#/vis/open OGLSX
|
||||
/vis/open OGL 600x600-0+0
|
||||
#
|
||||
@@ -23,28 +25,52 @@
|
||||
# Define background colour (comment out for black as default)
|
||||
#/vis/viewer/set/background white
|
||||
#
|
||||
# Draw geometry:
|
||||
/vis/drawVolume worlds
|
||||
# Draw phantom
|
||||
/vis/drawVolume
|
||||
#
|
||||
#
|
||||
# Alternatively comment out "/vis/drawVolume" and un-comment the following
|
||||
# commands
|
||||
# Temporarily switch culling off so even a "transparent/invisible" volume
|
||||
# is drawn
|
||||
#/vis/viewer/set/culling global false
|
||||
# phantomContainer is transparent - but defines "extent"
|
||||
#/vis/drawVolume phantomContainer ! 0
|
||||
#/vis/viewer/set/culling global true
|
||||
# Add vis user action
|
||||
#/vis/scene/add/userAction
|
||||
# You could try making all materials (except air) opaque (last quantity) in
|
||||
# ColorMap.dat.
|
||||
# You could try "/vis/viewer/interpolate g4views/* 200", which runs a cutaway
|
||||
# plane through the head, based on 2 view files - g4_00.g4view and
|
||||
# g4_01.g4view in subdirectory g4views.
|
||||
# (See examples/extended/visualization/movies for how to create view
|
||||
# files for interpolation.)
|
||||
# Also you may visualise the whole body by changing "head" to "full"
|
||||
# at the head of this file before /run/initialize.
|
||||
#
|
||||
#
|
||||
# Specify view angle:
|
||||
/vis/viewer/set/viewpointThetaPhi 85 -75 deg
|
||||
#/vis/viewer/set/lightsMove with-camera
|
||||
#
|
||||
# Set Voxels number to be visualised
|
||||
/vis/ogl/set/displayListLimit 4000000
|
||||
/vis/ogl/set/displayListLimit 9999999
|
||||
|
||||
# Specify zoom value:
|
||||
#/vis/viewer/zoom 2.
|
||||
#
|
||||
# Specify style (surface or wireframe):
|
||||
# Specify style (surface or wireframe, etc.):
|
||||
#/vis/viewer/set/style wireframe
|
||||
/vis/viewer/set/rotationStyle freeRotation
|
||||
/vis/viewer/set/hiddenMarker true
|
||||
#
|
||||
# Draw coordinate axes:
|
||||
#/vis/scene/add/axes 0 0 0 1 m
|
||||
/vis/scene/add/axes
|
||||
#
|
||||
# Draw smooth trajectories at end of event, showing trajectory points
|
||||
# Draw trajectories at end of event, showing trajectory points
|
||||
# as markers 2 pixels wide:
|
||||
/vis/scene/add/trajectories smooth
|
||||
/vis/scene/add/trajectories
|
||||
/vis/modeling/trajectories/create/drawByCharge
|
||||
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
|
||||
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
|
||||
|
||||
@@ -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(STCyclotron)
|
||||
#----------------------------------------------------------------------------
|
||||
# Find Geant4 package, activating all available UI and Vis drivers by default
|
||||
|
||||
@@ -8,11 +8,21 @@
|
||||
Category History file
|
||||
---------------------
|
||||
|
||||
21.04.2021 - Gabriele Cosmo STCyclotron-V10-06-04
|
||||
22.06.2021 - Gabriele Cosmo (STCyclotron-V10-07-04)
|
||||
- Use new CLHEP units for minute, hour, day, year in STCyclotronPhysicsList.
|
||||
|
||||
26.05.2021 - Dennis Wright (STCyclotron-V10-07-03)
|
||||
- STCyclotronSensitiveTarget.cc: remove #include of deprecated file
|
||||
G4RadioactiveDecay.hh
|
||||
|
||||
24.05.2021 - B. Morgan (STCyclotron-V10-07-02)
|
||||
- Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
21.04.2021 - Gabriele Cosmo STCyclotron-V10-07-01
|
||||
- Fixed gui.mac macro to invoke init_parameters.mac.
|
||||
Addressing GitHub PR#25.
|
||||
|
||||
18.03.2021 - Gunter Folger STCyclotron-V10-06-03
|
||||
18.03.2021 - Gunter Folger STCyclotron-V10-07-00
|
||||
- Update README to recommend G4TENDL 1.3.2
|
||||
|
||||
12.11.2020 - S. Guatelli STCyclotron-V10-06-02
|
||||
|
||||
@@ -61,20 +61,8 @@
|
||||
#include "G4NuclideTable.hh"
|
||||
|
||||
STCyclotronPhysicsList::STCyclotronPhysicsList(STCyclotronDetectorConstruction* det)
|
||||
: G4VModularPhysicsList(){
|
||||
|
||||
//add new units for radioActive decays
|
||||
|
||||
new G4UnitDefinition( "millielectronVolt", "meV", "Energy", 1.e-3*eV);
|
||||
const G4double minute = 60*second;
|
||||
const G4double hour = 60*minute;
|
||||
const G4double day = 24*hour;
|
||||
const G4double year = 365*day;
|
||||
new G4UnitDefinition("minute", "min", "Time", minute);
|
||||
new G4UnitDefinition("hour", "h", "Time", hour);
|
||||
new G4UnitDefinition("day", "d", "Time", day);
|
||||
new G4UnitDefinition("year", "y", "Time", year);
|
||||
|
||||
: G4VModularPhysicsList()
|
||||
{
|
||||
// Mandatory for G4NuclideTable
|
||||
// Half-life threshold must be set small or many short-lived isomers
|
||||
// will not be assigned life times (default to 0)
|
||||
|
||||
@@ -45,7 +45,6 @@
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4DecayTable.hh"
|
||||
#include "G4VDecayChannel.hh"
|
||||
#include "G4RadioactiveDecay.hh"
|
||||
#include "G4TrackVector.hh"
|
||||
#include "G4VProcess.hh"
|
||||
#include "G4Tubs.hh"
|
||||
|
||||
@@ -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(air_shower)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@@ -6,13 +6,15 @@
|
||||
|
||||
History file
|
||||
------------
|
||||
|
||||
14.11.2020 - S. Guatelli(air_shower-V10-06-04)
|
||||
Migration to G4RunFactoryManager
|
||||
24.05.2021 - B. Morgan (air_shower-V10-07-00)
|
||||
Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
14.11.2020 - S. Guatelli(air_shower-V10-06-04)
|
||||
Migration to G4RunFactoryManager
|
||||
|
||||
05.11.2020 - B.Tome (air_shower-V10-06-03)
|
||||
Output results histograms to ROOT file
|
||||
Add ROOT macro file to plot histograms
|
||||
Add ROOT macro file to plot histograms
|
||||
|
||||
03.11.2020 - D.Sawkey (air_shower-V10-06-02)
|
||||
Create material properties using std::vectors
|
||||
|
||||
@@ -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
|
||||
@@ -188,48 +194,48 @@ physicsList->setCut() start.
|
||||
phot: for gamma SubType=12 BuildTable=0
|
||||
LambdaPrime table from 200 keV to 100 TeV in 61 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, 7 bins/decade, spline: 1
|
||||
LambdaPrime table from 1 MeV to 100 TeV in 56 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Klein-Nishina : Emin= 0 eV Emax= 100 TeV
|
||||
Klein-Nishina : Emin= 0 meV Emax= 100 TeV
|
||||
|
||||
conv: for gamma SubType=14 BuildTable=1
|
||||
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BetheHeitlerLPM : Emin= 0 eV Emax= 100 TeV ModifiedTsai
|
||||
BetheHeitlerLPM : Emin= 0 meV Emax= 100 TeV ModifiedTsai
|
||||
|
||||
Rayl: for gamma SubType=11 BuildTable=1
|
||||
Lambda table from 100 eV to 100 keV, 7 bins/decade, spline: 0
|
||||
LambdaPrime table from 100 keV to 100 TeV in 63 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 ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llimit=1
|
||||
UrbanMsc : Emin= 0 meV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llimit=1
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MollerBhabha : Emin= 0 eV Emax= 100 TeV
|
||||
MollerBhabha : Emin= 0 meV Emax= 100 TeV
|
||||
|
||||
eBrem: for e- SubType=3
|
||||
eBrem: for e- XStype:4 SubType=3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 ModifiedTsai
|
||||
eBremSB : Emin= 0 meV Emax= 1 GeV ModifiedTsai
|
||||
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
|
||||
|
||||
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, 7 bins/decade, spline: 1
|
||||
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -237,31 +243,31 @@ CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
|
||||
|
||||
msc: for e+ SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llimit=1
|
||||
UrbanMsc : Emin= 0 meV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llimit=1
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MollerBhabha : Emin= 0 eV Emax= 100 TeV
|
||||
MollerBhabha : Emin= 0 meV Emax= 100 TeV
|
||||
|
||||
eBrem: for e+ SubType=3
|
||||
eBrem: for e+ XStype:4 SubType=3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 ModifiedTsai
|
||||
eBremSB : Emin= 0 meV Emax= 1 GeV ModifiedTsai
|
||||
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
|
||||
|
||||
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, 7 bins/decade, spline: 1
|
||||
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -269,288 +275,288 @@ 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=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 2 MeV
|
||||
Bragg : Emin= 0 meV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 100 TeV
|
||||
|
||||
hBrems: for proton SubType=3
|
||||
hBrems: for proton XStype:1 SubType=3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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, 7 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 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:0 Skin=1 Llimit=1
|
||||
UrbanMsc : Emin= 0 meV Emax= 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.02
|
||||
Stopping Power data for 17 ion/material pairs
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BraggIon : Emin= 0 eV Emax= 2 MeV
|
||||
BraggIon : Emin= 0 meV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 100 TeV
|
||||
|
||||
msc: for alpha SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
UrbanMsc : Emin= 0 meV Emax= 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.02
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BraggIon : Emin= 0 eV Emax=7.9452 MeV
|
||||
BraggIon : Emin= 0 meV Emax=7.9452 MeV
|
||||
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV
|
||||
|
||||
msc: for anti_proton SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 2 MeV
|
||||
ICRU73QO : Emin= 0 meV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 100 TeV
|
||||
|
||||
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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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, 7 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=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax=1.05231 MeV
|
||||
Bragg : Emin= 0 meV Emax=1.05231 MeV
|
||||
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
|
||||
|
||||
hBrems: for kaon+ SubType=3
|
||||
hBrems: for kaon+ XStype:1 SubType=3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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, 7 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=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV
|
||||
ICRU73QO : Emin= 0 meV Emax=1.05231 MeV
|
||||
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
|
||||
|
||||
hBrems: for kaon- SubType=3
|
||||
hBrems: for kaon- XStype:1 SubType=3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 200 keV
|
||||
Bragg : Emin= 0 meV Emax= 200 keV
|
||||
BetheBloch : Emin= 200 keV Emax= 1 GeV
|
||||
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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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, 7 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=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 200 keV
|
||||
ICRU73QO : Emin= 0 meV Emax= 200 keV
|
||||
BetheBloch : Emin= 200 keV Emax= 1 GeV
|
||||
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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax=297.505 keV
|
||||
Bragg : Emin= 0 meV Emax=297.505 keV
|
||||
BetheBloch : Emin=297.505 keV Emax= 100 TeV
|
||||
|
||||
hBrems: for pi+ SubType=3
|
||||
hBrems: for pi+ XStype:1 SubType=3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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, 7 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=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llimit=1
|
||||
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
|
||||
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
|
||||
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax=297.505 keV
|
||||
ICRU73QO : Emin= 0 meV Emax=297.505 keV
|
||||
BetheBloch : Emin=297.505 keV Emax= 100 TeV
|
||||
|
||||
hBrems: for pi- SubType=3
|
||||
hBrems: for pi- XStype:1 SubType=3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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 84 bins
|
||||
Lambda tables from threshold to 100 TeV, 7 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
|
||||
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- -- appears in <World> world volume
|
||||
This region is in the mass world.
|
||||
@@ -620,8 +626,8 @@ See commands in /vis/modeling/trajectories/ for other options.
|
||||
ooo Run 0 starts (global).
|
||||
|
||||
--------- Ranlux engine status ---------
|
||||
Initial seed = 1623139744
|
||||
float_seed_table[] = 0.321051 0.703891 0.623028 0.90283 0.918803 0.131837 0.342942 0.572057 0.402445 0.552796 0.767171 0.742507 0.79422 0.927811 0.441404 0.5084 0.231716 0.00218672 0.591102 0.361275 0.165952 0.497306 0.286562 0.612128
|
||||
Initial seed = 1624405979
|
||||
float_seed_table[] = 0.317296 0.389101 0.631632 0.285013 0.520975 0.306073 0.238364 0.906989 0.29402 0.125726 0.945472 0.20919 0.531815 0.144216 0.802618 0.980342 0.576209 0.432081 0.279602 0.129886 0.270921 0.759642 0.522357 0.66217
|
||||
i_lag = 23, j_lag = 9
|
||||
carry = 0, count24 = 0
|
||||
luxury = 3 nskip = 199
|
||||
@@ -632,7 +638,7 @@ mu- Mono Plane
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100
|
||||
User=2.140000s Real=2.283902s Sys=0.000000s
|
||||
User=0.050000s Real=0.089928s Sys=0.000000s
|
||||
### Run 0 (global) ended.
|
||||
0 events have been kept for refreshing and/or reviewing.
|
||||
"/vis/reviewKeptEvents" to review them one by one.
|
||||
@@ -643,6 +649,8 @@ G4 kernel has come to Quit state.
|
||||
UserDetectorConstruction deleted.
|
||||
UserPhysicsList deleted.
|
||||
UserActionInitialization deleted.
|
||||
UserWorkerInitialization deleted.
|
||||
UserWorkerThreadInitialization deleted.
|
||||
UserRunAction deleted.
|
||||
UserPrimaryGenerator deleted.
|
||||
RunManager is deleting RunManagerKernel.
|
||||
@@ -651,6 +659,7 @@ EventManager deleted.
|
||||
Units table cleared.
|
||||
TransportationManager deleted.
|
||||
Total navigation history collections cleaned: 10
|
||||
G4RNGHelper object is deleted.
|
||||
================== Deleting memory pools ===================
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.0135 MB
|
||||
Pool ID '24G4ReferenceCountedHandleIvE', size : 0.000961 MB
|
||||
@@ -659,15 +668,16 @@ Pool ID '15G4PrimaryVertex', size : 0.000961 MB
|
||||
Pool ID '17G4PrimaryParticle', size : 0.000961 MB
|
||||
Pool ID '15G4HCofThisEvent', size : 0.000961 MB
|
||||
Pool ID '16G4HitsCollection', size : 0.000961 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.024 MB
|
||||
Pool ID '7G4Track', size : 0.0481 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.0202 MB
|
||||
Pool ID '7G4Track', size : 0.0404 MB
|
||||
Pool ID '18G4TouchableHistory', size : 0.000961 MB
|
||||
Pool ID '15G4CountedObjectIvE', size : 0.000961 MB
|
||||
Pool ID '15UltraOpticalHit', size : 0.00385 MB
|
||||
Pool ID '15UltraOpticalHit', size : 0.00673 MB
|
||||
Number of memory pools allocated: 12 of which, static: 0
|
||||
Dynamic pools deleted: 12 / Total memory freed: 0.097 MB
|
||||
Dynamic pools deleted: 12 / Total memory freed: 0.088 MB
|
||||
============================================================
|
||||
G4Allocator objects are deleted.
|
||||
UImanager deleted.
|
||||
StateManager deleted.
|
||||
RunManagerKernel is deleted. Good bye :)
|
||||
RunManager is deleted.
|
||||
|
||||
@@ -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(amsEcal)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@@ -13,6 +13,11 @@ track of all tags.
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
24-05-21, B. Morgan (amsEcal-V10-07-01)
|
||||
- Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
16-05-21 mma (amsEcal-V10-07-00)
|
||||
- Migration to G4RunManagerFactory and G4SteppingVerboseWithUnits.
|
||||
|
||||
02-11-20 Ben Morgan (amsEcal-V10-06-00)
|
||||
- Support same CMake version range as core Geant4
|
||||
|
||||
@@ -33,19 +33,14 @@
|
||||
|
||||
#include "G4Types.hh"
|
||||
|
||||
#ifdef G4MULTITHREADED
|
||||
#include "G4MTRunManager.hh"
|
||||
#else
|
||||
#include "G4RunManager.hh"
|
||||
#endif
|
||||
|
||||
#include "G4RunManagerFactory.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4SteppingVerbose.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
#include "DetectorConstruction.hh"
|
||||
#include "PhysicsList.hh"
|
||||
#include "ActionInitialization.hh"
|
||||
#include "SteppingVerbose.hh"
|
||||
|
||||
#include "G4UIExecutive.hh"
|
||||
#include "G4VisExecutive.hh"
|
||||
@@ -61,19 +56,18 @@ int main(int argc,char** argv) {
|
||||
//choose the Random engine
|
||||
G4Random::setTheEngine(new CLHEP::RanecuEngine);
|
||||
|
||||
// Construct the default run manager
|
||||
#ifdef G4MULTITHREADED
|
||||
G4MTRunManager* runManager = new G4MTRunManager;
|
||||
// Number of threads can be defined via 3rd argument
|
||||
if (argc==3) {
|
||||
G4int nThreads = G4UIcommand::ConvertToInt(argv[2]);
|
||||
if(nThreads > 0) { runManager->SetNumberOfThreads(nThreads); }
|
||||
//Use SteppingVerbose with Unit
|
||||
G4int precision = 4;
|
||||
G4SteppingVerbose::UseBestUnit(precision);
|
||||
|
||||
//Creating run manager
|
||||
auto runManager = G4RunManagerFactory::CreateRunManager();
|
||||
|
||||
if (argc==3) {
|
||||
G4int nThreads = G4UIcommand::ConvertToInt(argv[2]);
|
||||
runManager->SetNumberOfThreads(nThreads);
|
||||
}
|
||||
#else
|
||||
G4VSteppingVerbose::SetInstance(new SteppingVerbose);
|
||||
G4RunManager* runManager = new G4RunManager;
|
||||
#endif
|
||||
|
||||
|
||||
//set mandatory initialization classes
|
||||
DetectorConstruction* detector = new DetectorConstruction;
|
||||
runManager->SetUserInitialization(detector);
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
#include "G4VUserActionInitialization.hh"
|
||||
|
||||
class DetectorConstruction;
|
||||
class G4VSteppingVerbose;
|
||||
|
||||
/// Action initialization class.
|
||||
///
|
||||
@@ -42,16 +41,13 @@ class ActionInitialization : public G4VUserActionInitialization
|
||||
{
|
||||
public:
|
||||
ActionInitialization(DetectorConstruction*);
|
||||
virtual ~ActionInitialization();
|
||||
~ActionInitialization() override;
|
||||
|
||||
virtual void BuildForMaster() const;
|
||||
virtual void Build() const;
|
||||
|
||||
virtual G4VSteppingVerbose* InitializeSteppingVerbose() const;
|
||||
void BuildForMaster() const override;
|
||||
void Build() const override;
|
||||
|
||||
private:
|
||||
DetectorConstruction* fDetector;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Forcing G4RunManager type...
|
||||
|
||||
############################################
|
||||
!!! 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
|
||||
@@ -145,19 +152,19 @@ Start closing geometry.
|
||||
G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
|
||||
Total memory consumed for geometry optimisation: 32 kByte
|
||||
Total CPU time elapsed for geometry optimisation: 0 seconds
|
||||
Total CPU time elapsed for geometry optimisation: 0.01 seconds
|
||||
|
||||
Voxelisation: top CPU users:
|
||||
Percent Total CPU System CPU Memory Volume
|
||||
------- ---------- ---------- -------- ----------
|
||||
0.00 0.00 0.00 31k layer
|
||||
100.00 0.01 0.00 31k layer
|
||||
0.00 0.00 0.00 1k module
|
||||
0.00 0.00 0.00 1k calorimeter
|
||||
|
||||
Voxelisation: top memory users:
|
||||
Percent Memory Heads Nodes Pointers Total CPU Volume
|
||||
------- -------- ------ ------ -------- ---------- ----------
|
||||
94.74 30k 1 490 980 0.00 layer
|
||||
94.74 30k 1 490 980 0.01 layer
|
||||
3.16 1k 1 17 20 0.00 module
|
||||
2.10 0k 1 10 18 0.00 calorimeter
|
||||
### Run 0 starts.
|
||||
@@ -179,7 +186,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10000
|
||||
User=7.700000s Real=8.251293s Sys=0.010000s
|
||||
User=6.370000s Real=6.668766s Sys=0.000000s
|
||||
|
||||
-------------------------------------------------------------
|
||||
---> The calorimeter is 9 Modules
|
||||
@@ -307,13 +314,17 @@ G4 kernel has come to Quit state.
|
||||
UserDetectorConstruction deleted.
|
||||
UserPhysicsList deleted.
|
||||
UserActionInitialization deleted.
|
||||
UserWorkerInitialization deleted.
|
||||
UserWorkerThreadInitialization deleted.
|
||||
UserRunAction deleted.
|
||||
UserPrimaryGenerator deleted.
|
||||
RunManager is deleting RunManagerKernel.
|
||||
G4SDManager deleted.
|
||||
EventManager deleted.
|
||||
Units table cleared.
|
||||
TransportationManager deleted.
|
||||
Total navigation history collections cleaned: 7
|
||||
G4RNGHelper object is deleted.
|
||||
================== Deleting memory pools ===================
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.00865 MB
|
||||
Pool ID '24G4ReferenceCountedHandleIvE', size : 0.000961 MB
|
||||
@@ -331,3 +342,4 @@ G4Allocator objects are deleted.
|
||||
UImanager deleted.
|
||||
StateManager deleted.
|
||||
RunManagerKernel is deleted. Good bye :)
|
||||
RunManager is deleted.
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
#include "EventAction.hh"
|
||||
#include "TrackingAction.hh"
|
||||
#include "SteppingAction.hh"
|
||||
#include "SteppingVerbose.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -74,10 +73,3 @@ void ActionInitialization::Build() const
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VSteppingVerbose* ActionInitialization::InitializeSteppingVerbose() const
|
||||
{
|
||||
return new SteppingVerbose();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,157 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/// \file radioactivedecay/rdecay01/src/SteppingVerbose.cc
|
||||
/// \brief Implementation of the SteppingVerbose class
|
||||
//
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "SteppingVerbose.hh"
|
||||
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
SteppingVerbose::SteppingVerbose()
|
||||
: G4SteppingVerbose()
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
SteppingVerbose::~SteppingVerbose()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void SteppingVerbose::TrackingStarted()
|
||||
{
|
||||
CopyState();
|
||||
|
||||
G4int prec = G4cout.precision(3);
|
||||
|
||||
//Step zero
|
||||
//
|
||||
if( verboseLevel > 0 ){
|
||||
G4cout << std::setw( 5) << "Step#" << " "
|
||||
<< std::setw( 6) << "X" << " "
|
||||
<< std::setw( 6) << "Y" << " "
|
||||
<< std::setw( 6) << "Z" << " "
|
||||
<< std::setw( 9) << "KineE" << " "
|
||||
<< std::setw( 9) << "dEStep" << " "
|
||||
<< std::setw(10) << "StepLeng"
|
||||
<< std::setw(10) << "TrakLeng"
|
||||
<< std::setw(10) << "Volume" << " "
|
||||
<< std::setw(10) << "Process" << G4endl;
|
||||
|
||||
G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " "
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
|
||||
<< std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
|
||||
<< std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
|
||||
<< std::setw(10) << fTrack->GetVolume()->GetName()
|
||||
<< " initStep" << G4endl;
|
||||
}
|
||||
G4cout.precision(prec);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void SteppingVerbose::StepInfo()
|
||||
{
|
||||
CopyState();
|
||||
|
||||
G4int prec = G4cout.precision(3);
|
||||
|
||||
if( verboseLevel >= 1 ){
|
||||
if( verboseLevel >= 4 ) VerboseTrack();
|
||||
if( verboseLevel >= 3 ){
|
||||
G4cout << G4endl;
|
||||
G4cout << std::setw( 5) << "#Step#" << " "
|
||||
<< std::setw( 6) << "X" << " "
|
||||
<< std::setw( 6) << "Y" << " "
|
||||
<< std::setw( 6) << "Z" << " "
|
||||
<< std::setw( 9) << "KineE" << " "
|
||||
<< std::setw( 9) << "dEStep" << " "
|
||||
<< std::setw(10) << "StepLeng"
|
||||
<< std::setw(10) << "TrakLeng"
|
||||
<< std::setw(10) << "Volume" << " "
|
||||
<< std::setw(10) << "Process" << G4endl;
|
||||
}
|
||||
|
||||
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
|
||||
<< std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
|
||||
<< std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
|
||||
<< std::setw(10) << fTrack->GetVolume()->GetName();
|
||||
|
||||
const G4VProcess* process
|
||||
= fStep->GetPostStepPoint()->GetProcessDefinedStep();
|
||||
G4String procName = " UserLimit";
|
||||
if (process) procName = process->GetProcessName();
|
||||
if (fStepStatus == fWorldBoundary) procName = "OutOfWorld";
|
||||
G4cout << " " << std::setw(10) << procName;
|
||||
G4cout << G4endl;
|
||||
|
||||
if (verboseLevel == 2) {
|
||||
const std::vector<const G4Track*>* secondary
|
||||
= fStep->GetSecondaryInCurrentStep();
|
||||
size_t nbtrk = (*secondary).size();
|
||||
if (nbtrk) {
|
||||
G4cout << "\n :----- List of secondaries ----------------" << G4endl;
|
||||
G4cout.precision(4);
|
||||
for (size_t lp=0; lp<(*secondary).size(); lp++) {
|
||||
G4cout << " "
|
||||
<< std::setw(13)
|
||||
<< (*secondary)[lp]->GetDefinition()->GetParticleName()
|
||||
<< ": energy ="
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*secondary)[lp]->GetKineticEnergy(),"Energy")
|
||||
<< " time ="
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*secondary)[lp]->GetGlobalTime(),"Time");
|
||||
G4cout << G4endl;
|
||||
}
|
||||
|
||||
G4cout << " :------------------------------------------\n" << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
G4cout.precision(prec);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -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(Brachy)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@@ -7,6 +7,15 @@
|
||||
|
||||
Category History file
|
||||
---------------------
|
||||
24.05.2021 - B. Morgan; brachy-V10-07-01
|
||||
Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
12.02.2021 - S. Guatelli; brachy-V10-07-00
|
||||
Cleaning of the code. Use C++11 keywords and patterns.
|
||||
Remove BrachyMaterial class. Materials implemented now
|
||||
using NIST Material Manager of Geant4. Remove SetCuts from
|
||||
the local PhysicsList as it is not thread-safe.
|
||||
|
||||
12.11.2020 - S. Guatelli; brachy-V10-06-03
|
||||
Migration to G4RunManagerFactory
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -80,16 +86,17 @@ Checking overlaps for volume phys_iridium_core (G4Tubs) ... OK!
|
||||
/run/verbose 0
|
||||
/event/verbose 0
|
||||
/source/switch Flexi
|
||||
Now the source is Flexi
|
||||
Now the brachy source is Flexi
|
||||
/run/geometryModified
|
||||
Old Source is deleted ...
|
||||
Old brachy source is deleted ...
|
||||
G4Material WARNING: duplicate name of material Stainless steel 304
|
||||
Checking overlaps for volume phys_steel_shell (G4Tubs) ... OK!
|
||||
Checking overlaps for volume phys_air_gap (G4Tubs) ... OK!
|
||||
Checking overlaps for volume phys_End1_steel_shell (G4Tubs) ... OK!
|
||||
Checking overlaps for volume phys_End2_steel_shell (G4Cons) ... OK!
|
||||
Checking overlaps for volume phys_cable (G4Tubs) ... OK!
|
||||
Checking overlaps for volume phys_iridium_core (G4Tubs) ... OK!
|
||||
... New source is created ...
|
||||
New brachy source is created ...
|
||||
/run/geometryModified
|
||||
/control/execute iridium_source_primary.mac
|
||||
/gps/ene/type Arb
|
||||
@@ -238,63 +245,63 @@ G4ScoringBox : boxMesh_4 --- Shape: Box mesh
|
||||
|
||||
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
|
||||
DefaultRegionForTheWorld 1 1 0
|
||||
### === Auger cascade flag: 1
|
||||
### === Auger flag: 1
|
||||
### === Ignore cuts flag: 1
|
||||
|
||||
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 ======
|
||||
@@ -302,38 +309,38 @@ CoulombScat: for e-, integral:1 SubType=1 BuildTable=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 ======
|
||||
@@ -341,56 +348,56 @@ 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
|
||||
===== Limit on energy threshold has been applied
|
||||
|
||||
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
|
||||
======================================================================
|
||||
====== Radioactive Decay Physics Parameters =======
|
||||
======================================================================
|
||||
@@ -404,269 +411,270 @@ Auger electron emission enabled 1
|
||||
Auger cascade enabled 1
|
||||
Check EM cuts disabled for atomic de-excitation 1
|
||||
Use Bearden atomic level energies 0
|
||||
Threshold for very long decay time at rest 1e+27 ns
|
||||
======================================================================
|
||||
|
||||
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
|
||||
===== Limit on energy threshold has been applied
|
||||
|
||||
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
|
||||
===== Limit on energy threshold has been applied
|
||||
|
||||
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
|
||||
===== Limit on energy threshold has been applied
|
||||
|
||||
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
|
||||
===== Limit on energy threshold has been applied
|
||||
|
||||
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
|
||||
===== Limit on energy threshold has been applied
|
||||
|
||||
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
|
||||
===== Limit on energy threshold has been applied
|
||||
|
||||
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
|
||||
===== Limit on energy threshold has been applied
|
||||
|
||||
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
|
||||
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
|
||||
|
||||
========= Table of registered couples ============================
|
||||
|
||||
Index : 0 used in the geometry : Yes
|
||||
Material : Air
|
||||
Material : G4_AIR
|
||||
Range cuts : gamma 50 um e- 50 um e+ 50 um proton 50 um
|
||||
Energy thresholds : gamma 250 eV e- 250 eV e+ 250 eV proton 5 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 1 used in the geometry : Yes
|
||||
Material : Water
|
||||
Material : G4_WATER
|
||||
Range cuts : gamma 50 um e- 50 um e+ 50 um proton 50 um
|
||||
Energy thresholds : gamma 250 eV e- 57.2461 keV e+ 56.4171 keV proton 5 keV
|
||||
Region(s) which use this couple :
|
||||
@@ -675,12 +683,12 @@ Index : 1 used in the geometry : Yes
|
||||
Index : 2 used in the geometry : Yes
|
||||
Material : Stainless steel 304
|
||||
Range cuts : gamma 50 um e- 50 um e+ 50 um proton 50 um
|
||||
Energy thresholds : gamma 4.39316 keV e- 154.358 keV e+ 151.017 keV proton 5 keV
|
||||
Energy thresholds : gamma 4.34536 keV e- 155.488 keV e+ 151.017 keV proton 5 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 3 used in the geometry : Yes
|
||||
Material : Iridium
|
||||
Material : G4_Ir
|
||||
Range cuts : gamma 50 um e- 50 um e+ 50 um proton 50 um
|
||||
Energy thresholds : gamma 26.8116 keV e- 240.851 keV e+ 233.926 keV proton 5 keV
|
||||
Region(s) which use this couple :
|
||||
|
||||
@@ -35,7 +35,7 @@ class G4GeneralParticleSource;
|
||||
class BrachyActionInitialization: public G4VUserActionInitialization
|
||||
{
|
||||
public:
|
||||
BrachyActionInitialization();
|
||||
explicit BrachyActionInitialization();
|
||||
virtual ~BrachyActionInitialization();
|
||||
virtual void BuildForMaster() const;
|
||||
virtual void Build() const;
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
/*
|
||||
Author: Susanna Guatelli
|
||||
Author: Susanna Guatelli, susanna@uow.edu.au
|
||||
|
||||
The class BrachyAnalysisManager creates and manages histograms and ntuples
|
||||
*/
|
||||
|
||||
@@ -28,64 +28,59 @@
|
||||
// * BrachyDetectorConstruction.hh *
|
||||
// * *
|
||||
// ****************************************
|
||||
// This class manages the geometry of the simulation experimental set-up
|
||||
//
|
||||
// S. Guatelli, A. Le
|
||||
// S. Guatelli, A. Le, University of Wollongong
|
||||
|
||||
#ifndef BrachyDetectorConstruction_H
|
||||
#define BrachyDetectorConstruction_H 1
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
class BrachyDetectorMessenger;
|
||||
class BrachyFactory;
|
||||
class G4LogicalVolume;
|
||||
class G4Material;
|
||||
class G4Box;
|
||||
class G4Colour;
|
||||
class G4VPhysicalVolume;
|
||||
class G4VPhysicalVolume;
|
||||
class BrachyMaterial;
|
||||
class BrachyFactory;
|
||||
|
||||
class BrachyDetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
|
||||
BrachyDetectorConstruction();
|
||||
explicit BrachyDetectorConstruction();
|
||||
~BrachyDetectorConstruction();
|
||||
|
||||
G4VPhysicalVolume* Construct();
|
||||
void SwitchBrachytherapicSeed(); //Change radiactive source through GUI
|
||||
G4VPhysicalVolume* Construct() override;
|
||||
void SwitchBrachytherapicSeed(); //Change brachy source through GUI
|
||||
void SelectBrachytherapicSeed(G4String val);
|
||||
void ConstructPhantom();
|
||||
void PrintDetectorParameters();
|
||||
void SetPhantomMaterial(G4String);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
G4int fDetectorChoice; //Select brachytherapic seed
|
||||
BrachyFactory* fFactory;
|
||||
|
||||
// World ...
|
||||
BrachyDetectorMessenger* fDetectorMessenger;
|
||||
|
||||
G4Box* fWorld; //pointer to the solid World
|
||||
G4LogicalVolume* fWorldLog; //pointer to the logical World
|
||||
G4VPhysicalVolume* fWorldPhys; //pointer to the physical World
|
||||
|
||||
// Phantom ...
|
||||
G4Box* fPhantom; //pointer to solid phantom
|
||||
G4LogicalVolume* fPhantomLog; //pointer to logic phantom
|
||||
G4VPhysicalVolume* fPhantomPhys; //pointer to physical phantom
|
||||
G4Material* fPhantomAbsorberMaterial;
|
||||
|
||||
G4double fPhantomSizeX; //Phantom XSize
|
||||
G4double fPhantomSizeY; //Phantom YSize
|
||||
G4double fPhantomSizeZ; //Phantom ZSize
|
||||
G4double fWorldSizeX ; //World XSize
|
||||
G4double fWorldSizeY ; //World YSize
|
||||
G4double fWorldSizeZ ; //World XSize
|
||||
BrachyDetectorMessenger* fDetectorMessenger;
|
||||
BrachyMaterial* fMaterial;
|
||||
G4double fPhantomSizeX; //Phantom X Size
|
||||
G4double fPhantomSizeY; //Phantom Y Size
|
||||
G4double fPhantomSizeZ; //Phantom Z Size
|
||||
|
||||
G4double fWorldSizeX; //World X Size
|
||||
G4double fWorldSizeY; //World Y Size
|
||||
G4double fWorldSizeZ; //World X Size
|
||||
|
||||
G4int fDetectorChoice; //Select brachytherapic seed
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -46,20 +46,19 @@ class G4LogicalVolume;
|
||||
class G4Tubs;
|
||||
class G4Cons;
|
||||
class G4VPhysicalVolume;
|
||||
class BrachyMaterial;
|
||||
class G4VisAttributes;
|
||||
|
||||
class BrachyDetectorConstructionFlexi
|
||||
{
|
||||
public:
|
||||
BrachyDetectorConstructionFlexi();
|
||||
explicit BrachyDetectorConstructionFlexi();
|
||||
~BrachyDetectorConstructionFlexi();
|
||||
|
||||
void ConstructFlexi(G4VPhysicalVolume*);
|
||||
// Model the Flexi iridium source
|
||||
|
||||
void CleanFlexi();
|
||||
// Destroy the Iridium source in the experimental set-up
|
||||
// Clean the Iridium source in the experimental set-up
|
||||
|
||||
private:
|
||||
G4Tubs* fSteelShell;
|
||||
@@ -89,8 +88,6 @@ private:
|
||||
G4VisAttributes* fSteelAttributes;
|
||||
G4VisAttributes* fEndAttributes;
|
||||
G4VisAttributes* fSimpleIridiumVisAtt;
|
||||
|
||||
BrachyMaterial* fMat;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -30,7 +30,9 @@
|
||||
// * BrachyDetectorConstructionI.hh *
|
||||
// * *
|
||||
// ****************************************
|
||||
// Model of the Iodium source
|
||||
//
|
||||
// Author: Susanna Guatelli, susanna@uow.edu.au
|
||||
// Model of Bebig Isoseed Iodine source
|
||||
//
|
||||
#ifndef BrachyDetectorConstructionI_H
|
||||
#define BrachyDetectorConstructionI_H 1
|
||||
@@ -42,16 +44,15 @@ class G4Tubs;
|
||||
class G4Sphere;
|
||||
class G4LogicalVolume;
|
||||
class G4VPhysicalVolume;
|
||||
class BrachyMaterial;
|
||||
class G4VisAttributes;
|
||||
|
||||
class BrachyDetectorConstructionI
|
||||
{
|
||||
public:
|
||||
BrachyDetectorConstructionI();
|
||||
explicit BrachyDetectorConstructionI();
|
||||
~BrachyDetectorConstructionI();
|
||||
void ConstructIodine(G4VPhysicalVolume*);// Construct iodium source
|
||||
void CleanIodine();
|
||||
void ConstructIodine(G4VPhysicalVolume*);// Construct iodine source
|
||||
void CleanIodine(); // Clean iodine source
|
||||
private:
|
||||
G4Tubs* fDefaultTub;
|
||||
G4Tubs* fCapsule;
|
||||
@@ -69,8 +70,6 @@ private:
|
||||
G4VisAttributes* fSimpleIodineVisAtt;
|
||||
G4VisAttributes* fSimpleCapsuleVisAtt;
|
||||
G4VisAttributes* fSimpleCapsuleTipVisAtt;
|
||||
|
||||
BrachyMaterial* fMaterial;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
|
||||
class G4VPhysicalVolume;
|
||||
class BrachyMaterial;
|
||||
class G4Sphere;
|
||||
class G4Tubs;
|
||||
class G4LogicalVolume;
|
||||
@@ -58,9 +57,6 @@ public:
|
||||
void CleanLeipzigApplicator();
|
||||
|
||||
private:
|
||||
|
||||
BrachyMaterial* fMaterial;
|
||||
|
||||
G4Tubs* fCapsule;
|
||||
G4Sphere* fCapsuleTip;
|
||||
G4Tubs* fIridiumCore;
|
||||
@@ -83,5 +79,4 @@ private:
|
||||
G4VisAttributes* fSimpleCapsuleTipVisAtt;
|
||||
G4VisAttributes* fApplicatorVisAtt;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -47,13 +47,12 @@ class G4Tubs;
|
||||
class G4Box;
|
||||
class G4Sphere;
|
||||
class G4VPhysicalVolume;
|
||||
class BrachyMaterial;
|
||||
class G4VisAttributes;
|
||||
|
||||
class BrachyDetectorConstructionOncura6711
|
||||
{
|
||||
public:
|
||||
BrachyDetectorConstructionOncura6711();
|
||||
explicit BrachyDetectorConstructionOncura6711();
|
||||
~BrachyDetectorConstructionOncura6711();
|
||||
|
||||
void ConstructOncura6711(G4VPhysicalVolume*);
|
||||
@@ -78,9 +77,6 @@ private:
|
||||
G4Tubs* fOncuraSilverCore;
|
||||
G4LogicalVolume* fOncuraSilverCoreLog;
|
||||
G4VPhysicalVolume* fOncuraSilverCorePhys;
|
||||
|
||||
BrachyMaterial* fMat;
|
||||
|
||||
G4VisAttributes* fOncuraCapsuleShellVisAtt;
|
||||
G4VisAttributes* fOncuraCapsuleTipVisAtt;
|
||||
G4VisAttributes* fOncuraSilverCoreVisAtt;
|
||||
|
||||
@@ -46,20 +46,19 @@ class G4Tubs;
|
||||
class G4Box;
|
||||
class G4Sphere;
|
||||
class G4VPhysicalVolume;
|
||||
class BrachyMaterial;
|
||||
class G4VisAttributes;
|
||||
|
||||
class BrachyDetectorConstructionTG186
|
||||
{
|
||||
public:
|
||||
BrachyDetectorConstructionTG186();
|
||||
explicit BrachyDetectorConstructionTG186();
|
||||
~BrachyDetectorConstructionTG186();
|
||||
|
||||
void ConstructTG186(G4VPhysicalVolume*);
|
||||
// Model the TG186 reference source
|
||||
|
||||
void CleanTG186();
|
||||
// Destroy the TG186 reference source in the experimental set-up
|
||||
// Clean the TG186 reference source
|
||||
|
||||
private:
|
||||
G4Tubs* fTG186capsule ;
|
||||
@@ -74,9 +73,6 @@ private:
|
||||
G4Tubs* fTG186cable;
|
||||
G4LogicalVolume* fTG186cableLog;
|
||||
G4VPhysicalVolume* fTG186cablePhys;
|
||||
|
||||
BrachyMaterial* fMat;
|
||||
|
||||
G4VisAttributes* fTG186simpleCapsuleVisAtt;
|
||||
G4VisAttributes* fTG186simpleCapsuleTipVisAtt;
|
||||
G4VisAttributes* fTG186simpleIridiumVisAtt;
|
||||
|
||||
@@ -42,14 +42,13 @@ class BrachyDetectorConstruction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
|
||||
|
||||
class BrachyDetectorMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
BrachyDetectorMessenger(BrachyDetectorConstruction* );
|
||||
explicit BrachyDetectorMessenger(BrachyDetectorConstruction* );
|
||||
~BrachyDetectorMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
void SetNewValue(G4UIcommand*, G4String) override;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class BrachyFactory
|
||||
{
|
||||
public:
|
||||
|
||||
BrachyFactory();
|
||||
explicit BrachyFactory();
|
||||
virtual ~BrachyFactory();
|
||||
|
||||
// this function manages the creation of the source in terms of
|
||||
|
||||
@@ -40,24 +40,23 @@
|
||||
#include "BrachyFactory.hh"
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionFlexi;
|
||||
class G4ParticleGun;
|
||||
class G4Run;
|
||||
class G4Event;
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionFlexi;
|
||||
|
||||
// This class manages the creation of the Nucletron Flexi Source
|
||||
|
||||
class BrachyFactoryFlexi : public BrachyFactory
|
||||
{
|
||||
public:
|
||||
BrachyFactoryFlexi();
|
||||
explicit BrachyFactoryFlexi();
|
||||
~BrachyFactoryFlexi();
|
||||
void CreateSource(G4VPhysicalVolume*);
|
||||
void CleanSource();
|
||||
void CreateSource(G4VPhysicalVolume*)override;
|
||||
void CleanSource() override;
|
||||
|
||||
private:
|
||||
BrachyDetectorConstructionFlexi* fFlexiSource;
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -33,34 +33,30 @@
|
||||
// Code developed by:
|
||||
// S.Guatelli
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
#ifndef BrachyFactoryI_h
|
||||
#define BrachyFactoryI_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
#include "BrachyDetectorConstructionI.hh"
|
||||
#include "BrachyFactory.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionI;
|
||||
class G4ParticleGun;
|
||||
class G4Run;
|
||||
class G4Event;
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionI;
|
||||
|
||||
// This class manages the creation of Bebig Isoseed I-125 source
|
||||
// used in interstitial brachytherapy ...
|
||||
class BrachyFactoryI:public BrachyFactory
|
||||
{
|
||||
public:
|
||||
BrachyFactoryI();
|
||||
explicit BrachyFactoryI();
|
||||
~BrachyFactoryI();
|
||||
|
||||
void CreateSource(G4VPhysicalVolume*);
|
||||
void CleanSource();
|
||||
void CreateSource(G4VPhysicalVolume*)override;
|
||||
void CleanSource() override;
|
||||
|
||||
private:
|
||||
BrachyDetectorConstructionI* fIodineSource;
|
||||
|
||||
@@ -38,24 +38,24 @@
|
||||
#ifndef BrachyFactoryLeipzig_h
|
||||
#define BrachyFactoryLeipzig_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
#include "BrachyFactory.hh"
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
class BrachyDetectorConstructionLeipzig;
|
||||
class G4ParticleGun;
|
||||
class G4Run;
|
||||
class G4Event;
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionLeipzig;
|
||||
|
||||
class BrachyFactoryLeipzig : public BrachyFactory
|
||||
{
|
||||
public:
|
||||
BrachyFactoryLeipzig();
|
||||
explicit BrachyFactoryLeipzig();
|
||||
~BrachyFactoryLeipzig();
|
||||
|
||||
void CreateSource(G4VPhysicalVolume*);
|
||||
void CleanSource();
|
||||
void CreateSource(G4VPhysicalVolume*)override;
|
||||
void CleanSource()override;
|
||||
|
||||
private:
|
||||
BrachyDetectorConstructionLeipzig* fLeipzigSource;
|
||||
|
||||
@@ -39,21 +39,21 @@
|
||||
#include "BrachyFactory.hh"
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionOncura6711;
|
||||
class G4ParticleGun;
|
||||
class G4Run;
|
||||
class G4Event;
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionOncura6711;
|
||||
|
||||
// This class manages the creation of iodine source
|
||||
// brachytherapy ...
|
||||
class BrachyFactoryOncura6711 : public BrachyFactory
|
||||
{
|
||||
public:
|
||||
BrachyFactoryOncura6711();
|
||||
explicit BrachyFactoryOncura6711();
|
||||
~BrachyFactoryOncura6711();
|
||||
void CreateSource(G4VPhysicalVolume*);
|
||||
void CleanSource();
|
||||
void CreateSource(G4VPhysicalVolume*) override;
|
||||
void CleanSource() override;
|
||||
|
||||
private:
|
||||
BrachyDetectorConstructionOncura6711* fOncura6711IodineSource;
|
||||
|
||||
@@ -39,21 +39,19 @@
|
||||
#include "BrachyFactory.hh"
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionTG186;
|
||||
class G4ParticleGun;
|
||||
class G4Run;
|
||||
class G4Event;
|
||||
class BrachyFactory;
|
||||
class BrachyDetectorConstructionTG186;
|
||||
|
||||
// This class manages the creation of iridum source used in endocavitary
|
||||
// brachytherapy ...
|
||||
class BrachyFactoryTG186 : public BrachyFactory
|
||||
class BrachyFactoryTG186: public BrachyFactory
|
||||
{
|
||||
public:
|
||||
BrachyFactoryTG186();
|
||||
explicit BrachyFactoryTG186();
|
||||
~BrachyFactoryTG186();
|
||||
void CreateSource(G4VPhysicalVolume*);
|
||||
void CleanSource();
|
||||
void CreateSource(G4VPhysicalVolume*) override;
|
||||
void CleanSource() override;
|
||||
|
||||
private:
|
||||
BrachyDetectorConstructionTG186* fTG186iridiumSource;
|
||||
|
||||
@@ -44,20 +44,17 @@ class BrachyPhysicsListMessenger;
|
||||
class BrachyPhysicsList: public G4VModularPhysicsList
|
||||
{
|
||||
public:
|
||||
BrachyPhysicsList();
|
||||
explicit BrachyPhysicsList();
|
||||
~BrachyPhysicsList();
|
||||
void ConstructParticle();
|
||||
void ConstructParticle() override;
|
||||
void AddPhysicsList(const G4String& name);
|
||||
void ConstructProcess();
|
||||
|
||||
protected:
|
||||
void SetCuts();
|
||||
void ConstructProcess() override;
|
||||
|
||||
private:
|
||||
BrachyPhysicsListMessenger* fMessenger;
|
||||
G4VPhysicsConstructor* fEmPhysicsList;
|
||||
G4VPhysicsConstructor* fDecPhysicsList;
|
||||
G4VPhysicsConstructor* fRadDecayPhysicsList;
|
||||
BrachyPhysicsListMessenger* fMessenger;
|
||||
G4String fEmName;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Author: Susanna Guatelli susanna@uow.edu.au
|
||||
//
|
||||
#ifndef BrachyPhysicsListMessenger_h
|
||||
#define BrachyPhysicsListMessenger_h 1
|
||||
|
||||
@@ -36,17 +38,16 @@ class G4UIcmdWithAString;
|
||||
class BrachyPhysicsListMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
BrachyPhysicsListMessenger(BrachyPhysicsList* );
|
||||
explicit BrachyPhysicsListMessenger(BrachyPhysicsList* );
|
||||
~BrachyPhysicsListMessenger();
|
||||
|
||||
virtual
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
void SetNewValue(G4UIcommand*, G4String) override;
|
||||
|
||||
private:
|
||||
BrachyPhysicsList* fPhysicsList;
|
||||
G4UIdirectory* fPhysDir;
|
||||
G4UIcmdWithAString* fListCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
// ********************************************
|
||||
//
|
||||
// code developed by Susanna Guatelli
|
||||
|
||||
//
|
||||
#ifndef BrachyPrimaryGeneratorAction_h
|
||||
#define BrachyPrimaryGeneratorAction_h 1
|
||||
|
||||
@@ -43,11 +43,11 @@ class G4GeneralParticleSource;
|
||||
class BrachyPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
BrachyPrimaryGeneratorAction();
|
||||
explicit BrachyPrimaryGeneratorAction();
|
||||
~BrachyPrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event* anEvent);
|
||||
void GeneratePrimaries(G4Event* anEvent) override;
|
||||
|
||||
private:
|
||||
G4GeneralParticleSource* fGun;
|
||||
|
||||
@@ -24,14 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// ********************************************
|
||||
// * *
|
||||
// * BrachyRunAction.hh *
|
||||
// * *
|
||||
// ********************************************
|
||||
// Author: Susanna Guatelli
|
||||
//
|
||||
#ifndef BrachyRunAction_h
|
||||
#define BrachyRunAction_h 1
|
||||
@@ -40,19 +33,18 @@
|
||||
#include "G4RunManager.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4Run;
|
||||
class BrachyRunMessenger;
|
||||
|
||||
class G4Run;
|
||||
|
||||
class BrachyRunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
BrachyRunAction();
|
||||
explicit BrachyRunAction();
|
||||
~BrachyRunAction();
|
||||
|
||||
public:
|
||||
void BeginOfRunAction(const G4Run*);
|
||||
void EndOfRunAction(const G4Run* );
|
||||
void BeginOfRunAction(const G4Run*) override;
|
||||
void EndOfRunAction(const G4Run*) override;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// -------------------------------------------------------------------
|
||||
// Code by Susanna Guatelli
|
||||
//
|
||||
//
|
||||
@@ -37,9 +35,9 @@ class BrachySteppingAction: public G4UserSteppingAction
|
||||
{
|
||||
public:
|
||||
|
||||
BrachySteppingAction();
|
||||
explicit BrachySteppingAction();
|
||||
~BrachySteppingAction();
|
||||
|
||||
void UserSteppingAction(const G4Step*);
|
||||
void UserSteppingAction(const G4Step*) override;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -37,19 +37,15 @@ Original code from geant4/examples/extended/runAndEvent/RE03,
|
||||
// by M. Asai
|
||||
*/
|
||||
//
|
||||
// class description:
|
||||
//
|
||||
//This class represents storing the scored quantity into a file.
|
||||
//
|
||||
class BrachyUserScoreWriter:public G4VScoreWriter
|
||||
{
|
||||
public:
|
||||
BrachyUserScoreWriter();
|
||||
explicit BrachyUserScoreWriter();
|
||||
virtual ~BrachyUserScoreWriter();
|
||||
// store a quantity into a file
|
||||
void DumpQuantityToFile(const G4String & psName,
|
||||
const G4String & fileName,
|
||||
const G4String & option);
|
||||
const G4String & option) override;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -37,6 +37,13 @@
|
||||
// * *
|
||||
// ****************************************
|
||||
//
|
||||
#include "BrachyFactoryLeipzig.hh"
|
||||
#include "BrachyFactoryTG186.hh"
|
||||
#include "BrachyFactoryI.hh"
|
||||
#include "BrachyFactoryFlexi.hh"
|
||||
#include "BrachyFactoryOncura6711.hh"
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstruction.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4CSGSolid.hh"
|
||||
#include "G4MaterialPropertyVector.hh"
|
||||
@@ -52,21 +59,16 @@
|
||||
#include "G4Colour.hh"
|
||||
#include "G4UserLimits.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "BrachyMaterial.hh"
|
||||
#include "BrachyFactoryLeipzig.hh"
|
||||
#include "BrachyFactoryTG186.hh"
|
||||
#include "BrachyFactoryI.hh"
|
||||
#include "BrachyFactoryFlexi.hh"
|
||||
#include "BrachyFactoryOncura6711.hh"
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstruction.hh"
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
BrachyDetectorConstruction::BrachyDetectorConstruction():
|
||||
fDetectorChoice(0), fFactory(nullptr),
|
||||
fWorld(nullptr), fWorldLog(nullptr), fWorldPhys(nullptr),
|
||||
fFactory(nullptr), fWorld(nullptr), fWorldLog(nullptr), fWorldPhys(nullptr),
|
||||
fPhantom(nullptr), fPhantomLog(nullptr), fPhantomPhys(nullptr),
|
||||
fPhantomAbsorberMaterial(nullptr)
|
||||
fDetectorChoice(0)
|
||||
{
|
||||
// Define the messenger of the Detector component
|
||||
fDetectorMessenger = new BrachyDetectorMessenger(this);
|
||||
|
||||
// Define half size of the phantom along the x, y, z axis
|
||||
fPhantomSizeX = 15.*cm;
|
||||
fPhantomSizeY = 15.*cm;
|
||||
@@ -77,29 +79,18 @@ BrachyDetectorConstruction::BrachyDetectorConstruction():
|
||||
fWorldSizeY = 4.0*m;
|
||||
fWorldSizeZ = 4.0*m;
|
||||
|
||||
// Define the messenger of the Detector component
|
||||
// It is possible to modify geometrical parameters through UI
|
||||
fDetectorMessenger = new BrachyDetectorMessenger(this);
|
||||
|
||||
// Define the Flexi source as default source modelled in the geometry
|
||||
fFactory = new BrachyFactoryFlexi();
|
||||
|
||||
// BrachyMaterial defined the all the materials necessary
|
||||
// for the experimental set-up
|
||||
fMaterial = new BrachyMaterial();
|
||||
}
|
||||
|
||||
BrachyDetectorConstruction::~BrachyDetectorConstruction()
|
||||
{
|
||||
delete fMaterial;
|
||||
delete fDetectorMessenger;
|
||||
delete fFactory;
|
||||
delete fDetectorMessenger;
|
||||
}
|
||||
|
||||
G4VPhysicalVolume* BrachyDetectorConstruction::Construct()
|
||||
{
|
||||
fMaterial -> DefineMaterials();
|
||||
|
||||
// Model the phantom (water box)
|
||||
ConstructPhantom();
|
||||
|
||||
@@ -113,7 +104,7 @@ void BrachyDetectorConstruction::SwitchBrachytherapicSeed()
|
||||
{
|
||||
// Change the source in the water phantom
|
||||
fFactory -> CleanSource();
|
||||
G4cout << "Old Source is deleted ..." << G4endl;
|
||||
G4cout << "Old brachy source is deleted ..." << G4endl;
|
||||
delete fFactory;
|
||||
|
||||
switch(fDetectorChoice)
|
||||
@@ -139,7 +130,7 @@ void BrachyDetectorConstruction::SwitchBrachytherapicSeed()
|
||||
}
|
||||
|
||||
fFactory -> CreateSource(fPhantomPhys);
|
||||
G4cout << "... New source is created ..." << G4endl;
|
||||
G4cout << "New brachy source is created ..." << G4endl;
|
||||
|
||||
// Notify run manager that the new geometry has been built
|
||||
G4RunManager::GetRunManager() -> GeometryHasBeenModified();
|
||||
@@ -171,7 +162,7 @@ void BrachyDetectorConstruction::SelectBrachytherapicSeed(G4String val)
|
||||
}
|
||||
}
|
||||
}
|
||||
G4cout << "Now the source is " << val << G4endl;
|
||||
G4cout << "Now the brachy source is " << val << G4endl;
|
||||
}
|
||||
|
||||
void BrachyDetectorConstruction::ConstructPhantom()
|
||||
@@ -181,8 +172,10 @@ void BrachyDetectorConstruction::ConstructPhantom()
|
||||
// Define the light blue color
|
||||
G4Colour lblue (0.0, 0.0, .75);
|
||||
|
||||
G4Material* air = fMaterial -> GetMat("Air") ;
|
||||
G4Material* water = fMaterial -> GetMat("Water");
|
||||
//Get nist material manager
|
||||
G4NistManager* nist = G4NistManager::Instance();
|
||||
G4Material* air = nist -> FindOrBuildMaterial("G4_AIR");
|
||||
G4Material* water = nist -> FindOrBuildMaterial("G4_WATER");
|
||||
|
||||
// World volume
|
||||
fWorld = new G4Box("World", fWorldSizeX, fWorldSizeY, fWorldSizeZ);
|
||||
@@ -222,7 +215,7 @@ void BrachyDetectorConstruction::PrintDetectorParameters()
|
||||
<< fPhantomSizeZ *2./cm
|
||||
<< " cm" << G4endl
|
||||
<< "The phantom is made of "
|
||||
<< fPhantomAbsorberMaterial -> GetName() <<G4endl
|
||||
<< fPhantomLog -> GetMaterial() -> GetName() <<G4endl
|
||||
<< "the source is at the center of the phantom" << G4endl
|
||||
<< "----------------"
|
||||
<< G4endl;
|
||||
@@ -230,17 +223,16 @@ void BrachyDetectorConstruction::PrintDetectorParameters()
|
||||
|
||||
void BrachyDetectorConstruction::SetPhantomMaterial(G4String materialChoice)
|
||||
{
|
||||
// It is possible to change the material of the phantom
|
||||
// interactively
|
||||
// Method to change the material of the phantom
|
||||
|
||||
G4NistManager* nist = G4NistManager::Instance();
|
||||
|
||||
// Search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
G4Material* pttoMaterial = nist -> FindOrBuildMaterial(materialChoice);
|
||||
|
||||
if (pttoMaterial)
|
||||
{
|
||||
fPhantomAbsorberMaterial = pttoMaterial;
|
||||
fPhantomLog -> SetMaterial(pttoMaterial);
|
||||
PrintDetectorParameters();
|
||||
} else
|
||||
{ G4cout << "WARNING: material '" << materialChoice << "' not available!" << G4endl;}
|
||||
} else G4cout << "WARNING: material '" << materialChoice << "' not available!" << G4endl;
|
||||
}
|
||||
|
||||
@@ -51,9 +51,9 @@
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
#include "BrachyMaterial.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
BrachyDetectorConstructionFlexi::BrachyDetectorConstructionFlexi()
|
||||
: fSteelShell(nullptr), fLogicalSteelShell(nullptr), fAirGap(nullptr), fLogicalAirGap(nullptr), fPhysicalAirGap(nullptr),
|
||||
@@ -62,21 +62,36 @@ BrachyDetectorConstructionFlexi::BrachyDetectorConstructionFlexi()
|
||||
fCable(nullptr), fLogicalCable(nullptr), fPhysicalCable(nullptr),
|
||||
fIridiumCore(nullptr), fLogicalIridiumCore(nullptr), fPhysicalIridiumCore(nullptr),
|
||||
fSteelAttributes(nullptr), fEndAttributes(nullptr), fSimpleIridiumVisAtt(nullptr)
|
||||
{
|
||||
fMat = new BrachyMaterial();
|
||||
}
|
||||
{}
|
||||
|
||||
BrachyDetectorConstructionFlexi::~BrachyDetectorConstructionFlexi()
|
||||
{
|
||||
delete fMat;
|
||||
}
|
||||
{}
|
||||
|
||||
void BrachyDetectorConstructionFlexi::ConstructFlexi(G4VPhysicalVolume* mother)
|
||||
{
|
||||
G4Material* steelMat = fMat -> GetMat("Stainless steel 304");
|
||||
G4Material* iridiumMat = fMat -> GetMat("Iridium");
|
||||
G4Material* airMat = fMat -> GetMat("Air");
|
||||
|
||||
G4NistManager* nist = G4NistManager::Instance();
|
||||
|
||||
G4Material* iridiumMat = nist -> FindOrBuildMaterial("G4_Ir");
|
||||
G4Material* airMat = nist -> FindOrBuildMaterial("G4_AIR");
|
||||
|
||||
//Define Stainless-steel-304 - Flexi source
|
||||
G4int Z; //atomic number of the element
|
||||
G4Element* elC = nist -> FindOrBuildElement(Z=6);
|
||||
G4Element* elMn = nist -> FindOrBuildElement(Z=12);
|
||||
G4Element* elSi = nist -> FindOrBuildElement(Z=14);
|
||||
G4Element* elCr = nist -> FindOrBuildElement(Z=24);
|
||||
G4Element* elFe = nist -> FindOrBuildElement(Z=26);
|
||||
G4Element* elNi = nist -> FindOrBuildElement(Z=28);
|
||||
|
||||
constexpr G4double d = 7.999*g/cm3;
|
||||
G4Material* steelMat = new G4Material("Stainless steel 304",d,6);
|
||||
steelMat -> AddElement(elMn, 0.02);
|
||||
steelMat -> AddElement(elSi, 0.01);
|
||||
steelMat -> AddElement(elCr, 0.19);
|
||||
steelMat -> AddElement(elNi, 0.10);
|
||||
steelMat -> AddElement(elFe, 0.6792);
|
||||
steelMat -> AddElement(elC, 0.0008);
|
||||
|
||||
//Define dimensions of the outer Steel shell around the solid source - not including the ends
|
||||
|
||||
G4double shellr_min = 0.00 * mm;
|
||||
|
||||
@@ -37,9 +37,9 @@
|
||||
// ****************************************
|
||||
//
|
||||
//
|
||||
#include "BrachyDetectorConstructionI.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "BrachyDetectorConstructionI.hh"
|
||||
#include "G4CSGSolid.hh"
|
||||
#include "G4Sphere.hh"
|
||||
#include "G4MaterialPropertyVector.hh"
|
||||
@@ -52,33 +52,28 @@
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
#include "BrachyMaterial.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
BrachyDetectorConstructionI::BrachyDetectorConstructionI():
|
||||
fDefaultTub(nullptr), fCapsule(nullptr), fCapsuleTip(nullptr), fIodineCore(nullptr), fDefaultTubLog(nullptr),
|
||||
fCapsuleLog(nullptr), fCapsuleTipLog(nullptr), fIodineCoreLog(nullptr), fDefaultTubPhys(nullptr),
|
||||
fCapsulePhys(nullptr),fCapsuleTipPhys1(nullptr),fCapsuleTipPhys2(nullptr), fIodineCorePhys(nullptr),
|
||||
fSimpleIodineVisAtt(nullptr), fSimpleCapsuleVisAtt(nullptr), fSimpleCapsuleTipVisAtt(nullptr)
|
||||
{
|
||||
fMaterial = new BrachyMaterial();
|
||||
}
|
||||
{}
|
||||
|
||||
BrachyDetectorConstructionI::~BrachyDetectorConstructionI()
|
||||
{
|
||||
delete fMaterial;
|
||||
}
|
||||
{}
|
||||
|
||||
void BrachyDetectorConstructionI::ConstructIodine(G4VPhysicalVolume* mother)
|
||||
{
|
||||
// source Bebig Isoseed I-125 ...
|
||||
|
||||
//Get materials for source construction ...
|
||||
G4Material* titanium = fMaterial -> GetMat("titanium");
|
||||
G4Material* air = fMaterial -> GetMat("Air");
|
||||
G4Material* Iodine = fMaterial -> GetMat("Iodine");
|
||||
|
||||
// Model of the Bebig Isoseed I-125 brachy source
|
||||
G4NistManager* nist = G4NistManager::Instance();
|
||||
G4Material* titanium = nist -> FindOrBuildMaterial("G4_Ti");
|
||||
G4Material* iodine = nist -> FindOrBuildMaterial("G4_I");
|
||||
G4Material* air = nist -> FindOrBuildMaterial("G4_AIR");
|
||||
|
||||
G4Colour red (1.0, 0.0, 0.0) ;
|
||||
G4Colour magenta (1.0, 0.0, 1.0) ;
|
||||
G4Colour lblue (0.0, 0.0, .75);
|
||||
@@ -94,8 +89,7 @@ void BrachyDetectorConstructionI::ConstructIodine(G4VPhysicalVolume* mother)
|
||||
false,
|
||||
0, true);
|
||||
// Capsule main body ...
|
||||
G4double capsuleR = 0.35*mm;
|
||||
fCapsule = new G4Tubs("fCapsule", capsuleR,0.40*mm,1.84*mm,0.*deg,360.*deg);
|
||||
fCapsule = new G4Tubs("fCapsule", 0.35*mm,0.40*mm,1.84*mm,0.*deg,360.*deg);
|
||||
fCapsuleLog = new G4LogicalVolume(fCapsule,titanium,"fCapsuleLog");
|
||||
fCapsulePhys = new G4PVPlacement(nullptr,
|
||||
G4ThreeVector(),
|
||||
@@ -134,7 +128,7 @@ void BrachyDetectorConstructionI::ConstructIodine(G4VPhysicalVolume* mother)
|
||||
|
||||
// Radiactive core ...
|
||||
fIodineCore = new G4Tubs("ICore",0.085*mm,0.35*mm,1.75*mm,0.*deg,360.*deg);
|
||||
fIodineCoreLog = new G4LogicalVolume(fIodineCore,Iodine,"IodineCoreLog");
|
||||
fIodineCoreLog = new G4LogicalVolume(fIodineCore,iodine,"IodineCoreLog");
|
||||
fIodineCorePhys = new G4PVPlacement(nullptr,
|
||||
G4ThreeVector(0.,0.,0.),
|
||||
"IodineCorePhys",
|
||||
|
||||
@@ -37,13 +37,9 @@
|
||||
// * *
|
||||
// *******************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Code by S. Guatelli
|
||||
//
|
||||
#include "BrachyDetectorConstructionLeipzig.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "BrachyDetectorConstructionLeipzig.hh"
|
||||
#include "G4CSGSolid.hh"
|
||||
#include "G4Sphere.hh"
|
||||
#include "G4RunManager.hh"
|
||||
@@ -55,46 +51,55 @@
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
#include "BrachyMaterial.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
|
||||
// Leipzig Applicator ...
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
BrachyDetectorConstructionLeipzig::BrachyDetectorConstructionLeipzig():
|
||||
fCapsule(nullptr), fCapsuleTip(nullptr), fIridiumCore(nullptr), fApplicator1(nullptr), fApplicator2(nullptr),
|
||||
fCapsuleLog(nullptr), fCapsuleTipLog(nullptr), fIridiumCoreLog(nullptr), fApplicator1Log(nullptr),
|
||||
fApplicator2Log(nullptr), fCapsulePhys(nullptr), fCapsuleTipPhys(nullptr), fIridiumCorePhys(nullptr),
|
||||
fApplicator1Phys(nullptr), fApplicator2Phys(nullptr)
|
||||
{
|
||||
fMaterial = new BrachyMaterial();
|
||||
}
|
||||
{}
|
||||
|
||||
BrachyDetectorConstructionLeipzig::~BrachyDetectorConstructionLeipzig()
|
||||
{
|
||||
delete fMaterial;
|
||||
}
|
||||
{}
|
||||
|
||||
void BrachyDetectorConstructionLeipzig::ConstructLeipzig(G4VPhysicalVolume* mother)
|
||||
{
|
||||
G4Colour red (1.0, 0.0, 0.0) ;
|
||||
G4Colour lblue (0.0, 0.0, .75);
|
||||
|
||||
G4Material* capsuleMat = fMaterial -> GetMat("Stainless steel");
|
||||
G4Material* iridium = fMaterial -> GetMat("Iridium");
|
||||
G4Material* tungsten = fMaterial -> GetMat("Tungsten");
|
||||
|
||||
G4NistManager* nist = G4NistManager::Instance();
|
||||
G4Material* iridium = nist -> FindOrBuildMaterial("G4_Ir");
|
||||
G4Material* tungsten = nist -> FindOrBuildMaterial("G4_W");
|
||||
|
||||
// Stainless steel (Medical Physics, Vol 25, No 10, Oct 1998)
|
||||
constexpr G4double d = 8.02*g/cm3;
|
||||
G4int Z; //atomic number of the element
|
||||
G4Element* elMn = nist -> FindOrBuildElement(Z=12);
|
||||
G4Element* elSi = nist -> FindOrBuildElement(Z=14);
|
||||
G4Element* elCr = nist -> FindOrBuildElement(Z=24);
|
||||
G4Element* elFe = nist -> FindOrBuildElement(Z=26);
|
||||
G4Element* elNi = nist -> FindOrBuildElement(Z=28);
|
||||
G4Material* steel = new G4Material("Stainless steel",d,5);
|
||||
steel -> AddElement(elMn, 0.02);
|
||||
steel -> AddElement(elSi, 0.01);
|
||||
steel -> AddElement(elCr, 0.19);
|
||||
steel -> AddElement(elNi, 0.10);
|
||||
steel -> AddElement(elFe, 0.68);
|
||||
|
||||
//Iridium source ...
|
||||
|
||||
fCapsule = new G4Tubs("Capsule",0,0.55*mm,3.725*mm,0.*deg,360.*deg);
|
||||
fCapsuleLog = new G4LogicalVolume(fCapsule,capsuleMat,"CapsuleLog");
|
||||
fCapsuleLog = new G4LogicalVolume(fCapsule,steel,"CapsuleLog");
|
||||
fCapsulePhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,-1.975*mm),"CapsulePhys",
|
||||
fCapsuleLog,mother, //mother volume: phantom
|
||||
false,0, true);
|
||||
|
||||
// Capsule tip
|
||||
fCapsuleTip = new G4Sphere("CapsuleTip",0.*mm,0.55*mm,0.*deg,360.*deg,0.*deg,90.*deg);
|
||||
fCapsuleTipLog = new G4LogicalVolume(fCapsuleTip,capsuleMat,"CapsuleTipLog");
|
||||
fCapsuleTipLog = new G4LogicalVolume(fCapsuleTip,steel,"CapsuleTipLog");
|
||||
fCapsuleTipPhys = new G4PVPlacement(nullptr,G4ThreeVector(0.,0.,1.75*mm),"CapsuleTipPhys",
|
||||
fCapsuleTipLog,mother,false,0, true);
|
||||
// Iridium core
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
//
|
||||
//
|
||||
//
|
||||
#include "BrachyDetectorConstructionOncura6711.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "BrachyDetectorConstructionOncura6711.hh"
|
||||
#include "G4Sphere.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4Box.hh"
|
||||
@@ -52,7 +52,7 @@
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
#include "BrachyMaterial.hh"
|
||||
#include "G4NistManager.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
|
||||
@@ -70,41 +70,38 @@ BrachyDetectorConstructionOncura6711::BrachyDetectorConstructionOncura6711()
|
||||
fOncuraSilverCorePhys(nullptr),
|
||||
fOncuraCapsuleShellVisAtt(nullptr), fOncuraCapsuleTipVisAtt(nullptr),
|
||||
fOncuraSilverCoreVisAtt(nullptr)
|
||||
{
|
||||
fMat = new BrachyMaterial();
|
||||
}
|
||||
{}
|
||||
|
||||
BrachyDetectorConstructionOncura6711::~BrachyDetectorConstructionOncura6711()
|
||||
{
|
||||
delete fMat;
|
||||
}
|
||||
{}
|
||||
|
||||
void BrachyDetectorConstructionOncura6711::ConstructOncura6711(G4VPhysicalVolume* mother)
|
||||
{
|
||||
G4Colour red (1.0, 0.0, 0.0) ;
|
||||
G4Colour magenta (1.0, 0.0, 1.0) ;
|
||||
|
||||
G4Material* titaniumMat = fMat -> GetMat("titanium");
|
||||
G4Material* airMat = fMat -> GetMat("Air");
|
||||
G4Material* silverMat = fMat -> GetMat("Silver");
|
||||
G4NistManager* nist = G4NistManager::Instance();
|
||||
G4Material* titanium = nist -> FindOrBuildMaterial("G4_Ti");
|
||||
G4Material* air = nist -> FindOrBuildMaterial("G4_AIR");
|
||||
G4Material* silver = nist -> FindOrBuildMaterial("G4_Ag");
|
||||
|
||||
//Capsule shell
|
||||
fOncuraCapsule = new G4Tubs("OncuraCapsule",0,0.4*mm,1.875*mm,0.*deg,360.*deg);
|
||||
fOncuraCapsuleLog = new G4LogicalVolume(fOncuraCapsule,titaniumMat,"OncuraCapsuleLog", 0,0,0);
|
||||
fOncuraCapsuleLog = new G4LogicalVolume(fOncuraCapsule,titanium,"OncuraCapsuleLog", 0,0,0);
|
||||
fOncuraCapsulePhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0),
|
||||
"OncuraCapsulePhys", fOncuraCapsuleLog,
|
||||
mother, false, 0, true);
|
||||
|
||||
//Capsule tips
|
||||
fOncuraCapsuleTip1 = new G4Sphere("OncuraCapsuleTip1", 0, 0.4*mm, 0., 360*deg, 0., 90*deg);
|
||||
fOncuraCapsuleTip1Log = new G4LogicalVolume(fOncuraCapsuleTip1, titaniumMat, "OncuraCapsuleTip1Log",0,0,0);
|
||||
fOncuraCapsuleTip1Log = new G4LogicalVolume(fOncuraCapsuleTip1, titanium, "OncuraCapsuleTip1Log",0,0,0);
|
||||
fOncuraCapsuleTip1Phys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,1.875*mm),
|
||||
"OncuraCapsuleTip1Phys", fOncuraCapsuleTip1Log,
|
||||
mother, false,
|
||||
0, true);
|
||||
|
||||
fOncuraCapsuleTip2 = new G4Sphere("OncuraCapsuleTip2", 0, 0.4*mm, 0., 360*deg, 90*deg, 90*deg);
|
||||
fOncuraCapsuleTip2Log = new G4LogicalVolume(fOncuraCapsuleTip2, titaniumMat, "OncuraCapsuleTip2Log",0,0,0);
|
||||
fOncuraCapsuleTip2Log = new G4LogicalVolume(fOncuraCapsuleTip2, titanium, "OncuraCapsuleTip2Log",0,0,0);
|
||||
fOncuraCapsuleTip2Phys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,-1.875*mm),
|
||||
"OncuraCapsuleTip2Phys", fOncuraCapsuleTip2Log,
|
||||
mother, false,
|
||||
@@ -112,7 +109,7 @@ fOncuraCapsuleTip2Phys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,-1.875*mm)
|
||||
|
||||
//Air gap
|
||||
fOncuraAirGap = new G4Tubs("OncuraAirGap",0,0.33*mm,1.825*mm,0.*deg,360.*deg);
|
||||
fOncuraAirGapLog = new G4LogicalVolume(fOncuraAirGap, airMat, "OncuraAirGapLog");
|
||||
fOncuraAirGapLog = new G4LogicalVolume(fOncuraAirGap, air, "OncuraAirGapLog");
|
||||
fOncuraAirGapPhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0),
|
||||
"OncuraAirGapPhys", fOncuraAirGapLog,
|
||||
fOncuraCapsulePhys, false,
|
||||
@@ -120,7 +117,7 @@ fOncuraAirGapPhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0),
|
||||
|
||||
//Silver core
|
||||
fOncuraSilverCore = new G4Tubs("OncuraSilverCore",0,0.25*mm,1.4*mm,0.*deg,360.*deg);
|
||||
fOncuraSilverCoreLog = new G4LogicalVolume(fOncuraSilverCore, silverMat, "silverCoreLog");
|
||||
fOncuraSilverCoreLog = new G4LogicalVolume(fOncuraSilverCore, silver, "silverCoreLog");
|
||||
fOncuraSilverCorePhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0),
|
||||
"OncuraSilverCorePhys", fOncuraSilverCoreLog,
|
||||
fOncuraAirGapPhys, false,
|
||||
|
||||
@@ -38,9 +38,9 @@
|
||||
// ****************************************
|
||||
//
|
||||
//
|
||||
#include "BrachyDetectorConstructionTG186.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "BrachyDetectorConstructionTG186.hh"
|
||||
#include "G4Sphere.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4Box.hh"
|
||||
@@ -51,12 +51,11 @@
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
#include "BrachyMaterial.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
BrachyDetectorConstructionTG186::BrachyDetectorConstructionTG186()
|
||||
:
|
||||
BrachyDetectorConstructionTG186::BrachyDetectorConstructionTG186():
|
||||
fTG186capsule(nullptr), fTG186capsuleLog(nullptr),
|
||||
fTG186capsulePhys(nullptr),
|
||||
fTG186capsuleTip(nullptr), fTG186capsuleTipLog(nullptr),
|
||||
@@ -67,22 +66,34 @@ BrachyDetectorConstructionTG186::BrachyDetectorConstructionTG186()
|
||||
fTG186cablePhys(nullptr),
|
||||
fTG186simpleCapsuleVisAtt(nullptr), fTG186simpleCapsuleTipVisAtt(nullptr), fTG186simpleIridiumVisAtt(nullptr),
|
||||
fTG186simpleCableVisAtt(nullptr)
|
||||
{
|
||||
fMat = new BrachyMaterial();
|
||||
}
|
||||
{}
|
||||
|
||||
BrachyDetectorConstructionTG186::~BrachyDetectorConstructionTG186()
|
||||
{
|
||||
delete fMat;
|
||||
}
|
||||
{}
|
||||
|
||||
void BrachyDetectorConstructionTG186::ConstructTG186(G4VPhysicalVolume* mother)
|
||||
{
|
||||
G4Colour red (1.0, 0.0, 0.0) ;
|
||||
G4Colour magenta (1.0, 0.0, 1.0) ;
|
||||
|
||||
G4Material* capsuleMat = fMat -> GetMat("Stainless steel");
|
||||
G4Material* iridiumMat = fMat -> GetMat("Iridium");
|
||||
G4NistManager* nist = G4NistManager::Instance();
|
||||
G4Material* iridium = nist -> FindOrBuildMaterial("G4_Ir");
|
||||
|
||||
// Stainless steel (Medical Physics, Vol 25, No 10, Oct 1998)
|
||||
constexpr G4double d = 8.02*g/cm3;
|
||||
G4int Z; //atomic number of the element
|
||||
G4Element* elMn = nist -> FindOrBuildElement(Z=12);
|
||||
G4Element* elSi = nist -> FindOrBuildElement(Z=14);
|
||||
G4Element* elCr = nist -> FindOrBuildElement(Z=24);
|
||||
G4Element* elFe = nist -> FindOrBuildElement(Z=26);
|
||||
G4Element* elNi = nist -> FindOrBuildElement(Z=28);
|
||||
G4Material* capsuleMat = new G4Material("Stainless steel",d,5);
|
||||
capsuleMat -> AddElement(elMn, 0.02);
|
||||
capsuleMat -> AddElement(elSi, 0.01);
|
||||
capsuleMat -> AddElement(elCr, 0.19);
|
||||
capsuleMat -> AddElement(elNi, 0.10);
|
||||
capsuleMat -> AddElement(elFe, 0.68);
|
||||
|
||||
|
||||
// Capsule main body
|
||||
fTG186capsule = new G4Tubs("TG186-Capsule",0,0.5*mm,2.25*mm,0.*deg,360.*deg);
|
||||
@@ -107,6 +118,7 @@ void BrachyDetectorConstructionTG186::ConstructTG186(G4VPhysicalVolume* mother)
|
||||
fTG186capsuleTipLog = new G4LogicalVolume(fTG186capsuleTip,
|
||||
capsuleMat,
|
||||
"CapsuleTipIridumLog");
|
||||
|
||||
fTG186capsuleTipPhys = new G4PVPlacement(nullptr,
|
||||
G4ThreeVector(0.,0.,1.85*mm),
|
||||
"TG186-CapsuleTipIridiumPhys",
|
||||
@@ -138,7 +150,7 @@ void BrachyDetectorConstructionTG186::ConstructTG186(G4VPhysicalVolume* mother)
|
||||
fTG186iridiumCore = new G4Tubs("TG186-IrCore",0,0.30*mm,1.75*mm,0.*deg,360.*deg);
|
||||
|
||||
fTG186iridiumCoreLog = new G4LogicalVolume(fTG186iridiumCore,
|
||||
iridiumMat,
|
||||
iridium,
|
||||
"TG186-IridiumCoreLog");
|
||||
|
||||
fTG186iridiumCorePhys = new G4PVPlacement(nullptr,
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
// *******************************
|
||||
//
|
||||
//
|
||||
#include "globals.hh"
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstructionFlexi.hh"
|
||||
#include "BrachyFactoryFlexi.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "Randomize.hh"
|
||||
@@ -43,8 +44,7 @@
|
||||
#include "G4IonTable.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstructionFlexi.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
BrachyFactoryFlexi:: BrachyFactoryFlexi()
|
||||
{
|
||||
@@ -61,7 +61,7 @@ void BrachyFactoryFlexi::CreateSource(G4VPhysicalVolume* mother)
|
||||
fFlexiSource -> ConstructFlexi(mother);
|
||||
}
|
||||
|
||||
void BrachyFactoryFlexi::CleanSource()
|
||||
void BrachyFactoryFlexi::CleanSource()
|
||||
{
|
||||
fFlexiSource -> CleanFlexi();
|
||||
fFlexiSource = nullptr;
|
||||
|
||||
@@ -33,7 +33,8 @@
|
||||
// *******************************
|
||||
//
|
||||
//
|
||||
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstructionLeipzig.hh"
|
||||
#include "globals.hh"
|
||||
#include "BrachyFactoryLeipzig.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -43,8 +44,6 @@
|
||||
#include "G4IonTable.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstructionLeipzig.hh"
|
||||
|
||||
BrachyFactoryLeipzig:: BrachyFactoryLeipzig()
|
||||
{
|
||||
|
||||
@@ -32,8 +32,9 @@
|
||||
// * *
|
||||
// ********************************
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstructionOncura6711.hh"
|
||||
#include "globals.hh"
|
||||
#include "BrachyFactoryOncura6711.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -43,8 +44,6 @@
|
||||
#include "G4IonTable.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstructionOncura6711.hh"
|
||||
|
||||
BrachyFactoryOncura6711:: BrachyFactoryOncura6711()
|
||||
{
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
// *******************************
|
||||
//
|
||||
//
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstructionTG186.hh"
|
||||
#include "globals.hh"
|
||||
#include "BrachyFactoryTG186.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -42,8 +44,6 @@
|
||||
#include "G4IonTable.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "BrachyDetectorMessenger.hh"
|
||||
#include "BrachyDetectorConstructionTG186.hh"
|
||||
|
||||
BrachyFactoryTG186:: BrachyFactoryTG186()
|
||||
{
|
||||
|
||||
@@ -1,258 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Code developed by:
|
||||
// S.Guatelli, A. Le
|
||||
//
|
||||
// *******************************
|
||||
// * *
|
||||
// * BrachyMaterial.cc *
|
||||
// * *
|
||||
// *******************************
|
||||
//
|
||||
//
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4MaterialTable.hh"
|
||||
#include "G4MaterialPropertiesTable.hh"
|
||||
#include "G4MaterialPropertyVector.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementTable.hh"
|
||||
#include "BrachyMaterial.hh"
|
||||
|
||||
BrachyMaterial::BrachyMaterial(): fW(nullptr),
|
||||
fPlexiglass(nullptr), fPb(nullptr), fIr192(nullptr),
|
||||
fTi(nullptr), fAir(nullptr), fH2O(nullptr),
|
||||
fSoft(nullptr), fSteel(nullptr), fMat304steel(nullptr),
|
||||
fAu(nullptr), fI(nullptr), fCeramic(nullptr),
|
||||
fVacuum(nullptr), fBone(nullptr), fMuscle(nullptr), fAg(nullptr)
|
||||
{;}
|
||||
|
||||
BrachyMaterial::~BrachyMaterial()
|
||||
{;}
|
||||
|
||||
void BrachyMaterial::DefineMaterials()
|
||||
{
|
||||
// Define required materials
|
||||
|
||||
G4double A; // atomic mass
|
||||
G4double Z; // atomic number
|
||||
G4double d; // density
|
||||
|
||||
// General elements
|
||||
|
||||
A = 1.01*g/mole;
|
||||
G4Element* elH = new G4Element ("Hydrogen","H",Z = 1.,A);
|
||||
|
||||
A = 14.01*g/mole;
|
||||
G4Element* elN = new G4Element("Nitrogen","N",Z = 7.,A);
|
||||
|
||||
A = 16.00*g/mole;
|
||||
G4Element* elO = new G4Element("Oxygen","O",Z = 8.,A);
|
||||
|
||||
A=26.98*g/mole;
|
||||
G4Element* elAl = new G4Element("Aluminum","Al", Z = 13.,A);
|
||||
|
||||
A = 12.011*g/mole;
|
||||
G4Element* elC = new G4Element("Carbon","C",Z = 6.,A);
|
||||
|
||||
A = 22.99*g/mole;
|
||||
G4Element* elNa = new G4Element("Sodium","Na",Z = 11.,A);
|
||||
|
||||
A = 24.305*g/mole;
|
||||
G4Element* elMg = new G4Element("Magnesium","Mg",Z = 12.,A);
|
||||
|
||||
A = 30.974*g/mole;
|
||||
G4Element* elP = new G4Element("Phosphorus","P",Z = 15.,A);
|
||||
|
||||
A = 32.06*g/mole;
|
||||
G4Element* elS = new G4Element("Sulfur","S",Z = 16.,A);
|
||||
|
||||
A = 35.453*g/mole;
|
||||
G4Element* elCl = new G4Element("Chlorine","Cl",Z = 17.,A);
|
||||
|
||||
A = 39.098*g/mole;
|
||||
G4Element* elK = new G4Element("Potassium","K",Z = 19.,A);
|
||||
|
||||
A = 40.08*g/mole;
|
||||
G4Element* elCa = new G4Element("Calcium","Ca",Z = 20.,A);
|
||||
|
||||
A = 65.38*g/mole;
|
||||
G4Element* elZn = new G4Element("Zinc","Zn",Z = 30.,A);
|
||||
|
||||
A = 54.94*g/mole;
|
||||
G4Element* elMn = new G4Element("Manganese","Mn",Z = 25.,A);
|
||||
|
||||
A = 28.09*g/mole;
|
||||
G4Element* elSi = new G4Element("Silicon","Si",Z = 14.,A);
|
||||
|
||||
A = 52.00*g/mole;
|
||||
G4Element* elCr = new G4Element("Chromium","Cr",Z = 24.,A);
|
||||
|
||||
A = 58.70*g/mole;
|
||||
G4Element* elNi = new G4Element("Nickel","Ni",Z = 28.,A);
|
||||
|
||||
A = 55.85*g/mole;
|
||||
G4Element* elFe = new G4Element("Iron","Fe",Z = 26.,A);
|
||||
|
||||
A = 183.84* g/mole;
|
||||
d = 19.3*g/cm3;
|
||||
fW = new G4Material("Tungsten",Z = 74.,A,d);
|
||||
|
||||
// Perspex, plexiglass, lucite
|
||||
d = 1.19*g/cm3;
|
||||
fPlexiglass = new G4Material("Plexiglass",d,3);
|
||||
fPlexiglass -> AddElement(elH,0.08);
|
||||
fPlexiglass -> AddElement(elC,0.60);
|
||||
fPlexiglass -> AddElement(elO,0.32);
|
||||
|
||||
// Lead material
|
||||
A = 207.19*g/mole;
|
||||
Z = 82;
|
||||
d = 11.35*g/cm3;
|
||||
fPb = new G4Material("Lead",Z,A,d);
|
||||
|
||||
// Iridium (Medical Physics, Vol 25, No 10, Oct 1998)
|
||||
d = 22.42*g/cm3;
|
||||
A = 191.96260*g/mole ;
|
||||
Z = 77;
|
||||
fIr192 = new G4Material("Iridium",Z,A,d);
|
||||
|
||||
//titanium
|
||||
A = 47.88*g/mole;
|
||||
d = 4.50*g/cm3;
|
||||
fTi = new G4Material("titanium" ,Z = 22.,A,d);
|
||||
|
||||
//silver
|
||||
A = 107.87*g/mole;
|
||||
d = 10.49*g/cm3;
|
||||
Z = 22.0;
|
||||
fAg = new G4Material("Silver", Z, A, d);
|
||||
|
||||
// Air material
|
||||
d = 1.290*mg/cm3;
|
||||
fAir = new G4Material("Air",d,2);
|
||||
fAir -> AddElement(elN,0.7);
|
||||
fAir -> AddElement(elO,0.3);
|
||||
|
||||
// Water
|
||||
d = 1.000*g/cm3;
|
||||
fH2O = new G4Material("Water",d,2);
|
||||
fH2O -> AddElement(elH,2);
|
||||
fH2O -> AddElement(elO,1);
|
||||
fH2O -> GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
|
||||
|
||||
//soft tissue(http://www.nist.gov)
|
||||
d = 1.0*g/cm3;
|
||||
fSoft = new G4Material("tissue",d,13);
|
||||
fSoft -> AddElement(elH,0.104472);
|
||||
fSoft -> AddElement(elC,0.23219);
|
||||
fSoft -> AddElement(elN,0.02488);
|
||||
fSoft -> AddElement(elO,0.630238);
|
||||
fSoft -> AddElement(elNa,0.00113);
|
||||
fSoft -> AddElement(elMg,0.00013);
|
||||
fSoft -> AddElement(elP,0.00133);
|
||||
fSoft -> AddElement(elS,0.00199);
|
||||
fSoft -> AddElement(elCl,0.00134);
|
||||
fSoft -> AddElement(elK,0.00199);
|
||||
fSoft -> AddElement(elCa,0.00023);
|
||||
fSoft -> AddElement(elFe,0.00005);
|
||||
fSoft -> AddElement(elZn,0.00003);
|
||||
|
||||
// Stainless steel (Medical Physics, Vol 25, No 10, Oct 1998)
|
||||
d = 8.02*g/cm3 ;
|
||||
fSteel = new G4Material("Stainless steel",d,5);
|
||||
fSteel -> AddElement(elMn, 0.02);
|
||||
fSteel -> AddElement(elSi, 0.01);
|
||||
fSteel -> AddElement(elCr, 0.19);
|
||||
fSteel -> AddElement(elNi, 0.10);
|
||||
fSteel -> AddElement(elFe, 0.68);
|
||||
|
||||
//Define Stainless-steel-304 - Flexi source
|
||||
d = 7.999*g/cm3;
|
||||
fMat304steel = new G4Material("Stainless steel 304",d,6);
|
||||
fMat304steel -> AddElement(elMn, 0.02);
|
||||
fMat304steel -> AddElement(elSi, 0.01);
|
||||
fMat304steel -> AddElement(elCr, 0.19);
|
||||
fMat304steel -> AddElement(elNi, 0.10);
|
||||
fMat304steel -> AddElement(elFe, 0.6792);
|
||||
fMat304steel -> AddElement(elC, 0.0008);
|
||||
|
||||
//gold
|
||||
A = 196.97*g/mole;
|
||||
d = 19.32*g/cm3;
|
||||
fAu = new G4Material("gold",Z = 79.,A,d);
|
||||
|
||||
//Iodine Core
|
||||
A = 124.9*g/mole;
|
||||
d = 4.862*g/cm3;
|
||||
fI = new G4Material("Iodine",Z = 53.,A,d);
|
||||
|
||||
//ceramic(Medical Physics, May 2000)
|
||||
d = 2.88*g/cm3;
|
||||
fCeramic = new G4Material("allumina",d,2);
|
||||
fCeramic -> AddElement(elAl,2);
|
||||
fCeramic -> AddElement(elO,3);
|
||||
|
||||
G4double density = universe_mean_density;
|
||||
G4double pressure = 3.e-18*pascal;
|
||||
G4double temperature = 2.73*kelvin;
|
||||
A=1.01*g/mole;
|
||||
fVacuum = new G4Material("Galactic", Z = 1., A,density,kStateGas,temperature,pressure);
|
||||
|
||||
//compact bone (http://www.NIST.gov)
|
||||
d = 1.85*g/cm3;
|
||||
fBone = new G4Material("bone",d,8);
|
||||
fBone -> AddElement(elH,0.063984);
|
||||
fBone -> AddElement(elC,0.278);
|
||||
fBone -> AddElement(elN,0.027);
|
||||
fBone -> AddElement(elO,0.410016);
|
||||
fBone -> AddElement(elMg,0.002);
|
||||
fBone -> AddElement(elP,0.07);
|
||||
fBone -> AddElement(elS,0.002);
|
||||
fBone -> AddElement(elCa,0.147);
|
||||
|
||||
//muscle(http://www.NIST.gov)
|
||||
fMuscle = new G4Material("muscle",d,9);
|
||||
fMuscle -> AddElement(elH,0.101997);
|
||||
fMuscle -> AddElement(elC,0.123);
|
||||
fMuscle -> AddElement(elN,0.035);
|
||||
fMuscle -> AddElement(elNa,0.0008);
|
||||
fMuscle -> AddElement(elO,0.729);
|
||||
fMuscle -> AddElement(elMg,0.0002);
|
||||
fMuscle -> AddElement(elP,0.002);
|
||||
fMuscle -> AddElement(elS,0.005);
|
||||
fMuscle -> AddElement(elK,0.003);
|
||||
}
|
||||
|
||||
G4Material* BrachyMaterial::GetMat(G4String material)
|
||||
{
|
||||
// Returns a material
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(material);
|
||||
return pttoMaterial;
|
||||
}
|
||||
@@ -33,6 +33,8 @@ Author: Susanna Guatelli
|
||||
// * *
|
||||
// **********************************
|
||||
//
|
||||
#include "BrachyPhysicsList.hh"
|
||||
#include "BrachyPhysicsListMessenger.hh"
|
||||
#include "G4EmStandardPhysics_option4.hh"
|
||||
#include "G4EmLivermorePhysics.hh"
|
||||
#include "G4EmStandardPhysics.hh"
|
||||
@@ -43,7 +45,6 @@ Author: Susanna Guatelli
|
||||
#include "G4DecayPhysics.hh"
|
||||
#include "G4RadioactiveDecayPhysics.hh"
|
||||
#include "G4EmPenelopePhysics.hh"
|
||||
#include "BrachyPhysicsList.hh"
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
@@ -54,14 +55,17 @@ Author: Susanna Guatelli
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "BrachyPhysicsListMessenger.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
|
||||
BrachyPhysicsList::BrachyPhysicsList(): G4VModularPhysicsList()
|
||||
{
|
||||
SetVerboseLevel(1);
|
||||
|
||||
|
||||
G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(250*eV, 1*GeV);
|
||||
SetDefaultCutValue(0.05 *mm);
|
||||
DumpCutValuesTable();
|
||||
|
||||
// EM physics: default
|
||||
fEmPhysicsList = new G4EmLivermorePhysics();
|
||||
fEmName="emlivermore";
|
||||
@@ -159,30 +163,3 @@ void BrachyPhysicsList::AddPhysicsList(const G4String& name)
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
void BrachyPhysicsList::SetCuts()
|
||||
{
|
||||
// Definition of threshold of production
|
||||
// of secondary particles
|
||||
// This is defined in range.
|
||||
defaultCutValue = 0.05 * mm;
|
||||
SetCutValue(defaultCutValue, "gamma");
|
||||
SetCutValue(defaultCutValue, "e-");
|
||||
SetCutValue(defaultCutValue, "e+");
|
||||
|
||||
// By default the low energy limit to produce
|
||||
// secondary particles is 990 eV.
|
||||
// This value is correct when using the EM Standard Physics.
|
||||
// When using the Low Energy Livermore this value can be
|
||||
// changed to 250 eV corresponding to the limit
|
||||
// of validity of the physics models.
|
||||
// Comment out following three lines if the
|
||||
// Standard electromagnetic Package is adopted.
|
||||
G4double lowLimit = 250. * eV;
|
||||
G4double highLimit = 100. * GeV;
|
||||
|
||||
G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(lowLimit,
|
||||
highLimit);
|
||||
|
||||
// Print the cuts
|
||||
if (verboseLevel>0) DumpCutValuesTable();
|
||||
}
|
||||
|
||||
@@ -30,16 +30,15 @@
|
||||
|
||||
BrachyPhysicsListMessenger::BrachyPhysicsListMessenger(BrachyPhysicsList* pPhys)
|
||||
:G4UImessenger(),
|
||||
fPhysicsList(pPhys),fPhysDir(0),fListCmd(0)
|
||||
fPhysicsList(pPhys),fPhysDir(nullptr),fListCmd(nullptr)
|
||||
{
|
||||
fPhysDir = new G4UIdirectory("/testem/phys/");
|
||||
fPhysDir->SetGuidance("physics list commands");
|
||||
|
||||
fPhysDir -> SetGuidance("physics list commands");
|
||||
|
||||
fListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
|
||||
fListCmd->SetGuidance("Add modula physics list.");
|
||||
fListCmd->SetParameterName("PList",false);
|
||||
fListCmd->AvailableForStates(G4State_PreInit);
|
||||
fListCmd -> SetGuidance("Add modula physics list.");
|
||||
fListCmd -> SetParameterName("PList",false);
|
||||
fListCmd -> AvailableForStates(G4State_PreInit);
|
||||
}
|
||||
|
||||
BrachyPhysicsListMessenger::~BrachyPhysicsListMessenger()
|
||||
|
||||
@@ -42,18 +42,18 @@
|
||||
#include "globals.hh"
|
||||
|
||||
#include "BrachyPrimaryGeneratorAction.hh"
|
||||
#include "BrachyAnalysisManager.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4Event.hh"
|
||||
#include "G4GeneralParticleSource.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "BrachyAnalysisManager.hh"
|
||||
|
||||
BrachyPrimaryGeneratorAction::BrachyPrimaryGeneratorAction()
|
||||
{
|
||||
// Use the GPS to generate primary particles,
|
||||
// Particle type, energy position, direction are specified in
|
||||
//macro files
|
||||
// macro files
|
||||
fGun = new G4GeneralParticleSource();
|
||||
}
|
||||
|
||||
@@ -71,9 +71,9 @@ void BrachyPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
auto analysisManager = G4AnalysisManager::Instance();
|
||||
G4double energy = fGun -> GetParticleEnergy();
|
||||
// Fill histogram with the energy spectrum of
|
||||
// the photons emitted the radionuclide
|
||||
// when modelling the photons directly (not via radioactive decay)
|
||||
analysisManager->FillH1(0, energy/keV);
|
||||
// the photons emitted by the radionuclide
|
||||
// when modelling the photons as primary particles (not via radioactive decay)
|
||||
analysisManager -> FillH1(0, energy/keV);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,11 +41,11 @@
|
||||
//
|
||||
|
||||
#include "BrachyRunAction.hh"
|
||||
#include "BrachyAnalysisManager.hh"
|
||||
#include "G4Run.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "BrachyAnalysisManager.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
@@ -73,7 +73,7 @@ analysisManager -> SetVerboseLevel(1);
|
||||
|
||||
// Create histogram with the energy spectrum of the photons emitted by the
|
||||
// radionucldie
|
||||
analysisManager-> CreateH1("h10","energy spectrum", 800, 0., 800.);
|
||||
analysisManager -> CreateH1("h10","energy spectrum", 800, 0., 800.);
|
||||
}
|
||||
|
||||
void BrachyRunAction::EndOfRunAction(const G4Run* aRun)
|
||||
|
||||
@@ -23,12 +23,10 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// Author: Susanna Guatelli (guatelli@ge.infn.it)
|
||||
//
|
||||
|
||||
#include "BrachyAnalysisManager.hh"
|
||||
#include "BrachySteppingAction.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4Step.hh"
|
||||
@@ -39,8 +37,6 @@
|
||||
#include "G4TrackStatus.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "BrachyAnalysisManager.hh"
|
||||
#include "BrachySteppingAction.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
BrachySteppingAction::BrachySteppingAction()
|
||||
@@ -81,7 +77,7 @@ void BrachySteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
|
||||
// Fill histogram with energy spectrum of the photons emitted in the
|
||||
// radioactive decay
|
||||
analysisManager->FillH1(0, energy/keV);
|
||||
analysisManager -> FillH1(0, energy/keV);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,15 +30,16 @@
|
||||
//
|
||||
Original code from geant4/examples/extended/runAndEvent/RE03, by M. Asai
|
||||
*/
|
||||
#include <map>
|
||||
#include <fstream>
|
||||
|
||||
#include "BrachyUserScoreWriter.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "BrachyAnalysisManager.hh"
|
||||
#include "G4MultiFunctionalDetector.hh"
|
||||
#include "G4SDParticleFilter.hh"
|
||||
#include "G4VPrimitiveScorer.hh"
|
||||
#include "G4VScoringMesh.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include <map>
|
||||
#include <fstream>
|
||||
// The default output is
|
||||
// voxelX, voxelY, voxelZ, edep
|
||||
// The BrachyUserScoreWriter allows to change the format of the output 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(CompositeCalorimeter)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
#include "G4PhysListFactory.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4RunManagerFactory.hh"
|
||||
#include "G4UImanager.hh"
|
||||
|
||||
#include "G4VisExecutive.hh"
|
||||
@@ -45,7 +45,7 @@ int main(int argc,char** argv) {
|
||||
|
||||
G4VisManager *visManager = nullptr;
|
||||
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
auto* runManager = G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default);
|
||||
runManager->SetUserInitialization(new CCalDetectorConstruction);
|
||||
|
||||
G4PhysListFactory factory;
|
||||
@@ -103,13 +103,7 @@ int main(int argc,char** argv) {
|
||||
UImanager->ApplyCommand(command+fileName);
|
||||
}
|
||||
|
||||
//Close-out analysis:
|
||||
// Save histograms
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
man->Write();
|
||||
man->CloseFile();
|
||||
// Complete clean-up
|
||||
delete G4AnalysisManager::Instance();
|
||||
delete runManager;
|
||||
delete visManager;
|
||||
return 0;
|
||||
|
||||
@@ -8,6 +8,35 @@
|
||||
Example History file
|
||||
---------------------
|
||||
|
||||
24.05.2021 - B. Morgan (ccal-V10-07-02)
|
||||
- Bump required CMake version range to 3.12...3.20, matching core Geant4
|
||||
|
||||
07.05.2021 - A.Ribon (ccal-V10-07-01)
|
||||
- CCalEcal, CCalHcal, CCalHall, CCalEcalOrganization, CCalHcalOrganization :
|
||||
fixed compilation warning (overriden virtual member function not marked
|
||||
as 'override').
|
||||
|
||||
04.05.2021 - A.Ribon (ccal-V10-07-00)
|
||||
- Migrated to multi-threaded, using G4RunManagerFactory.
|
||||
These are the main changes:
|
||||
1. Introduced the action initializer.
|
||||
2. Split the definition of the sensitive part of the detector
|
||||
from the detector construction itself.
|
||||
(A new method, sensitiveHandling(), has been introduced in
|
||||
the base class CCalG4Able.)
|
||||
3. Made the following three classes thread-local singletons
|
||||
(instead of global singletons): CCalSDList, CCalSensAssign
|
||||
and CCalSensitiveDetectors.
|
||||
(The class CCalSensitiveConfiguration can still remain as a
|
||||
global singleton.)
|
||||
4. Multi-threaded use of the G4AnalysisManager in the run action
|
||||
(with the merging of histograms and ntuple of of all working
|
||||
threads at the end of the run).
|
||||
The most tricky part of this migration was the treatment of the
|
||||
sensitive detectors (i.e. the steps 2. and 3. above), because
|
||||
it was originally done together with the building of the geometry
|
||||
and via thread-unsafe singletons.
|
||||
|
||||
02.11.2020 - B.Morgan (ccal-V10-06-00)
|
||||
- Support same CMake version range as core Geant4
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
> ./CompositeCalorimeter test.g4mac
|
||||
|
||||
which simulate 10 events, each being a 100 GeV pi- incident on the
|
||||
which simulate a few events, each being a 100 GeV pi- incident on the
|
||||
electromagnetic crystal calorimeter followed by the hadronic calorimeter,
|
||||
without magnetic field.
|
||||
The output is the ROOT file "ccal.root" .
|
||||
@@ -140,10 +140,6 @@
|
||||
line must be set as follows (the magnetic field unity is kilo Gauss).
|
||||
30.0 9 652.0
|
||||
|
||||
The default stepper in magnetic field is G4ClassicalRK4, but other
|
||||
possibilities can be selected by editing the file
|
||||
src/CCalDetectorConstruction.cc (look at the string "***STEPPER***").
|
||||
|
||||
In order to deactivate either the ECAL or the HCAL, it is enough
|
||||
to comment out the corresponding line in the file g4testbeamhcal96.conf,
|
||||
using "#" as the comment character. For instance, to have only the HCAL
|
||||
@@ -233,26 +229,11 @@
|
||||
4. Physics processes
|
||||
--------------------
|
||||
|
||||
By the default, one of the ufficial High Energy Physics List for
|
||||
Calorimetry, QGSP_BIC_EMY, is used in this example, so that it
|
||||
allows to test the low-energy electromagnetic.
|
||||
However, it is very easy to use instead either LHEP, QGSP, or QGSC.
|
||||
To do so, it is enough to comment/uncomment a line in the main
|
||||
CompositeCalorimeter.cc : for example, if you want to use LHEP
|
||||
instead of the default QGSP_BIC_EMY you have to change it as follows:
|
||||
|
||||
//***LOOKHERE*** CHOOSE THE PHYSICS LIST.
|
||||
runManager->SetUserInitialization(new LHEP); // LHEP
|
||||
// runManager->SetUserInitialization(new QGSP); // QGSP
|
||||
// runManager->SetUserInitialization(new QGSC); // QGSC
|
||||
// runManager->SetUserInitialization(new QGSP_BIC_EMY); // QGSP_BIC_EMY
|
||||
//***endLOOKHERE***
|
||||
|
||||
Notice that, for most of the cases (and certainly also in this case
|
||||
in which we don't even take into account the beam profile, noise
|
||||
and digitization!) the faster LHEP Physics List would be good enough
|
||||
for calorimetry studies.
|
||||
|
||||
The factory physics list is used, therefore the choice of the physics list
|
||||
is steered by the environmental variable PHYSLIST.
|
||||
(Note: if this environmental variable is not set, the default physics list
|
||||
which is used is FTFP_BERT).
|
||||
|
||||
|
||||
5. Particle Generator
|
||||
---------------------
|
||||
@@ -435,18 +416,6 @@ No Noise and Digitization
|
||||
and then run some events, for example:
|
||||
Idle> /run/beamOn 3
|
||||
|
||||
Notice that, by default, OGL is used for the visualization,
|
||||
because it is quite fast and it does not produce any files in
|
||||
output. However, you can always choose something else, for example
|
||||
VRML2FILE or DAWNFILE, either interactively as follows:
|
||||
Idle> /vis/open DAWNFILE
|
||||
or by changing the default, by editing the file (main program)
|
||||
CompositeCalorimeter.cc and comment/uncomment the lines
|
||||
in such a way to have, at the end:
|
||||
visCommand = "/vis/open DAWNFILE";
|
||||
// visCommand = "/vis/open VRML2FILE";
|
||||
// visCommand = "/vis/open OGL";
|
||||
|
||||
The tracks that are shown include both charged and neutral particles
|
||||
of any momentum: if you want instead only charged, or only neutral,
|
||||
then you have simply to edit src/CCalEndOfEventAction.cc
|
||||
@@ -530,8 +499,11 @@ No Noise and Digitization
|
||||
CCalG4Hit derives from G4VHit and CCalHit;
|
||||
CCaloSD derives from G4VSensitiveDetector.
|
||||
|
||||
CCalActionInitializer
|
||||
User-action initialization.
|
||||
|
||||
CCalAnalysis
|
||||
Analysis manager class which uses Anaphe.
|
||||
Analysis manager class.
|
||||
|
||||
CCalRunAction
|
||||
User run action class.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -24,29 +24,20 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef CCalActionInitializer_h
|
||||
#define CCalActionInitializer_h 1
|
||||
|
||||
#include "G4VUserActionInitialization.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class CCalActionInitializer : public G4VUserActionInitialization
|
||||
{
|
||||
class CCalActionInitializer : public G4VUserActionInitialization {
|
||||
public:
|
||||
|
||||
CCalActionInitializer();
|
||||
~CCalActionInitializer(){;};
|
||||
~CCalActionInitializer() {;};
|
||||
|
||||
void Build() const;
|
||||
void BuildForMaster() const;
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -34,13 +34,19 @@
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class CCalG4Hall;
|
||||
|
||||
|
||||
class CCalDetectorConstruction : public G4VUserDetectorConstruction {
|
||||
public:
|
||||
CCalDetectorConstruction();
|
||||
~CCalDetectorConstruction();
|
||||
virtual ~CCalDetectorConstruction();
|
||||
|
||||
public:
|
||||
G4VPhysicalVolume* Construct();
|
||||
virtual G4VPhysicalVolume* Construct();
|
||||
virtual void ConstructSDandField();
|
||||
|
||||
private:
|
||||
CCalG4Hall* testBeamHCal96;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -73,8 +73,8 @@ public:
|
||||
|
||||
|
||||
protected:
|
||||
virtual G4int readFile();
|
||||
virtual void constructDaughters();
|
||||
virtual G4int readFile() override;
|
||||
virtual void constructDaughters() override;
|
||||
|
||||
private:
|
||||
G4String genMat; //General material
|
||||
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
CCalEcalOrganization(){};
|
||||
~CCalEcalOrganization();
|
||||
|
||||
virtual unsigned int GetUnitID(const G4Step* aStep) const ;
|
||||
virtual unsigned int GetUnitID(const G4Step* aStep) const override;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -69,8 +69,8 @@ public:
|
||||
//Set the type of a logical volume to select its vis parameters.
|
||||
void setVisType(CCalVisualisable::visType, G4LogicalVolume*);
|
||||
|
||||
|
||||
//Sensitivity related
|
||||
void sensitiveHandling();
|
||||
void setSensitivity(G4bool sens=true) {sensitivity=sens;}
|
||||
G4bool isSensitive() const {return sensitivity;}
|
||||
|
||||
@@ -78,7 +78,6 @@ public:
|
||||
G4String G4Name() const {return g4ableName;}
|
||||
void setName(const G4String& name) {g4ableName = name;}
|
||||
|
||||
|
||||
//Comparison operator needed for CCalG4AbleTable. Compares phys. volumes
|
||||
G4bool operator==(const CCalG4Able& right) const;
|
||||
|
||||
@@ -91,7 +90,7 @@ protected:
|
||||
|
||||
//Constructs the sensitive detectors and associates them to the corresponding
|
||||
//logical volumes
|
||||
virtual void constructSensitive() {}
|
||||
virtual void constructSensitive() = 0;
|
||||
|
||||
protected:
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -45,18 +45,18 @@ public:
|
||||
CCalG4Ecal(const G4String &name);
|
||||
virtual ~CCalG4Ecal();
|
||||
|
||||
void setType(CMType ty) {type = ty;}
|
||||
void setType(CMType ty) {type = ty;}
|
||||
|
||||
//Prefix to all names in the Detector
|
||||
static G4String idName;
|
||||
|
||||
protected:
|
||||
//This methods actually constructs the volume.
|
||||
virtual G4VPhysicalVolume* constructIn(G4VPhysicalVolume*);
|
||||
virtual G4VPhysicalVolume* constructIn(G4VPhysicalVolume*) override;
|
||||
|
||||
//Constructs the sensitive detectors and associates them to the corresponding
|
||||
//logical volumes
|
||||
virtual void constructSensitive() ;
|
||||
virtual void constructSensitive() override;
|
||||
|
||||
private:
|
||||
//Methods to construct the different parts of the detector
|
||||
|
||||
@@ -41,8 +41,9 @@ public:
|
||||
|
||||
protected:
|
||||
//This methods actually constructs the volume.
|
||||
virtual G4VPhysicalVolume* constructIn(G4VPhysicalVolume*);
|
||||
virtual void constructDaughters();
|
||||
virtual G4VPhysicalVolume* constructIn(G4VPhysicalVolume*) override;
|
||||
virtual void constructDaughters() override;
|
||||
virtual void constructSensitive() override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -45,21 +45,21 @@ public:
|
||||
|
||||
protected:
|
||||
//This methods actually constructs the volume.
|
||||
virtual G4VPhysicalVolume* constructIn(G4VPhysicalVolume*);
|
||||
virtual void constructDaughters();
|
||||
virtual G4VPhysicalVolume* constructIn(G4VPhysicalVolume*) override;
|
||||
virtual void constructDaughters() override;
|
||||
|
||||
//Construct layer of scintillator or absorber
|
||||
G4LogicalVolume* constructScintillatorLayer (G4int);
|
||||
G4LogicalVolume* constructAbsorberLayer (G4int);
|
||||
G4LogicalVolume* constructScintillatorLayer(G4int);
|
||||
G4LogicalVolume* constructAbsorberLayer(G4int);
|
||||
|
||||
//Constructs the sensitive detectors and associates them to the corresponding
|
||||
//logical volumes
|
||||
virtual void constructSensitive() ;
|
||||
virtual void constructSensitive() override;
|
||||
|
||||
private:
|
||||
//Private data members
|
||||
ptrG4Log* sclLog;
|
||||
ptrG4Log* absLog;
|
||||
ptrG4Log* sclLog;
|
||||
ptrG4Log* absLog;
|
||||
|
||||
// Logical volumes for sensitive detectors
|
||||
std::vector<ptrG4Log> allSensitiveLogs;
|
||||
|
||||
@@ -45,8 +45,8 @@ public:
|
||||
G4double getDx_2Hall() const {return dx_2Hall;}
|
||||
|
||||
protected:
|
||||
virtual G4int readFile();
|
||||
virtual void constructDaughters();
|
||||
virtual G4int readFile() override;
|
||||
virtual void constructDaughters() override;
|
||||
|
||||
private:
|
||||
G4String genMaterial; //General material
|
||||
|
||||
@@ -74,8 +74,8 @@ public:
|
||||
G4double getDx_2Scnt(unsigned int i) const {return dx_2Scintillator[i];}
|
||||
|
||||
protected:
|
||||
virtual G4int readFile();
|
||||
virtual void constructDaughters();
|
||||
virtual G4int readFile() override;
|
||||
virtual void constructDaughters() override;
|
||||
|
||||
private:
|
||||
G4String genMaterial; //General material
|
||||
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
CCalHcalOrganization(){}
|
||||
~CCalHcalOrganization();
|
||||
|
||||
virtual unsigned int GetUnitID(const G4Step* aStep) const ;
|
||||
virtual unsigned int GetUnitID(const G4Step* aStep) const override;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -38,8 +38,8 @@ class G4Run;
|
||||
class CCalRunAction: public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
CCalRunAction(){};
|
||||
virtual ~CCalRunAction(){};
|
||||
CCalRunAction();
|
||||
virtual ~CCalRunAction();
|
||||
|
||||
virtual void BeginOfRunAction(const G4Run* aRun);
|
||||
virtual void EndOfRunAction(const G4Run* aRun);
|
||||
|
||||
@@ -34,11 +34,13 @@
|
||||
|
||||
#include <vector>
|
||||
#include "globals.hh"
|
||||
#include "G4ThreadLocalSingleton.hh"
|
||||
|
||||
typedef G4String nameType;
|
||||
|
||||
class CCalSDList
|
||||
{
|
||||
friend class G4ThreadLocalSingleton< CCalSDList >;
|
||||
private:
|
||||
CCalSDList();
|
||||
~CCalSDList();
|
||||
@@ -58,7 +60,7 @@ public:
|
||||
G4int getNumberOfTrackerSD();
|
||||
|
||||
private:
|
||||
static CCalSDList* theList;
|
||||
static G4ThreadLocal CCalSDList* theList;
|
||||
std::vector<nameType> caloSD;
|
||||
std::vector<nameType> trackerSD;
|
||||
|
||||
|
||||
@@ -36,20 +36,21 @@
|
||||
#include <map>
|
||||
#include "globals.hh"
|
||||
#include "G4VSensitiveDetector.hh"
|
||||
#include "G4ThreadLocalSingleton.hh"
|
||||
|
||||
class CCalSensAssign
|
||||
{
|
||||
friend class G4ThreadLocalSingleton< CCalSensAssign >;
|
||||
public:
|
||||
~CCalSensAssign(){}
|
||||
static CCalSensAssign* getInstance();
|
||||
G4bool assign();
|
||||
G4bool stackingAction();
|
||||
G4bool addCaloSD(G4String name, CCalVOrganization* numberingScheme);
|
||||
|
||||
private:
|
||||
CCalSensAssign();
|
||||
|
||||
static CCalSensAssign* theInstance;
|
||||
static G4ThreadLocal CCalSensAssign* theInstance;
|
||||
std::map<G4String,G4VSensitiveDetector*> sens_;
|
||||
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user