10 RunMC event structure

To include an user-defined histogram or additional calculation, you need to know the event structure. The event structure is defined in the ``main/inc/heplist.h'' include file.

// Class characterizing  a  particle
   public:
   HepLorentzVector p;             // 4-momenta
   HepLorentzVector v;             // vertex
   double           mass;          // mass
   int                  pos;       // position in HEPEVT
   int                  id;        // identity (particle data group)
   int              charge3;       // charge times 3
   int              status;        // status of entry
   int              mother;        // mother
   int              mother2;       // point to second mother
   int              daughter;      // daughter
   int              daughter2;     // point to second daughter
   };

// Class characterizing  a jet (under construction) 
    class jet{
    public:
        HepLorentzVector p;     // 4-momenta
        int              in;    // number of particles in this jet
        };

// Event record for Monte Carlo events
   class heplist {
   public:
      heplist();                   // constructor
       ~heplist();                 // destructor
      HepLorentzVector beam1;      // beam 1
      int id1;                     // PID of this particle
      HepLorentzVector beam2;      // beam 2
      int id2;                     // ID of this particle
      HepLorentzVector boson;      // Px,Py,Pz,E of exchange boson
      int idboson;                 // ID of boson
      HepLorentzVector lepton;     // Px,Py,Pz,E of outgoing lepton(DIS)
      int idlepton;                // ID of lepton
          
// Information on separate particles 
      vector<particle>  PP;        // vector with particles
  
// Information on separate particles (options “stable+all”) 
// contains complete HEPEVT record
     vector<particle>  HP;         // vector with particles        

// information on event
    double      PTtot , PZtot,Etot;   // event PT,PZ,Etot
             
// information on jets
    vector<jet> PJ;             // vector with jets
    void fill_HEPEVT();         // fill all particles from HEPEVT (stable+all option)
    void fill_All();            // fill all particles from HEPEVT
    void fill_ALLstable();      // fill stable particles from HEPEVT
    void fill_Partons();        // fill partons from HEPEVT
    void fill_CHARGEDstable();  // fill partons from HEPEVT
    int  set_jetPtEta();        // set Pt and Eta cuts on particles
    int  set_particlePtEta();   // set Pt and Eta cuts on jets
           

// transformations for jets
    int   set_jetLABtoHCMframe();      // move jets to the HCM frame
    int   set_jetHCMtoLABframe();      // move jets to the lab from HCM frame
    int   set_jetLABtoBREITframe();    // move jets to  Breit frame
    int   set_jetBREITtoLABframe();    // move jets to lab frame from Breit frame
          
// for sepate particles transformation
    int   set_particleLABtoHCMframe();    // move jets to the HCM frame
    int   set_particleHCMtoLABframe();    // move jets to the lab from HCM frame
    int   set_particleLABtoBREITframe();  // move jets to  Breit frame
    int   set_particleBREITtoLABframe();  // move jets to lab frame from Breit frame
    int   set_JADEjets();                 // move to the JADE jets
    int   set_DURHAMjets();               // move to the Durham jets
    int   set_KTjets();                   // move to the KT long invariant  jets
  };