File indexing completed on 2025-04-19 09:10:14
0001 #ifndef SHERPA_Single_Events_Multiple_Interactions_H
0002 #define SHERPA_Single_Events_Multiple_Interactions_H
0003
0004 #include "SHERPA/Single_Events/Event_Phase_Handler.H"
0005 #include "SHERPA/PerturbativePhysics/MI_Handler.H"
0006
0007 namespace SHERPA {
0008
0009 class Multiple_Interactions: public Event_Phase_Handler {
0010 private:
0011 double m_hardveto, m_ptmax_fac;
0012 double m_ecms, m_ptmax, m_lastptmax, m_ecmsmax, m_emax[2];
0013 double m_defaultptmax;
0014 double m_weight, m_ntrials;
0015
0016 MI_Handler_Map * p_mihandlers;
0017 MI_Handler * p_activeMI;
0018 ATOOLS::Blob_List * p_bloblist;
0019 ATOOLS::Blob * p_lastblob;
0020
0021 std::set<ATOOLS::Blob *> m_ISblobs;
0022 bool m_vetoed, m_newevent[2];
0023
0024 ATOOLS::Return_Value::code m_result;
0025 void Reset();
0026 bool CheckBlobList();
0027 bool BeamsViable();
0028 bool ExtractISInfo(ATOOLS::Blob * blob);
0029 void SwitchPerturbativeInputsToMIs();
0030 double ExtractMPIStartingScale(ATOOLS::Blob * blob);
0031
0032 std::string MakeNameSpec();
0033
0034 bool CheckMIHandlers();
0035 bool CheckForMinBias();
0036 bool CheckForMPIs();
0037 bool CheckForRescatter();
0038 void FixMaxEnergies(const bool & updateResidualE=false);
0039 bool TestHardScatter();
0040 ATOOLS::Return_Value::code InitMinBias();
0041 bool InitMPIs();
0042 ATOOLS::Return_Value::code InitRescatter();
0043 public:
0044 Multiple_Interactions(MI_Handler_Map *);
0045 ~Multiple_Interactions() {}
0046
0047 ATOOLS::Return_Value::code Treat(ATOOLS::Blob_List*);
0048 void CleanUp(const size_t & mode=0);
0049 void Finish(const std::string &);
0050 };
0051 }
0052
0053 #endif
0054