ThePEG  1.8.0
V2LeptonsCut.h
1 // -*- C++ -*-
2 //
3 // V2LeptonsCut.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_V2LeptonsCut_H
10 #define THEPEG_V2LeptonsCut_H
11 //
12 // This is the declaration of the V2LeptonsCut class.
13 //
14 
15 #include "ThePEG/Cuts/MultiCutBase.h"
16 
17 namespace ThePEG {
18 
28 class V2LeptonsCut: public MultiCutBase {
29 
33  enum Family {
34  electron = 1,
35  muon = 2,
36  tau = 4
37  };
38 
42  enum CComb {
47  };
48 
49 public:
50 
56  V2LeptonsCut() : theMinM(70.0*GeV), theMaxM(90.0*GeV), theFamilies(electron|muon),
58 
62  virtual ~V2LeptonsCut();
64 
65 public:
66 
74  virtual Energy2 minS(const tcPDVector & pv) const;
75 
81  virtual Energy2 maxS(const tcPDVector & pv) const;
82 
87  virtual bool passCuts(tcCutsPtr parent, const tcPDVector & ptype,
88  const vector<LorentzMomentum> & p) const;
90 
94  virtual void describe() const;
95 
96 protected:
97 
101  bool checkTypes(long id1, long id2) const;
102 
106  int family(long id) const;
107 
108 public:
109 
116  void persistentOutput(PersistentOStream & os) const;
117 
123  void persistentInput(PersistentIStream & is, int version);
125 
132  static void Init();
133 
134 protected:
135 
142  virtual IBPtr clone() const;
143 
148  virtual IBPtr fullclone() const;
150 
151 private:
152 
156  Energy maxMinM() const;
157 
161  Energy minMaxM() const;
162 
163 private:
164 
169 
174 
179 
183  int theCComb;
184 
185 private:
186 
192 
198 
199 };
200 
201 }
202 
203 #include "ThePEG/Utilities/ClassTraits.h"
204 
205 namespace ThePEG {
206 
211 template <>
212 struct BaseClassTrait<V2LeptonsCut,1> {
214  typedef MultiCutBase NthBase;
215 };
216 
219 template <>
220 struct ClassTraits<V2LeptonsCut>
221  : public ClassTraitsBase<V2LeptonsCut> {
223  static string className() { return "ThePEG::V2LeptonsCut"; }
227  static string library() { return "V2LeptonsCut.so"; }
228 };
229 
232 }
233 
234 #endif /* THEPEG_V2LeptonsCut_H */