rivet is hosted by Hepforge, IPPP Durham
Rivet 4.1.0
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
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, ObjOrdering lsort=ObjOrdering::ENERGY,
29 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0, DISMode dismode=DISMode::L2L)
30 : _isolDR(isolDR), _lsort(lsort), _lreco(lreco), _dismode(dismode)
31 {
32 setName("DISLepton");
34
35 // Beam undressing
36 if (beamundresstheta > 0.0) {
37 declare(UndressBeamLeptons(beamundresstheta), "Beam");
38 } else {
39 declare(Beam(), "Beam");
40 }
41
42 // Lepton reco mode
43 switch (_lreco) {
44 case LeptonReco::ALL:
45 declare(FinalState(cuts), "LFS");
46 break;
47 case LeptonReco::ALL_DRESSED:
48 declare(LeptonFinder(FinalState(), dressDR, cuts), "LFS");
49 break;
50 case LeptonReco::PROMPT_BARE:
51 declare(PromptFinalState(cuts), "LFS");
52 break;
53 case LeptonReco::PROMPT_DRESSED:
54 declare(LeptonFinder(PromptFinalState(), dressDR, cuts), "LFS");
55 break;
56 }
57
58 // Identify the non-outgoing-lepton part of the event
59 VetoedFinalState remainingFS;
60 remainingFS.addVetoOnThisFinalState(*this);
61 declare(remainingFS, "RFS");
62 }
63
64
66 DISLepton(Cut& cuts, LeptonReco lreco=LeptonReco::ALL,
67 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0, DISMode dismode=DISMode::L2L)
68 : DISLepton(cuts, lreco, ObjOrdering::ENERGY, beamundresstheta, isolDR, dressDR, dismode)
69 { }
70
72 DISLepton(LeptonReco lreco, ObjOrdering lsort=ObjOrdering::ENERGY,
73 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0, DISMode dismode=DISMode::L2L)
74 : DISLepton(Cuts::OPEN, lreco, lsort, beamundresstheta, isolDR, dressDR, dismode)
75 { }
76
79 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0, DISMode dismode=DISMode::L2L)
80 : DISLepton(Cuts::OPEN, lreco, ObjOrdering::ENERGY, beamundresstheta, isolDR, dressDR, dismode)
81 { }
82
83
86
88
90 using Projection::operator =;
91
92
93 protected:
94
96 virtual void project(const Event& e);
97
99 virtual CmpState compare(const Projection& p) const;
100
101
102 public:
103
105 const Particle& in() const { return _incoming; }
106
108 const Particle& out() const { return _outgoing; }
109
111 int pzSign() const { return sign(_incoming.pz()); }
112
114 LeptonReco reconstructionMode() const { return _lreco; }
115
116
121
123 void clear() { _theParticles.clear(); }
124
125
126 protected:
127
129 Particle _incoming;
130
132 Particle _outgoing;
133
135 double _isolDR;
136
138 ObjOrdering _lsort;
139
141 LeptonReco _lreco;
142
144 DISMode _dismode;
145
146 };
147
148
149}
150
151#endif
Project out the incoming beams.
Definition Beam.hh:15
Get the incoming and outgoing leptons in a DIS event.
Definition DISLepton.hh:20
const Particle & out() const
The outgoing lepton.
Definition DISLepton.hh:108
virtual void project(const Event &e)
Perform the projection operation on the supplied event.
const Particle & in() const
The incoming lepton.
Definition DISLepton.hh:105
void clear()
Clear the projection.
Definition DISLepton.hh:123
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:66
virtual CmpState compare(const Projection &p) const
Compare with other projections.
int pzSign() const
Sign of the incoming lepton pz component.
Definition DISLepton.hh:111
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:72
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:78
LeptonReco reconstructionMode() const
Lepton reconstruction mode.
Definition DISLepton.hh:114
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
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:184
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
DISMode
Enum for available DIS incoming-to-outgoing lepton mode.
Definition DISLepton.hh:17
LeptonReco
Reconstruction/dressing mode for leptons.
Definition DressedLepton.hh:15