Family.hh
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #include <boost/optional.hpp>
7 
10 
11 namespace boca
12 {
13 
14 enum class Relative
15 {
16  none,
17  particle,
18  mother,
22 };
23 
24 std::string Name(Relative relative);
25 
30 std::ostream& operator<<(std::ostream & stream, Relative relative);
31 
32 Relative Mother(Relative relative);
33 
34 Relative StepMother(Relative relative);
35 
36 std::vector<Relative> Relatives();
37 
38 class Family
39 {
40 
41 public:
42 
43  Family();
44 
45  Family(boca::Member const &member, Relative relative);
46 
47  void SetMember(boca::Member const &member, Relative relative);
48 
49  boca::Member Member(Relative relative) const;
50 
51  boost::optional<boca::Member> Member(Id id) const;
52 
53  friend std::ostream& operator<<(std::ostream& stream, Family const& family);
54 
55 private:
56 
57 struct Pair{
58  Relative relative;
59  boca::Member member;
60 };
61 
62  std::vector<Pair> members_;
63 
64 };
65 
66 }
Family member with id, position, and 4-momentum.
Definition: Member.hh:16
Relative Mother(Relative relative)
Definition: Family.cpp:33
Definition: Family.hh:38
Id
PDG particle naming conventions.
Definition: Id.hh:23
std::ostream & operator<<(std::ostream &stream, Relative relative)
Stream the name of a family relative.
Definition: Family.cpp:27
Relative StepMother(Relative relative)
Definition: Family.cpp:43
Boosted Collider Analysis.
Definition: Analysis.hh:15
std::string Name(Output output)
Definition: Base.cpp:23
std::vector< Relative > Relatives()
Definition: Family.cpp:48
Relative
Definition: Family.hh:14