00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef THEPEG_KTClus_H
00010 #define THEPEG_KTClus_H
00011
00012
00013
00014
00015 #include "ThePEG/Cuts/TwoCutBase.h"
00016
00017 namespace ThePEG {
00018
00028 class KTClus: public TwoCutBase {
00029
00030 public:
00031
00037 KTClus() : theCut(10.0*GeV), onlyJets(true) {}
00039
00040 public:
00041
00054 virtual Energy minKTClus(tcPDPtr pi, tcPDPtr pj) const;
00055
00060 virtual Energy2 minSij(tcPDPtr pi, tcPDPtr pj) const;
00061
00067 virtual Energy2 minTij(tcPDPtr pi, tcPDPtr po) const;
00068
00074 virtual double minDeltaR(tcPDPtr pi, tcPDPtr pj) const;
00075
00082 virtual double minDurham(tcPDPtr pi, tcPDPtr pj) const;
00083
00090 virtual bool passCuts(tcCutsPtr parent, tcPDPtr pitype, tcPDPtr pjtype,
00091 LorentzMomentum pi, LorentzMomentum pj,
00092 bool inci = false, bool incj = false) const;
00094
00098 virtual void describe() const;
00099
00100 public:
00101
00108 void persistentOutput(PersistentOStream & os) const;
00109
00115 void persistentInput(PersistentIStream & is, int version);
00117
00124 static void Init();
00125
00126 protected:
00127
00134 virtual IBPtr clone() const;
00135
00140 virtual IBPtr fullclone() const;
00142
00143 private:
00144
00149 Energy theCut;
00150
00154 bool onlyJets;
00155
00156 private:
00157
00162 static ClassDescription<KTClus> initKTClus;
00163
00168 KTClus & operator=(const KTClus &);
00169
00170 };
00171
00172 }
00173
00174 #include "ThePEG/Utilities/ClassTraits.h"
00175
00176 namespace ThePEG {
00177
00182 template <>
00183 struct BaseClassTrait<KTClus,1> {
00185 typedef TwoCutBase NthBase;
00186 };
00187
00190 template <>
00191 struct ClassTraits<KTClus>
00192 : public ClassTraitsBase<KTClus> {
00194 static string className() { return "ThePEG::KTClus"; }
00198 static string library() { return "KTClus.so"; }
00199 };
00200
00203 }
00204
00205 #endif