rivet is hosted by Hepforge, IPPP Durham
Rivet 3.1.6
DressedLeptons.hh
1// -*- C++ -*-
2#ifndef RIVET_DressedLeptons_HH
3#define RIVET_DressedLeptons_HH
4
5#include "Rivet/Projection.hh"
6#include "Rivet/Projections/FinalState.hh"
7#include "Rivet/Projections/IdentifiedFinalState.hh"
8#include "Rivet/Config/RivetCommon.hh"
9
10namespace Rivet {
11
12
17 class DressedLepton : public Particle {
18 public:
19
21 DressedLepton(const Particle& dlepton);
22
25 DressedLepton(const Particle& lepton, const Particles& photons, bool momsum=true);
26
29 void addPhoton(const Particle& p, bool momsum=true);
30
32 const Particle& bareLepton() const;
35 const Particle& constituentLepton() const { return bareLepton(); }
36
38 const Particles photons() const { return slice(constituents(), 1); }
41 const Particles constituentPhotons() const { return photons(); }
42
43 };
44
45
61 class DressedLeptons : public FinalState {
62 public:
63
75 double dRmax, const Cut& cut=Cuts::open(),
76 bool useDecayPhotons=false,
77 bool useJetClustering=false);
78
89 DressedLeptons(double dRmax, const Cut& cut=Cuts::open(),
90 bool useDecayPhotons=false,
91 bool useJetClustering=false)
92 : DressedLeptons(FinalState(), dRmax, cut, useDecayPhotons, useJetClustering)
93 { }
94
110 DressedLeptons(const FinalState& photons, const FinalState& bareleptons,
111 double dRmax, const Cut& cut=Cuts::open(),
112 bool useDecayPhotons=false,
113 bool useJetClustering=false);
114
115
118
119
123 vector<DressedLepton> dressedLeptons() const {
124 vector<DressedLepton> rtn;
125 for (const Particle& p : particles(cmpMomByPt))
126 rtn += DressedLepton(p); //static_cast<const DressedLepton>(p);
127 return rtn;
128 }
129
133 vector<DressedLepton> dressedLeptons(const ParticleSorter& sorter) const {
134 vector<DressedLepton> rtn;
135 for (const Particle& p : particles(sorter))
136 rtn += DressedLepton(p); //static_cast<const DressedLepton>(p);
137 return rtn;
138 }
139
140
141 protected:
142
144 void project(const Event& e);
145
147 CmpState compare(const Projection& p) const;
148
149
150 private:
151
153 double _dRmax;
154
156 bool _fromDecay;
157
159 bool _useJetClustering;
160
161
162 };
163
164
165
166}
167
168
169#endif
A charged lepton meta-particle created by clustering photons close to the bare lepton.
Definition: DressedLeptons.hh:17
const Particle & bareLepton() const
Retrieve the bare lepton.
DressedLepton(const Particle &lepton, const Particles &photons, bool momsum=true)
void addPhoton(const Particle &p, bool momsum=true)
const Particles photons() const
Retrieve the clustered photons.
Definition: DressedLeptons.hh:38
DressedLepton(const Particle &dlepton)
Copy constructor (from Particle)
const Particles constituentPhotons() const
Definition: DressedLeptons.hh:41
const Particle & constituentLepton() const
Definition: DressedLeptons.hh:35
Cluster photons from a given FS to all charged particles (typically leptons)
Definition: DressedLeptons.hh:61
vector< DressedLepton > dressedLeptons() const
Retrieve the dressed leptons.
Definition: DressedLeptons.hh:123
void project(const Event &e)
Apply the projection on the supplied event.
CmpState compare(const Projection &p) const
Compare projections.
vector< DressedLepton > dressedLeptons(const ParticleSorter &sorter) const
Retrieve the dressed leptons ordered by supplied sorting functor.
Definition: DressedLeptons.hh:133
DressedLeptons(const FinalState &photons, const FinalState &bareleptons, double dRmax, const Cut &cut=Cuts::open(), bool useDecayPhotons=false, bool useJetClustering=false)
Constructor with distinct photon and lepton finders.
DEFAULT_RIVET_PROJ_CLONE(DressedLeptons)
Clone this projection.
DressedLeptons(const FinalState &allfs, double dRmax, const Cut &cut=Cuts::open(), bool useDecayPhotons=false, bool useJetClustering=false)
Constructor with a single input FinalState (used for both photons and bare leptons)
DressedLeptons(double dRmax, const Cut &cut=Cuts::open(), bool useDecayPhotons=false, bool useJetClustering=false)
Constructor with default input FinalState.
Definition: DressedLeptons.hh:89
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
double p() const
Get the 3-momentum magnitude directly.
Definition: ParticleBase.hh:110
virtual const Particles & particles() const
Get the particles in no particular order, with no cuts.
Definition: ParticleFinder.hh:49
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition: Particle.hh:53
const Particles & constituents() const
Direct constituents of this particle, returned by reference.
Definition: Particle.hh:285
Specialised vector of Particle objects.
Definition: Particle.hh:25
Base class for all Rivet projections.
Definition: Projection.hh:29
CONTAINER slice(const CONTAINER &c, int i, int j)
Slice of the container elements cf. Python's [i:j] syntax.
Definition: Utils.hh:583
bool cmpMomByPt(const FourMomentum &a, const FourMomentum &b)
Comparison to give a sorting by decreasing pT.
Definition: Vector4.hh:1346
double p(const ParticleBase &p)
Unbound function access to p.
Definition: ParticleBaseUtils.hh:653
const Cut & open()
Fully open cut singleton, accepts everything.
Definition: MC_Cent_pPb.hh:10