8 #include "montecarlo/physicslists/GGSCRMCPhysicsList.h"
12 #include "G4HadronPhysicsCRMC.hh"
17 FTFP_BERT(), _modelName("DPMJET-3.06"), _modelThreshold(300. * CLHEP::GeV), _messenger(this,
18 "/GGS/physicsList/crmc/") {
19 _messenger.DeclareProperty(
"modelName", _modelName).SetCandidates(
20 "EPOS-LHC QGSJETII-04 SIBYLL-2.3 DPMJET-3.06 EPOS-1.99 QGSJET-01 QGSJETII-03").SetGuidance(
21 "The CRMC model to be used for high-energy hadron-hadron interactions");
22 _messenger.DeclareProperty(
"modelThreshold", _modelThreshold).SetUnitCategory(
"Energy").SetDefaultUnit(
"GeV").SetGuidance(
23 "The lower energy threshold of the CRMC model");
27 const std::string routineName(
"GGSCRMCPhysicsList::ConstructProcess");
28 FTFP_BERT::ConstructProcess();
37 if (_modelName ==
"EPOS-LHC") {
40 else if (_modelName ==
"QGSJETII-04") {
43 else if (_modelName ==
"SIBYLL-2.3") {
47 else if (_modelName ==
"DPMJET-3.06") {
50 else if (_modelName ==
"EPOS-1.99") {
53 else if (_modelName ==
"QGSJET-01") {
56 else if (_modelName ==
"QGSJETII-03") {
61 G4Exception(
"GGSCRMCPhysicsList::ConstructProcess",
"0", G4ExceptionSeverity::FatalException,
62 std::string(
"Unknown model: ").append(_modelName).c_str());
65 COUT(INFO) <<
"CRMC hadronic interaction engine. Model: " << _modelName <<
", threshold: "
66 << _modelThreshold / CLHEP::GeV <<
" GeV." <<
ENDL;
67 G4HadronPhysicsCRMC* crmcModel =
new G4HadronPhysicsCRMC(crmcModelID);
68 crmcModel->SetEnergyThreshold(_modelThreshold);
69 crmcModel->ConstructProcess();
#define COUT(level)
Smart log macro. It writes on stdout only if the specified verbosity level is lesser than the maximum...
void ConstructProcess()
Constructs the physical processes.
#define PhysicsListPlugin(plClass)
Macro for automatic definition of physics list builder function.
Physics list based on CRMC for high-energy hadron-hadron interactions.