File indexing completed on 2025-05-12 09:05:02
0001
0002 #ifndef RIVET_GammaGammaLeptons_HH
0003 #define RIVET_GammaGammaLeptons_HH
0004
0005 #include "Rivet/Projections/Beam.hh"
0006 #include "Rivet/Projections/PromptFinalState.hh"
0007 #include "Rivet/Projections/HadronicFinalState.hh"
0008 #include "Rivet/Projections/LeptonFinder.hh"
0009 #include "Rivet/Projections/UndressBeamLeptons.hh"
0010 #include "Rivet/Particle.hh"
0011 #include "Rivet/Event.hh"
0012
0013 namespace Rivet {
0014
0015
0016
0017 class GammaGammaLeptons : public Projection {
0018 public:
0019
0020
0021
0022
0023
0024 GammaGammaLeptons(const Cut& cuts=Cuts::OPEN,
0025 LeptonReco lreco=LeptonReco::ALL, ObjOrdering lsort=ObjOrdering::ENERGY,
0026 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
0027 : _isolDR(isolDR), _lsort(lsort)
0028 {
0029 setName("GammaGammaLeptons");
0030 declare(HadronicFinalState(), "IFS");
0031
0032
0033 if (beamundresstheta > 0.0) {
0034 declare(UndressBeamLeptons(beamundresstheta), "Beam");
0035 } else {
0036 declare(Beam(), "Beam");
0037 }
0038
0039
0040 switch (lreco) {
0041 case LeptonReco::ALL:
0042 declare(FinalState(cuts), "LFS");
0043 break;
0044 case LeptonReco::ALL_DRESSED:
0045 declare(LeptonFinder(FinalState(), dressDR, cuts), "LFS");
0046 break;
0047 case LeptonReco::PROMPT_BARE:
0048 declare(PromptFinalState(cuts), "LFS");
0049 break;
0050 case LeptonReco::PROMPT_DRESSED:
0051 declare(LeptonFinder(PromptFinalState(), dressDR, cuts), "LFS");
0052 break;
0053 }
0054 }
0055
0056
0057
0058 GammaGammaLeptons(Cut& cuts, LeptonReco lreco=LeptonReco::ALL,
0059 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
0060 : GammaGammaLeptons(cuts, lreco, ObjOrdering::ENERGY, beamundresstheta, isolDR, dressDR)
0061 { }
0062
0063
0064 GammaGammaLeptons(LeptonReco lreco, ObjOrdering lsort=ObjOrdering::ENERGY,
0065 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
0066 : GammaGammaLeptons(Cuts::OPEN, lreco, lsort, beamundresstheta, isolDR, dressDR)
0067 { }
0068
0069
0070 GammaGammaLeptons(LeptonReco lreco,
0071 double beamundresstheta=0.0, double isolDR=0.0, double dressDR=0.0)
0072 : GammaGammaLeptons(Cuts::OPEN, lreco, ObjOrdering::ENERGY, beamundresstheta, isolDR, dressDR)
0073 { }
0074
0075
0076
0077 GammaGammaLeptons(const FinalState& leptoncandidates,
0078 const Beam& beamproj=Beam(),
0079 const FinalState& isolationfs=FinalState(),
0080 double isolDR = 0.0, ObjOrdering lsort=ObjOrdering::ENERGY)
0081 : _isolDR(isolDR), _lsort(lsort)
0082 {
0083 declare(leptoncandidates, "LFS");
0084 declare(isolationfs, "IFS");
0085 declare(beamproj, "Beam");
0086 }
0087
0088
0089
0090 RIVET_DEFAULT_PROJ_CLONE(GammaGammaLeptons);
0091
0092
0093
0094
0095
0096 using Projection::operator =;
0097
0098
0099 protected:
0100
0101
0102 virtual void project(const Event& e);
0103
0104
0105 virtual CmpState compare(const Projection& p) const;
0106
0107
0108 public:
0109
0110
0111 const ParticlePair & in() const { return _incoming; }
0112
0113
0114 const ParticlePair & out() const { return _outgoing; }
0115
0116
0117 protected:
0118
0119
0120 ParticlePair _incoming;
0121
0122
0123 ParticlePair _outgoing;
0124
0125
0126 double _isolDR;
0127
0128
0129 ObjOrdering _lsort;
0130
0131 };
0132
0133
0134 }
0135
0136 #endif