Singlet.hh
Go to the documentation of this file.
1 
4 #pragma once
5 
7 #include "boca/math/Line2.hh"
8 #include "boca/fastjet/Jet.hh"
9 
10 namespace boca
11 {
12 
14 
19 class Singlet : public boca::Jet
20 {
21 
22  template<typename Multiplet_>
23  using NotJet = typename std::enable_if < !std::is_same<Multiplet_, boca::Jet>::value && !std::is_same<Multiplet_, boca::PseudoJet>::value >::type;
24 
25 public:
26 
27  using boca::Jet::Jet;
28 
29  void Enforce(boca::Jet const& jet);
30 
31  void Enforce(boca::Jet const& jet, double bdt);
32 
33  Singlet const& ConstituentJet() const;
34 
35  boca::Jet Jet() const;
36 
37  std::vector<boca::Jet> Jets() const;
38 
39  std::vector<boca::LorentzVector<Momentum>> LorentzVectors() const;
40 
41  bool Overlap(boca::Jet const& jet) const;
42 
51  double MaxDisplacement() const;
52 
56  double MeanDisplacement() const;
57 
61  double SumDisplacement() const;
62 
66  Angle Radius() const;
67 
71  double Spread() const;
72 
76  Angle VertexRadius() const;
77 
81  double VertexSpread() const;
82 
86  double EnergyFraction() const;
88 
97  Angle EmRadius() const;
98 
102  Angle TrackRadius() const;
103 
107  double CoreEnergyFraction() const;
108 
112  double FlightPath() const;
113 
117  double TrtHtFraction() const;
118 
122  double EnergyRatio() const;
123 
127  double MomentumRatio() const;
129 
133  Momentum Ht() const;
134 
135  void SetBdt(double bdt);
136 
137  double Bdt() const;
138 
139  void SetTag(boca::Tag tag);
140 
141  boca::Tag Tag() const;
142 
143  int Charge() const;
144 
145  template <typename Multiplet_, typename = NotJet<Multiplet_>>
146  Angle DeltaPhiTo(Multiplet_ const& jet) const {
147  return Jet().DeltaPhiTo(jet.Jet());
148  }
149 
150  using PseudoJet::DeltaPhiTo;
151 
152  template <typename Multiplet_, typename = NotJet<Multiplet_>>
153  Angle DeltaRTo(Multiplet_ const& jet) const {
154  return Jet().DeltaRTo(jet.Jet());
155  }
156 
157  using PseudoJet::DeltaRTo;
158 
159  template <typename Multiplet_, typename = NotJet<Multiplet_>>
160  Angle DeltaRapTo(Multiplet_ const& jet) const {
161  return Jet().DeltaRapTo(jet.Jet());
162  }
163 
164  using PseudoJet::DeltaRapTo;
165 
166  template <typename Multiplet_, typename = NotJet<Multiplet_>>
167  Vector2<Angle> DeltaTo(Multiplet_ const& jet) const {
168  return Jet().DeltaTo(jet.Jet());
169  }
170 
171  using PseudoJet::DeltaTo;
172 
173  template<typename Multiplet_>
174  Angle PullTo(Multiplet_ const& multiplet) const {
175  return PullAngle(DeltaTo(multiplet));
176  }
177 
178 
187  Angle PullAngle(Vector2<Angle> const& reference) const;
188 
193 
199 
200 private:
201 
202  // save expensive results in mutable member variables
203 
205 
206  Mutable<Angle> radius_;
207 
208 };
209 
210 }
211 
double TrtHtFraction() const
Trt Ht fraction.
Definition: Singlet.cpp:182
double EnergyFraction() const
Energy fraction of displaced tracks over the whole jet.
Definition: Singlet.cpp:157
Jet.
Definition: Jet.hh:15
Angle PullAngle(Vector2< Angle > const &reference) const
Pull angle towards the reference angel.
Definition: Singlet.cpp:97
Jet()
Definition: Jet.cpp:18
boost::units::quantity< boost::units::si::plane_angle > Angle
Angle measured in radian.
Definition: Si.hh:35
double CoreEnergyFraction() const
Core energy fraction.
Definition: Singlet.cpp:172
std::vector< boca::Jet > Jets() const
Definition: Singlet.cpp:127
Lazy caching of variables.
Definition: Mutable.hh:19
Angle DeltaPhiTo(Multiplet_ const &jet) const
Definition: Singlet.hh:146
int Charge() const
Definition: Singlet.cpp:66
boca::Jet Jet() const
Definition: Singlet.cpp:122
Angle DeltaRTo(PseudoJet const &jet) const
Difference to a jet.
Definition: PseudoJet.cpp:173
Wrapper for a Jet in order to make it behave like a Multiplet.
Definition: Singlet.hh:19
AngleSquareMomentum DipolaritySum(Line2< Angle > const &line) const
Sum for Dipolarity calculation.
Definition: Singlet.cpp:83
std::vector< boca::LorentzVector< Momentum > > LorentzVectors() const
Definition: Singlet.cpp:225
ValueProduct< AngleSquare, Momentum > AngleSquareMomentum
Definition: Singlet.hh:13
Tag
The Tag distinguishes between signal and background events.
Definition: Tag.hh:14
void SetTag(boca::Tag tag)
Definition: Singlet.cpp:202
Angle Radius() const
Jet radius.
Definition: Singlet.cpp:45
Angle DeltaRapTo(Multiplet_ const &jet) const
Definition: Singlet.hh:160
double EnergyRatio() const
Energy ratio.
Definition: Singlet.cpp:213
Vector2< Angle > DeltaTo(PseudoJet const &jet) const
Angular distance to a jet.
Definition: PseudoJet.cpp:179
Angle EmRadius() const
Electromagnetic radius.
Definition: Singlet.cpp:162
Singlet const & ConstituentJet() const
Definition: Singlet.cpp:104
double FlightPath() const
Flight path.
Definition: Singlet.cpp:177
double SumDisplacement() const
Logarithm of radial distance of the sum all all displaced tracks.
Definition: Singlet.cpp:142
Angle DeltaRapTo(PseudoJet const &jet) const
Difference to a jet.
Definition: PseudoJet.cpp:168
typename boost::units::multiply_typeof_helper< Value, Value_2 >::type ValueProduct
Definition: Units.hh:134
Momentum Ht() const
Ht.
Definition: Singlet.cpp:187
bool Overlap(boca::Jet const &jet) const
Definition: Singlet.cpp:40
double Bdt() const
Definition: Singlet.cpp:197
Boosted Collider Analysis.
Definition: Analysis.hh:15
boca::Tag Tag() const
Definition: Singlet.cpp:207
double VertexSpread() const
Spread of displaced tracks.
Definition: Singlet.cpp:152
Angle DeltaRTo(Multiplet_ const &jet) const
Definition: Singlet.hh:153
Angle TrackRadius() const
Track radius.
Definition: Singlet.cpp:167
void SetBdt(double bdt)
Definition: Singlet.cpp:192
Vector2< Angle > DeltaTo(Multiplet_ const &jet) const
Definition: Singlet.hh:167
double MeanDisplacement() const
Logarithm of radial distance of the mean of all displaced tracks.
Definition: Singlet.cpp:137
Angle VertexRadius() const
Radius of jet consisting only of displaced tracks.
Definition: Singlet.cpp:147
Vector2< AngleSquare > PullVector() const
Pull vector.
Definition: Singlet.cpp:71
Angle PullTo(Multiplet_ const &multiplet) const
Definition: Singlet.hh:174
Angle DeltaPhiTo(PseudoJet const &jet) const
Difference to a jet constrained to .
Definition: PseudoJet.cpp:163
double MomentumRatio() const
Momentum ratio.
Definition: Singlet.cpp:219
Energy Momentum
Momentum measured in electronvolt.
Definition: ElectronVolt.hh:68
Two dimensional Vector.
Definition: PseudoJet.hh:23
Line between two points.
Definition: Line.hh:15
double Spread() const
Jet spread.
Definition: Singlet.cpp:58
void Enforce(boca::Jet const &jet)
Definition: Singlet.cpp:109
double MaxDisplacement() const
Logarithm of radial distance of maximal displaced track.
Definition: Singlet.cpp:132