CRMC

The program crmc (Cosmic Ray Monte Carlo) is an interface giving access to different cosmic ray and non-cosmic ray event generators by an easy-to-use command line interface. The output can be stored in different formats, i.e. in a ROOT TTree, HepMC event file, or Rivet output directly. Before this installation, make sure that you have has the newest official HERDOS environment.

source /cvmfs/herd.ihep.ac.cn/HERDOS/SLC7/Pre-release/ExternalLibs-GCC8.5.0/bashrc.sh

Installation and use of CRMC

Please refer to crmc

CRMC dependencies

To install please get the version 2.0.1 and install the following pre-requisites:

  1. fastjet

download£ºfastjet-3.4.0.tar.gz

installation:

./configure ¨Cprefix= install_directory --enable-shared

make && make install
  1. HepMC3

download£ºHepMC3-3.2.5.tar.gz

installation£º

cmake .. -DCMAKE_INSTALL_PREFIX=install_directory
-DHEPMC3_INSTALL_INTERFACES:BOOL=ON -DHEPMC3_PYTHON_VERSIONS=3.8  
-DHEPMC3_Python_SITEARCH38=install_directory/lib/python3.8/site-packages
-DHEPMC3_BUILD_STATIC_LIBS:BOOL=OFF -DHEPMC3_ENABLE_ROOTIO:BOOL=OFF 

make && make install
  1. Geant4

download£ºv10.5.1.tar.gz

£¨1£© geant4-10.5.1/source/processes/electromagnetic/utils/src/G4EmParameters.cc

Line 143 : Change the maximum kinematic energy of the EM processes from 100 TeV to 10 PeV

maxKinEnergy = 10.0*CLHEP::PeV;

£¨2£©geant4-10.5.1/source/processes/hadronic/util/src/G4HadronicParameters.cc

Line 63 : Change the maximum energy of the hadronic processes from 100 TeV to 10 PeV

fMaxEnergy = 10.0*CLHEP::PeV;

£¨3£©geant4-10.5.1/source/processes/electromagnetic/standard/src/G4eCoulombScatteringModel.cc

Line 207 : Change the cross section of the coulomb scatter process above 100 TeV to that of at 100 TeV, add the followed code :

if( kinEnergy >= 100.0 * CLHEP::TeV) { kinEnergy = 100.0 *CLHEP::TeV; }

installation£º

cmake .. -DCMAKE_INSTALL_PREFIX=install_directory 
-DGEANT4_BUILD_CXXSTD=14 -DGEANT4_USE_GDML=ON 
-DGEANT4_INSTALL_DATA=ON -DGEANT4_USE_OPENGL_X11=ON 
-DGEANT4_USE_RAYTRACER_X11=ON -DGEANT4_BUILD_MULTITHREADED=ON 
-DGEANT4_USE_SYSTEM_ZLIB=ON -DGEANT4_USE_QT=ON
-DGEANT4_BUILD_TLS_MODEL=global-dynamic 
-DXERCESC_ROOT_DIR=$HERD_EXTLIB_xercesc_HOME

make && make install

CRMC installation

download£ºcrmc-v2.0.1

(1) crmc-v2.0.1/src/geant4/G4HadronicInelasticModelCRMC.cc

Line 202, 295 and 407: Initialize the variable ¡®pdef_errorcode¡¯ to zero.

`int pdef_errorcode =0;`

Line 412: Correct the variable ¡®gCRMC_data¡¯ to the variable ¡®CRMC_data¡¯

`int particle_id = CRMC_data.fPartId[i];`

(2) crmc-v2.0.1/CMakeLists.txt

Comment the line 468,

TARGET_LINK_LIBRARIES (crmc ${Boost_LIBRARIES})

Add the followed codes here ,

set(BOOST_LIBRARY_DIR $ENV{HERD_EXTLIB_boost_HOME}/lib)
TARGET_LINK_LIBRARIES (crmc 
${BOOST_LIBRARY_DIR}/libboost_filesystem.so
${BOOST_LIBRARY_DIR}/libboost_iostreams.so
${BOOST_LIBRARY_DIR}/libboost_system.so
${BOOST_LIBRARY_DIR}/libboost_program_options.so)

(3) crmc-v2.0.1/src/CRMCtrapfpe.c ( if ARM architecture)

Change line 31 from

_FPU_DEFAULT & ~(_FPU_MASK_IM | _FPU_MASK_ZM | _FPU_MASK_OM);

to

_FPU_DEFAULT & ~(_FPU_FPCR_MASK_IXE | _FPU_FPCR_MASK_OFE | _FPU_FPCR_MASK_UFE);

installation£º

cmake .. -DCMAKE_INSTALL_PREFIX=install_directory
-D__GEANT4__=ON     -D__GEANT4PHYS__=ON   -DCRMC_QGSJET01=ON  
-DCRMC_GHEISHA=ON  -DCRMC_PYTHIA=ON     -DCRMC_HIJING=ON 
-DCRMC_SIBYLL=ON    -DCRMC_PHOJET=ON     -DCRMC_DPMJET19=ON 
-DCRMC_QGSJETII03=ON  -DCRMC_QGSJETII04=ON

make && make install

Use of CRMC

offline/Simulation/SimConfig/HERDSim/src/PhysicsList.cc

Add codes in PhysicsList::ConstructProcess()

// 0 - EPOS LHC   1 - EPOS 1.99   12 - DPMJET3  
G4HadronPhysicsCRMC* crmc = new G4HadronPhysicsCRMC(12);
crmc ->SetEnergyThreshold(300.*GeV);
crmc->ConstructProcess();