Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
hepsim:usage_full [2017/03/19 19:37] hepsim17 |
hepsim:usage_full [2017/09/21 13:48] hepsim17 |
||
---|---|---|---|
Line 3: | Line 3: | ||
[[: | [[: | ||
- | ====== | + | ====== |
Currently, the Geant4-based detector simulation can be done using the SLIC software. You will need to convert ProMC files to LCIO files and | Currently, the Geant4-based detector simulation can be done using the SLIC software. You will need to convert ProMC files to LCIO files and | ||
Line 106: | Line 106: | ||
====== Using C++/ROOT with LCIO ====== | ====== Using C++/ROOT with LCIO ====== | ||
- | If you need to read LCIO files in C++ code with ROOT/ | + | If you need to read LCIO files in C++ code with ROOT/ |
<code bash> | <code bash> | ||
- | wget http://atlaswww.hep.anl.gov/hepsim/soft/ | + | git clone https://github.com/chekanov/HepSim |
- | cd lcio-cpp; make | + | cd HepSim/ |
</ | </ | ||
- | It will compile " | + | Look at README file to see how to install the " |
+ | |||
+ | Generally, you program to read SLCIO files can look as this: | ||
+ | |||
+ | <hidden Click here to show the code example> | ||
+ | <code cpp> | ||
+ | string input=" | ||
+ | LCReader* lcReader = LCFactory:: | ||
+ | lcReader-> | ||
+ | LCEvent* | ||
+ | int nEvents=0; | ||
+ | while( (evt = lcReader-> | ||
+ | if (nEvents==0) UTIL:: | ||
+ | cout << " | ||
+ | // print stored EVGEN parameters | ||
+ | const LCParameters& | ||
+ | | ||
+ | int nFloatParameters = params.getFloatKeys( floatKeys ).size() ; | ||
+ | | ||
+ | FloatVec floatVec ; | ||
+ | params.getFloatVals( | ||
+ | int nFloat | ||
+ | cout << " parameter " << floatKeys[i] << " [float]: " ; | ||
+ | for(int j=0; j< nFloat ; j++ ){ | ||
+ | cout << floatVec[j] << ", " ; | ||
+ | } | ||
+ | cout << endl ; | ||
+ | | ||
+ | |||
+ | // extract PFA objects | ||
+ | IMPL:: | ||
+ | int nPFO = col-> | ||
+ | for(int i=0 ; i<nPFO ; ++i){ | ||
+ | EVENT:: | ||
+ | double px = mcp-> | ||
+ | double py = mcp-> | ||
+ | double pz = mcp-> | ||
+ | | ||
+ | | ||
+ | // look at tracks | ||
+ | IMPL:: | ||
+ | int nTRK = col3-> | ||
+ | for(int i=0 ; i<nTRK ; ++i){ | ||
+ | EVENT:: | ||
+ | } | ||
+ | | ||
+ | |||
+ | | ||
+ | } | ||
+ | lcReader-> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | This code example shows how to print float parameters from the EVGEN level (copied from the input ProMC). | ||
+ | Here is the example of all parameters (float, integers, strings): | ||
+ | < | ||
+ | <code cpp> | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Note that SLCIO files have two records representing truth level MC: MCParticle and MCInfo. MCInfo includes information on generated events. | ||
+ | See the example how this record was created in [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | --- // | ||
| |