Class TStatToolkit Subset of matheamtical functions not included in the TMath
TStatToolkit() | |
TStatToolkit(const TStatToolkit&) | |
virtual | ~TStatToolkit() |
void | TObject::AbstractMethod(const char* method) const |
static void | AddStatusPad(TCanvas* c1, Float_t padratio, Float_t bottommargin) |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
static void | CheckTreeAliases(TTree* tree, Int_t ncheck) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TObject::Clear(Option_t* = "") |
virtual TObject* | TObject::Clone(const char* newname = "") const |
virtual Int_t | TObject::Compare(const TObject* obj) const |
static void | Constrain1D(const TString& input, const TString filter, TVectorD& param, TMatrixD& covar, Double_t mean, Double_t sigma) |
virtual void | TObject::Copy(TObject& object) const |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
static TH1* | DrawHistogram(TTree* tree, const char* drawCommand, const char* cuts = "1", const char* hname = "histo", const char* htitle = "histo", Int_t nsigma = 4, Float_t fraction = 0.75) |
static void | DrawStatusGraphs(TObjArray* oaMultGr) |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
static void | EvaluateUni(Int_t nvectors, Double_t* data, Double_t& mean, Double_t& sigma, Int_t hh) |
static void | EvaluateUniExternal(Int_t nvectors, Double_t* data, Double_t& mean, Double_t& sigma, Int_t hh, Float_t externalfactor = 1) |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
static TString | FilterFit(const TString& input, const TString filter, TVectorD& vec, TMatrixD& covar) |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
static Double_t | FitGaus(TH1* his, TVectorD* param = 0, TMatrixD* matrix = 0, Float_t xmin = 0, Float_t xmax = 0, Bool_t verbose = kFALSE) |
static Double_t | FitGaus(Float_t* arr, Int_t nBins, Float_t xMin, Float_t xMax, TVectorD* param = 0, TMatrixD* matrix = 0, Bool_t verbose = kFALSE) |
static TString* | FitPlane(TTree* tree, const char* drawCommand, const char* formula, const char* cuts, Double_t& chi2, Int_t& npoints, TVectorD& fitParam, TMatrixD& covMatrix, Float_t frac = -1, Int_t start = 0, Int_t stop = 10000000, Bool_t fix0 = kFALSE) |
static TString* | FitPlaneConstrain(TTree* tree, const char* drawCommand, const char* formula, const char* cuts, Double_t& chi2, Int_t& npoints, TVectorD& fitParam, TMatrixD& covMatrix, Float_t frac = -1, Int_t start = 0, Int_t stop = 10000000, Double_t constrain = -1) |
static TString* | FitPlaneFixed(TTree* tree, const char* drawCommand, const char* formula, const char* cuts, Double_t& chi2, Int_t& npoints, TVectorD& fitParam, TMatrixD& covMatrix, Float_t frac = -1, Int_t start = 0, Int_t stop = 10000000) |
static Int_t | Freq(Int_t n, const Int_t* inlist, Int_t* outlist, Bool_t down) |
static Float_t | GetCOG(const Short_t* arr, Int_t nBins, Float_t xMin, Float_t xMax, Float_t* rms = 0, Float_t* sum = 0) |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
static Int_t | GetFitIndex(const TString fString, const TString subString) |
virtual const char* | TObject::GetIconName() const |
virtual const char* | TObject::GetName() const |
virtual char* | TObject::GetObjectInfo(Int_t px, Int_t py) const |
static Bool_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
virtual const char* | TObject::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TObject::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual void | TObject::Inspect() constMENU |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | TObject::IsFolder() const |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TObject::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TObject::ls(Option_t* option = "") const |
static void | LTM(TH1* his, TVectorD* param = 0, Float_t fraction = 1, Bool_t verbose = kFALSE) |
static Bool_t | LTMHisto(TH1* his, TVectorD& param, Float_t fraction = 1) |
static TString | MakeFitString(const TString& input, const TVectorD& param, const TMatrixD& covar, Bool_t verbose = kFALSE) |
static TGraphErrors* | MakeGraphErrors(TTree* tree, const char* expr = "Entry", const char* cut = "1", Int_t mstyle = 25, Int_t mcolor = 1, Float_t msize = -1, Float_t offset = 0.0) |
static TGraph* | MakeGraphSparse(TTree* tree, const char* expr = "Entry", const char* cut = "1", Int_t mstyle = 25, Int_t mcolor = 1, Float_t msize = -1, Float_t offset = 0.0) |
static TGraphErrors* | MakeStat1D(TH2* his, Int_t deltaBin, Double_t fraction, Int_t returnType, Int_t markerStyle, Int_t markerColor) |
static TGraph2D* | MakeStat2D(TH3* his, Int_t delta0, Int_t delta1, Int_t type) |
static Int_t | MakeStatAlias(TTree* tree, const char* expr, const char* cut, const char* alias) |
static TMultiGraph* | MakeStatusLines(TTree* tree, const char* expr, const char* cut, const char* alias) |
static TMultiGraph* | MakeStatusMultGr(TTree* tree, const char* expr, const char* cut, const char* alias, Int_t igr = 0) |
static void | MakeSummaryTree(TTree* treeIn, TTreeSRedirector* pcstream, TObjString& sumID, TCut& selection) |
void | TObject::MayNotUse(const char* method) const |
static void | MedianFilter(TH1* his1D, Int_t nmedian) |
virtual Bool_t | TObject::Notify() |
void | TObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::operator delete[](void* ptr, void* vp) |
void* | TObject::operator new(size_t sz) |
void* | TObject::operator new(size_t sz, void* vp) |
void* | TObject::operator new[](size_t sz) |
void* | TObject::operator new[](size_t sz, void* vp) |
TStatToolkit& | operator=(const TStatToolkit&) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | TObject::Print(Option_t* option = "") const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
void | TObject::ResetBit(UInt_t f) |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
static void | TObject::SetObjectStat(Bool_t stat) |
static Int_t | SetStatusAlias(TTree* tree, const char* expr, const char* cut, const char* alias) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector&) |
virtual void | Streamer(TBuffer&) |
void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
static void | TestGausFit(Int_t nhistos = 5000) |
static void | TruncatedMean(const TH1* his, TVectorD* param, Float_t down = 0, Float_t up = 1.0, Bool_t verbose = kFALSE) |
static void | Update1D(Double_t delta, Double_t sigma, Int_t s1, TMatrixD& param, TMatrixD& covar) |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
static TTree* | WriteStatusToTree(TObject* oStatusGr) |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
void | TObject::MakeZombie() |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
Inheritance Chart: | ||||||||
|
Robust estimator in 1D case MI version - (faster than ROOT version) For the univariate case estimates of location and scatter are returned in mean and sigma parameters the algorithm works on the same principle as in multivariate case - it finds a subset of size hh with smallest sigma, and then returns mean and sigma of this subset
Modified version of ROOT robust EvaluateUni robust estimator in 1D case MI version added external factor to include precision of external measurement
Sort eleements according occurancy The size of output array has is 2*n
LTM : Trimmed mean on histogram - Modified version for binned data Robust statistic to estimate properties of the distribution See http://en.wikipedia.org/w/index.php?title=Trimmed_estimator&oldid=582847999 New faster version is under preparation
Algorithm to filter histogram author: marian.ivanov@cern.ch Details of algorithm: http://en.wikipedia.org/w/index.php?title=Median_filter&oldid=582191524 Input parameters: his1D - input histogam - to be modiefied by Medianfilter nmendian - number of bins in median filter
LTM : Trimmed mean on histogram - Modified version for binned data Robust statistic to estimate properties of the distribution To handle binning error special treatment for definition of unbinned data see: http://en.wikipedia.org/w/index.php?title=Trimmed_estimator&oldid=582847999 Function parameters: his1D - input histogram params - vector with parameters - 0 - area - 1 - mean - 2 - rms - 3 - error estimate of mean - 4 - error estimate of RMS - 5 - first accepted bin position - 6 - last accepted bin position
Fit histogram with gaussian function Prameters: return value- chi2 - if negative ( not enough points) his - input histogram param - vector with parameters xmin, xmax - range to fit - if xmin=xmax=0 - the full histogram range used Fitting: 1. Step - make logarithm 2. Linear fit (parabola) - more robust - always converge 3. In case of small statistic bins are averaged
Fit histogram with gaussian function Prameters: nbins: size of the array and number of histogram bins xMin, xMax: histogram range param: paramters of the fit (0-Constant, 1-Mean, 2-Sigma) matrix: covariance matrix -- not implemented yet, pass dummy matrix!!! Return values: >0: the chi2 returned by TLinearFitter -3: only three points have been used for the calculation - no fitter was used -2: only two points have been used for the calculation - center of gravity was uesed for calculation -1: only one point has been used for the calculation - center of gravity was uesed for calculation -4: invalid result!! Fitting: 1. Step - make logarithm 2. Linear fit (parabola) - more robust - always converge
calculate center of gravity rms and sum for array 'arr' with nBins an a x range xMin to xMax return COG; in case of failure return xMin
Test performance of the parabolic - gaussian fit - compare it with ROOT gauss fit nhistos - number of histograms to be used for test
delta - number of bins to integrate type - 0 - mean value
function to retrieve the "mean and RMS estimate" of 2D histograms Robust statistic to estimate properties of the distribution See http://en.wikipedia.org/wiki/Trimmed_estimator deltaBin - number of bins to integrate (bin+-deltaBin) fraction - fraction of values for the LTM and for the gauss fit returnType - 0 - mean value 1 - RMS 2 - LTM mean 3 - LTM sigma 4 - Gaus fit mean - on LTM range 5 - Gaus fit sigma - on LTM range
fit an arbitrary function, specified by formula into the data, specified by drawCommand and cuts returns chi2, fitParam and covMatrix returns TString with fitted formula
fit an arbitrary function, specified by formula into the data, specified by drawCommand and cuts returns chi2, fitParam and covMatrix returns TString with fitted formula
fit an arbitrary function, specified by formula into the data, specified by drawCommand and cuts returns chi2, fitParam and covMatrix returns TString with fitted formula
fitString - ++ separated list of fits substring - ++ separated list of the requiered substrings return the last occurance of substring in fit string
Filter fit expression make sub-fit
Update parameters and covariance - with one measurement Input: vecXk - input vector - Updated in function covXk - covariance matrix - Updated in function delta, sigma, s1 - new measurement, rms of new measurement and the index of measurement
constrain linear fit input - string description of fit function filter - string filter to select sub fits param,covar - parameters and covariance matrix of the fit mean,sigma - new measurement uning which the fit is updated
Query a graph errors return TGraphErrors specified by expr and cut Example usage TStatToolkit::MakeGraphError(tree,"Y:X:ErrY","X>0", 25,2,0.4) tree - tree with variable expr - examp
Make a sparse draw of the variables Format of expr : Var:Run or Var:Run:ErrorY or Var:Run:ErrorY:ErrorX offset : points can slightly be shifted in x for better visibility with more graphs Written by Weilin.Yu updated & merged with QA-code by Patrick Reichelt
Add alias using statistical values of a given variable. (by MI, Patrick Reichelt) tree - input tree expr - variable expression cut - selection criteria Output - return number of entries used to define variable In addition mean, rms, median, and robust mean and rms (choosing fraction of data with smallest RMS) Example usage: 1.) create the robust estimators for variable expr="QA.TPC.CPass1.meanTPCncl" and create a corresponding aliases with the prefix alias[0]="ncl", calculated using fraction alias[1]="0.90" TStatToolkit::MakeStatAlias(tree,"QA.TPC.CPass1.meanTPCncl","QA.TPC.CPass1.status>0","ncl:0.9"); root [4] tree->GetListOfAliases().Print() OBJ: TNamed ncl_Median (130.964333+0) OBJ: TNamed ncl_Mean (122.120387+0) OBJ: TNamed ncl_RMS (33.509623+0) OBJ: TNamed ncl_Mean90 (131.503862+0) OBJ: TNamed ncl_RMS90 (3.738260+0)
Add alias to trending tree using statistical values of a given variable. (by MI, Patrick Reichelt) format of expr : varname (e.g. meanTPCncl) format of cut : char like in TCut format of alias: alias:query:entryFraction(EF) (fraction of entries used for uniformity evaluation) e.g.: varname_Out:(abs(varname-meanEF)>6.*rmsEF):0.8 available internal variables are: 'varname, Median, Mean, MeanEF, RMS, RMSEF' in the alias, 'varname' will be replaced by its content, and 'EF' by the percentage (e.g. MeanEF -> Mean80) Example usage: 1.) Define robust mean (possible, but easier done with TStatToolkit::MakeStatAlias(...)) TStatToolkit::SetStatusAlias(tree, "meanTPCnclF", "meanTPCnclF>0", "meanTPCnclF_MeanEF:MeanEF:0.80") ; root [10] tree->GetListOfAliases()->Print() Collection name='TList', class='TList', size=1 OBJ: TNamed meanTPCnclF_Mean80 0.899308 2.) create alias outlyers - 6 sigma cut TStatToolkit::SetStatusAlias(tree, "meanTPCnclF", "meanTPCnclF>0", "meanTPCnclF_Out:(abs(meanTPCnclF-MeanEF)>6.*RMSEF):0.8") meanTPCnclF_Out ==> (abs(meanTPCnclF-0.899308)>6.*0.016590) 3.) the same functionality as in 2.) TStatToolkit::SetStatusAlias(tree, "meanTPCnclF", "meanTPCnclF>0", "varname_Out2:(abs(varname-MeanEF)>6.*RMSEF):0.8") meanTPCnclF_Out2 ==> (abs(meanTPCnclF-0.899308)>6.*0.016590)
Compute a trending multigraph that shows for which runs a variable has outliers. (by MI, Patrick Reichelt) format of expr : varname:xaxis (e.g. meanTPCncl:run, but 'varname' can be any string that you need for seach-and-replace) format of cut : char like in TCut format of alias: (1):(statisticOK):(varname_Warning):(varname_Out)[:(varname_PhysAcc):(varname_Extra)] function MakeGraphSparse() is called for each alias argument, which will be used as tree expression. each alias argument is supposed to be a Boolean statement which can be evaluated as tree expression. the order of these criteria should be kept, as the marker styles and colors are chosen to be meaningful this way! 'statisticOK' could e.g. be an alias for '(meanTPCncl>0)'. if you dont need e.g. a 'warning' condition, then just replace it by (0). in the alias, 'varname' will be replaced by its content (e.g. varname_Out -> meanTPCncl_Out) note: the aliases 'varname_Out' etc have to be defined by function TStatToolkit::SetStatusAlias(...) counter igr is used to shift the multigraph in y when filling a TObjArray. To create the Status Bar, the following is done in principle. ( example current usage in $ALICE_ROOT/PWGPP/TPC/macros/drawPerformanceTPCQAMatchTrends.C and ./qaConfig.C. ) TStatToolkit::SetStatusAlias(tree, "meanTPCncl", "", "varname_Out:(abs(varname-MeanEF)>6.*RMSEF):0.8"); TStatToolkit::SetStatusAlias(tree, "tpcItsMatchA", "", "varname_Out:(abs(varname-MeanEF)>6.*RMSEF):0.8"); TStatToolkit::SetStatusAlias(tree, "meanTPCncl", "", "varname_Warning:(abs(varname-MeanEF)>3.*RMSEF):0.8"); TStatToolkit::SetStatusAlias(tree, "tpcItsMatchA", "", "varname_Warning:(abs(varname-MeanEF)>3.*RMSEF):0.8"); TObjArray* oaMultGr = new TObjArray(); int igr=0; oaMultGr->Add( TStatToolkit::MakeStatusMultGr(tree, "tpcItsMatchA:run", "", "(1):(meanTPCncl>0):(varname_Warning):(varname_Outlier):", igr) ); igr++; oaMultGr->Add( TStatToolkit::MakeStatusMultGr(tree, "meanTPCncl:run", "", "(1):(meanTPCncl>0):(varname_Warning):(varname_Outlier):", igr) ); igr++; TCanvas *c1 = new TCanvas("c1","c1"); TStatToolkit::AddStatusPad(c1, 0.30, 0.40); TStatToolkit::DrawStatusGraphs(oaMultGr);
add pad to bottom of canvas for Status graphs (by Patrick Reichelt)
call function "DrawStatusGraphs(...)" afterwards
draw Status graphs into active pad of canvas (by MI, Patrick Reichelt)
...into bottom pad, if called after "AddStatusPad(...)"
Create Tree with Integers for each status variable flag (warning, outlier, physacc). (by Patrick Reichelt) input: either a TMultiGraph with status of single variable, which was computed by TStatToolkit::MakeStatusMultGr(), or a TObjArray which contains up to 10 of such variables. example: TTree* statusTree = WriteStatusToTree( TStatToolkit::MakeStatusMultGr(tree, "tpcItsMatch:run", "", sCriteria.Data(), 0) ); or : TTree* statusTree = TStatToolkit::WriteStatusToTree(oaMultGr); output tree: 1=flag is true, 0=flag is false, -1=flag was not computed. To be rewritten to the pcstream
Make a summary tree for the input tree For the moment statistic works only for the primitive branches (Float/Double/Int) Extension recursive version planned for graphs a and histograms Following statistics are exctracted: - Standard: mean, meadian, rms - LTM robust statistic: mean60, rms60, mean90, rms90 Parameters: treeIn - input tree pctream - Output redirector sumID - ID as will be used in output tree selection - selection criteria define the set of entries used to evaluat statistic
Create status lines for trending using MakeGraphSparse(), very similar to MakeStatusMultGr(). (by Patrick Reichelt) format of expr : varname:xaxis (e.g. meanTPCncl:run, but 'varname' can be any string that you need for seach-and-replace) format of cut : char like in TCut format of alias: varname_OutlierMin:varname_OutlierMax:varname_WarningMin:varname_WarningMax:varname_PhysAccMin:varname_PhysAccMax:varname_RobustMean
Draw histogram from TTree with robust range Only for 1D so far! Parameters: - histoname: name of histogram - histotitle: title of histgram - fraction: fraction of data to define the robust mean - nsigma: nsigma value for range