Constituent.hh
Go to the documentation of this file.
1 
4 #pragma once
5 
7 
8 namespace boca {
9 
10 enum class DetectorPart {
11  none,
13  track,
14  photon,
15  tower,
16  muon
17 };
18 
19 std::string Name(DetectorPart detector_part);
20 
21 class Constituent : boost::addable<Constituent>{
22 
23 public:
24 
25  Constituent();
26 
27  Constituent(TLorentzVector const& momentum, LorentzVector<Length> const& position);
28 
29  Constituent(TLorentzVector const& momentum, LorentzVector<Length> const& position, boca::Family const& family, boca::DetectorPart detector_part, int charge = 0);
30 
31  Constituent(TLorentzVector const& momentum);
32 
33  Constituent(TLorentzVector const& momentum, boca::Family const& family, boca::DetectorPart detector_part, int charge);
34 
35  Constituent(TLorentzVector const& momentum, std::vector<boca::Family> const& families, boca::DetectorPart detector_part);
36 
37  void SetMomentum(TLorentzVector const& momentum);
38 
39  void SetCharge(int charge);
40 
41  void SetDetectorPart(boca::DetectorPart detector_part);
42 
43  LorentzVector<Length> const& Position() const;
44 
46 
48 
50 
52 
53  int Charge() const;
54 
55  void Smearing();
56 
57  bool IsInTracker() const;
58 
59  std::vector<boca::Family> Families() const;
60 
61  Constituent &operator+=(Constituent const& constituent);
62 
63 private:
64 
65  void SetTracker();
66 
67  std::vector<boca::Family> families_;
68 
69  LorentzVector<Length> position_;
70 
72 
73  int charge_ = 0;
74 
76 
77  bool tracker_;
78 };
79 
80 }
std::size_t Position(std::vector< Element_ > const &vector, Element_ const &element)
Definition: Vector.hh:70
Definition: Constituent.hh:21
Definition: Family.hh:38
Boosted Collider Analysis.
Definition: Analysis.hh:15
Length Lorentz vector.
Definition: LorentzVector.hh:300
std::string Name(Output output)
Definition: Base.cpp:23
Energy Momentum
Momentum measured in electronvolt.
Definition: ElectronVolt.hh:68
DetectorPart
Definition: Constituent.hh:10