ThePEG  1.8.0
MadGraphOneCut.h
1 // -*- C++ -*-
2 //
3 // MadGraphOneCut.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef THEPEG_MadGraphOneCut_H
10 #define THEPEG_MadGraphOneCut_H
11 //
12 // This is the declaration of the MadGraphOneCut class.
13 //
14 
15 #include "ThePEG/Cuts/OneCutBase.h"
16 
17 namespace ThePEG {
18 
28 class MadGraphOneCut: public OneCutBase {
29 
30 public:
31 
35  enum CutType {
36  PT,
37  ETA,
38  XPT
40  };
41 
45  enum PType {
46  JET,
47  LEP,
48  PHO,
49  BOT
50  };
51 
52 public:
53 
60 
67  MadGraphOneCut(CutType t, PType p, double c)
68  : cutType(t), particleType(p), theCut(c) {}
70 
71 public:
72 
79  virtual Energy minKT(tcPDPtr p) const;
80 
86  virtual double minEta(tcPDPtr p) const;
87 
93  virtual double maxEta(tcPDPtr p) const;
94 
100  virtual Energy minMaxKT(tcPDPtr p) const;
101 
107  virtual bool passCuts(tcCutsPtr parent,
108  tcPDPtr ptype, LorentzMomentum p) const;
110 
111 protected:
112 
116  bool checkType(tcPDPtr p) const;
117 
118 public:
119 
126  void persistentOutput(PersistentOStream & os) const;
127 
133  void persistentInput(PersistentIStream & is, int version);
135 
142  static void Init();
143 
144 protected:
145 
152  virtual IBPtr clone() const;
153 
158  virtual IBPtr fullclone() const;
160 
161 private:
162 
167 
172 
176  double theCut;
177 
178 private:
179 
185 
191 
192 };
193 
194 }
195 
196 #include "ThePEG/Utilities/ClassTraits.h"
197 
198 namespace ThePEG {
199 
204 template <>
205 struct BaseClassTrait<MadGraphOneCut,1> {
207  typedef OneCutBase NthBase;
208 };
209 
212 template <>
213 struct ClassTraits<MadGraphOneCut>
214  : public ClassTraitsBase<MadGraphOneCut> {
216  static string className() { return "ThePEG::MadGraphOneCut"; }
220  static string library() { return "MadGraphReader.so"; }
221 };
222 
225 }
226 
227 #endif /* THEPEG_MadGraphOneCut_H */