Sort.hh
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #include <boost/range/algorithm/sort.hpp>
7 #include <boost/units/cmath.hpp>
9 
10 namespace boca
11 {
12 
13 template<typename Multiplet_1_, typename Multiplet_2_>
14 std::vector<Multiplet_1_> SortedByMinDeltaRTo(std::vector<Multiplet_1_> multiplets, Multiplet_2_ const& jet)
15 {
16  return boost::range::sort(multiplets, [& jet](Multiplet_1_ const & multiplet1, Multiplet_1_ const & multiplet2) {
17  return multiplet1.DeltaRTo(jet) < multiplet2.DeltaRTo(jet);
18  });
19 }
20 
21 template <class Multiplet>
22 std::vector<Multiplet> SortedByMaxDeltaRap(std::vector<Multiplet> multiplets)
23 {
24  return boost::range::sort(multiplets, [](const Multiplet & multiplet_1, const Multiplet & multiplet_2) {
25  return (multiplet_1.DeltaRap() > multiplet_2.DeltaRap());
26  });
27 }
28 
29 template <class Multiplet>
30 std::vector<Multiplet> SortedByMassTo(std::vector<Multiplet> multiplets, Mass const& mass)
31 {
32  return boost::range::sort(multiplets, [mass](const Multiplet & multiplet_1, const Multiplet & multiplet_2) {
33  return boost::units::abs(multiplet_1.Mass() - mass) < boost::units::abs(multiplet_2.Mass() - mass);
34  });
35 }
36 
37 template <class Multiplet>
38 std::vector<Multiplet> SortedByMassTo(std::vector<Multiplet> multiplets, Id id)
39 {
40  auto mass = MassOf(id);
41  return SortedByMassTo(multiplets, mass);
42 }
43 
44 template <class Multiplet>
45 std::vector<Multiplet> SortedByMass(std::vector<Multiplet> multiplets)
46 {
47  return boost::range::sort(multiplets, [](Multiplet const & multiplet_1, Multiplet const & multiplet_2) {
48  return multiplet_1.Mass() > multiplet_2.Mass();
49  });
50 }
51 
52 template <class Multiplet>
53 std::vector<Multiplet> SortedByPt(std::vector<Multiplet> multiplets)
54 {
55  return boost::range::sort(multiplets, [](Multiplet const & multiplet_1, Multiplet const & multiplet_2) {
56  return multiplet_1.Pt() > multiplet_2.Pt();
57  });
58 }
59 
60 template <class Multiplet>
61 std::vector<Multiplet> SortedByRap(std::vector<Multiplet> multiplets)
62 {
63  return boost::range::sort(multiplets, [](Multiplet const & multiplet_1, Multiplet const & multiplet_2) {
64  return boost::units::abs(multiplet_1.Rap()) > boost::units::abs(multiplet_2.Rap());
65  });
66 }
67 
68 template <class Multiplet>
69 std::vector<Multiplet> SortedByPhi(std::vector<Multiplet> multiplets)
70 {
71  return boost::range::sort(multiplets, [](Multiplet const & multiplet_1, Multiplet const & multiplet_2) {
72  return multiplet_1.Phi() > multiplet_2.Phi();
73  });
74 }
75 
80 template <typename Multiplet>
81 std::vector<Multiplet> SortedByBdt(std::vector<Multiplet> multiplets)
82 {
83  return boost::range::sort(multiplets, [](Multiplet const & multiplet_1, Multiplet const & multiplet_2) {
84  return multiplet_1.Bdt() > multiplet_2.Bdt();
85  });
86 }
87 
88 }
std::vector< Multiplet > SortedByMaxDeltaRap(std::vector< Multiplet > multiplets)
Definition: Sort.hh:22
std::vector< Multiplet > SortedByPhi(std::vector< Multiplet > multiplets)
Definition: Sort.hh:69
boca::Mass Mass() const
Definition: Multiplet.cpp:61
virtual double Bdt() const
Definition: Identification.cpp:27
Momentum Pt() const
Definition: Multiplet.cpp:36
Angle Phi() const
Azimuth .
Definition: Multiplet.cpp:46
Id
PDG particle naming conventions.
Definition: Id.hh:23
std::vector< Multiplet > SortedByBdt(std::vector< Multiplet > multiplets)
sort vector of jets with largest bdt at the front
Definition: Sort.hh:81
Boosted Collider Analysis.
Definition: Analysis.hh:15
std::vector< Multiplet > SortedByMass(std::vector< Multiplet > multiplets)
Definition: Sort.hh:45
Value abs(Value const &value)
Absolute value.
Definition: Units.hh:235
std::vector< Multiplet_1_ > SortedByMinDeltaRTo(std::vector< Multiplet_1_ > multiplets, Multiplet_2_ const &jet)
Definition: Sort.hh:14
Multiplet base class
Definition: Multiplet.hh:21
Mass MassOf(Id id)
Mass of particle with given Id.
Definition: Id.cpp:103
std::vector< Multiplet > SortedByMassTo(std::vector< Multiplet > multiplets, Mass const &mass)
Definition: Sort.hh:30
Angle Rap() const
Rapidity .
Definition: Multiplet.cpp:41
std::vector< Multiplet > SortedByRap(std::vector< Multiplet > multiplets)
Definition: Sort.hh:61
std::vector< Multiplet > SortedByPt(std::vector< Multiplet > multiplets)
Definition: Sort.hh:53
Energy Mass
Mass measured in electronvolt.
Definition: ElectronVolt.hh:62