9#ifndef DQM_ALGORITHMS_TOOLS_ALGORITHMHELPER_H
10#define DQM_ALGORITHMS_TOOLS_ALGORITHMHELPER_H
12#include <dqm_core/Result.h>
13#include <dqm_core/AlgorithmConfig.h>
14#include <dqm_core/exceptions.h>
25#include <boost/thread/once.hpp>
26#include <boost/thread/mutex.hpp>
27#include <boost/thread/locks.hpp>
28#include <boost/thread.hpp>
29#include <boost/utility.hpp>
70 std::map<std::string, double >
GetFitParams(
const TF1 * func);
74 dqm_core::Result *
MakeComparisons(
const std::map<std::string,double> & algparams,
75 const std::map<std::string,double> & gthreshold,
76 const std::map<std::string,double> & rthreshold );
78 dqm_core::Result *
CompareWithErrors(
const std::map<std::string,double> & algparams,
79 const std::map<std::string,double> & paramErrors,
80 const std::map<std::string,double> & gthreshold,
81 const std::map<std::string,double> & rthreshold,
double minSig);
83 dqm_core::Result *
GetFitResult (
const TF1 * func,
const dqm_core::AlgorithmConfig &
config,
double minSig = 0) ;
85 double GetFirstFromMap(
const std::string ¶mName,
const std::map<std::string, double > ¶ms);
88 double GetFirstFromMap(
const std::string ¶mName,
const std::map<std::string, double > ¶ms,
double defaultValue);
92 const std::string&
GetFirstFromMap(
const std::string ¶mName,
const std::map<std::string, std::string > ¶ms);
95 const std::string&
GetFirstFromMap(
const std::string ¶mName,
const std::map<std::string, std::string > ¶ms,
const std::string& defaultValue);
98 std::vector<int>
GetBinRange(
const TH1*
histogram,
const std::map<std::string, double > & params);
109 const dqm_core::AlgorithmConfig &
config);
114 const T &
GetFromMap(
const std::string & pname,
const std::map<std::string,T> & params )
116 typename std::map<std::string,T>::const_iterator it = params.find( pname );
117 if ( it != params.end() ){
120 throw dqm_core::BadConfig( ERS_HERE,
"None", pname );
137 void handleReference(
const TObject& inputReference ,
const TObject*& firstReference , TObject*& secondReference);
150 void findOutliers( std::vector<binContainer>& input,
double&
mean,
double& scale,
int& nIn,
int nIterations,
151 double exponent,
double threshold,
double SBCF = 1.,
double nStop = 8. );
154 double mindiff = 0,
int minNin = 4);
157 binCluster
buildCluster( binContainer& seed,
const std::vector<std::vector<binContainer*> >& binMap,
158 const std::vector<double>& xValues,
const std::vector<double>& yValues,
159 double threhold,
int topology =
CylinderX);
162 std::vector<std::vector<binContainer*> >
163 makeBinMap(std::vector<dqm_algorithms::tools::binContainer>&
bins,
int ixmax,
int iymax,
int topology =
CylinderX);
165 dqm_core::Result::Status
166 WorstCaseAddStatus(dqm_core::Result::Status baseStatus, dqm_core::Result::Status addedStatus,
float weight = 1.0);
168 dqm_core::Result::Status
169 BestCaseAddStatus(dqm_core::Result::Status baseStatus, dqm_core::Result::Status addedStatus,
float weight = 1.0);
171 std::pair<double,double>
CalcBinsProbChisq(
const std::vector<double>& inputval,
const std::vector<double>& inputerr,
172 double x0,
double x0_err);
173 std::pair<double,double>
CalcBinsProbChisq(
const std::vector<double>& inputval,
const std::vector<double>& inputerr,
174 const std::vector<double>& x0,
const std::vector<double>& x0_err);
176 void MergePastMinStat(std::vector<std::vector<tools::binContainer> >& strips,
int minStat);
178 void MakeBinTag(
const binContainer&
bin, std::string & tag );
180 void FormatToSize(
double value,
int size, std::string &
str,
bool showSign =
true );
static const std::vector< std::string > bins
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")