8 #include "montecarlo/physicslists/GGSCRMCPhysicsList.h"
12 #include "G4HadronPhysicsCRMC.hh"
17 : FTFP_BERT(), _modelName("DPMJET-3.06"), _modelThreshold(300. * CLHEP::GeV),
18 _messenger(this, "/GGS/physicsList/crmc/") {
19 _messenger.DeclareProperty(
"modelName", _modelName)
20 .SetCandidates(
"EPOS-LHC QGSJETII-04 SIBYLL-2.3 DPMJET-3.06 EPOS-1.99 QGSJET-01 QGSJETII-03")
21 .SetGuidance(
"The CRMC model to be used for high-energy hadron-hadron interactions");
22 _messenger.DeclareProperty(
"modelThreshold", _modelThreshold)
23 .SetUnitCategory(
"Energy")
24 .SetDefaultUnit(
"GeV")
25 .SetGuidance(
"The lower energy threshold of the CRMC model");
29 const std::string routineName(
"GGSCRMCPhysicsList::ConstructProcess");
30 FTFP_BERT::ConstructProcess();
39 if (_modelName ==
"EPOS-LHC") {
41 }
else if (_modelName ==
"QGSJETII-04") {
43 }
else if (_modelName ==
"SIBYLL-2.3") {
47 else if (_modelName ==
"DPMJET-3.06") {
49 }
else if (_modelName ==
"EPOS-1.99") {
51 }
else if (_modelName ==
"QGSJET-01") {
53 }
else if (_modelName ==
"QGSJETII-03") {
58 G4Exception(
"GGSCRMCPhysicsList::ConstructProcess",
"0", G4ExceptionSeverity::FatalException,
59 std::string(
"Unknown model: ").append(_modelName).c_str());
62 COUT(INFO) <<
"CRMC hadronic interaction engine. Model: " << _modelName
63 <<
", threshold: " << _modelThreshold / CLHEP::GeV <<
" GeV." <<
ENDL;
64 G4HadronPhysicsCRMC *crmcModel =
new G4HadronPhysicsCRMC(crmcModelID);
65 crmcModel->SetEnergyThreshold(_modelThreshold);
66 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.