thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
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
17namespace ThePEG {
18
29
33 enum Family {
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
49public:
50
56
57public:
58
66 virtual Energy2 minS(const tcPDVector & pv) const;
67
73 virtual Energy2 maxS(const tcPDVector & pv) const;
74
79 virtual bool passCuts(tcCutsPtr parent, const tcPDVector & ptype,
80 const vector<LorentzMomentum> & p) const;
82
86 virtual void describe() const;
87
88protected:
89
93 bool checkTypes(long id1, long id2) const;
94
98 int family(long id) const;
99
100public:
101
109
115 void persistentInput(PersistentIStream & is, int version);
117
124 static void Init();
125
126protected:
127
134 virtual IBPtr clone() const;
135
140 virtual IBPtr fullclone() const;
142
143private:
144
149
154
155private:
156
161
166
171
176
177private:
178
184
190
191};
192
193}
194
195#include "ThePEG/Utilities/ClassTraits.h"
196
197namespace ThePEG {
198
203template <>
204struct BaseClassTrait<V2LeptonsCut,1> {
206 typedef MultiCutBase NthBase;
207};
208
211template <>
212struct ClassTraits<V2LeptonsCut>
213 : public ClassTraitsBase<V2LeptonsCut> {
215 static string className() { return "ThePEG::V2LeptonsCut"; }
219 static string library() { return "V2LeptonsCut.so"; }
220};
221
224}
225
226#endif /* THEPEG_V2LeptonsCut_H */
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data.
This class corresponds to a kinematical cut to be made on a set of outgoing particles from a hard sub...
Definition: MultiCutBase.h:34
PersistentIStream is used to read persistent objects from a stream where they were previously written...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
This class inherits from MultiCutBase and describes cuts on the invariant mass of two final state lep...
Definition: V2LeptonsCut.h:28
int theFamilies
Integer corresponding to the lepton families to match.
Definition: V2LeptonsCut.h:170
V2LeptonsCut & operator=(const V2LeptonsCut &)=delete
The assignment operator is private and must never be called.
V2LeptonsCut()
The default constructor.
Definition: V2LeptonsCut.h:54
Energy minMaxM() const
Helper function used by the interface.
static void Init()
The standard Init function used to initialize the interfaces.
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...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
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 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...
Family
Enumeration of the different families.
Definition: V2LeptonsCut.h:33
@ tau
Tau Family.
Definition: V2LeptonsCut.h:36
@ muon
Muon Family.
Definition: V2LeptonsCut.h:35
@ electron
Lepton Family.
Definition: V2LeptonsCut.h:34
CComb
Enumeration of charge combinations.
Definition: V2LeptonsCut.h:42
@ posneu
positive lepton anti-neutrino pair.
Definition: V2LeptonsCut.h:45
@ neuneu
neutrino anti-neutrino pair.
Definition: V2LeptonsCut.h:46
@ negneu
negative lepton anti-neutrino pair.
Definition: V2LeptonsCut.h:44
@ posneg
charged lepton anti-lepton pair.
Definition: V2LeptonsCut.h:43
virtual void describe() const
Describe the currently active cuts in the log file.
static ClassDescription< V2LeptonsCut > initV2LeptonsCut
The static object used to initialize the description of this class.
Definition: V2LeptonsCut.h:183
Energy theMinM
The minimum invariant mass.
Definition: V2LeptonsCut.h:160
int theCComb
Integer corresponding to the charge combination to match.
Definition: V2LeptonsCut.h:175
Energy theMaxM
The maximum invariant mass.
Definition: V2LeptonsCut.h:165
virtual IBPtr clone() const
Make a simple clone of this object.
bool checkTypes(long id1, long id2) const
Check if the PDG id numbers matches this cut.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Energy maxMinM() const
Helper function used by the interface.
int family(long id) const
Check the family of the given PDG id number.
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
vector< tcPDPtr > tcPDVector
A vector of transient pointers to const ParticleData objects.
Definition: Containers.h:42
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
static string className()
Return the name of class T.
Definition: ClassTraits.h:66
static string library()
The name of a file containing the dynamic library where the class T is implemented.
Definition: ClassTraits.h:85