#ifndef SHERPA_Single_Events_Signal_Process_FS_QED_Correction_H #define SHERPA_Single_Events_Signal_Process_FS_QED_Correction_H #include "ATOOLS/Math/Vector.H" #include "SHERPA/Single_Events/Event_Phase_Handler.H" #include "SHERPA/PerturbativePhysics/Matrix_Element_Handler.H" #include "SHERPA/SoftPhysics/Soft_Photon_Handler.H" namespace ATOOLS { class Blob; class Flavour; class Particle; typedef std::vector Blob_Vector; typedef std::vector Particle_Vector; class Scoped_Settings; } namespace PHASIC { struct Process_Info; struct Subprocess_Info; } namespace MODEL { class Single_Vertex; typedef std::vector Vertex_List; } namespace SHERPA { class Signal_Process_FS_QED_Correction: public Event_Phase_Handler { private : bool m_on; bool m_qed; bool m_onme; Matrix_Element_Handler * p_mehandler; Soft_Photon_Handler * p_sphotons; ATOOLS::NLO_subevtlist * p_newsublist; void RegisterDefaults(ATOOLS::Scoped_Settings&); bool PutOnMassShell(const ATOOLS::Particle_Vector&); bool ModifySubEvtList(ATOOLS::Blob *, const ATOOLS::Particle_Vector&, const ATOOLS::Blob_Vector&); void DeleteNewSubList(); public : // constructor Signal_Process_FS_QED_Correction(Matrix_Element_Handler*, Soft_Photon_Handler*); // destructor ~Signal_Process_FS_QED_Correction(); // member functions ATOOLS::Return_Value::code Treat(ATOOLS::Blob_List*); void CleanUp(const size_t & mode=0); void Finish(const std::string &); };// end of class Signal_Process_FS_QED_Correction } #endif