Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:14

0001 #ifndef SHERPA_Single_Events_Jet_Evolution_H
0002 #define SHERPA_Single_Events_Jet_Evolution_H
0003 
0004 #include "SHERPA/Single_Events/Event_Phase_Handler.H"
0005 #include "SHERPA/PerturbativePhysics/Matrix_Element_Handler.H"
0006 #include "SHERPA/SoftPhysics/Hadron_Decay_Handler.H"
0007 #include "SHERPA/PerturbativePhysics/Shower_Handler.H"
0008 #include "SHERPA/PerturbativePhysics/Perturbative_Interface.H"
0009 #include "SHERPA/SoftPhysics/Soft_Collision_Handler.H"
0010 #include "SHERPA/SoftPhysics/Beam_Remnant_Handler.H"
0011 #include "SHERPA/PerturbativePhysics/MI_Handler.H"
0012 
0013 
0014 namespace REMNANTS { class Remnant_Handler; }
0015 
0016 namespace SHERPA {
0017 
0018   class Hard_Decay_Handler;
0019   class Beam_Remnant_Handler;
0020   
0021   class Jet_Evolution: public Event_Phase_Handler {
0022   private :
0023     REMNANTS::Remnant_Handler * p_remnants;
0024     PertInterfaceMap            m_pertinterfaces;
0025     
0026     void FillPerturbativeInterfaces(Matrix_Element_Handler *,
0027                     Hard_Decay_Handler*,
0028                     Decay_Handler_Base *,
0029                     const MI_Handler_Map *,
0030                     const Soft_Collision_Handler_Map *,
0031                     const Shower_Handler_Map &,
0032                     REMNANTS::Remnant_Handler_Map &);
0033     PertInterfaceIter          SelectInterface(ATOOLS::Blob * blob);
0034     ATOOLS::Return_Value::code AttachShowers(ATOOLS::Blob *,ATOOLS::Blob_List *,
0035                          Perturbative_Interface *);
0036 
0037     void Reset();
0038     void Update(ATOOLS::Blob *,const size_t,
0039                 Perturbative_Interface *);
0040     bool DefineInitialConditions(const ATOOLS::Blob *,const ATOOLS::Blob_List *,
0041                                  Perturbative_Interface *);
0042     bool AftermathOfNoShower(ATOOLS::Blob *,ATOOLS::Blob_List *);
0043     bool AftermathOfSuccessfulShower(ATOOLS::Blob *,ATOOLS::Blob_List *,
0044                      Perturbative_Interface *);
0045     ATOOLS::Blob * CreateMockShowerBlobs(ATOOLS::Blob * const meblob,
0046                      ATOOLS::Blob_List * const bloblist);
0047 
0048   public :
0049     Jet_Evolution(Matrix_Element_Handler * me,
0050           Hard_Decay_Handler * harddecs,
0051           Decay_Handler_Base * decs,
0052           const MI_Handler_Map * mihandlers,
0053           const Soft_Collision_Handler_Map * schandlers,
0054           const Shower_Handler_Map &showers,
0055           REMNANTS::Remnant_Handler_Map &remnanthandlers);
0056     ~Jet_Evolution();
0057 
0058     ATOOLS::Return_Value::code Treat(ATOOLS::Blob_List*);
0059     void                       CleanUp(const size_t & mode=0);
0060     void                       Finish(const std::string &);
0061 
0062   };// end of class Jet_Evolution
0063 
0064   /*!
0065     \file 
0066     \brief Contains the class SHERPA::Jet_Evolution
0067   */
0068   /*!
0069     \class Jet_Evolution
0070     \brief The handler for the perturbative shower evolution around hard production processes or decays.
0071 
0072     This class deals with the perturbative evolution of a parton ensemble after a hard production process
0073     or decay has taken place. This evolution is modelled through multiple readiation of secondaries,
0074     formulated in a shower language. This class therefore contains a pointer to a Shower_Handler, to
0075     accomodate a suitable merging of the regimes of jet production (as modelled, e.g., by the Signal_Processes)
0076     and jet evolution, i.e. the showers, an interface has to be defined. This interface will ensure
0077     - a proper filling of the phase space for the emission of secondaries without double counting (over or 
0078     under counting) and it depends to a large extend on the actual shower and the information passed
0079     by the Matrix_Element_Handler. Consequently, this handler also has to access such information which is
0080     achieved by a pointer to the actual Matrix_Element_Handler.
0081   */
0082   /*!
0083     \var Jet_Evolution::m_pertinterfaces
0084     The  map of interfaces between matrix element and parton/dipole showers. This interface basically
0085     is responsible for taking the blob stemming from the hard production process or decay and translate the
0086     corresponding partons into a parton history suitable for showering (in the actual case of a parton shower
0087     this boils down to the fillnig of the partons into a binary tree structure of 1->2 decays of "mothers"
0088     into "daughters"). It should be stressed that every combination of matrix element generator and shower
0089     needs a specific realization of this due to different information obtainalble from the matrix elements and
0090     different shower variables used in the shower. The possible keys for this map are:
0091     - \c SignalMEs
0092     - \c HadronDecays
0093     - \c MPIs
0094     - \c SoftCollisions
0095   */
0096   /*!
0097     \fn Jet_Evolution::Jet_Evolution(Matrix_Element_Handler *,Shower_Handler *)
0098     In the constructor the pointers to the Matrix_Element_Handler and the Shower_Handler are copied. Also, 
0099     the constructor sets the name and type of the Event_Phase_Handler, m_name and m_type. The name is 
0100     "Jet_Evolution : " plus the name of the shower generator, and the type is "Perturbative". Then a suitable
0101     interface between the matrix elements and the parton shower is instantiated. At the moment, only two
0102     such interfaces are available, namely Amegic_Apacic_Interface and SimpleXS_Apacic_Interface.
0103   */
0104   /*!
0105     \fn Jet_Evolution::~Jet_Evolution()
0106     Deletes the Perturbative_Interface.
0107   */
0108   /*!
0109     \fn bool Jet_Evolution::Treat(ATOOLS::Blob_List*)
0110     In this method all blobs with status equal to one and of type "Signal Process :" are dealt with by
0111     the follwonig steps:
0112     \todo Andreas, we have to fill this.
0113   */
0114   /*!
0115     \fn void Jet_Evolution::CleanUp()
0116     Cleans up the shower handler by its corresponding method.
0117   */
0118 }
0119 #endif
0120