diff --git a/CMakeLists.txt b/CMakeLists.txt index d3afd1d6e0..8fbf471570 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -222,7 +222,7 @@ set(FAIRROOT_LIBRARY_PROPERTIES ${FAIRROOT_LIBRARY_PROPERTIES} ) set(PROJECT_LIBRARY_PROPERTIES ${FAIRROOT_LIBRARY_PROPERTIES}) -find_package2(PUBLIC yaml-cpp) +find_package2(PUBLIC yaml-cpp REQUIRED) # Workaround missing exported include directories # Upstream has fixed this in https://github.com/jbeder/yaml-cpp/commit/ab5f9259a4e67d3fe0e4832bd407a9e596e2d884 (since 0.6.3) if(yaml-cpp_FOUND) diff --git a/base/sim/FairGenericVMCConfig.cxx b/base/sim/FairGenericVMCConfig.cxx index b41611eeb5..41c2f5c339 100644 --- a/base/sim/FairGenericVMCConfig.cxx +++ b/base/sim/FairGenericVMCConfig.cxx @@ -21,6 +21,11 @@ FairGenericVMCConfig::FairGenericVMCConfig() , fPostInitName("g4ConfigPostInit.C") {} +FairGenericVMCConfig::FairGenericVMCConfig(const FairGenericVMCConfig& config) + : fPostInitFlag(config.fPostInitFlag) + , fPostInitName(config.fPostInitName) +{} + FairGenericVMCConfig::~FairGenericVMCConfig() {} void FairGenericVMCConfig::Setup(const char* mcEngine) diff --git a/base/sim/FairGenericVMCConfig.h b/base/sim/FairGenericVMCConfig.h index c914288927..f1dbfbfcc1 100644 --- a/base/sim/FairGenericVMCConfig.h +++ b/base/sim/FairGenericVMCConfig.h @@ -19,6 +19,7 @@ class FairGenericVMCConfig { public: FairGenericVMCConfig(); + FairGenericVMCConfig(const FairGenericVMCConfig& config); virtual ~FairGenericVMCConfig(); virtual void Setup(const char* mcEngine); diff --git a/base/steer/FairRunSim.cxx b/base/steer/FairRunSim.cxx index b73e3ea402..13a8a76683 100644 --- a/base/steer/FairRunSim.cxx +++ b/base/steer/FairRunSim.cxx @@ -74,8 +74,6 @@ FairRunSim::FairRunSim(Bool_t isMaster) , fUserCuts("SetCuts.C") , fIsMT(kFALSE) , fImportTGeoToVMC(kTRUE) - , fSimulationConfig(nullptr) - { if (fginstance) { Fatal("FairRun", "Singleton instance already exists."); @@ -290,7 +288,7 @@ void FairRunSim::SetMCConfig() fSimSetup(); } else { if (fSimulationConfig == nullptr) // RKRKRK COMMENT - fSimulationConfig = new FairGenericVMCConfig(); + fSimulationConfig = std::make_unique(); fSimulationConfig->Setup(GetName()); } diff --git a/base/steer/FairRunSim.h b/base/steer/FairRunSim.h index 661452ca4a..0e52b5a275 100644 --- a/base/steer/FairRunSim.h +++ b/base/steer/FairRunSim.h @@ -8,10 +8,11 @@ #ifndef FAIRRUNSIM_H #define FAIRRUNSIM_H -#include "FairIon.h" // for FairIon -#include "FairMCApplication.h" // for FairMCApplication -#include "FairParticle.h" // for FairParticle -#include "FairRun.h" // for FairRun +#include "FairGenericVMCConfig.h" // for FairGenericVMCConfig +#include "FairIon.h" // for FairIon +#include "FairMCApplication.h" // for FairMCApplication +#include "FairParticle.h" // for FairParticle +#include "FairRun.h" // for FairRun #include // for Bool_t, Double_t, Int_t, etc #include // for multi-threading @@ -24,7 +25,6 @@ class FairMCEventHeader; class FairMesh; class FairModule; class FairPrimaryGenerator; -class FairGenericVMCConfig; /** * Configure the Simulation session @@ -178,8 +178,8 @@ class FairRunSim : public FairRun fUseSimSetupPostInitFunction = true; } - void SetSimulationConfig(FairGenericVMCConfig* tconf) { fSimulationConfig = tconf; } - FairGenericVMCConfig* GetSimulationConfig() { return fSimulationConfig; } + void SetSimulationConfig(std::unique_ptr&& tconf) { fSimulationConfig = std::move(tconf); } + FairGenericVMCConfig* GetSimulationConfig() { return fSimulationConfig.get(); } void SetIsMT(Bool_t isMT) { fIsMT = isMT; } Bool_t IsMT() const { return fIsMT; } @@ -234,7 +234,7 @@ class FairRunSim : public FairRun std::function fSimSetupPostInit; //! /** A user provided function to do sim setup //! / instead of using macros **/ bool fUseSimSetupPostInitFunction = false; - FairGenericVMCConfig* fSimulationConfig; //! /** Simulation configuration */ + std::unique_ptr fSimulationConfig{}; //! /** Simulation configuration */ ClassDefOverride(FairRunSim, 2); }; diff --git a/examples/MQ/pixelDetector/macros/run_sim.C b/examples/MQ/pixelDetector/macros/run_sim.C index 64ae764724..3044078f1a 100644 --- a/examples/MQ/pixelDetector/macros/run_sim.C +++ b/examples/MQ/pixelDetector/macros/run_sim.C @@ -61,7 +61,8 @@ void run_sim(Int_t nEvents = 10, TString mcEngine = "TGeant3", Int_t fileId = 0, // ----- Create simulation run ---------------------------------------- auto run = std::make_unique(); run->SetName(mcEngine); // Transport engine - run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) + run->SetSimulationConfig(std::make_unique()); + run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/MQ/pixelDetector/src/CMakeLists.txt b/examples/MQ/pixelDetector/src/CMakeLists.txt index 03d41b731d..9d0092e0f2 100644 --- a/examples/MQ/pixelDetector/src/CMakeLists.txt +++ b/examples/MQ/pixelDetector/src/CMakeLists.txt @@ -57,6 +57,7 @@ list(APPEND headers add_library(${target} SHARED ${sources} ${no_dict_sources} ${headers} ${no_dict_headers}) add_library(FairRoot::${target} ALIAS ${target}) set_target_properties(${target} PROPERTIES ${PROJECT_LIBRARY_PROPERTIES}) +set_property(TARGET ${target} PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(${target} PUBLIC $ @@ -71,6 +72,7 @@ target_link_libraries(${target} PUBLIC FairRoot::Gen # FairBoxGenerator FairRoot::GeoBase FairRoot::ParBase # FairParGenericSet + FairRoot::ExGConfig FairRoot::ExMCStack FairRoot::ExPassive # FairCave FairRoot::FairMQ @@ -84,6 +86,7 @@ target_link_libraries(${target} PUBLIC ROOT::Physics ROOT::Geom ROOT::Hist + ${VMCLIB} ) diff --git a/examples/MQ/pixelDetector/src/devices/FairMQSimDevice.cxx b/examples/MQ/pixelDetector/src/devices/FairMQSimDevice.cxx index dc19521772..6c87526d75 100644 --- a/examples/MQ/pixelDetector/src/devices/FairMQSimDevice.cxx +++ b/examples/MQ/pixelDetector/src/devices/FairMQSimDevice.cxx @@ -19,6 +19,7 @@ #include "FairPrimaryGenerator.h" #include "FairRunSim.h" #include "FairRuntimeDb.h" +#include "FairVMCConfig.h" #include #include @@ -59,7 +60,7 @@ void FairMQSimDevice::InitTask() } fRunSim->SetName(fTransportName.data()); - // fRunSim->SetSimulationConfig(new FairVMCConfig()); + fRunSim->SetSimulationConfig(std::make_unique()); fRunSim->SetIsMT(kFALSE); if (fUserConfig.Length() > 0) @@ -87,10 +88,11 @@ void FairMQSimDevice::InitializeRun() // ----- ask the fParamMQServer ------------------------------------ // ----- receive the run number and sampler id --------------------- std::string* askForRunNumber = new std::string("ReportSimDevice"); - auto req(NewMessage(const_cast(askForRunNumber->c_str()), - askForRunNumber->length(), - [](void* /*data*/, void* object) { delete static_cast(object); }, - askForRunNumber)); + auto req(NewMessage( + const_cast(askForRunNumber->c_str()), + askForRunNumber->length(), + [](void* /*data*/, void* object) { delete static_cast(object); }, + askForRunNumber)); auto rep(NewMessage()); unsigned int runId = 0; diff --git a/examples/advanced/Tutorial3/macro/run_sim.C b/examples/advanced/Tutorial3/macro/run_sim.C index 9c28e220e4..c6fa2b5101 100644 --- a/examples/advanced/Tutorial3/macro/run_sim.C +++ b/examples/advanced/Tutorial3/macro/run_sim.C @@ -35,6 +35,7 @@ void run_sim(Int_t nEvents = 100, TString mcEngine = "TGeant3") // ------------------------ fRun->SetName(mcEngine); + fRun->SetSimulationConfig(std::make_unique()); TString outFile = "data/testrun_"; outFile = outFile + mcEngine + ".root"; diff --git a/examples/advanced/Tutorial3/macro/run_sim_sep.C b/examples/advanced/Tutorial3/macro/run_sim_sep.C index cca86f2520..43df65ab8e 100644 --- a/examples/advanced/Tutorial3/macro/run_sim_sep.C +++ b/examples/advanced/Tutorial3/macro/run_sim_sep.C @@ -23,6 +23,7 @@ void run_sim_sep(Int_t fileId, Int_t nEvents = 1000, TString mcEngine = "TGeant3 // ------------------------ fRun->SetName(mcEngine); + fRun->SetSimulationConfig(std::make_unique()); TString outfile = Form("data/testrun_%s_f%d.root", mcEngine.Data(), fileId); TString outparam = Form("data/testpar_%s_f%d.root", mcEngine.Data(), fileId); diff --git a/examples/advanced/propagator/macros/runMC.C b/examples/advanced/propagator/macros/runMC.C index 81827d645a..2e5c72c6e5 100644 --- a/examples/advanced/propagator/macros/runMC.C +++ b/examples/advanced/propagator/macros/runMC.C @@ -57,8 +57,8 @@ int runMC(Int_t nEvents = 1000, TString mcEngine = "TGeant4", Bool_t isMT = fals // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); run->SetName(mcEngine); // Transport engine - // run->SetSimulationConfig(new FairVMCConfig()); - run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) + run->SetSimulationConfig(std::make_unique()); + run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/advanced/propagator/macros/runMM.C b/examples/advanced/propagator/macros/runMM.C index db3aeec1a7..6a0fe833be 100644 --- a/examples/advanced/propagator/macros/runMM.C +++ b/examples/advanced/propagator/macros/runMM.C @@ -43,7 +43,7 @@ int runMM(Int_t nEvents = 1000, TString mcEngine = "TGeant4", Bool_t isMT = fals // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); run->SetName(mcEngine); // Transport engine - // run->SetSimulationConfig(new FairVMCConfig()); + run->SetSimulationConfig(make_unique()); run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) run->SetSink(new FairRootFileSink(outFile)); // Output file FairRuntimeDb* rtdb = run->GetRuntimeDb(); @@ -74,7 +74,7 @@ int runMM(Int_t nEvents = 1000, TString mcEngine = "TGeant4", Bool_t isMT = fals FairBoxGenerator* pionBoxGen = new FairBoxGenerator(211, 2); pionBoxGen->SetThetaRange(0, 30); - pionBoxGen->SetPRange(1.,3.); + pionBoxGen->SetPRange(1., 3.); pionBoxGen->SetPhiRange(0., 360.); // 10.,10. when looking for PCA pionBoxGen->SetDebug(kTRUE); @@ -84,7 +84,7 @@ int runMM(Int_t nEvents = 1000, TString mcEngine = "TGeant4", Bool_t isMT = fals FairBoxGenerator* muonBoxGen = new FairBoxGenerator(13, 2); muonBoxGen->SetThetaRange(0, 30); - muonBoxGen->SetPRange(1.,3.); + muonBoxGen->SetPRange(1., 3.); muonBoxGen->SetPhiRange(0., 360.); // 10.,10. when looking for PCA muonBoxGen->SetDebug(kTRUE); diff --git a/examples/simulation/Tutorial1/macros/run_tutorial1.C b/examples/simulation/Tutorial1/macros/run_tutorial1.C index d2cdd016ca..18e8cb3806 100644 --- a/examples/simulation/Tutorial1/macros/run_tutorial1.C +++ b/examples/simulation/Tutorial1/macros/run_tutorial1.C @@ -70,11 +70,11 @@ void run_tutorial1(Int_t nEvents = 10, // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); run->SetName(mcEngine); // Transport engine - FairGenericVMCConfig* config = new FairGenericVMCConfig(); + std::unique_ptr config = std::make_unique(); if (loadPostInitConfig) config->UsePostInitConfig(); - run->SetSimulationConfig(config); - run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) + run->SetSimulationConfig(move(config)); + run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial1/macros/run_tutorial1_binary.C b/examples/simulation/Tutorial1/macros/run_tutorial1_binary.C index 23cd7e591a..fbe9b0b7bf 100644 --- a/examples/simulation/Tutorial1/macros/run_tutorial1_binary.C +++ b/examples/simulation/Tutorial1/macros/run_tutorial1_binary.C @@ -6,8 +6,6 @@ * copied verbatim in the file "LICENSE" * ********************************************************************************/ -#if !defined(__CLING__) || defined(__ROOTCLING__) -#include #include "FairBoxGenerator.h" #include "FairCave.h" #include "FairParRootFileIo.h" @@ -17,10 +15,14 @@ #include "FairSimConfig.h" #include "FairSystemInfo.h" #include "FairTutorialDet1.h" +#include "FairVMCConfig.h" #include #include +#if !defined(__CLING__) || defined(__ROOTCLING__) +#include + using std::cout; using std::endl; #endif @@ -77,8 +79,9 @@ void run_tutorial1_main(const FairSimConfig& config) // ----- Create simulation run ---------------------------------------- FairRunSim run; - run.SetName(config.GetEngine()); // Transport engine - run.SetIsMT(config.IsMultiThreaded()); // Multi-threading mode (Geant4 only) + run.SetName(config.GetEngine()); // Transport engine + run.SetSimulationConfig(std::make_unique()); + run.SetIsMT(config.IsMultiThreaded()); // Multi-threading mode (Geant4 only) run.SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run.GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial1/macros/run_tutorial1_fastsim.C b/examples/simulation/Tutorial1/macros/run_tutorial1_fastsim.C index a1564d518a..e784e920f7 100644 --- a/examples/simulation/Tutorial1/macros/run_tutorial1_fastsim.C +++ b/examples/simulation/Tutorial1/macros/run_tutorial1_fastsim.C @@ -61,7 +61,8 @@ void run_tutorial1_fastsim(Int_t nEvents = 10, TString mcEngine = "TGeant3", Boo // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); - run->SetName(mcEngine); // Transport engine + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) run->SetSink(new FairRootFileSink(outFile)); // Output file FairRuntimeDb* rtdb = run->GetRuntimeDb(); diff --git a/examples/simulation/Tutorial1/macros/run_tutorial1_mesh.C b/examples/simulation/Tutorial1/macros/run_tutorial1_mesh.C index f144c53347..1ea8ef885a 100644 --- a/examples/simulation/Tutorial1/macros/run_tutorial1_mesh.C +++ b/examples/simulation/Tutorial1/macros/run_tutorial1_mesh.C @@ -64,7 +64,8 @@ void run_tutorial1_mesh(Int_t nEvents = 10, TString mcEngine = "TGeant3") // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); - run->SetName(mcEngine); // Transport engine + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial1/macros/run_tutorial1_pythia6.C b/examples/simulation/Tutorial1/macros/run_tutorial1_pythia6.C index bde327d220..9d96b3966d 100644 --- a/examples/simulation/Tutorial1/macros/run_tutorial1_pythia6.C +++ b/examples/simulation/Tutorial1/macros/run_tutorial1_pythia6.C @@ -68,9 +68,10 @@ void run_tutorial1_pythia6(Int_t nEvents = 10, TString mcEngine = "TGeant3") // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); - run->SetName(mcEngine); // Transport engine + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); run->SetSink(std::make_unique(outFile)); - run->SetPythiaDecayer(pythia6Config); // Define Pythia6 as decayer + run->SetPythiaDecayer(pythia6Config); // Define Pythia6 as decayer FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial1/macros/run_tutorial1_pythia8.C b/examples/simulation/Tutorial1/macros/run_tutorial1_pythia8.C index 61db7babe3..845cb81a67 100644 --- a/examples/simulation/Tutorial1/macros/run_tutorial1_pythia8.C +++ b/examples/simulation/Tutorial1/macros/run_tutorial1_pythia8.C @@ -67,9 +67,10 @@ void run_tutorial1_pythia8(Int_t nEvents = 10, TString mcEngine = "TGeant3") // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); - run->SetName(mcEngine); // Transport engine + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); run->SetSink(std::make_unique(outFile)); - run->SetPythiaDecayer(pythia8Config); // Define Pythia8 as decayer + run->SetPythiaDecayer(pythia8Config); // Define Pythia8 as decayer FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial1/macros/run_tutorial1_urqmd.C b/examples/simulation/Tutorial1/macros/run_tutorial1_urqmd.C index 5279359568..9e2b3b8cf3 100644 --- a/examples/simulation/Tutorial1/macros/run_tutorial1_urqmd.C +++ b/examples/simulation/Tutorial1/macros/run_tutorial1_urqmd.C @@ -50,7 +50,8 @@ void run_tutorial1_urqmd(Int_t nEvents = 2, TString mcEngine = "TGeant3") // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); - run->SetName(mcEngine); // Transport engine + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial1/src/CMakeLists.txt b/examples/simulation/Tutorial1/src/CMakeLists.txt index 1d5e6ee133..7ff6c93480 100644 --- a/examples/simulation/Tutorial1/src/CMakeLists.txt +++ b/examples/simulation/Tutorial1/src/CMakeLists.txt @@ -35,6 +35,7 @@ target_link_libraries(${target} PUBLIC FairRoot::FairTools # FairLogger FairRoot::FairFastSim FairRoot::ParBase + FairRoot::ExGConfig FairRoot::ExPassive FairRoot::ExMCStack FairRoot::Gen diff --git a/examples/simulation/Tutorial2/macros/run_background.C b/examples/simulation/Tutorial2/macros/run_background.C index 5dc0e5b85d..957220af76 100644 --- a/examples/simulation/Tutorial2/macros/run_background.C +++ b/examples/simulation/Tutorial2/macros/run_background.C @@ -53,7 +53,8 @@ void run_background(Int_t nEvents = 130) // ----- Create simulation run ---------------------------------------- auto run = std::make_unique(); - run->SetName("TGeant4"); // Transport engine + run->SetName("TGeant4"); // Transport engine + run->SetSimulationConfig(std::make_unique()); run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial2/macros/run_signal.C b/examples/simulation/Tutorial2/macros/run_signal.C index da6625cf31..def13f9918 100644 --- a/examples/simulation/Tutorial2/macros/run_signal.C +++ b/examples/simulation/Tutorial2/macros/run_signal.C @@ -55,7 +55,8 @@ void run_signal(Int_t fileNr, Int_t nEvents = 10) // ----- Create simulation run ---------------------------------------- auto run = std::make_unique(); - run->SetName("TGeant4"); // Transport engine + run->SetName("TGeant4"); // Transport engine + run->SetSimulationConfig(std::make_unique()); run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial2/macros/run_tutorial2.C b/examples/simulation/Tutorial2/macros/run_tutorial2.C index fd13dab990..07adc9abd7 100644 --- a/examples/simulation/Tutorial2/macros/run_tutorial2.C +++ b/examples/simulation/Tutorial2/macros/run_tutorial2.C @@ -65,8 +65,9 @@ void run_tutorial2(Int_t nEvents = 10, TString mcEngine = "TGeant4", Bool_t isMT // ----- Create simulation run ---------------------------------------- auto run = std::make_unique(); - run->SetName(mcEngine); // Transport engine - run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); + run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/Tutorial4/gconfig/g3Config.yaml b/examples/simulation/Tutorial4/gconfig/g3Config.yaml new file mode 100644 index 0000000000..dcff81f6e4 --- /dev/null +++ b/examples/simulation/Tutorial4/gconfig/g3Config.yaml @@ -0,0 +1,40 @@ +G3_TRIG: 1 +G3_SWIT: [4, 100] +G3_DEBU: [0, 0, 1] +G3_RAYL: 1 +G3_STRA: 1 +G3_AUTO: 0 #Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0) +G3_ABAN: 0 #Restore 3.16 behaviour for abandoned tracks +G3_OPTI: 2 #Select optimisation level for GEANT geometry searches (0,1,2) +G3_ERAN: 5.e-7 +G3_CKOV: 1 #Cerenkov photons + +MonteCarlo_Process: + PAIR: 1 #pair production + COMP: 1 #Compton scattering + PHOT: 1 #photo electric effect + PFIS: 0 #photofission + DRAY: 1 #delta-ray + ANNI: 1 #annihilation + BREM: 1 #bremsstrahlung + HADR: 1 #hadronic process + MUNU: 1 #muon nuclear interaction + DCAY: 1 #decay + LOSS: 1 #energy loss + MULS: 0 #multiple scattering + +MonteCarlo_Cut: + CUTGAM: 1.0E-3 #gammas (GeV) + CUTELE: 1.0E-3 #electrons (GeV) + CUTNEU: 1.0E-3 #neutral hadrons (GeV) + CUTHAD: 1.0E-3 #charged hadrons (GeV) + CUTMUO: 1.0E-3 #muons (GeV) + BCUTE: 1.0E-3 #electron bremsstrahlung (GeV) + BCUTM: 1.0E-3 #muon and hadron bremsstrahlung (GeV) + DCUTE: 1.0E-3 #delta-rays by electrons (GeV) + DCUTM: 1.0E-3 #delta-rays by muons (GeV) + PPCUTM: 1.0E-3 #direct pair production by muons (GeV) + TOFMAX: 1.E10 #time of flight cut in seconds + +FairStack_StoreSecondaries: true +FairStack_MinPoints: 0 diff --git a/examples/simulation/Tutorial4/gconfig/g4Config.yaml b/examples/simulation/Tutorial4/gconfig/g4Config.yaml new file mode 100644 index 0000000000..268a87fda0 --- /dev/null +++ b/examples/simulation/Tutorial4/gconfig/g4Config.yaml @@ -0,0 +1,40 @@ +Geant4_UserGeometry: "geomRoot" +Geant4_PhysicsList: "QGSP_BERT_EMV" +Geant4_SpecialProcess: "stepLimiter+specialCuts+specialControls" +Geant4_SpecialStacking: false +Geant4_Multithreaded: false + +Geant4_MaxNStep: 10000 #default is 30000 +Geant4_Commands: + - /cuts/setHighEdge 100 GeV + - /tracking/verbose 0 + +MonteCarlo_Process: + PAIR: 1 #pair production + COMP: 1 #Compton scattering + PHOT: 1 #photo electric effect + PFIS: 0 #photofission + DRAY: 1 #delta-ray + ANNI: 1 #annihilation + BREM: 1 #bremsstrahlung + HADR: 1 #hadronic process + MUNU: 1 #muon nuclear interaction + DCAY: 1 #decay + LOSS: 1 #energy loss + MULS: 1 #multiple scattering + +MonteCarlo_Cut: + CUTGAM: 1.0E-3 #gammas (GeV) + CUTELE: 1.0E-3 #electrons (GeV) + CUTNEU: 1.0E-3 #neutral hadrons (GeV) + CUTHAD: 1.0E-3 #charged hadrons (GeV) + CUTMUO: 1.0E-3 #muons (GeV) + BCUTE: 1.0E-3 #electron bremsstrahlung (GeV) + BCUTM: 1.0E-3 #muon and hadron bremsstrahlung (GeV) + DCUTE: 1.0E-3 #delta-rays by electrons (GeV) + DCUTM: 1.0E-3 #delta-rays by muons (GeV) + PPCUTM: 1.0E-3 #direct pair production by muons (GeV) + TOFMAX: 1.E10 #time of flight cut in seconds + +FairStack_StoreSecondaries: true +FairStack_MinPoints: 0 diff --git a/examples/simulation/Tutorial4/macros/run_tutorial4.C b/examples/simulation/Tutorial4/macros/run_tutorial4.C index 2919fe1948..f58f07f941 100644 --- a/examples/simulation/Tutorial4/macros/run_tutorial4.C +++ b/examples/simulation/Tutorial4/macros/run_tutorial4.C @@ -70,8 +70,9 @@ void run_tutorial4(Int_t nEvents = 10, TString mcEngine = "TGeant3", Bool_t doAl // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); - run->SetName(mcEngine); // Transport engine - run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); + run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/rutherford/macros/run_rad.C b/examples/simulation/rutherford/macros/run_rad.C index 1279bb6cdb..9cd885b450 100644 --- a/examples/simulation/rutherford/macros/run_rad.C +++ b/examples/simulation/rutherford/macros/run_rad.C @@ -55,7 +55,8 @@ void run_rad(Int_t nEvents = 100, TString mcEngine = "TGeant4") // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); - run->SetName(mcEngine); // Transport engine + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/examples/simulation/rutherford/macros/run_rutherford.C b/examples/simulation/rutherford/macros/run_rutherford.C index 2390cfc744..ac438f7571 100644 --- a/examples/simulation/rutherford/macros/run_rutherford.C +++ b/examples/simulation/rutherford/macros/run_rutherford.C @@ -58,8 +58,9 @@ void run_rutherford(Int_t nEvents = 10, TString mcEngine = "TGeant4", Bool_t isM // ----- Create simulation run ---------------------------------------- FairRunSim* run = new FairRunSim(); - run->SetName(mcEngine); // Transport engine - run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) + run->SetName(mcEngine); // Transport engine + run->SetSimulationConfig(std::make_unique()); + run->SetIsMT(isMT); // Multi-threading mode (Geant4 only) run->SetSink(std::make_unique(outFile)); FairRuntimeDb* rtdb = run->GetRuntimeDb(); // ------------------------------------------------------------------------ diff --git a/fairtools/MCConfigurator/CMakeLists.txt b/fairtools/MCConfigurator/CMakeLists.txt index 5ce8794369..7c3fcf5431 100644 --- a/fairtools/MCConfigurator/CMakeLists.txt +++ b/fairtools/MCConfigurator/CMakeLists.txt @@ -29,6 +29,7 @@ target_link_libraries(${target} PUBLIC geant321 geant4vmc + Pythia6 yaml-cpp ROOT::Core diff --git a/fairtools/MCConfigurator/FairYamlVMCConfig.cxx b/fairtools/MCConfigurator/FairYamlVMCConfig.cxx index c7f88b8510..3e045ca17b 100644 --- a/fairtools/MCConfigurator/FairYamlVMCConfig.cxx +++ b/fairtools/MCConfigurator/FairYamlVMCConfig.cxx @@ -69,6 +69,7 @@ void FairYamlVMCConfig::SetupPostInit(const char* mcEngine) if (!((strcmp(mcEngine, "TGeant4") == 0))) { LOG(fatal) << "FairYamlVMCConfig::SetupPostInit() only valid for TGeant4."; } + LOG(info) << "Loading Geant4 PostInit Config."; TString work = getenv("VMCWORKDIR"); TString work_config = work + "/gconfig/";