#ifndef CSSHOWER_Main_CS_Shower_H #define CSSHOWER_Main_CS_Shower_H #include "PDF/Main/Shower_Base.H" #include "CSSHOWER++/Main/CS_Cluster_Definitions.H" #include "CSSHOWER++/Showers/Shower.H" #include "ATOOLS/Phys/Blob_List.H" namespace REMNANTS { class Remnant_Handler; } namespace CSSHOWER { struct partcomp{ bool operator() (const Parton * part1, const Parton * part2) const { if (part1->Id() < part2->Id()) return true; else return false; } }; class Splitting_Function_Base; typedef std::map > KT2X_Map; class CS_Shower : public PDF::Shower_Base { private: struct Q2_Value { double m_q2; ATOOLS::Flavour m_fl; int m_i, m_j, m_k; inline Q2_Value(const double &q2, const ATOOLS::Flavour &fl, int i, int j, int k): m_q2(q2), m_fl(fl), m_i(i), m_j(j), m_k(k) {} inline bool operator<(const Q2_Value &v) const { return m_q2 &aset); void GetKT2Min(ATOOLS::Cluster_Amplitude *const ampl,KT2X_Map &kt2xmap); int IsDecay(ATOOLS::Cluster_Amplitude *const ampl, ATOOLS::Cluster_Leg *const cl) const; double HardScale(const ATOOLS::Cluster_Amplitude *const ampl); Singlet *TranslateAmplitude(ATOOLS::Cluster_Amplitude *const ampl, std::map &pmap, std::map &lmap, const KT2X_Map &kt2xmap); bool PrepareStandardShower(ATOOLS::Cluster_Amplitude *const ampl); int PerformShowers(const size_t &maxem,size_t &nem); double Qij2(const ATOOLS::Vec4D &pi,const ATOOLS::Vec4D &pj, const ATOOLS::Vec4D &pk,const ATOOLS::Flavour &fi, const ATOOLS::Flavour &fj) const; public: // constructor CS_Shower(PDF::ISR_Handler *const, MODEL::Model_Base *const, const int type); // destructor ~CS_Shower(); //member functions int PerformShowers(); int PerformDecayShowers(); void AddRBPoint(ATOOLS::Cluster_Amplitude *const ampl); bool ExtractPartons(ATOOLS::Blob_List *const blist); void CleanUp(); // inline functions PDF::Cluster_Definitions_Base * GetClusterDefinitions(); bool PrepareShower(ATOOLS::Cluster_Amplitude *const ampl, const bool & soft=false); double JetVeto(ATOOLS::Cluster_Amplitude *const ampl, const int mode); void SetRBOff(); inline void SetRemnants(REMNANTS::Remnant_Handler * remnants) { p_shower->SetRemnants(remnants); } };// end of class CS_Shower }// end of namespace CSSHOWER #endif