00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef THEPEG_SimpleDISCut_H
00010 #define THEPEG_SimpleDISCut_H
00011
00012
00013
00014
00015 #include "ThePEG/Cuts/TwoCutBase.h"
00016
00017 namespace ThePEG {
00018
00027 class SimpleDISCut: public TwoCutBase {
00028
00029 public:
00030
00034 SimpleDISCut()
00035 : theMinQ2(1.0*GeV2), theMaxQ2(100.0*GeV2),
00036 theMinW2(100.0*GeV2), theMaxW2(1000000.0*GeV2), chargedCurrent(false) {}
00037
00038 public:
00039
00046 virtual Energy2 minSij(tcPDPtr pi, tcPDPtr pj) const;
00047
00054 virtual Energy2 minTij(tcPDPtr pi, tcPDPtr po) const;
00055
00061 virtual double minDeltaR(tcPDPtr pi, tcPDPtr pj) const;
00062
00073 virtual Energy minKTClus(tcPDPtr pi, tcPDPtr pj) const;
00074
00081 virtual double minDurham(tcPDPtr pi, tcPDPtr pj) const;
00082
00089 virtual bool passCuts(tcCutsPtr parent, tcPDPtr pitype, tcPDPtr pjtype,
00090 LorentzMomentum pi, LorentzMomentum pj,
00091 bool inci = false, bool incj = false) const;
00093
00097 virtual void describe() const;
00098
00099 protected:
00100
00105 bool check(long idi, long ido) const;
00106
00107 public:
00108
00115 void persistentOutput(PersistentOStream & os) const;
00116
00122 void persistentInput(PersistentIStream & is, int version);
00124
00131 static void Init();
00132
00133 protected:
00134
00141 virtual IBPtr clone() const;
00142
00147 virtual IBPtr fullclone() const;
00149
00150 private:
00151
00155 Energy2 maxMinQ2() const;
00156
00160 Energy2 minMaxQ2() const;
00161
00165 Energy2 maxMinW2() const;
00166
00170 Energy2 minMaxW2() const;
00171
00172 private:
00173
00177 Energy2 theMinQ2;
00178
00182 Energy2 theMaxQ2;
00183
00187 Energy2 theMinW2;
00188
00192 Energy2 theMaxW2;
00193
00198 bool chargedCurrent;
00199
00200 private:
00201
00206 static ClassDescription<SimpleDISCut> initSimpleDISCut;
00207
00212 SimpleDISCut & operator=(const SimpleDISCut &);
00213
00214 };
00215
00216 }
00217
00218 #include "ThePEG/Utilities/ClassTraits.h"
00219
00220 namespace ThePEG {
00221
00226 template <>
00227 struct BaseClassTrait<SimpleDISCut,1> {
00229 typedef TwoCutBase NthBase;
00230 };
00231
00234 template <>
00235 struct ClassTraits<SimpleDISCut>
00236 : public ClassTraitsBase<SimpleDISCut> {
00238 static string className() { return "ThePEG::SimpleDISCut"; }
00242 static string library() { return "SimpleDISCut.so"; }
00243 };
00244
00247 }
00248
00249 #endif