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 */
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
PersistentIStream is used to read persistent objects from a stream where they were previously written...
V2LeptonsCut()
The default constructor.
Definition: V2LeptonsCut.h:56
static void Init()
The standard Init function used to initialize the interfaces.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
negative lepton anti-neutrino pair.
Definition: V2LeptonsCut.h:44
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
vector< tcPDPtr > tcPDVector
A vector of transient pointers to const ParticleData objects.
Definition: Containers.h:42
int theFamilies
Integer corresponding to the lepton families to match.
Definition: V2LeptonsCut.h:178
virtual ~V2LeptonsCut()
The destructor.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
Energy theMaxM
The maximum invariant mass.
Definition: V2LeptonsCut.h:173
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
positive lepton anti-neutrino pair.
Definition: V2LeptonsCut.h:45
QTY< 0, 1, 0 >::Type Energy
Energy.
Definition: Unitsystem.h:34
static ClassDescription< V2LeptonsCut > initV2LeptonsCut
The static object used to initialize the description of this class.
Definition: V2LeptonsCut.h:191
CComb
Enumeration of charge combinations.
Definition: V2LeptonsCut.h:42
static string library()
The name of a file containing the dynamic library where the class T is implemented.
Definition: ClassTraits.h:85
virtual IBPtr clone() const
Make a simple clone of this object.
This class inherits from MultiCutBase and describes cuts on the invariant mass of two final state lep...
Definition: V2LeptonsCut.h:28
Energy theMinM
The minimum invariant mass.
Definition: V2LeptonsCut.h:168
virtual bool passCuts(tcCutsPtr parent, const tcPDVector &ptype, const vector< LorentzMomentum > &p) const
Return true if a set of outgoing particles with typea ptype and corresponding momenta p passes the cu...
V2LeptonsCut & operator=(const V2LeptonsCut &)
The assignment operator is private and must never be called.
int family(long id) const
Check the family of the given PDG id number.
Energy maxMinM() const
Helper function used by the interface.
charged lepton anti-lepton pair.
Definition: V2LeptonsCut.h:43
virtual void describe() const
Describe the currently active cuts in the log file.
neutrino anti-neutrino pair.
Definition: V2LeptonsCut.h:46
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
This class corresponds to a kinematical cut to be made on a set of outgoing particles from a hard sub...
Definition: MultiCutBase.h:34
Energy minMaxM() const
Helper function used by the interface.
static string className()
Return the name of class T.
Definition: ClassTraits.h:66
bool checkTypes(long id1, long id2) const
Check if the PDG id numbers matches this cut.
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
virtual Energy2 minS(const tcPDVector &pv) const
Return the minimum allowed value of the squared invariant mass of a set of outgoing partons of the gi...
virtual Energy2 maxS(const tcPDVector &pv) const
Return the maximum allowed value of the squared invariant mass of a set of outgoing partons of the gi...
int theCComb
Integer corresponding to the charge combination to match.
Definition: V2LeptonsCut.h:183
Family
Enumeration of the different families.
Definition: V2LeptonsCut.h:33