00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef THEPEG_TwoCutBase_H
00010 #define THEPEG_TwoCutBase_H
00011
00012
00013
00014
00015 #include "ThePEG/Interface/Interfaced.h"
00016 #include "TwoCutBase.fh"
00017 #include "Cuts.fh"
00018
00019 namespace ThePEG {
00020
00035 class TwoCutBase: public Interfaced {
00036
00037 public:
00038
00044 TwoCutBase() {}
00045
00049 virtual ~TwoCutBase();
00051
00052 public:
00053
00060 virtual Energy2 minSij(tcPDPtr pi, tcPDPtr pj) const = 0;
00061
00067 virtual Energy2 minTij(tcPDPtr pi, tcPDPtr po) const = 0;
00068
00074 virtual double minDeltaR(tcPDPtr pi, tcPDPtr pj) const = 0;
00075
00086 virtual Energy minKTClus(tcPDPtr pi, tcPDPtr pj) const = 0;
00087
00094 virtual double minDurham(tcPDPtr pi, tcPDPtr pj) const = 0;
00095
00102 virtual bool passCuts(tcCutsPtr parent, tcPDPtr pitype, tcPDPtr pjtype,
00103 LorentzMomentum pi, LorentzMomentum pj,
00104 bool inci = false, bool incj = false) const;
00105
00111 bool passCuts(tcCutsPtr parent, tcPPtr pi, tcPPtr pj,
00112 bool inci = false, bool incj = false) const;
00114
00118 virtual void describe() const;
00119
00120 public:
00121
00128 static void Init();
00129
00130 private:
00131
00136 static AbstractNoPIOClassDescription<TwoCutBase> initTwoCutBase;
00137
00142 TwoCutBase & operator=(const TwoCutBase &);
00143
00144 };
00145
00146 }
00147
00148 #include "ThePEG/Utilities/ClassTraits.h"
00149
00150 namespace ThePEG {
00151
00156 template <>
00157 struct BaseClassTrait<TwoCutBase,1> {
00159 typedef Interfaced NthBase;
00160 };
00161
00164 template <>
00165 struct ClassTraits<TwoCutBase>
00166 : public ClassTraitsBase<TwoCutBase> {
00168 static string className() { return "ThePEG::TwoCutBase"; }
00169 };
00170
00173 }
00174
00175 #endif