ATLAS Offline Software
InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 #ifndef IDPVM_ResolutionHelper_h
7 #define IDPVM_ResolutionHelper_h
8 
13 #include <vector>
14 #include <string>
15 #include <utility>
16 
18 
19 class TH1;
20 class TH2;
21 class TH1D;
22 /*
23  Helper class to evaluate mean and RMS using dedicated methods
24  useful eg for histograms with long tails etc.
25 */
26 namespace IDPVM {
27 
28  class ResolutionHelper : public AthMessaging {
29  public:
32  // nop
33  };
34 
37 
40  double width{0.};
41  double widthError{0.};
42  double mean{0.};
43  double meanError{0.};
44  double outlierFrac{0.};
45  double outlierFracError{0.};
46  };
47 
55  void makeResolutions(const TH2* h_input2D, TH1* hwidth, TH1* hmean, TH1* hproj[], bool saveProjections, IDPVM::ResolutionHelper::methods theMethod=IDPVM::ResolutionHelper::iterRMS_convergence);
56 
65 
71 
72 
75  void setResults(TH1* p_input_hist, methods p_method);
76 
78  double getMean() { return m_mean; };
79  double getMeanError() { return m_meanError; };
80  double getRMS() { return m_RMS; };
81  double getRMSError() { return m_RMSError; };
87  double getFracOut() { return m_FracOut; };
88  double getFracOutUnc() { return m_FracOutUnc; };
93  double getFracUOflow() { return m_FracUOflow; };
97  static std::string reportUOBinVal(const std::string& p_histName, const std::vector< std::pair<unsigned int,double> >& p_vecBinVal);
99 
100  const std::vector<std::string>& getDebugs() { return m_debugs; };
101  const std::vector<std::string>& getInfos() { return m_infos; };
102  const std::vector<std::string>& getWarnings() { return m_warnings; };
103  const std::vector<std::string>& getErrors() { return m_errors; };
105  private:
106  // use gaussian fit, return 0 in case of successful fit
107  int setGaussFit(TH1* p_input_hist);
110  int setIterativeConvergence(TH1* p_input_hist);
112  void setFout(double p_nsig,double p_ntot);
114  void setLargeError();
116  bool initialize(TH1* p_input_hist);
117 
118 
120 
121  double m_mean{0.};
122  double m_meanError{0.};
123  double m_RMS{0.};
124  double m_RMSError{0.};
125  double m_FracOut{0.};
126  double m_FracOutUnc{0.};
127  double m_FracUOflow{0.};
128 
129  std::vector<std::string> m_debugs;
130  std::vector<std::string> m_infos;
131  std::vector<std::string> m_warnings;
132  std::vector<std::string> m_errors;
133  static void cloneHistogram(TH1D* h, TH1* hcopy);
135 
136  //helpers
137  std::string m_inHistName{""};
138  // increase mean and RMS errors by this factor in case of ambiguous evaluation
139  // ... eg in case we eg. exclude too many events during evaluation
140  double m_largeErrorFact{10.};
141  // maximum fraction of Under- and Overflow events we tolerate
142  double m_maxUOflowFrac{0.05};
143 
144  };
145 } // end of namespace
146 #endif
IDPVM::ResolutionHelper::m_FracOutUnc
double m_FracOutUnc
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:126
IDPVM
Class to retrieve associated truth from a track, implementing a cached response.
Definition: InDetPhysValMonitoringTool.h:55
IDPVM::ResolutionHelper::iterRMS_convergence
@ iterRMS_convergence
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:36
IDPVM::ResolutionHelper::getRMS
double getRMS()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:80
IDPVM::ResolutionHelper::initialize
bool initialize(TH1 *p_input_hist)
helper to fill-in starting values of the results vector
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:29
IDPVM::ResolutionHelper::m_meanError
double m_meanError
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:122
IDPVM::ResolutionHelper::makeResolutions
void makeResolutions(const TH2 *h_input2D, TH1 *hwidth, TH1 *hmean, TH1 *hproj[], bool saveProjections, IDPVM::ResolutionHelper::methods theMethod=IDPVM::ResolutionHelper::iterRMS_convergence)
extract 1D resolution plots from a 2D "residual vs observable" histogram.
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:288
IDPVM::ResolutionHelper::getMean
double getMean()
results getters
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:78
IDPVM::ResolutionHelper::m_FracOut
double m_FracOut
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:125
IDPVM::ResolutionHelper::ResolutionHelper
ResolutionHelper()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:24
IDPVM::ResolutionHelper::setResults
void setResults(TH1 *p_input_hist, methods p_method)
wrapper to set mean,rms,and fraction of events in tails nb: some of the methods are allowed to modify...
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:197
IDPVM::ResolutionHelper::m_maxUOflowFrac
double m_maxUOflowFrac
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:142
TH1D
Definition: rootspy.cxx:342
IDPVM::ResolutionHelper::getFracUOflow
double getFracUOflow()
fraction of events in under- and over-flow bins of input histogram if this is large,...
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:93
IDPVM::ResolutionHelper::resolutionResultInBin::outlierFracError
double outlierFracError
uncertainty on the outlier fraction. Mainly for book-keeping at this time.
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:45
IDPVM::ResolutionHelper::resolutionResultInBin::widthError
double widthError
uncertainty on the residual / pull width
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:41
IDPVM::ResolutionHelper::resolutionResultInBin
package the output of a single bin resolution measurement
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:39
IDPVM::ResolutionHelper::getWarnings
const std::vector< std::string > & getWarnings()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:102
IDPVM::ResolutionHelper
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:28
hmean
double hmean(TH1 *h)
Definition: computils.cxx:433
IDPVM::ResolutionHelper::getFracOutUnc
double getFracOutUnc()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:88
IDPVM::ResolutionHelper::getMeanError
double getMeanError()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:79
IDPVM::ResolutionHelper::resolutionResultInBin::outlierFrac
double outlierFrac
fraction of the population in outlier bins. Used to detect possible binning issues and warn the user
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:44
IDPVM::ResolutionHelper::Gauss_fit
@ Gauss_fit
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:36
IDPVM::ResolutionHelper::m_errors
std::vector< std::string > m_errors
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:132
IDPVM::ResolutionHelper::getInfos
const std::vector< std::string > & getInfos()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:101
IDPVM::ResolutionHelper::m_RMSError
double m_RMSError
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:124
IDPVM::ResolutionHelper::m_FracUOflow
double m_FracUOflow
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:127
IDPVM::ResolutionHelper::getFracOut
double getFracOut()
fraction of events that is within the range of input histogram, but goes out-of range during width an...
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:87
IDPVM::ResolutionHelper::resolutionResultInBin::width
double width
the residual / pull width (either RMS or fit outcome)
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:40
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
IDPVM::ResolutionHelper::m_infos
std::vector< std::string > m_infos
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:130
IDPVM::ResolutionHelper::setIterativeConvergence
int setIterativeConvergence(TH1 *p_input_hist)
iteratively change histogram range, until convergence return # remaining iterations before hitting th...
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:129
TH2
Definition: rootspy.cxx:373
IDPVM::ResolutionHelper::m_debugs
std::vector< std::string > m_debugs
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:129
IDPVM::ResolutionHelper::setGaussFit
int setGaussFit(TH1 *p_input_hist)
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:103
IDPVM::ResolutionHelper::methods
methods
methods acc to which mean&RMS can be evaluated
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:36
IDPVM::ResolutionHelper::m_RMS
double m_RMS
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:123
IDPVM::ResolutionHelper::setFout
void setFout(double p_nsig, double p_ntot)
evaluate the fraction of evens out of signal region and its uncertainty
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:88
IDPVM::ResolutionHelper::~ResolutionHelper
~ResolutionHelper()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:31
IDPVM::ResolutionHelper::m_warnings
std::vector< std::string > m_warnings
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:131
h
IDPVM::ResolutionHelper::cloneHistogram
static void cloneHistogram(TH1D *h, TH1 *hcopy)
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:323
TH1
Definition: rootspy.cxx:268
AthMessaging.h
IDPVM::ResolutionHelper::fusion_iterRMS_Gaussfit
@ fusion_iterRMS_Gaussfit
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:36
IDPVM::ResolutionHelper::m_mean
double m_mean
results/outputs:
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:121
IDPVM::ResolutionHelper::m_largeErrorFact
double m_largeErrorFact
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:140
IDPVM::ResolutionHelper::getDebugs
const std::vector< std::string > & getDebugs()
return accumulated messages
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:100
IDPVM::ResolutionHelper::resolutionResultInBin::mean
double mean
mean of the residual / pull
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:42
IDPVM::ResolutionHelper::setLargeError
void setLargeError()
set large mean and RMS errors in case we eg. exclude too many events during evaluation
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:68
IDPVM::ResolutionHelper::getErrors
const std::vector< std::string > & getErrors()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:103
IDPVM::ResolutionHelper::getRMSError
double getRMSError()
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:81
IDPVM::ResolutionHelper::reportUOBinVal
static std::string reportUOBinVal(const std::string &p_histName, const std::vector< std::pair< unsigned int, double > > &p_vecBinVal)
helper to report bin and fraction of under-/over- flow events, as accumulated by top-level pull or re...
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:77
IDPVM::ResolutionHelper::resolutionResultInBin::meanError
double meanError
uncertainty on the mean
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:43
IDPVM::ResolutionHelper::ResolutionHelperResultsModUnits
resolutionResultInBin ResolutionHelperResultsModUnits(TH1D *p_input_hist, IDPVM::ResolutionHelper::methods theMethod=IDPVM::ResolutionHelper::iterRMS_convergence)
single-bin resolution evaluation, also internally used by makeResolutions
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx:238
IDPVM::ResolutionHelper::m_inHistName
std::string m_inHistName
Definition: InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h:137