ROOT logo
AliRoot » STAT » TStatToolkit

class TStatToolkit: public TObject

 Class TStatToolkit

 Subset of  matheamtical functions  not included in the TMath



Function Members (Methods)

public:
TStatToolkit()
TStatToolkit(const TStatToolkit&)
virtual~TStatToolkit()
voidTObject::AbstractMethod(const char* method) const
static voidAddStatusPad(TCanvas* c1, Float_t padratio, Float_t bottommargin)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static voidCheckTreeAliases(TTree* tree, Int_t ncheck)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
static voidConstrain1D(const TString& input, const TString filter, TVectorD& param, TMatrixD& covar, Double_t mean, Double_t sigma)
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::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 voidDrawStatusGraphs(TObjArray* oaMultGr)
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
static voidEvaluateUni(Int_t nvectors, Double_t* data, Double_t& mean, Double_t& sigma, Int_t hh)
static voidEvaluateUniExternal(Int_t nvectors, Double_t* data, Double_t& mean, Double_t& sigma, Int_t hh, Float_t externalfactor = 1)
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
static TStringFilterFit(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_tFitGaus(TH1* his, TVectorD* param = 0, TMatrixD* matrix = 0, Float_t xmin = 0, Float_t xmax = 0, Bool_t verbose = kFALSE)
static Double_tFitGaus(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_tFreq(Int_t n, const Int_t* inlist, Int_t* outlist, Bool_t down)
static Float_tGetCOG(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_tTObject::GetDtorOnly()
static Int_tGetFitIndex(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_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
static voidLTM(TH1* his, TVectorD* param = 0, Float_t fraction = 1, Bool_t verbose = kFALSE)
static Bool_tLTMHisto(TH1* his, TVectorD& param, Float_t fraction = 1)
static TStringMakeFitString(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_tMakeStatAlias(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 voidMakeSummaryTree(TTree* treeIn, TTreeSRedirector* pcstream, TObjString& sumID, TCut& selection)
voidTObject::MayNotUse(const char* method) const
static voidMedianFilter(TH1* his1D, Int_t nmedian)
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::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 voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
static Int_tSetStatusAlias(TTree* tree, const char* expr, const char* cut, const char* alias)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
static voidTestGausFit(Int_t nhistos = 5000)
static voidTruncatedMean(const TH1* his, TVectorD* param, Float_t down = 0, Float_t up = 1.0, Bool_t verbose = kFALSE)
static voidUpdate1D(Double_t delta, Double_t sigma, Int_t s1, TMatrixD& param, TMatrixD& covar)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
static TTree*WriteStatusToTree(TObject* oStatusGr)
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

Class Charts

Inheritance Chart:
TObject
TStatToolkit

Function documentation

TStatToolkit()
 Default constructor

~TStatToolkit()
 Destructor

void EvaluateUni(Int_t nvectors, Double_t* data, Double_t& mean, Double_t& sigma, Int_t hh)
 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

void EvaluateUniExternal(Int_t nvectors, Double_t* data, Double_t& mean, Double_t& sigma, Int_t hh, Float_t externalfactor = 1)
 Modified version of ROOT robust EvaluateUni
 robust estimator in 1D case MI version
 added external factor to include precision of external measurement

Int_t Freq(Int_t n, const Int_t* inlist, Int_t* outlist, Bool_t down)
  Sort eleements according occurancy
  The size of output array has is 2*n

void TruncatedMean(const TH1* his, TVectorD* param, Float_t down = 0, Float_t up = 1.0, Bool_t verbose = kFALSE)


void LTM(TH1* his, TVectorD* param = 0, Float_t fraction = 1, Bool_t verbose = kFALSE)
 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

void MedianFilter(TH1* his1D, Int_t nmedian)
 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

Bool_t LTMHisto(TH1* his, TVectorD& param, Float_t fraction = 1)
 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

Double_t FitGaus(TH1* his, TVectorD* param = 0, TMatrixD* matrix = 0, Float_t xmin = 0, Float_t xmax = 0, Bool_t verbose = kFALSE)
  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

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)
  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

Float_t GetCOG(const Short_t* arr, Int_t nBins, Float_t xMin, Float_t xMax, Float_t* rms = 0, Float_t* sum = 0)
  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

void TestGausFit(Int_t nhistos = 5000)
 Test performance of the parabolic - gaussian fit - compare it with
 ROOT gauss fit
  nhistos - number of histograms to be used for test

TGraph2D * MakeStat2D(TH3* his, Int_t delta0, Int_t delta1, Int_t type)


 delta - number of bins to integrate
 type - 0 - mean value
TGraphErrors * MakeStat1D(TH2* his, Int_t deltaBin, Double_t fraction, Int_t returnType, Int_t markerStyle, Int_t markerColor)
 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

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)
 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

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)
 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

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)
 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

Int_t GetFitIndex(const TString fString, const TString subString)
 fitString - ++ separated list of fits
 substring - ++ separated list of the requiered substrings

 return the last occurance of substring in fit string

TString FilterFit(const TString& input, const TString filter, TVectorD& vec, TMatrixD& covar)
 Filter fit expression make sub-fit

void Update1D(Double_t delta, Double_t sigma, Int_t s1, TMatrixD& param, TMatrixD& covar)
 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
void Constrain1D(const TString& input, const TString filter, TVectorD& param, TMatrixD& covar, Double_t mean, Double_t sigma)
 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

TString MakeFitString(const TString& input, const TVectorD& param, const TMatrixD& covar, Bool_t verbose = kFALSE)


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)
 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
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)
 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

Int_t MakeStatAlias(TTree* tree, const char* expr, const char* cut, const char* alias)
 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)


Int_t SetStatusAlias(TTree* tree, const char* expr, const char* cut, const char* alias)
 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)


TMultiGraph* MakeStatusMultGr(TTree* tree, const char* expr, const char* cut, const char* alias, Int_t igr = 0)
 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);
void AddStatusPad(TCanvas* c1, Float_t padratio, Float_t bottommargin)
 add pad to bottom of canvas for Status graphs (by Patrick Reichelt)
 call function "DrawStatusGraphs(...)" afterwards

void DrawStatusGraphs(TObjArray* oaMultGr)
 draw Status graphs into active pad of canvas (by MI, Patrick Reichelt)
 ...into bottom pad, if called after "AddStatusPad(...)"

TTree* WriteStatusToTree(TObject* oStatusGr)
 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
void MakeSummaryTree(TTree* treeIn, TTreeSRedirector* pcstream, TObjString& sumID, TCut& selection)
 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

TMultiGraph* MakeStatusLines(TTree* tree, const char* expr, const char* cut, const char* alias)
 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

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)
 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

void CheckTreeAliases(TTree* tree, Int_t ncheck)
 Check consistency of tree aliases

TStatToolkit()