12 Structure of HEPEVT and RUNMC outputs

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).