2#ifndef RIVET_DISLepton_HH
3#define RIVET_DISLepton_HH
5#include "Rivet/Projections/Beam.hh"
6#include "Rivet/Projections/PromptFinalState.hh"
7#include "Rivet/Projections/HadronicFinalState.hh"
8#include "Rivet/Projections/DressedLeptons.hh"
9#include "Rivet/Projections/UndressBeamLeptons.hh"
10#include "Rivet/Projections/VetoedFinalState.hh"
11#include "Rivet/Particle.hh"
12#include "Rivet/Event.hh"
37 DISLepton(
const std::map<std::string,std::string> & opts =
38 std::map<std::string,std::string>())
39 : _isolDR(0.0), _sort(ENERGY), _lmode(
"any") {
43 auto sorting = opts.find(
"LSort");
44 if ( sorting != opts.end() && sorting->second ==
"ETA" )
46 else if ( sorting != opts.end() && sorting->second ==
"ET" )
49 double undresstheta = 0.0;
50 auto undress = opts.find(
"Undress");
51 if ( undress != opts.end() )
52 undresstheta = std::stod(undress->second);
53 if ( undresstheta > 0.0 )
58 auto isol = opts.find(
"IsolDR");
59 if ( isol != opts.end() ) _isolDR = std::stod(isol->second);
62 auto dress = opts.find(
"DressDR");
63 if ( dress != opts.end() )
64 dressdr = std::stod(dress->second);
66 _lmode = (opts.count(
"LMode") == 0) ?
"any" : opts.at(
"LMode");
67 if ( _lmode ==
"any" )
69 else if ( _lmode ==
"dressed" )
86 using Projection::operator =;
120 void clear() { _theParticles.clear(); }
Project out the incoming beams.
Definition Beam.hh:129
Get the incoming and outgoing leptons in a DIS event.
Definition DISLepton.hh:18
const Particle & out() const
The outgoing lepton.
Definition DISLepton.hh:104
virtual void project(const Event &e)
Perform the projection operation on the supplied event.
const Particle & in() const
The incoming lepton.
Definition DISLepton.hh:101
void clear()
Clear the projection.
Definition DISLepton.hh:120
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:107
SortOrder
Definition DISLepton.hh:23
DISLepton(const std::map< std::string, std::string > &opts=std::map< std::string, std::string >())
Definition DISLepton.hh:37
DEFAULT_RIVET_PROJ_CLONE(DISLepton)
Clone on the heap.
Cluster photons from a given FS to all charged particles (typically leptons)
Definition DressedLeptons.hh:61
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
Particle representation, either from a HepMC::GenEvent or reconstructed.
Definition Particle.hh:53
const PROJ & declare(const PROJ &proj, const std::string &name)
Register a contained projection (user-facing version)
Definition ProjectionApplier.hh:170
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:142
Find final state particles directly connected to the hard process.
Definition PromptFinalState.hh:24
Project out the incoming beams, but subtract any colinear photons from lepton beams within a given co...
Definition UndressBeamLeptons.hh:13
FS modifier to exclude classes of particles from the final state.
Definition VetoedFinalState.hh:11
VetoedFinalState & addVetoOnThisFinalState(const ParticleFinder &fs)
Veto particles from a supplied final state.
Definition VetoedFinalState.hh:194
double p(const ParticleBase &p)
Unbound function access to p.
Definition ParticleBaseUtils.hh:684
Definition MC_Cent_pPb.hh:10
constexpr std::enable_if< std::is_arithmetic< NUM >::value, int >::type sign(NUM val)
Find the sign of a number.
Definition MathUtils.hh:266