Rivet: /Users/chrisg/software/rivet/include/Rivet/Projections/GammaGammaLeptons.hh Source File

| Rivet 3.1.9

GammaGammaLeptons.hh
1// -*- C++ -*-
2#ifndef RIVET_GammaGammaLeptons_HH
3#define RIVET_GammaGammaLeptons_HH
4
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/Particle.hh"
11#include "Rivet/Event.hh"
12
13namespace Rivet {
14
15
17 // Heavily based on DISLepton
18 class GammaGammaLeptons : public Projection {
19 public:
20
23 enum SortOrder { ENERGY, ETA, ET };
24
26
27
37 GammaGammaLeptons(const std::map<std::string,std::string> & opts =
38 std::map<std::string,std::string>())
39 : _isolDR(0.0), _sort(ENERGY) {
40 setName("GammaGammaLeptons");
41 declare(HadronicFinalState(), "IFS");
42
43 auto sorting = opts.find("LSort");
44 if ( sorting != opts.end() && sorting->second == "ETA" )
45 _sort = ETA;
46 else if ( sorting != opts.end() && sorting->second == "ET" )
47 _sort = ET;
48
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 )
54 declare(UndressBeamLeptons(undresstheta), "Beam");
55 else
56 declare(Beam(), "Beam");
57
58 auto isol = opts.find("IsolDR");
59 if ( isol != opts.end() ) _isolDR = std::stod(isol->second);
60
61 double dressdr = 0.0;
62 auto dress = opts.find("DressDR");
63 if ( dress != opts.end() )
64 dressdr = std::stod(dress->second);
65
66 auto lmode = opts.find("LMode");
67 if ( lmode != opts.end() && lmode->second == "any" )
68 declare(FinalState(), "LFS");
69 else if ( lmode != opts.end() && lmode->second == "dressed" )
70 declare(DressedLeptons(dressdr), "LFS");
71 else
72 declare(PromptFinalState(), "LFS");
73 }
74
81 GammaGammaLeptons(const FinalState & leptoncandidates,
82 const Beam & beamproj = Beam(),
83 const FinalState & isolationfs = FinalState(),
84 double isolationcut = 0.0, SortOrder sorting = ENERGY)
85 : _isolDR(isolationcut), _sort(sorting) {
86 declare(leptoncandidates, "LFS");
87 declare(isolationfs, "IFS");
88 declare(beamproj, "Beam");
89 }
90
91
92
94 DEFAULT_RIVET_PROJ_CLONE(GammaGammaLeptons);
95
97
98
100 using Projection::operator =;
101
102
103 protected:
104
106 virtual void project(const Event& e);
107
109 virtual CmpState compare(const Projection& p) const;
110
111
112 public:
113
115 const ParticlePair & in() const { return _incoming; }
116
118 const ParticlePair & out() const { return _outgoing; }
119
120
121 protected:
122
124 ParticlePair _incoming;
125
127 ParticlePair _outgoing;
128
130 double _isolDR;
131
133 SortOrder _sort;
134
135 };
136
137}
138
139
140#endif
Rivet::Beam
Project out the incoming beams.
Definition Beam.hh:129
Rivet::DressedLeptons
Cluster photons from a given FS to all charged particles (typically leptons)
Definition DressedLeptons.hh:61
Rivet::Event
Representation of a HepMC event, and enabler of Projection caching.
Definition Event.hh:22
Rivet::FinalState
Project out all final-state particles in an event. Probably the most important projection in Rivet!
Definition FinalState.hh:12
Rivet::GammaGammaLeptons
Get the incoming and outgoing leptons in a gamma gamma collision event in e+e-.
Definition GammaGammaLeptons.hh:18
Rivet::GammaGammaLeptons::project
virtual void project(const Event &e)
Perform the projection operation on the supplied event.
Rivet::GammaGammaLeptons::DEFAULT_RIVET_PROJ_CLONE
DEFAULT_RIVET_PROJ_CLONE(GammaGammaLeptons)
Clone on the heap.
Rivet::GammaGammaLeptons::GammaGammaLeptons
GammaGammaLeptons(const std::map< std::string, std::string > &opts=std::map< std::string, std::string >())
Definition GammaGammaLeptons.hh:37
Rivet::GammaGammaLeptons::GammaGammaLeptons
GammaGammaLeptons(const FinalState &leptoncandidates, const Beam &beamproj=Beam(), const FinalState &isolationfs=FinalState(), double isolationcut=0.0, SortOrder sorting=ENERGY)
Definition GammaGammaLeptons.hh:81
Rivet::GammaGammaLeptons::in
const ParticlePair & in() const
The incoming lepton.
Definition GammaGammaLeptons.hh:115
Rivet::GammaGammaLeptons::out
const ParticlePair & out() const
The outgoing lepton.
Definition GammaGammaLeptons.hh:118
Rivet::GammaGammaLeptons::compare
virtual CmpState compare(const Projection &p) const
Compare with other projections.
Rivet::GammaGammaLeptons::SortOrder
SortOrder
Definition GammaGammaLeptons.hh:23
Rivet::HadronicFinalState
Project only hadronic final state particles.
Definition HadronicFinalState.hh:16
Rivet::ProjectionApplier::declare
const PROJ & declare(const PROJ &proj, const std::string &name)
Register a contained projection (user-facing version)
Definition ProjectionApplier.hh:170
Rivet::Projection
Base class for all Rivet projections.
Definition Projection.hh:29
Rivet::Projection::setName
void setName(const std::string &name)
Used by derived classes to set their name.
Definition Projection.hh:142
Rivet::PromptFinalState
Find final state particles directly connected to the hard process.
Definition PromptFinalState.hh:24
Rivet::UndressBeamLeptons
Project out the incoming beams, but subtract any colinear photons from lepton beams within a given co...
Definition UndressBeamLeptons.hh:13
Rivet::Kin::p
double p(const ParticleBase &p)
Unbound function access to p.
Definition ParticleBaseUtils.hh:684
Rivet
Definition MC_Cent_pPb.hh:10
Rivet::ParticlePair
std::pair< Particle, Particle > ParticlePair
Typedef for a pair of Particle objects.
Definition Particle.hh:42