Rivet  3.1.5
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 
10 namespace 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 
74  DressedLeptons(const FinalState& allfs,
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 
117  DEFAULT_RIVET_PROJ_CLONE(DressedLeptons);
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
Definition: MC_Cent_pPb.hh:10
void addPhoton(const Particle &p, bool momsum=true)
A charged lepton meta-particle created by clustering photons close to the bare lepton.
Definition: DressedLeptons.hh:17
bool cmpMomByPt(const FourMomentum &a, const FourMomentum &b)
Comparison to give a sorting by decreasing pT.
Definition: Vector4.hh:1346
vector< DressedLepton > dressedLeptons() const
Retrieve the dressed leptons.
Definition: DressedLeptons.hh:123
const Cut & open()
Fully open cut singleton, accepts everything.
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition: Particle.hh:18
const Particle & constituentLepton() const
Definition: DressedLeptons.hh:35
Cluster photons from a given FS to all charged particles (typically leptons)
Definition: DressedLeptons.hh:61
DressedLepton(const Particle &dlepton)
Copy constructor (from Particle)
const Particles & constituents() const
Direct constituents of this particle, returned by reference.
Definition: Particle.hh:250
const Particle & bareLepton() const
Retrieve the bare lepton.
Representation of a HepMC event, and enabler of Projection caching.
Definition: Event.hh:22
vector< DressedLepton > dressedLeptons(const ParticleSorter &sorter) const
Retrieve the dressed leptons ordered by supplied sorting functor.
Definition: DressedLeptons.hh:133
DressedLeptons(double dRmax, const Cut &cut=Cuts::open(), bool useDecayPhotons=false, bool useJetClustering=false)
Constructor with default input FinalState.
Definition: DressedLeptons.hh:89
const Particles constituentPhotons() const
Definition: DressedLeptons.hh:41
Project out all final-state particles in an event. Probably the most important projection in Rivet! ...
Definition: FinalState.hh:12
CONTAINER slice(const CONTAINER &c, int i, int j)
Slice of the container elements cf. Python&#39;s [i:j] syntax.
Definition: Utils.hh:572
const Particles photons() const
Retrieve the clustered photons.
Definition: DressedLeptons.hh:38
Base class for all Rivet projections.
Definition: Projection.hh:29
double p() const
Get the 3-momentum magnitude directly.
Definition: ParticleBase.hh:110