Belle II Software  release-05-01-25
QEResultsExtractor.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Jonas Wagner *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <tracking/trackFindingVXD/variableExtractors/VariableExtractor.h>
14 #include <tracking/trackFindingVXD/trackQualityEstimators/QualityEstimatorBase.h>
15 
16 
17 namespace Belle2 {
22  class QEResultsExtractor : public VariableExtractor {
24  public:
25 
27  QEResultsExtractor(const std::string& method, std::vector<Named<float*>>& variableSet):
28  VariableExtractor(), m_method(method)
29  {
30  addVariable(method + "_QI", variableSet);
31  addVariable(method + "_Chi2", variableSet);
32  addVariable(method + "_Pt", variableSet);
33  addVariable(method + "_PMag", variableSet);
34  addVariable(method + "_P_Mag", variableSet);
35  addVariable(method + "_P_Eta", variableSet);
36  addVariable(method + "_P_Phi", variableSet);
37  addVariable(method + "_P_X", variableSet);
38  addVariable(method + "_P_Y", variableSet);
39  addVariable(method + "_P_Z", variableSet);
40  }
41 
43  void extractVariables(QualityEstimationResults const& values)
44  {
45  m_variables.at(m_method + "_QI") = values.qualityIndicator;
46 
47  float saneValue;
48  saneValue = values.chiSquared ? *(values.chiSquared) : -1;
49  m_variables.at(m_method + "_Chi2") = saneValue;
50  saneValue = values.pt ? *(values.pt) : -1;
51  m_variables.at(m_method + "_Pt") = saneValue;
52  saneValue = values.pmag ? *(values.pmag) : -1;
53  m_variables.at(m_method + "_PMag") = saneValue;
54 
55 
56  if (values.p) {
57  auto& vector = *(values.p);
58  m_variables.at(m_method + "_P_Mag") = vector.Mag();
59  m_variables.at(m_method + "_P_Eta") = vector.Eta();
60  m_variables.at(m_method + "_P_Phi") = vector.Phi();
61  m_variables.at(m_method + "_P_X") = vector.X();
62  m_variables.at(m_method + "_P_Y") = vector.Y();
63  m_variables.at(m_method + "_P_Z") = vector.Z();
64  } else {
65  m_variables.at(m_method + "_P_Mag") = -1;
66  m_variables.at(m_method + "_P_Eta") = -1;
67  m_variables.at(m_method + "_P_Phi") = -1;
68  m_variables.at(m_method + "_P_X") = -1;
69  m_variables.at(m_method + "_P_Y") = -1;
70  m_variables.at(m_method + "_P_Z") = -1;
71  }
72  }
73 
74  protected:
76  std::string m_method;
77  };
79 }
Belle2::QualityEstimationResults
Container for complete fit/estimation results.
Definition: QualityEstimatorBase.h:36
Belle2::QEResultsExtractor::m_method
std::string m_method
name of estimation method
Definition: QEResultsExtractor.h:84
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::VariableExtractor::m_variables
std::unordered_map< std::string, float > m_variables
unordered_map to associate float value with a string name
Definition: VariableExtractor.h:45
Belle2::QEResultsExtractor::extractVariables
void extractVariables(QualityEstimationResults const &values)
extract the actual variables and write into a variable set
Definition: QEResultsExtractor.h:51
Belle2::QEResultsExtractor::QEResultsExtractor
QEResultsExtractor(const std::string &method, std::vector< Named< float * >> &variableSet)
Define names of variables that get extracted.
Definition: QEResultsExtractor.h:35
Belle2::VariableExtractor::addVariable
void addVariable(const std::string &identifier, std::vector< Named< float * >> &variables)
add a variable to the variable set
Definition: VariableExtractor.h:37