thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
V2LeptonsCut.h
1 // -*- C++ -*-
2 //
3 // V2LeptonsCut.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2019 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 3 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 {
43  posneg = 1,
44  negneu = 2,
45  posneu = 4,
46  neuneu = 8
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 
197  V2LeptonsCut & operator=(const V2LeptonsCut &) = delete;
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 */
PersistentIStream is used to read persistent objects from a stream where they were previously written...
virtual IBPtr clone() const
Make a simple clone of this object.
V2LeptonsCut()
The default constructor.
Definition: V2LeptonsCut.h:56
static void Init()
The standard Init function used to initialize the interfaces.
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
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 theFamilies
Integer corresponding to the lepton families to match.
Definition: V2LeptonsCut.h:178
virtual ~V2LeptonsCut()
The destructor.
Energy maxMinM() const
Helper function used by the interface.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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
bool checkTypes(long id1, long id2) const
Check if the PDG id numbers matches this cut.
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
This class inherits from MultiCutBase and describes cuts on the invariant mass of two final state lep...
Definition: V2LeptonsCut.h:28
Energy minMaxM() const
Helper function used by the interface.
Energy theMinM
The minimum invariant mass.
Definition: V2LeptonsCut.h:168
charged lepton anti-lepton pair.
Definition: V2LeptonsCut.h:43
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
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
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...
int family(long id) const
Check the family of the given PDG id number.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
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 &)=delete
The assignment operator is private and must never be called.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
int theCComb
Integer corresponding to the charge combination to match.
Definition: V2LeptonsCut.h:183
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52
Family
Enumeration of the different families.
Definition: V2LeptonsCut.h:33
virtual void describe() const
Describe the currently active cuts in the log file.