GGS(GenericGEANT4Simulation)Software  2.6.0
 All Data Structures Namespaces Files Functions Variables Typedefs Macros
GGSCRMCPhysicsList.cpp
1 /*
2  * GGSCRMCPhysicsList.cpp
3  *
4  * Created on: 15 Feb 2019
5  * Author: Nicola Mori
6  */
7 
8 #include "montecarlo/physicslists/GGSCRMCPhysicsList.h"
10 #include "utils/GGSSmartLog.h"
11 
12 #include "G4HadronPhysicsCRMC.hh"
13 
15 
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");
24 }
25 
27  const std::string routineName("GGSCRMCPhysicsList::ConstructProcess");
28  FTFP_BERT::ConstructProcess();
29 
30  // Set CRMC underlying model
31  // 0 - EPOS LHC 1 - EPOS 1.99 12 - DPMJET3
32  // see CRMC documentation for the complete list of
33  // available models
34  int crmcModelID = -1;
35 
36  // Post-LHC
37  if (_modelName == "EPOS-LHC") {
38  crmcModelID = 0;
39  }
40  else if (_modelName == "QGSJETII-04") {
41  crmcModelID = 7;
42  }
43  else if (_modelName == "SIBYLL-2.3") {
44  crmcModelID = 6;
45  }
46  //Pre-LHC
47  else if (_modelName == "DPMJET-3.06") {
48  crmcModelID = 12;
49  }
50  else if (_modelName == "EPOS-1.99") {
51  crmcModelID = 1;
52  }
53  else if (_modelName == "QGSJET-01") {
54  crmcModelID = 2;
55  }
56  else if (_modelName == "QGSJETII-03") {
57  crmcModelID = 11;
58  }
59 
60  else {
61  G4Exception("GGSCRMCPhysicsList::ConstructProcess", "0", G4ExceptionSeverity::FatalException,
62  std::string("Unknown model: ").append(_modelName).c_str());
63  }
64 
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();
70 
71 }
#define ENDL
Definition: GGSSmartLog.h:93
#define COUT(level)
Smart log macro. It writes on stdout only if the specified verbosity level is lesser than the maximum...
Definition: GGSSmartLog.h:66
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.