Invisible2.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include <boost/optional.hpp>
5 #include "boca/math/Matrix2.hh"
6 
7 // *********************************************************************************
8 // WIMPMASS
9 // version 1.00
10 //
11 // Authors: Hsin-Chia Cheng, John Gunion, Zhenyu Han, Bob McElrath, Dalit Engelhardt
12 //
13 // *********************************************************************************
14 // This package contains two C++ subroutines useful for event
15 // reconstruction in events with missing particles. The references
16 // are arXiv: 0707.0030 and arXiv: 0802.4290.
17 //
18 // The two functions are given in "topology22.cpp" and "topology33.cpp"
19 // in the "src/" directory. See the header of the source file for usage.
20 // "ROOT" (http://root.cern.ch/drupal/) is required for compiling
21 // topology33.cpp. The directory "examples/" contains a couple of examples
22 // calling these subroutines. You need to modify the Makefile in the "src"
23 // directory and "examples" directory to point to the correct ROOT location.
24 
25 namespace boca
26 {
27 class Doublet;
28 class Quartet22;
29 }
30 
31 namespace wimpmass
32 {
33 
35 {
36 
37 public:
38 
39  Invisible22(boca::Mass const &heavy, boca::Mass const &light, boca::Mass const &invisible);
40 
41  std::vector<std::pair<boca::LorentzVector<boca::Momentum>, boca::LorentzVector<boca::Momentum>>> Solve(boca::LorentzVector<boca::Momentum> const &first, boca::LorentzVector<boca::Momentum> const &second, boca::LorentzVector<boca::Momentum> const &third, boca::LorentzVector<boca::Momentum> const &fourth, boca::LorentzVector<boca::Momentum> const &missing);
42 
43  std::vector<std::pair<boca::LorentzVector<boca::Momentum>, boca::LorentzVector<boca::Momentum>>> Solve(boca::Doublet const &doublet_1, boca::Doublet const &doublet_2, boca::LorentzVector<boca::Momentum> const &missing);
44 
45  std::vector<std::pair<boca::LorentzVector<boca::Momentum>, boca::LorentzVector<boca::Momentum>>> Solve(boca::Quartet22 const &quartet, boca::LorentzVector<boca::Momentum> const &missing);
46 
47 protected:
48 
49  void SetMasses(boca::Mass const &heavy, boca::Mass const &light, boca::Mass const &invisible);
50 
51  std::vector<std::pair<boca::LorentzVector<boca::Momentum>, boca::LorentzVector<boca::Momentum>>> Solve();
52 
53  void SetFirstChain(boca::LorentzVector<boca::Momentum> const &first, boca::LorentzVector<boca::Momentum> const &second);
54 
55  void SetSecondChain(boca::LorentzVector<boca::Momentum> const &first, boca::LorentzVector<boca::Momentum> const &second);
56 
57  void SetMissingMomentum(boca::LorentzVector<boca::Momentum> const &missing);
58 
59 private:
60 
61  void Set(boca::Quartet22 const &quartet);
62 
63  void SetFirstChain(boca::Doublet const &doublet);
64 
65  void SetSecondChain(boca::Doublet const &doublet);
66 
67  std::array<double, 5> Coefficients();
68 
69  boca::Matrix2<double> MatrixA();
70 
71  boca::Matrix2<double> MatrixB();
72 
74 
76 
77  boca::MomentumSquare ScalarA();
78 
79  boca::MomentumSquare ScalarB();
80 
81  boca::LorentzVector<double> CoefficientVector1() const;
82 
83  boca::LorentzVector<double> CoefficientVector2() const;
84 
85  boca::LorentzVector<boca::Momentum> CoefficientVector() const;
86 
87  boost::optional<std::pair<boca::LorentzVector<boca::Momentum>, boca::LorentzVector<boca::Momentum>>> Solution(boca::Momentum const &root);
88 
89  boca::Energy Energy1(boca::Energy const &energy_2);
90 
92 
93  boca::Mutable<boca::LorentzVector<double>> coefficient_vector_1_;
94 
95  boca::Mutable<boca::LorentzVector<double>> coefficient_vector_2_;
96 
98 
100 
102 
104 
106 
108 
110 
112 
114 
116 
118 
119  boca::MassSquare heavy_square_;
120 
121  boca::MassSquare light_square_;
122 
123  boca::MassSquare invisible_square_;
124 
125 };
126 
127 }
Definition: Invisible2.hh:34
typename boost::units::multiply_typeof_helper< Mass, Mass >::type MassSquare
Definition: ElectronVolt.hh:75
Two dimensional matrix.
Definition: Matrix2.hh:39
Lazy caching of variables.
Definition: Mutable.hh:19
typename boost::units::multiply_typeof_helper< Momentum, Momentum >::type MomentumSquare
Definition: ElectronVolt.hh:76
A Quartet consisting of two Doublets.
Definition: Quartet.hh:23
Boosted Collider Analysis.
Definition: Analysis.hh:15
boost::units::quantity< electronvolt::Energy > Energy
Energy measured in electronvolt.
Definition: ElectronVolt.hh:56
Wimpmass contains a few packages useful for determining the mass of the dark matter particle at the L...
Definition: Invisible2.cpp:51
A Doublet consisting of two Singlets.
Definition: Doublet.hh:16
Energy Momentum
Momentum measured in electronvolt.
Definition: ElectronVolt.hh:68
Energy Mass
Mass measured in electronvolt.
Definition: ElectronVolt.hh:62