rivet is hosted by Hepforge, IPPP Durham
Rivet 4.0.2
DISLepton.hh
1// -*- C++ -*-
2#ifndef RIVET_DISLepton_HH
3#define RIVET_DISLepton_HH
4
5#include "Rivet/Projections/Beam.hh"
6#include "Rivet/Projections/PromptFinalState.hh"
7#include "Rivet/Projections/HadronicFinalState.hh"
8#include "Rivet/Projections/LeptonFinder.hh"
9#include "Rivet/Projections/UndressBeamLeptons.hh"
10#include "Rivet/Projections/VetoedFinalState.hh"
11#include "Rivet/Particle.hh"
12#include "Rivet/Event.hh"
13
14namespace Rivet {
15
16
18 class DISLepton : public FinalState {
19 public:
20
23
25 DISLepton(const Cut& cuts=Cuts::OPEN,
26 LeptonReco lreco=LeptonReco::ALL, ObjOrdering lsort=ObjOrdering::ENERGY,
27 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
28 : _isolDR(isolDR), _lsort(lsort), _lreco(lreco)
29 {
30 setName("DISLepton");
32
33 // Beam undressing
34 if (beamundresstheta > 0.0) {
35 declare(UndressBeamLeptons(beamundresstheta), "Beam");
36 } else {
37 declare(Beam(), "Beam");
38 }
39
40 // Lepton reco mode
41 switch (_lreco) {
42 case LeptonReco::ALL:
43 declare(FinalState(cuts), "LFS");
44 break;
45 case LeptonReco::ALL_DRESSED:
46 declare(LeptonFinder(FinalState(), dressDR, cuts), "LFS");
47 break;
48 case LeptonReco::PROMPT_BARE:
49 declare(PromptFinalState(cuts), "LFS");
50 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, LeptonReco lreco=LeptonReco::ALL,
65 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
66 : DISLepton(cuts, lreco, ObjOrdering::ENERGY, beamundresstheta, isolDR, dressDR)
67 { }
68
70 DISLepton(LeptonReco lreco, ObjOrdering lsort=ObjOrdering::ENERGY,
71 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
72 : DISLepton(Cuts::OPEN, lreco, lsort, beamundresstheta, isolDR, dressDR)
73 { }
74
77 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
78 : DISLepton(Cuts::OPEN, lreco, ObjOrdering::ENERGY, beamundresstheta, isolDR, dressDR)
79 { }
80
81
84
86
88 using Projection::operator =;
89
90
91 protected:
92
94 virtual void project(const Event& e);
95
97 virtual CmpState compare(const Projection& p) const;
98
99
100 public:
101
103 const Particle& in() const { return _incoming; }
104
106 const Particle& out() const { return _outgoing; }
107
109 int pzSign() const { return sign(_incoming.pz()); }
110
112 LeptonReco reconstructionMode() const { return _lreco; }
113
114
119
121 void clear() { _theParticles.clear(); }
122
123
124 protected:
125
127 Particle _incoming;
128
130 Particle _outgoing;
131
133 double _isolDR;
134
136 ObjOrdering _lsort;
137
139 LeptonReco _lreco;
140
141 };
142
143
144}
145
146#endif
Project out the incoming beams.
Definition Beam.hh:15
Get the incoming and outgoing leptons in a DIS event.
Definition DISLepton.hh:18
DISLepton(Cut &cuts, LeptonReco lreco=LeptonReco::ALL, double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
Constructor without lepton-ordering spec, requiring cuts.
Definition DISLepton.hh:64
const Particle & out() const
The outgoing lepton.
Definition DISLepton.hh:106
virtual void project(const Event &e)
Perform the projection operation on the supplied event.
const Particle & in() const
The incoming lepton.
Definition DISLepton.hh:103
void clear()
Clear the projection.
Definition DISLepton.hh:121
const VetoedFinalState & remainingFinalState() const
virtual CmpState compare(const Projection &p) const
Compare with other projections.
int pzSign() const
Sign of the incoming lepton pz component.
Definition DISLepton.hh:109
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)
Constructor with optional cuts first.
Definition DISLepton.hh:25
DISLepton(LeptonReco lreco, ObjOrdering lsort=ObjOrdering::ENERGY, double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
Constructor without cuts, requiring lepton reco spec.
Definition DISLepton.hh:70
RIVET_DEFAULT_PROJ_CLONE(DISLepton)
Clone on the heap.
LeptonReco reconstructionMode() const
Lepton reconstruction mode.
Definition DISLepton.hh:112
DISLepton(LeptonReco lreco, double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
Constructor without cuts or lepton-ordering spec, requiring lepton reco spec.
Definition DISLepton.hh:76
Representation of a HepMC event, and enabler of Projection caching.
Definition Event.hh:22
Project out all final-state particles in an event. Probably the most important projection in Rivet!
Definition FinalState.hh:12
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:45
const PROJ & declare(const PROJ &proj, const std::string &name) const
Register a contained projection (user-facing version)
Definition ProjectionApplier.hh:175
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:148
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:192
Definition MC_CENT_PPB_Projections.hh:10
constexpr std::enable_if_t< std::is_arithmetic_v< NUM >, int > sign(NUM val)
Find the sign of a number.
Definition MathUtils.hh:264
LeptonReco
Reconstruction/dressing mode for leptons.
Definition DressedLepton.hh:15