GGS(GenericGEANT4Simulation)Software  2.7.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),
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");
26 }
27 
29  const std::string routineName("GGSCRMCPhysicsList::ConstructProcess");
30  FTFP_BERT::ConstructProcess();
31 
32  // Set CRMC underlying model
33  // 0 - EPOS LHC 1 - EPOS 1.99 12 - DPMJET3
34  // see CRMC documentation for the complete list of
35  // available models
36  int crmcModelID = -1;
37 
38  // Post-LHC
39  if (_modelName == "EPOS-LHC") {
40  crmcModelID = 0;
41  } else if (_modelName == "QGSJETII-04") {
42  crmcModelID = 7;
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  } else if (_modelName == "EPOS-1.99") {
50  crmcModelID = 1;
51  } else if (_modelName == "QGSJET-01") {
52  crmcModelID = 2;
53  } else if (_modelName == "QGSJETII-03") {
54  crmcModelID = 11;
55  }
56 
57  else {
58  G4Exception("GGSCRMCPhysicsList::ConstructProcess", "0", G4ExceptionSeverity::FatalException,
59  std::string("Unknown model: ").append(_modelName).c_str());
60  }
61 
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();
67 }
#define ENDL
Definition: GGSSmartLog.h:105
#define COUT(level)
Smart log macro. It writes on stdout only if the specified verbosity level is lesser than the maximum...
Definition: GGSSmartLog.h:76
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.