Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:38:27

0001 // -*- C++ -*-
0002 //
0003 // LesHouches.h is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 1999-2019 Leif Lonnblad
0005 //
0006 // ThePEG is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef THEPEG_LesHouches_H
0010 #define THEPEG_LesHouches_H
0011 //
0012 // This is the declaration of the LesHouches class.
0013 //
0014 
0015 #include "ThePEG/Config/ThePEG.h"
0016 
0017 namespace ThePEG {
0018 
0019 /**
0020  * The HEPRUP class is a simple container corresponding to the Les
0021  * Houches accord (hep-ph/0109068) common block with the same
0022  * name. The members are named in the same way as in the common
0023  * block. However, fortran arrays are represented by vectors, except
0024  * for the arrays of length two which are represented by pair objects.
0025  */
0026 class HEPRUP {
0027 
0028 public:
0029 
0030   /** @name Standard constructors and destructors. */
0031   //@{
0032   /**
0033    * Default constructor.
0034    */
0035   HEPRUP() : IDWTUP(0), NPRUP(0) {}
0036   //@}
0037 
0038 public:
0039 
0040   /**
0041    * Set the NPRUP variable, corresponding to the number of
0042    * sub-processes, to \a nrup, and resize all relevant vectors
0043    * accordingly.
0044    */
0045   void resize(int nrup) {
0046     NPRUP = nrup;
0047     resize();
0048   }
0049 
0050   /**
0051    * Assuming the NPRUP variable, corresponding to the number of
0052    * sub-processes, is correctly set, resize the relevant vectors
0053    * accordingly.
0054    */
0055   void resize() {
0056     XSECUP.resize(NPRUP);
0057     XERRUP.resize(NPRUP);
0058     XMAXUP.resize(NPRUP);
0059     LPRUP.resize(NPRUP);
0060   }
0061 
0062   /**
0063    * PDG id's of beam particles. (first/second is in +/-z direction).
0064    */
0065   pair<long,long> IDBMUP;
0066 
0067   /**
0068    * Energy of beam particles given in GeV.
0069    */
0070   pair<double,double> EBMUP;
0071 
0072   /**
0073    * The author group for the PDF used for the beams according to the
0074    * PDFLib specification.
0075    */
0076   pair<int,int> PDFGUP;
0077 
0078   /**
0079    * The id number the PDF used for the beams according to the
0080    * PDFLib specification.
0081    */
0082   pair<int,int> PDFSUP;
0083 
0084   /**
0085    * Master switch indicating how the ME generator envisages the
0086    * events weights should be interpreted according to the Les Houches
0087    * accord.
0088    */
0089   int IDWTUP;
0090 
0091   /**
0092    * The number of different subprocesses in this file (should
0093    * typically be just one)
0094    */
0095   int NPRUP;
0096 
0097   /**
0098    * The cross sections for the different subprocesses in pb.
0099    */
0100   vector<double> XSECUP;
0101 
0102   /**
0103    * The statistical error in the cross sections for the different
0104    * subprocesses in pb.
0105    */
0106   vector<double> XERRUP;
0107 
0108   /**
0109    * The maximum event weights (in XWGTUP) for different subprocesses.
0110    */
0111   vector<double> XMAXUP;
0112 
0113   /**
0114    * The subprocess code for the different subprocesses.
0115    */
0116   vector<int> LPRUP;
0117 
0118 };
0119 
0120 
0121 /**
0122  * The HEPEUP class is a simple container corresponding to the Les
0123  * Houches accord (hep-ph/0109068) common block with the same
0124  * name. The members are named in the same way as in the common
0125  * block. However, fortran arrays are represented by vectors, except
0126  * for the arrays of length two which are represented by pair objects.
0127  */
0128 class HEPEUP {
0129 
0130 public:
0131 
0132   /** @name Standard constructors and destructors. */
0133   //@{
0134   /**
0135    * Default constructor.
0136    */
0137   HEPEUP()
0138     : NUP(0), IDPRUP(0), XWGTUP(0.0), XPDWUP(0.0, 0.0),
0139       SCALUP(0.0), AQEDUP(0.0), AQCDUP(0.0) {}
0140   //@}
0141 
0142 public:
0143 
0144   /**
0145    * Set the NUP variable, corresponding to the number of particles in
0146    * the current event, to \a nup, and resize all relevant vectors
0147    * accordingly.
0148    */
0149   void resize(int nup) {
0150     NUP = nup;
0151     resize();
0152   }
0153 
0154   /**
0155    * Assuming the NUP variable, corresponding to the number of
0156    * particles in the current event, is correctly set, resize the
0157    * relevant vectors accordingly.
0158    */
0159   void resize() {
0160     IDUP.resize(NUP);
0161     ISTUP.resize(NUP);
0162     MOTHUP.resize(NUP);
0163     ICOLUP.resize(NUP);
0164     PUP.resize(NUP);
0165     VTIMUP.resize(NUP);
0166     SPINUP.resize(NUP);
0167   }
0168 
0169   /**
0170    * The number of particle entries in the current event.
0171    */
0172   int NUP;
0173 
0174   /**
0175    * The subprocess code for this event (as given in LPRUP).
0176    */
0177   int IDPRUP;
0178 
0179   /**
0180    * The weight for this event.
0181    */
0182   double XWGTUP;
0183 
0184   /**
0185    * The PDF weights for the two incoming partons. Note that this
0186    * variable is not present in the current LesHouches accord
0187    * (hep-ph/0109068), hopefully it will be present in a future
0188    * accord.
0189    */
0190   pair<double,double> XPDWUP;
0191 
0192   /**
0193    * The scale in GeV used in the calculation of the PDF's in this
0194    * event.
0195    */
0196   double SCALUP;
0197 
0198   /**
0199    * The value of the QED coupling used in this event.
0200    */
0201   double AQEDUP;
0202 
0203   /**
0204    * The value of the QCD coupling used in this event.
0205    */
0206   double AQCDUP;
0207 
0208   /**
0209    * The PDG id's for the particle entries in this event.
0210    */
0211   vector<long> IDUP;
0212 
0213   /**
0214    * The status codes for the particle entries in this event.
0215    */
0216   vector<int> ISTUP;
0217 
0218   /**
0219    * Indices for the first and last mother for the particle entries in
0220    * this event.
0221    */
0222   vector< pair<int,int> > MOTHUP;
0223 
0224   /**
0225    * The colour-line indices (first(second) is (anti)colour) for the
0226    * particle entries in this event.
0227    */
0228   vector< pair<int,int> > ICOLUP;
0229 
0230   /**
0231    * Lab frame momentum (Px, Py, Pz, E and M in GeV) for the particle
0232    * entries in this event.
0233    */
0234   vector< array<double,5> > PUP;
0235 
0236   /**
0237    * Invariant lifetime (c*tau, distance from production to decay im
0238    * mm) for the particle entries in this event.
0239    */
0240   vector<double> VTIMUP;
0241 
0242   /**
0243    * Spin info for the particle entries in this event given as the
0244    * cosine of the angle between the spin vector of a particle and the
0245    * 3-momentum of the decaying particle, specified in the lab frame.
0246    */
0247   vector<double> SPINUP;
0248 
0249 };
0250 
0251 }
0252 
0253 #endif /* THEPEG_LesHouches_H */