MomentumRange.hh
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #include "boca/generic/Vector.hh"
7 #include "boca/units/Prefixes.hh"
9 
10 namespace boca
11 {
12 
13 class SubJet
14 {
15 
16 public:
17 
18  SubJet(boca::Id id);
19 
20  boca::Id Id() const;
21 
22 private:
23 
24  boca::Id id_;
25 
26 };
27 
29 {
30 
31 public:
32 
34 
35  MomentumRange(Id min, Id max);
36 
37  MomentumRange(Id min, SubJet const& max);
38 
39  MomentumRange(SubJet const& min, SubJet const& max);
40 
41  MomentumRange(SubJet const& min);
42 
43  void Set(const boca::Momentum& min, boca::Momentum const& max);
44 
45  Momentum Min() const;
46 
47  Momentum Max() const;
48 
49  template <typename Multiplet_>
50  bool BelowUpperBound(Multiplet_ const& multiplet) const {
51  return multiplet.Pt() < max_;
52  }
53 
54  template <typename Multiplet_>
55  bool AboveLowerBound(Multiplet_ const& multiplet) const {
56  return multiplet.Pt() > min_;
57  }
58 
59  template <typename Multiplet_>
60  bool InsideRange(Multiplet_ const& multiplet) const {
61  return AboveLowerBound(multiplet) && BelowUpperBound(multiplet);
62  }
63 
64  template <typename Multiplet_>
65  std::vector<Multiplet_> SofterThanMax(std::vector<Multiplet_> const& multiplet) const {
66  return RemoveIfHard(multiplet, max_);
67  }
68 
69  template <typename Multiplet_>
70  std::vector<Multiplet_> HarderThanMin(std::vector<Multiplet_> const& multiplet) const {
71  return RemoveIfSoft(multiplet, min_);
72  }
73 
74  template <typename Multiplet_>
75  std::vector<Multiplet_> InsidePtWindow(std::vector<Multiplet_> const& multiplet) const {
76  return RemoveIfHard(RemoveIfSoft(multiplet, min_), max_);
77  }
78 
79 private:
80 
81  Momentum PtMin(Id id);
82 
83  Momentum PtMax(Id id);
84 
85  Momentum PtMin(SubJet const& id);
86 
87  Momentum PtMax(SubJet const& id);
88 
89  Momentum PtMin(boca::Id id, const boca::Angle& cone_size);
90 
91  Momentum PtMax(boca::Id id, const boca::Angle& cone_size);
92 
93  Momentum Pt(boca::Id id, const boca::Angle& cone_size);
94 
95  Momentum min_ = at_rest;
96 
97  Momentum max_ = at_rest;
98 
99 };
100 
101 }
Momentum const at_rest
Definition: ElectronVolt.hh:71
Definition: MomentumRange.hh:28
std::vector< Multiplet_ > HarderThanMin(std::vector< Multiplet_ > const &multiplet) const
Definition: MomentumRange.hh:70
boost::units::quantity< boost::units::si::plane_angle > Angle
Angle measured in radian.
Definition: Si.hh:35
boca::Id Id() const
Definition: MomentumRange.cpp:38
Id
PDG particle naming conventions.
Definition: Id.hh:23
std::vector< Multiplet_ > RemoveIfSoft(std::vector< Multiplet_ > multiplets, Momentum const &pt_min)
Definition: Vector.hh:44
std::vector< Multiplet_ > SofterThanMax(std::vector< Multiplet_ > const &multiplet) const
Definition: MomentumRange.hh:65
bool InsideRange(Multiplet_ const &multiplet) const
Definition: MomentumRange.hh:60
SubJet(boca::Id id)
Definition: MomentumRange.cpp:33
Boosted Collider Analysis.
Definition: Analysis.hh:15
bool BelowUpperBound(Multiplet_ const &multiplet) const
Definition: MomentumRange.hh:50
bool AboveLowerBound(Multiplet_ const &multiplet) const
Definition: MomentumRange.hh:55
std::vector< Multiplet_ > RemoveIfHard(std::vector< Multiplet_ > multiplets, Momentum const &pt_max)
Definition: Vector.hh:52
Value max(Value const &value_1, Value const &value_2)
Maximal value.
Definition: Units.hh:260
Energy Momentum
Momentum measured in electronvolt.
Definition: ElectronVolt.hh:68
Definition: MomentumRange.hh:13
std::vector< Multiplet_ > InsidePtWindow(std::vector< Multiplet_ > const &multiplet) const
Definition: MomentumRange.hh:75