ATLAS Offline Software
MissingMassOutput.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Class handling the output of the MissingMassCalculator
6 // author Michael Huebner <michael.huebner@no.spam.cern.ch>
7 
8 // Local include(s):
10 
11 using namespace DiTauMassTools;
12 
13 // Default Constructor
15 }
16 
17 // Default Desctructor
19 }
20 
21 //------- clearing output
22 void MissingMassOutput::ClearOutput(bool fUseVerbose) {
23 
24  if(fUseVerbose == 1){ Info("DiTauMassTools", "MissingMassCalculator::ClearOutput()"); }
25  m_FitStatus=0;
26 
27  for (int imeth=0; imeth<MMCFitMethodV2::MAX; ++imeth)
28  {
29  if(fUseVerbose == 1){ Info("DiTauMassTools", "%s", ("MissingMassCalculator::ClearOutput(): clearing for method "+std::to_string(imeth)).c_str()); }
30  m_FitSignificance[imeth] = -1.0;
31  m_FittedMass[imeth] = 0.0;
32  m_nuvec1[imeth].SetPxPyPzE(0.0,0.0,0.0,0.0);
33  m_objvec1[imeth].SetPxPyPzE(0.0,0.0,0.0,0.0);
34  m_nuvec2[imeth].SetPxPyPzE(0.0,0.0,0.0,0.0);
35  m_objvec2[imeth].SetPxPyPzE(0.0,0.0,0.0,0.0);
36  m_totalvec[imeth].SetPxPyPzE(0.0,0.0,0.0,0.0);
37  m_FittedMetVec[imeth].Set(0.0,0.0);
38  }
39 
40  m_RMS2MPV = 0.0;
41 
42  return;
43 }
44 
45 
46 // return fit status
48  return m_FitStatus;
49 }
50 
51 // returns fit significance
52 double MissingMassOutput::GetFitSignificance(int fitcode) const {
53  double signif = -1.0;
54  if (fitcode<0 || fitcode >= MMCFitMethodV2::MAX) {
55  Error("DiTauMassTools", "%s", ("MissingMassCalculatorV2::GetFitSignificance ERROR ! fitcode="+std::to_string(fitcode)
56  +". Should be between 0 and "+std::to_string(MMCFitMethodV2::MAX-1)).c_str());
57  } else {
58  signif = m_FitSignificance[fitcode];
59  }
60 
61  return signif;
62 }
63 
64 // returns RMS/MPV according to histogram method
66  return m_RMS2MPV;
67 }
68 
69 // returns fitted Mass
70 double MissingMassOutput::GetFittedMass(int fitcode) const {
71  // 0 best parameter space
72  // 1 best mass
73  // best nu from hist
74  double mass = 0.0;
75  if (fitcode<0 || fitcode >= MMCFitMethodV2::MAX) {
76  Error("DiTauMassTools", "%s", ("MissingMassCalculatorV2::GetFittedMass ERROR ! fitcode="+std::to_string(fitcode)
77  +". Should be between 0 and "+std::to_string(MMCFitMethodV2::MAX-1)).c_str());
78  } else {
79  mass = m_FittedMass[fitcode];
80  }
81 
82  return mass;
83 }
84 
85 // returns upper error on fitted Mass
86 double MissingMassOutput::GetFittedMassErrorUp(int fitcode) const {
87  // 0 best parameter space
88  // 1 best mass
89  // best nu from hist
90  double massUpperError = 0.0;
91  if (fitcode<0 || fitcode >= MMCFitMethodV2::MAX) {
92  Error("DiTauMassTools", "%s", ("MissingMassCalculatorV2::GetFittedMass ERROR ! fitcode="+std::to_string(fitcode)
93  +". Should be between 0 and "+std::to_string(MMCFitMethodV2::MAX-1)).c_str());
94  } else {
95  massUpperError = m_FittedMassUpperError[fitcode];
96  }
97 
98  return massUpperError;
99 }
100 
101 // returns upper error on fitted Mass
102 double MissingMassOutput::GetFittedMassErrorLow(int fitcode) const {
103  // 0 best parameter space
104  // 1 best mass
105  // best nu from hist
106  double massLowerError = 0.0;
107  if (fitcode<0 || fitcode >= MMCFitMethodV2::MAX) {
108  Error("DiTauMassTools", "%s", ("MissingMassCalculatorV2::GetFittedMass ERROR ! fitcode="+std::to_string(fitcode)
109  +". Should be between 0 and "+std::to_string(MMCFitMethodV2::MAX-1)).c_str());
110  } else {
111  massLowerError = m_FittedMassLowerError[fitcode];
112  }
113 
114  return massLowerError;
115 }
116 
118 {
119  return m_NTrials;
120 }
121 
123 {
124  return m_NSuccesses;
125 }
126 
128 {
129  return m_NSolutions;
130 }
131 
132 // sum of weights of all solutions
134 {
135  return m_SumW;
136 }
137 
138 // average RMS of solutions in one event
140 {
141  return m_AveSolRMS;
142 }
143 
144 std::shared_ptr<TH1F> MissingMassOutput::GetMassHistogram() const
145 {
146  return m_hMfit_all;
147 }
148 
149 std::shared_ptr<TH1F> MissingMassOutput::GetMassHistogramNoWeight() const
150 {
151  return m_hMfit_allNoWeight;
152 }
153 
154 // returns neutrino 4-vec
155 TLorentzVector MissingMassOutput::GetNeutrino4vec(int fitcode, int ind) const
156 {
157  TLorentzVector vec(0.0,0.0,0.0,0.0);
158  if (fitcode!=MMCFitMethodV2::MAXW && fitcode!=MMCFitMethodV2::MLNU3P )
159  {
160  Error("DiTauMassTools", "%s", ("MissingMassCalculatorV2::GetNeutrino4Vec ERROR ! fitcode="+std::to_string(fitcode)
161  +". Should be either "+std::to_string(MMCFitMethodV2::MAXW)+" or "+std::to_string(MMCFitMethodV2::MLNU3P)).c_str());
162  }
163  else if (m_FitStatus>0)
164  {
165  if(ind==0) vec = m_nuvec1[fitcode];
166  else if(ind==1) vec = m_nuvec2[fitcode];
167  }
168  return vec;
169 }
170 
171 // returns neutrino 4-vec
172 TLorentzVector MissingMassOutput::GetTau4vec(int fitcode, int ind) const
173 {
174  TLorentzVector vec(0.0,0.0,0.0,0.0);
175  if (fitcode!=MMCFitMethodV2::MAXW && fitcode!=MMCFitMethodV2::MLNU3P )
176  {
177  Error("DiTauMassTools", "%s", ("MissingMassCalculatorV2::GetTau4vec ERROR ! fitcode="+std::to_string(fitcode)
178  +". Should be either "+std::to_string(MMCFitMethodV2::MAXW)+" or "+std::to_string(MMCFitMethodV2::MLNU3P)).c_str());
179  }
180  else if (m_FitStatus>0)
181  {
182  if(ind==0) vec = m_objvec1[fitcode];
183  else if(ind==1) vec = m_objvec2[fitcode];
184  }
185  return vec;
186 }
187 
188 // returns 4-vec for resonance
189 TLorentzVector MissingMassOutput::GetResonanceVec(int fitcode) const {
190  TLorentzVector vec(0.0,0.0,0.0,0.0);
191  if (fitcode!=MMCFitMethodV2::MAXW && fitcode!=MMCFitMethodV2::MLNU3P )
192  {
193  Error("DiTauMassTools", "%s", ("MissingMassCalculatorV2::GetResonanceVec ERROR ! fitcode="+std::to_string(fitcode)
194  +". Should be either "+std::to_string(MMCFitMethodV2::MAXW)+" or "+std::to_string(MMCFitMethodV2::MLNU3P)).c_str());
195  }
196  else if (m_FitStatus>0)
197  {
198  vec = m_objvec1[fitcode]+m_objvec2[fitcode];
199  }
200 
201  return vec;
202 }
203 
204 // returns 2-vec for fitted MET
205 TVector2 MissingMassOutput::GetFittedMetVec(int fitcode) const {
206  TVector2 vec(0.0,0.0);
207  if (fitcode!=MMCFitMethodV2::MAXW && fitcode!=MMCFitMethodV2::MLNU3P )
208  {
209  Error("DiTauMassTools", "%s", ("MissingMassCalculatorV2::GetFittedMetVec ERROR ! fitcode="+std::to_string(fitcode)
210  +". Should be either "+std::to_string(MMCFitMethodV2::MAXW)+" or "+std::to_string(MMCFitMethodV2::MLNU3P)).c_str());
211  }
212  else if (m_FitStatus>0)
213  {
214  vec=m_FittedMetVec[fitcode];
215  }
216 
217  return vec;
218 }
DiTauMassTools::MissingMassOutput::m_FitSignificance
double m_FitSignificance[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:51
DiTauMassTools::MissingMassOutput::m_nuvec1
TLorentzVector m_nuvec1[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:55
DiTauMassTools::MissingMassOutput::GetFitSignificance
double GetFitSignificance(int fitcode) const
Definition: MissingMassOutput.cxx:52
DiTauMassTools::MissingMassOutput::m_nuvec2
TLorentzVector m_nuvec2[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:57
DiTauMassTools::MissingMassOutput::m_objvec1
TLorentzVector m_objvec1[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:56
DiTauMassTools::MissingMassOutput::GetTau4vec
TLorentzVector GetTau4vec(int fitcode, int ind) const
Definition: MissingMassOutput.cxx:172
DiTauMassTools::MissingMassOutput::m_FittedMetVec
TVector2 m_FittedMetVec[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:60
DiTauMassTools::MissingMassOutput::GetMassHistogram
std::shared_ptr< TH1F > GetMassHistogram() const
Definition: MissingMassOutput.cxx:144
DiTauMassTools::MissingMassOutput::~MissingMassOutput
~MissingMassOutput()
Definition: MissingMassOutput.cxx:18
DiTauMassTools::MissingMassOutput::m_objvec2
TLorentzVector m_objvec2[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:58
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
DiTauMassTools::MissingMassOutput::m_hMfit_all
std::shared_ptr< TH1F > m_hMfit_all
Definition: MissingMassOutput.h:62
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
DiTauMassTools::MissingMassOutput::GetNTrials
int GetNTrials() const
Definition: MissingMassOutput.cxx:117
DiTauMassTools::MissingMassOutput::GetResonanceVec
TLorentzVector GetResonanceVec(int fitcode) const
Definition: MissingMassOutput.cxx:189
DiTauMassTools::MissingMassOutput::m_FittedMassLowerError
double m_FittedMassLowerError[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:54
DiTauMassTools::MissingMassOutput::GetFittedMassErrorLow
double GetFittedMassErrorLow(int fitcode) const
Definition: MissingMassOutput.cxx:102
DiTauMassTools::MissingMassOutput::m_hMfit_allNoWeight
std::shared_ptr< TH1F > m_hMfit_allNoWeight
Definition: MissingMassOutput.h:63
DiTauMassTools::MissingMassOutput::GetSumW
double GetSumW() const
Definition: MissingMassOutput.cxx:133
DiTauMassTools::MissingMassOutput::m_FittedMassUpperError
double m_FittedMassUpperError[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:53
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
DiTauMassTools::MMCFitMethodV2::MAXW
@ MAXW
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:42
DiTauMassTools
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:22
DiTauMassTools::MissingMassOutput::GetNSuccesses
int GetNSuccesses() const
Definition: MissingMassOutput.cxx:122
DiTauMassTools::MissingMassOutput::GetAveSolRMS
double GetAveSolRMS() const
Definition: MissingMassOutput.cxx:139
DiTauMassTools::MissingMassOutput::GetNSolutions
int GetNSolutions() const
Definition: MissingMassOutput.cxx:127
DiTauMassTools::MissingMassOutput::GetRms2Mpv
double GetRms2Mpv() const
Definition: MissingMassOutput.cxx:65
DiTauMassTools::MissingMassOutput::ClearOutput
void ClearOutput(bool fUseVerbose)
Definition: MissingMassOutput.cxx:22
DiTauMassTools::MMCFitMethodV2::MLNU3P
@ MLNU3P
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:42
DiTauMassTools::MissingMassOutput::m_NSolutions
int m_NSolutions
Definition: MissingMassOutput.h:66
DiTauMassTools::MissingMassOutput::GetFittedMass
double GetFittedMass(int fitcode) const
Definition: MissingMassOutput.cxx:70
DiTauMassTools::MissingMassOutput::GetFittedMetVec
TVector2 GetFittedMetVec(int fitcode) const
Definition: MissingMassOutput.cxx:205
DiTauMassTools::MissingMassOutput::m_totalvec
TLorentzVector m_totalvec[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:59
DiTauMassTools::MissingMassOutput::m_RMS2MPV
double m_RMS2MPV
Definition: MissingMassOutput.h:61
DiTauMassTools::MissingMassOutput::GetMassHistogramNoWeight
std::shared_ptr< TH1F > GetMassHistogramNoWeight() const
Definition: MissingMassOutput.cxx:149
DiTauMassTools::MissingMassOutput::GetFittedMassErrorUp
double GetFittedMassErrorUp(int fitcode) const
Definition: MissingMassOutput.cxx:86
DiTauMassTools::MissingMassOutput::m_NSuccesses
int m_NSuccesses
Definition: MissingMassOutput.h:65
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
DiTauMassTools::MissingMassOutput::GetFitStatus
int GetFitStatus() const
Definition: MissingMassOutput.cxx:47
DiTauMassTools::MissingMassOutput::m_AveSolRMS
double m_AveSolRMS
Definition: MissingMassOutput.h:68
DiTauMassTools::MissingMassOutput::MissingMassOutput
MissingMassOutput()
Definition: MissingMassOutput.cxx:14
DiTauMassTools::MissingMassOutput::GetNeutrino4vec
TLorentzVector GetNeutrino4vec(int fitcode, int ind) const
Definition: MissingMassOutput.cxx:155
DiTauMassTools::MissingMassOutput::m_NTrials
int m_NTrials
Definition: MissingMassOutput.h:64
DiTauMassTools::MissingMassOutput::m_FitStatus
int m_FitStatus
Definition: MissingMassOutput.h:50
L1Topo::Error
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition: Error.h:16
DiTauMassTools::MissingMassOutput::m_SumW
double m_SumW
Definition: MissingMassOutput.h:67
MissingMassOutput.h
DiTauMassTools::MissingMassOutput::m_FittedMass
double m_FittedMass[MMCFitMethodV2::MAX]
Definition: MissingMassOutput.h:52
checkFileSG.ind
list ind
Definition: checkFileSG.py:118
DiTauMassTools::MMCFitMethodV2::MAX
@ MAX
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:42