If you decide to write the entire event on the hard disk, you can choose between the HEPEVT record or reduced RUNMC record. Let's remind that the HEPEVT record can only be changed by the FORTRAN initialization subroutine ``proj/ini'' (for each MC separately). But you can do complicated selections of events for a reduced RUNMC record (in ``proj/user-select.cpp'' file, see above the description, and read the ``proj/user-select.cpp'' file).
Use the RunMC GUI option ``Select output''. The HEPEVT output file has "thepevt" tree. It has the following structure:
int NEVHEP; // read HEPEVT output int NHEP; // NHEP - total number of particles int ISTHEP[hepevt_local_max]; // ISTHEP(j) int IDHEP[hepevt_local_max]; // IDHEP(j) int CHA3[hepevt_local_max]; // charge times 3 int JMOHEP1[hepevt_local_max]; // JMOHEP(1,j) in fortran int JMOHEP2[hepevt_local_max]; // JMOHEP(2,j) in fortran int JDAHEP1[hepevt_local_max]; // JDAHEP(1,j) in fortran int JDAHEP2[hepevt_local_max]; // JDAHEP(2,j) in fortran double PHEP_X[hepevt_local_max]; // PHEP(1,j) double PHEP_Y[hepevt_local_max]; // PHEP(2,j) double PHEP_Z[hepevt_local_max]; // PHEP(3,j) double PHEP_E[hepevt_local_max]; // PHEP(4,j) energy double PHEP_M[hepevt_local_max]; // PHEP(5,j) mass double VHEP_X[hepevt_local_max]; // VHEP(1,j) double VHEP_Y[hepevt_local_max]; // VHEP(2,j) double VHEP_Z[hepevt_local_max]; // VHEP(3,j) double VHEP_T[hepevt_local_max]; // VHEP(4,j)
The RUNMC output contains only particles which you select via the RunMC GUI (all stable, all charged partons etc.). The RUNMC tree is called ``trunmc''. It has the foolowing structure:
const int hepevt_runmc_max =4000; int NHEP; // total number of particles int IDHEP[hepevt_runmc_max]; // particle ID int ISTCHA[hepevt_runmc_max]; // 100*ISTHEP+(10 + charge times 3) int JMOHEP[hepevt_runmc_max]; // JMOHEP(1,j) in fortran int JDAHEP[hepevt_runmc_max]; // JDAHEP(1,j) in fortran float PX[hepevt_runmc_max]; // PHEP(1,j) float PY[hepevt_runmc_max]; // PHEP(2,j) float PZ[hepevt_runmc_max]; // PHEP(3,j) float E[hepevt_runmc_max]; // PHEP(4,j) energy
See the example ``mrun.cxx'' in the ``example/proj_runmc'' directory which can read ``project.rtup'' file. Note it uses ``float'' instead of ``double'' precision numbers to save the disk space (and there is no reason to think that you really need double precision momenta of final-state particles even for LHC energies).