CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Megajet.h
Go to the documentation of this file.
1 //-------------------------------------------------------
2 // Description: Razor Megajet calculator
3 // Authors: Maurizio Pierini, CERN
4 // Authors: Christopher Rogan, Javier Duarte, Caltech
5 // Authors: Emanuele Di Marco, CERN
6 //-------------------------------------------------------
7 
11 
12 #ifndef Megajet_h
13 #define Megajet_h
14 
15 #include <vector>
16 #include <iostream>
17 #include <TLorentzVector.h>
18 
19 namespace heppy {
20 
21 class Megajet {
22 
23 public:
24 
25  // There are 2 constructors:
26  // 1. Constructor taking as argument vectors of Px, Py, Pz and E of the objects in the event and the hemisphere
27  // association method,
28  // 2. Constructor taking as argument vectors of Px, Py, Pz and E of the objects in the event.
29  // The hemisphere association method should then be defined by SetMethod(association_method).
30  //
31  // Hemisphere association method:
32  // 1: minimum sum of the invariant masses of the two hemispheres
33  // 2: minimum difference of HT for the two hemispheres
34  // 3: minimum m1^2/E1 + m2^2/E2
35  // 4: Georgi distance: maximum (E1-Beta*m1^2/E1 + E2-Beta*m1^2/E2)
36 
37  Megajet(){};
38 
39  Megajet(std::vector<float> Px_vector, std::vector<float> Py_vector, std::vector<float> Pz_vector, std::vector<float> E_vector, int megajet_association_method);
40 
41  Megajet(std::vector<float> Px_vector, std::vector<float> Py_vector, std::vector<float> Pz_vector, std::vector<float> E_vector);
42 
44  ~Megajet(){};
45 
46  // return Nx, Ny, Nz, P, E of the axis of group 1
47  std::vector<float> getAxis1();
48  // return Nx, Ny, Nz, P, E of the axis of group 2
49  std::vector<float> getAxis2();
50 
51  // where Nx, Ny, Nz are the direction cosines e.g. Nx = Px/P,
52  // P is the momentum, E is the energy
53 
54  // set or overwrite the seed and association methods
55  void SetMethod(int megajet_association_method) {
56  megajet_meth = megajet_association_method;
57  status = 0;
58  }
59 
60 private:
61 
64  void CombineMinMass();
65 
68  void CombineMinHT();
69 
71  void CombineMinEnergyMass();
72 
74  void CombineGeorgi();
75 
77  void Combine();
78 
79 
80  std::vector<float> Object_Px;
81  std::vector<float> Object_Py;
82  std::vector<float> Object_Pz;
83  std::vector<float> Object_E;
84 
85  std::vector<float> Axis1;
86  std::vector<float> Axis2;
87 
88 
90  int status;
91 
92  std::vector<TLorentzVector> jIN;
93  std::vector<TLorentzVector> jOUT;
94  std::vector<TLorentzVector> j1;
95  std::vector<TLorentzVector> j2;
96 
97 };
98 }
99 
100 #endif
std::vector< float > Object_E
Definition: Megajet.h:83
void CombineGeorgi()
Combining the jets in two hemispheres by maximizing (E1-Beta*m1^2/E1 + E2-Beta*m1^2/E2) ...
Definition: Megajet.cc:171
std::vector< float > Object_Pz
Definition: Megajet.h:82
std::vector< TLorentzVector > jIN
Definition: Megajet.h:92
std::vector< float > getAxis2()
Definition: Megajet.cc:54
std::vector< float > Axis2
Definition: Megajet.h:86
void CombineMinHT()
Definition: Megajet.cc:200
std::vector< TLorentzVector > jOUT
Definition: Megajet.h:93
std::vector< TLorentzVector > j1
Definition: Megajet.h:94
std::vector< TLorentzVector > j2
Definition: Megajet.h:95
~Megajet()
Destructor.
Definition: Megajet.h:44
std::vector< float > Object_Py
Definition: Megajet.h:81
std::vector< float > Object_Px
Definition: Megajet.h:80
void CombineMinMass()
Definition: Megajet.cc:116
void SetMethod(int megajet_association_method)
Definition: Megajet.h:55
int megajet_meth
Definition: Megajet.h:89
std::vector< float > Axis1
Definition: Megajet.h:85
std::vector< float > getAxis1()
Definition: Megajet.cc:36
void Combine()
Combine the jets in all the possible pairs of hemispheres.
Definition: Megajet.cc:73
void CombineMinEnergyMass()
Combining the jets in two hemispheres by minimizing m1^2/E1 + m2^2/E2.
Definition: Megajet.cc:143