Rivet API documentation

Rivet 4.1.3
DISLepton.hh
1// -*- C++ -*-
2#ifndef RIVET_DISLepton_HH
3#define RIVET_DISLepton_HH
4
5#include "Rivet/Event.hh"
6#include "Rivet/Particle.hh"
7#include "Rivet/Projections/Beam.hh"
8#include "Rivet/Projections/HadronicFinalState.hh"
9#include "Rivet/Projections/LeptonFinder.hh"
10#include "Rivet/Projections/PromptFinalState.hh"
11#include "Rivet/Projections/UndressBeamLeptons.hh"
12#include "Rivet/Projections/VetoedFinalState.hh"
13
14namespace Rivet {
15
17 enum class DISMode { L2L, L2NU, NU2L, NU2NU };
18
20 class DISLepton : public FinalState {
21 public:
22
25
27 DISLepton(const Cut& cuts = Cuts::OPEN,
28 LeptonReco lreco = LeptonReco::ALL,
29 ObjOrdering lsort = ObjOrdering::ENERGY,
30 double beamundresstheta = 0.0,
31 double isolDR = 0.0,
32 double dressDR = 0.0,
33 DISMode dismode = DISMode::L2L)
34 : _isolDR(isolDR), _lsort(lsort), _lreco(lreco), _dismode(dismode) {
35 setName("DISLepton");
37
38 // Beam undressing
39 if (beamundresstheta > 0.0) {
40 declare(UndressBeamLeptons(beamundresstheta), "Beam");
41 }
42 else {
43 declare(Beam(), "Beam");
44 }
45
46 // Lepton reco mode
47 switch (_lreco) {
48 case LeptonReco::ALL: declare(FinalState(cuts), "LFS"); break;
49 case LeptonReco::ALL_DRESSED: declare(LeptonFinder(FinalState(), dressDR, cuts), "LFS"); break;
50 case LeptonReco::PROMPT_BARE: declare(PromptFinalState(cuts), "LFS"); break;
51 case LeptonReco::PROMPT_DRESSED:
52 declare(LeptonFinder(PromptFinalState(), dressDR, cuts), "LFS");
53 break;
54 }
55
56 // Identify the non-outgoing-lepton part of the event
57 VetoedFinalState remainingFS;
58 remainingFS.addVetoOnThisFinalState(*this);
59 declare(remainingFS, "RFS");
60 }
61
62
64 DISLepton(Cut& cuts,
65 LeptonReco lreco = LeptonReco::ALL,
66 double beamundresstheta = 0.0,
67 double isolDR = 0.0,
68 double dressDR = 0.0,
69 DISMode dismode = DISMode::L2L)
70 : DISLepton(cuts, lreco, ObjOrdering::ENERGY, beamundresstheta, isolDR, dressDR, dismode) { }
71
74 ObjOrdering lsort = ObjOrdering::ENERGY,
75 double beamundresstheta = 0.0,
76 double isolDR = 0.0,
77 double dressDR = 0.0,
78 DISMode dismode = DISMode::L2L)
79 : DISLepton(Cuts::OPEN, lreco, lsort, beamundresstheta, isolDR, dressDR, dismode) { }
80
83 double beamundresstheta = 0.0,
84 double isolDR = 0.0,
85 double dressDR = 0.0,
86 DISMode dismode = DISMode::L2L)
87 : DISLepton(Cuts::OPEN, lreco, ObjOrdering::ENERGY, beamundresstheta, isolDR, dressDR, dismode) { }
88
89
92
94
96 using Projection::operator=;
97
98
99 protected:
100
102 virtual void project(const Event& e);
103
105 virtual CmpState compare(const Projection& p) const;
106
107
108 public:
109
111 const Particle& in() const {
112 return _incoming;
113 }
114
116 const Particle& out() const {
117 return _outgoing;
118 }
119
121 int pzSign() const {
122 return sign(_incoming.pz());
123 }
124
127 return _lreco;
128 }
129
130
135
137 void clear() {
138 _theParticles.clear();
139 }
140
141
142 protected:
143
145 Particle _incoming;
146
148 Particle _outgoing;
149
151 double _isolDR;
152
154 ObjOrdering _lsort;
155
157 LeptonReco _lreco;
158
160 DISMode _dismode;
161 };
162
163
164}
165
166#endif
Project out the incoming beams.
Definition Beam.hh:15
const Particle & out() const
The outgoing lepton.
Definition DISLepton.hh:116
virtual void project(const Event &e)
Perform the projection operation on the supplied event.
const Particle & in() const
The incoming lepton.
Definition DISLepton.hh:111
void clear()
Clear the projection.
Definition DISLepton.hh:137
const VetoedFinalState & remainingFinalState() const
DISLepton(Cut &cuts, LeptonReco lreco=LeptonReco::ALL, double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0, DISMode dismode=DISMode::L2L)
Constructor without lepton-ordering spec, requiring cuts.
Definition DISLepton.hh:64
virtual CmpState compare(const Projection &p) const
Compare with other projections.
int pzSign() const
Sign of the incoming lepton pz component.
Definition DISLepton.hh:121
DISLepton(LeptonReco lreco, ObjOrdering lsort=ObjOrdering::ENERGY, double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0, DISMode dismode=DISMode::L2L)
Constructor without cuts, requiring lepton reco spec.
Definition DISLepton.hh:73
RIVET_DEFAULT_PROJ_CLONE(DISLepton)
Clone on the heap.
DISLepton(LeptonReco lreco, double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0, DISMode dismode=DISMode::L2L)
Constructor without cuts or lepton-ordering spec, requiring lepton reco spec.
Definition DISLepton.hh:82
LeptonReco reconstructionMode() const
Lepton reconstruction mode.
Definition DISLepton.hh:126
DISLepton(const Cut &cuts=Cuts::OPEN, LeptonReco lreco=LeptonReco::ALL, ObjOrdering lsort=ObjOrdering::ENERGY, double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0, DISMode dismode=DISMode::L2L)
Constructor with optional cuts first.
Definition DISLepton.hh:27
Representation of a HepMC event, and enabler of Projection caching.
Definition Event.hh:22
FinalState(const Cut &c=Cuts::OPEN)
Construction using Cuts object.
Project only hadronic final state particles.
Definition HadronicFinalState.hh:16
Reconstruct leptons, generally including "dressing" with clustered photons.
Definition LeptonFinder.hh:29
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition Particle.hh:50
const PROJ & declare(const PROJ &proj, const std::string &name) const
Register a contained projection (user-facing version).
Definition ProjectionApplier.hh:205
Base class for all Rivet projections.
Definition Projection.hh:29
void setName(const std::string &name)
Used by derived classes to set their name.
Definition Projection.hh:146
Find final state particles directly connected to the hard process.
Definition PromptFinalState.hh:25
Incoming lepton beams with collinear photons subtracted.
Definition UndressBeamLeptons.hh:12
FS modifier to exclude classes of particles from the final state.
Definition VetoedFinalState.hh:11
VetoedFinalState & addVetoOnThisFinalState(const ParticleFinder &fs)
Definition VetoedFinalState.hh:186
double p(const ParticleBase &p)
Unbound function access to p.
Definition ParticleBaseUtils.hh:819
Namespace used for ambiguous identifiers.
Definition Cuts.hh:58
Definition LHCbCommon.hh:9
constexpr std::enable_if_t< std::is_arithmetic_v< NUM >, int > sign(NUM val)
Find the sign of a number.
Definition MathUtils.hh:295
DISMode
Enum for available DIS incoming-to-outgoing lepton mode.
Definition DISLepton.hh:17
LeptonReco
Reconstruction/dressing mode for leptons.
Definition DressedLepton.hh:15