00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef THEPEG_MadGraphOneCut_H
00010 #define THEPEG_MadGraphOneCut_H
00011
00012
00013
00014
00015 #include "ThePEG/Cuts/OneCutBase.h"
00016
00017 namespace ThePEG {
00018
00028 class MadGraphOneCut: public OneCutBase {
00029
00030 public:
00031
00035 enum CutType {
00036 PT,
00037 ETA,
00038 XPT
00040 };
00041
00045 enum PType {
00046 JET,
00047 LEP,
00048 PHO,
00049 BOT
00050 };
00051
00052 public:
00053
00059 MadGraphOneCut() : cutType(PT), particleType(JET), theCut(0.0) {}
00060
00067 MadGraphOneCut(CutType t, PType p, double c)
00068 : cutType(t), particleType(p), theCut(c) {}
00070
00071 public:
00072
00079 virtual Energy minKT(tcPDPtr p) const;
00080
00086 virtual double minEta(tcPDPtr p) const;
00087
00093 virtual double maxEta(tcPDPtr p) const;
00094
00100 virtual Energy minMaxKT(tcPDPtr p) const;
00101
00107 virtual bool passCuts(tcCutsPtr parent,
00108 tcPDPtr ptype, LorentzMomentum p) const;
00110
00111 protected:
00112
00116 bool checkType(tcPDPtr p) const;
00117
00118 public:
00119
00126 void persistentOutput(PersistentOStream & os) const;
00127
00133 void persistentInput(PersistentIStream & is, int version);
00135
00142 static void Init();
00143
00144 protected:
00145
00152 virtual IBPtr clone() const;
00153
00158 virtual IBPtr fullclone() const;
00160
00161 private:
00162
00166 CutType cutType;
00167
00171 PType particleType;
00172
00176 double theCut;
00177
00178 private:
00179
00184 static ClassDescription<MadGraphOneCut> initMadGraphOneCut;
00185
00190 MadGraphOneCut & operator=(const MadGraphOneCut &);
00191
00192 };
00193
00194 }
00195
00196 #include "ThePEG/Utilities/ClassTraits.h"
00197
00198 namespace ThePEG {
00199
00204 template <>
00205 struct BaseClassTrait<MadGraphOneCut,1> {
00207 typedef OneCutBase NthBase;
00208 };
00209
00212 template <>
00213 struct ClassTraits<MadGraphOneCut>
00214 : public ClassTraitsBase<MadGraphOneCut> {
00216 static string className() { return "ThePEG::MadGraphOneCut"; }
00220 static string library() { return "MadGraphReader.so"; }
00221 };
00222
00225 }
00226
00227 #endif