TPaveStats.cxx

Go to the documentation of this file.
00001 // @(#)root/graf:$Id: TPaveStats.cxx 36735 2010-11-18 09:33:53Z couet $
00002 // Author: Rene Brun   15/03/99
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #include <string.h>
00013 #include <stdlib.h>
00014 #include <stdio.h>
00015 
00016 #include "Riostream.h"
00017 #include "TROOT.h"
00018 #include "TPaveStats.h"
00019 #include "TPaveLabel.h"
00020 #include "TVirtualPad.h"
00021 #include "TStyle.h"
00022 #include "TClass.h"
00023 #include "TLatex.h"
00024 
00025 ClassImp(TPaveStats)
00026 
00027 
00028 //______________________________________________________________________________
00029 /* Begin_Html
00030 <center><h2>The histogram statistics painter class</h2></center>
00031 A PaveStats is a PaveText to draw histogram statistics and fit parameters.
00032 
00033 <a name="HP07"></a><h3>Statistics Display</h3>
00034 
00035 The type of information shown in the histogram statistics box can be selected
00036 with:
00037 <pre>
00038       gStyle->SetOptStat(mode);
00039 </pre>
00040 The "<tt>mode</tt>" has up to nine digits that can be set to on(1 or 2), off(0).
00041 <pre>
00042       mode = iourmen  (default = 000001111)
00043       k = 1;  kurtosis printed
00044       k = 2;  kurtosis and kurtosis error printed
00045       s = 1;  skewness printed
00046       s = 2;  skewness and skewness error printed
00047       i = 1;  integral of bins printed
00048       o = 1;  number of overflows printed
00049       u = 1;  number of underflows printed
00050       r = 1;  rms printed
00051       r = 2;  rms and rms error printed
00052       m = 1;  mean value printed
00053       m = 2;  mean and mean error values printed
00054       e = 1;  number of entries printed
00055       n = 1;  name of histogram is printed
00056 </pre>
00057 For example:
00058 <pre>
00059       gStyle->SetOptStat(11);
00060 </pre>
00061 displays only the name of histogram and the number of entries, whereas:
00062 <pre>
00063       gStyle->SetOptStat(1101);
00064 </pre>
00065 displays the name of histogram, mean value and RMS.
00066 
00067 <p><b>WARNING 1:</b> never do:
00068 <pre>
00069       <s>gStyle->SetOptStat(000111);</s>
00070 </pre>
00071 but instead do:
00072 <pre>
00073       gStyle->SetOptStat(1111);
00074 </pre>
00075 because <tt>0001111</tt> will be taken as an octal number!
00076 
00077 <p><b>WARNING 2:</b> for backward compatibility with older versions
00078 <pre>
00079       gStyle->SetOptStat(1);
00080 </pre>
00081 is taken as:
00082 <pre>
00083       gStyle->SetOptStat(1111)
00084 </pre>
00085 To print only the name of the histogram do:
00086 <pre>
00087       gStyle->SetOptStat(1000000001);
00088 </pre>
00089 <b>NOTE</b> that in case of 2D histograms, when selecting only underflow
00090 (10000) or overflow (100000), the statistics box will show all combinations
00091 of underflow/overflows and not just one single number.
00092 
00093 <p>The parameter mode can be any combination of the letters
00094 <tt>kKsSiourRmMen</tt>
00095 <pre>
00096       k :  kurtosis printed
00097       K :  kurtosis and kurtosis error printed
00098       s :  skewness printed
00099       S :  skewness and skewness error printed
00100       i :  integral of bins printed
00101       o :  number of overflows printed
00102       u :  number of underflows printed
00103       r :  rms printed
00104       R :  rms and rms error printed
00105       m :  mean value printed
00106       M :  mean value mean error values printed
00107       e :  number of entries printed
00108       n :  name of histogram is printed
00109 </pre>
00110 For example, to print only name of histogram and number of entries do:
00111 <pre>
00112       gStyle->SetOptStat("ne");
00113 </pre>
00114 To print only the name of the histogram do:
00115 <pre>
00116       gStyle->SetOptStat("n");
00117 </pre>
00118 The default value is:
00119 <pre>
00120       gStyle->SetOptStat("nemr");
00121 </pre>
00122 
00123 <p>When a histogram is painted, a <tt>TPaveStats</tt> object is created and added
00124 to the list of functions of the histogram. If a <tt>TPaveStats</tt> object
00125 already exists in the histogram list of functions, the existing object is just
00126 updated with the current histogram parameters.
00127 
00128 <p>Once a histogram is painted, the statistics box can be accessed using
00129 <tt>h->FindObject("stats")</tt>. In the command line it is enough to do:
00130 <pre>
00131       Root > h->Draw()
00132       Root > TPaveStats *st = (TPaveStats*)h->FindObject("stats")
00133 </pre>
00134 because after <tt>h->Draw()</tt> the histogram is automatically painted. But
00135 in a script file the painting should be forced using <tt>gPad->Update()</tt>
00136 in order to make sure the statistics box is created:
00137 <pre>
00138       h->Draw();
00139       gPad->Update();
00140       TPaveStats *st = (TPaveStats*)h->FindObject("stats");
00141 </pre>
00142 
00143 <p>Without <tt>gPad->Update()</tt> the line <tt>h->FindObject("stats")</tt>
00144 returns a null pointer.
00145 
00146 <p>When a histogram is drawn with the option "<tt>SAME</tt>", the statistics box
00147 is not drawn. To force the statistics box drawing with the option
00148 "<tt>SAME</tt>", the option "<tt>SAMES</tt>" must be used.
00149 If the new statistics box hides the previous statistics box, one can change
00150 its position with these lines ("<tt>h</tt>" being the pointer to the histogram):
00151 <pre>
00152       Root > TPaveStats *st = (TPaveStats*)h->FindObject("stats")
00153       Root > st->SetX1NDC(newx1); //new x start position
00154       Root > st->SetX2NDC(newx2); //new x end position
00155 </pre>
00156 To change the type of information for an histogram with an existing
00157 <tt>TPaveStats</tt> one should do:
00158 <pre>
00159       st->SetOptStat(mode);
00160 </pre>
00161 Where "<tt>mode</tt>" has the same meaning than when calling
00162 <tt>gStyle->SetOptStat(mode)</tt> (see above).
00163 
00164 <p>One can delete the statistics box for a histogram <tt>TH1* h</tt> with:
00165 <pre>
00166       h->SetStats(0)
00167 </pre>
00168 and activate it again with:
00169 <pre>
00170       h->SetStats(1).
00171 </pre>
00172 
00173 
00174 <a name="HP08"></a><h3>Fit Statistics</h3>
00175 
00176 
00177 The type of information about fit parameters printed in the histogram statistics
00178 box can be selected via the parameter mode. The parameter mode can be
00179 <tt>= pcev</tt>  (default <tt>= 0111</tt>)
00180 <pre>
00181       p = 1;  print Probability
00182       c = 1;  print Chisquare/Number of degrees of freedom
00183       e = 1;  print errors (if e=1, v must be 1)
00184       v = 1;  print name/values of parameters
00185 </pre>
00186 Example:
00187 <pre>
00188       gStyle->SetOptFit(1011);
00189 </pre>
00190 print fit probability, parameter names/values and errors.
00191 <ol>
00192 <li> When <tt>"v" = 1</tt> is specified, only the non-fixed parameters are
00193      shown.
00194 <li> When <tt>"v" = 2</tt> all parameters are shown.
00195 </ol>
00196 Note: <tt>gStyle->SetOptFit(1)</tt> means "default value", so it is equivalent
00197 to <tt>gStyle->SetOptFit(111)</tt>
00198 End_Html */
00199 
00200 
00201 const UInt_t kTakeStyle = BIT(17); //see TStyle::SetOptFit/Stat
00202 
00203 
00204 //______________________________________________________________________________
00205 TPaveStats::TPaveStats(): TPaveText()
00206 {
00207    /* Begin_Html
00208    TPaveStats default constructor.
00209    End_Html */
00210 
00211    fParent  = 0;
00212    fOptFit  = gStyle->GetOptFit();
00213    fOptStat = gStyle->GetOptStat();
00214 }
00215 
00216 
00217 //______________________________________________________________________________
00218 TPaveStats::TPaveStats(Double_t x1, Double_t y1,Double_t x2, Double_t  y2, Option_t *option)
00219            :TPaveText(x1,y1,x2,y2,option)
00220 {
00221    /* Begin_Html
00222    TPaveStats normal constructor.
00223    End_Html */
00224 
00225    fParent = 0;
00226    fOptFit  = gStyle->GetOptFit();
00227    fOptStat = gStyle->GetOptStat();
00228    SetFitFormat(gStyle->GetFitFormat());
00229    SetStatFormat(gStyle->GetStatFormat());
00230 }
00231 
00232 
00233 //______________________________________________________________________________
00234 TPaveStats::~TPaveStats()
00235 {
00236    /* Begin_Html
00237    TPaveStats default destructor.
00238    End_Html */
00239 
00240    if ( fParent && !fParent->TestBit(kInvalidObject)) fParent->RecursiveRemove(this);
00241 }
00242 
00243 
00244 //______________________________________________________________________________
00245 Int_t TPaveStats::GetOptFit() const
00246 {
00247    /* Begin_Html
00248    Return the fit option.
00249    End_Html */
00250 
00251    if (TestBit(kTakeStyle)) return gStyle->GetOptFit();
00252    return fOptFit;
00253 }
00254 
00255 
00256 //______________________________________________________________________________
00257 Int_t TPaveStats::GetOptStat() const
00258 {
00259    /* Begin_Html
00260    Return the stat option.
00261    End_Html */
00262 
00263    if (TestBit(kTakeStyle)) return gStyle->GetOptStat();
00264    return fOptStat;
00265 }
00266 
00267 
00268 //______________________________________________________________________________
00269 void TPaveStats::SaveStyle()
00270 {
00271    /* Begin_Html
00272    Save This TPaveStats options in current style.
00273    End_Html */
00274 
00275    gStyle->SetOptFit(fOptFit);
00276    gStyle->SetOptStat(fOptStat);
00277    gStyle->SetFitFormat(fFitFormat.Data());
00278    gStyle->SetStatFormat(fStatFormat.Data());
00279 }
00280 
00281 
00282 //______________________________________________________________________________
00283 void TPaveStats::SetFitFormat(const char *form)
00284 {
00285    /* Begin_Html
00286    Change (i.e. set) the format for printing fit parameters in statistics box.
00287    End_Html */
00288 
00289    fFitFormat = form;
00290 }
00291 
00292 
00293 //______________________________________________________________________________
00294 void TPaveStats::SetOptFit(Int_t fit)
00295 {
00296    /* Begin_Html
00297    Set the fit option.
00298    End_Html */
00299 
00300    fOptFit = fit;
00301    ResetBit(kTakeStyle);
00302 }
00303 
00304 
00305 //______________________________________________________________________________
00306 void TPaveStats::SetOptStat(Int_t stat)
00307 {
00308    /* Begin_Html
00309    Set the stat option.
00310    End_Html */
00311 
00312    fOptStat = stat;
00313    ResetBit(kTakeStyle);
00314 }
00315 
00316 
00317 //______________________________________________________________________________
00318 void TPaveStats::SetStatFormat(const char *form)
00319 {
00320    /* Begin_Html
00321    Change (i.e. set) the format for printing statistics.
00322    End_Html */
00323 
00324    fStatFormat = form;
00325 }
00326 
00327 
00328 //______________________________________________________________________________
00329 void TPaveStats::Paint(Option_t *option)
00330 {
00331    /* Begin_Html
00332    Paint the pave stat.
00333    End_Html */
00334 
00335    TPave::ConvertNDCtoPad();
00336    TPave::PaintPave(fX1,fY1,fX2,fY2,GetBorderSize(),option);
00337 
00338    if (!fLines) return;
00339    Double_t y2ref = TMath::Max(fY1,fY2);
00340    Double_t x1ref = TMath::Min(fX1,fX2);
00341    Double_t x2ref = TMath::Max(fX1,fX2);
00342    Double_t dx    = TMath::Abs(fX2 - fX1);
00343    Double_t dy    = TMath::Abs(fY2 - fY1);
00344    Double_t titlesize=0;
00345    Double_t textsize = GetTextSize();
00346    Int_t nlines = GetSize();
00347    if (nlines == 0) nlines = 5;
00348    Int_t print_name = fOptStat%10;
00349 
00350    // Evaluate text size as a function of the number of lines
00351    Double_t y1       = gPad->GetY1();
00352    Double_t y2       = gPad->GetY2();
00353    Float_t margin    = fMargin*dx;
00354    Double_t yspace   = dy/Double_t(nlines);
00355    Double_t textsave = textsize;
00356    TObject *line;
00357    TLatex *latex, *latex_tok;
00358    TIter next(fLines);
00359    Double_t longest = 0, titlelength = 0;
00360    Double_t w, wtok[2];
00361    char *st, *sl=0;
00362    if (textsize == 0)  {
00363       textsize = 0.92*yspace/(y2 - y1);
00364       titlesize = textsize;
00365       wtok[0] = 0; wtok[1] = 0;
00366       while ((line = (TObject*) next())) {
00367          if (line->IsA() == TLatex::Class()) {
00368             latex = (TLatex*)line;
00369             Int_t nchs = strlen(latex->GetTitle());
00370             sl = new char[nchs+1];
00371             strlcpy(sl, latex->GetTitle(),nchs+1);
00372             if (strpbrk(sl, "=") !=0 && print_name == 0) {
00373                st = strtok(sl, "=");
00374                Int_t itok = 0;
00375                while ( st !=0 ) {
00376                   latex_tok = new TLatex(0.,0.,st);
00377                   Style_t tfont = latex->GetTextFont();
00378                   if (tfont == 0) tfont = GetTextFont();
00379                   latex_tok->SetTextFont(tfont);
00380                   latex_tok->SetTextSize(textsize);
00381                   w = latex_tok->GetXsize();
00382                   if (w > wtok[itok]) wtok[itok] = w;
00383                   st = strtok(0, "=");
00384                   ++itok;
00385                   delete latex_tok;
00386                }
00387             } else if (strpbrk(sl, "|") !=0) {
00388             } else {
00389                print_name = 0;
00390                Style_t tfont = latex->GetTextFont();
00391                if (tfont == 0) latex->SetTextFont(GetTextFont());
00392                latex->SetTextSize(titlesize);
00393                titlelength = latex->GetXsize()+2.*margin;
00394                if (titlelength > 0.98*dx) titlesize *= 0.98*dx/titlelength;
00395                latex->SetTextFont(tfont);
00396             }
00397             delete [] sl; sl = 0;
00398          }
00399       }
00400       longest = wtok[0]+wtok[1]+2.*margin;
00401       if (longest > 0.98*dx) textsize *= 0.98*dx/longest;
00402       SetTextSize(textsize);
00403    } else {
00404       titlesize = textsize;
00405    }
00406    Double_t ytext = y2ref + 0.5*yspace;
00407    Double_t xtext = 0;
00408    print_name = fOptStat%10;
00409 
00410    // Iterate over all lines
00411    // Copy pavetext attributes to line attributes if line attributes not set
00412    next.Reset();
00413    while ((line = (TObject*) next())) {
00414       if (line->IsA() == TLatex::Class()) {
00415          latex = (TLatex*)line;
00416          ytext -= yspace;
00417          Double_t xl    = latex->GetX();
00418          Double_t yl    = latex->GetY();
00419          Short_t talign = latex->GetTextAlign();
00420          Color_t tcolor = latex->GetTextColor();
00421          Style_t tfont  = latex->GetTextFont();
00422          Size_t  tsize  = latex->GetTextSize();
00423          if (tcolor == 0) latex->SetTextColor(GetTextColor());
00424          if (tfont  == 0) latex->SetTextFont(GetTextFont());
00425          if (tsize  == 0) latex->SetTextSize(GetTextSize());
00426 
00427          Int_t nchs = strlen(latex->GetTitle());
00428          sl = new char[nchs+1];
00429          strlcpy(sl, latex->GetTitle(),nchs+1);
00430          // Draw all the histogram stats except the 2D under/overflow
00431          if (strpbrk(sl, "=") !=0 && print_name == 0) {
00432             st = strtok(sl, "=");
00433             Int_t halign = 12;
00434             while ( st !=0 ) {
00435                latex->SetTextAlign(halign);
00436                if (halign == 12) xtext = x1ref + margin;
00437                if (halign == 32) {
00438                   xtext = x2ref - margin;
00439                   // Clean trailing blanks in case of right alignment.
00440                   char *stc;
00441                   stc=st+strlen(st)-1;
00442                   while (*stc == ' ') {
00443                      *stc = '\0';
00444                      --stc;
00445                   }
00446                }
00447                latex->PaintLatex(xtext,ytext,latex->GetTextAngle(),
00448                                              latex->GetTextSize(),
00449                                              st);
00450                st = strtok(0, "=");
00451                halign = 32;
00452             }
00453          // Draw the 2D under/overflow
00454          } else if (strpbrk(sl, "|") !=0) {
00455             Double_t yline1 = ytext+yspace/2.;
00456             Double_t yline2 = ytext-yspace/2.;
00457             Double_t xline1 = dx/3+x1ref;
00458             Double_t xline2 = 2*dx/3+x1ref;
00459             gPad->PaintLine(x1ref,yline1,x2ref,yline1);
00460             gPad->PaintLine(xline1,yline1,xline1,yline2);
00461             gPad->PaintLine(xline2,yline1,xline2,yline2);
00462             st = strtok(sl, "|");
00463             Int_t theIndex = 0;
00464             while ( st !=0 ) {
00465                latex->SetTextAlign(22);
00466                if (theIndex == 0) xtext = 0.5*(x1ref+xline1);
00467                if (theIndex == 1) xtext = 0.5*(x1ref+x2ref);
00468                if (theIndex == 2) xtext = 0.5*(xline2+x2ref);
00469                latex->PaintLatex(xtext,ytext,latex->GetTextAngle(),
00470                                              latex->GetTextSize(),
00471                                              st);
00472                theIndex++;
00473                st = strtok(0, "|");
00474             }
00475          // Draw the histogram identifier
00476          } else {
00477             print_name = 0;
00478             latex->SetTextAlign(22);
00479             xtext = 0.5*(x1ref+x2ref);
00480             latex->PaintLatex(xtext,ytext,latex->GetTextAngle(),
00481                                           titlesize,
00482                                           sl);
00483             gPad->PaintLine(x1ref,y2ref-yspace,x2ref,y2ref-yspace);
00484          }
00485          delete [] sl;
00486 
00487          latex->SetTextAlign(talign);
00488          latex->SetTextColor(tcolor);
00489          latex->SetTextFont(tfont);
00490          latex->SetTextSize(tsize);
00491          latex->SetX(xl);  //paintlatex modifies fX and fY
00492          latex->SetY(yl);
00493       }
00494    }
00495    SetTextSize(textsave);
00496 
00497    // if a label create & paint a pavetext title
00498    if (fLabel.Length() > 0) {
00499       Double_t x1,x2;
00500       dy = gPad->GetY2() - gPad->GetY1();
00501       x1 = x1ref + 0.25*dx;
00502       x2 = x2ref - 0.25*dx;
00503       y1 = y2ref - 0.02*dy;
00504       y2 = y2ref + 0.02*dy;
00505       TPaveLabel *title = new TPaveLabel(x1,y1,x2,y2,fLabel.Data(),GetDrawOption());
00506       title->SetFillColor(GetFillColor());
00507       title->SetTextColor(GetTextColor());
00508       title->SetTextFont(GetTextFont());
00509       title->Paint();
00510       delete title;
00511    }
00512 }
00513 
00514 
00515 //______________________________________________________________________________
00516 void TPaveStats::SavePrimitive(ostream &out, Option_t * /*= ""*/)
00517 {
00518    /* Begin_Html
00519    Save primitive as a C++ statement(s) on output stream out.
00520    End_Html */
00521 
00522    char quote = '"';
00523    out<<"   "<<endl;
00524    if (gROOT->ClassSaved(TPaveStats::Class())) {
00525       out<<"   ";
00526    } else {
00527       out<<"   "<<ClassName()<<" *";
00528    }
00529    if (fOption.Contains("NDC")) {
00530       out<<"ptstats = new "<<ClassName()<<"("<<fX1NDC<<","<<fY1NDC<<","<<fX2NDC<<","<<fY2NDC
00531       <<","<<quote<<fOption<<quote<<");"<<endl;
00532    } else {
00533       out<<"ptstats = new "<<ClassName()<<"("<<fX1<<","<<fY1<<","<<fX2<<","<<fY2
00534       <<","<<quote<<fOption<<quote<<");"<<endl;
00535    }
00536    if (strcmp(GetName(),"TPave")) {
00537       out<<"   ptstats->SetName("<<quote<<GetName()<<quote<<");"<<endl;
00538    }
00539    if (fBorderSize != 4) {
00540       out<<"   ptstats->SetBorderSize("<<fBorderSize<<");"<<endl;
00541    }
00542    SaveFillAttributes(out,"ptstats",19,1001);
00543    SaveLineAttributes(out,"ptstats",1,1,1);
00544    SaveTextAttributes(out,"ptstats",22,0,1,62,0);
00545    SaveLines(out,"ptstats");
00546    out<<"   ptstats->SetOptStat("<<GetOptStat()<<");"<<endl;
00547    out<<"   ptstats->SetOptFit("<<GetOptFit()<<");"<<endl;
00548    out<<"   ptstats->Draw();"<<endl;
00549 }
00550 
00551 
00552 //______________________________________________________________________________
00553 void TPaveStats::Streamer(TBuffer &R__b)
00554 {
00555    /* Begin_Html
00556    Stream an object of class TPaveStats.
00557    End_Html */
00558 
00559    if (R__b.IsReading()) {
00560       UInt_t R__s, R__c;
00561       Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
00562       if (R__v > 2) {
00563          R__b.ReadClassBuffer(TPaveStats::Class(), this, R__v, R__s, R__c);
00564          return;
00565       }
00566       //====process old versions before automatic schema evolution
00567       TPaveText::Streamer(R__b);
00568       R__b >> fOptFit;
00569       R__b >> fOptStat;
00570       if (R__v > 1 || R__b.GetVersionOwner() == 22304) {
00571          fFitFormat.Streamer(R__b);
00572          fStatFormat.Streamer(R__b);
00573       } else {
00574          SetFitFormat();
00575          SetStatFormat();
00576       }
00577       R__b.CheckByteCount(R__s, R__c, TPaveStats::IsA());
00578       //====end of old versions
00579 
00580    } else {
00581       R__b.WriteClassBuffer(TPaveStats::Class(),this);
00582    }
00583 }
00584 
00585 
00586 //______________________________________________________________________________
00587 void TPaveStats::UseCurrentStyle()
00588 {
00589    /* Begin_Html
00590    Replace current attributes by current style.
00591    End_Html */
00592 
00593    if (gStyle->IsReading()) {
00594       SetOptStat(gStyle->GetOptStat());
00595       SetOptFit(gStyle->GetOptFit());
00596       SetStatFormat(gStyle->GetStatFormat());
00597       SetFitFormat(gStyle->GetFitFormat());
00598       SetBorderSize(gStyle->GetStatBorderSize());
00599       SetFillColor(gStyle->GetStatColor());
00600       SetFillStyle(gStyle->GetStatStyle());
00601       SetTextFont(gStyle->GetStatFont());
00602       SetTextSize(gStyle->GetStatFontSize());
00603       SetTextColor(gStyle->GetStatTextColor());
00604       SetX2NDC(gStyle->GetStatX());
00605       SetY2NDC(gStyle->GetStatY());
00606       SetX1NDC(gStyle->GetStatX()-gStyle->GetStatW());
00607       SetY1NDC(gStyle->GetStatY()-gStyle->GetStatH());
00608    } else {
00609       gStyle->SetOptStat(GetOptStat());
00610       gStyle->SetOptFit(GetOptFit());
00611       gStyle->SetStatFormat(GetStatFormat());
00612       gStyle->SetFitFormat(GetFitFormat());
00613       gStyle->SetStatBorderSize(GetBorderSize());
00614       gStyle->SetTextColor(GetTextColor());
00615       gStyle->SetStatColor(GetFillColor());
00616       gStyle->SetStatStyle(GetFillStyle());
00617       gStyle->SetTextFont(GetTextFont());
00618       gStyle->SetStatFontSize(GetTextSize());
00619       gStyle->SetStatTextColor(GetTextColor());
00620       gStyle->SetStatX(GetX2NDC());
00621       gStyle->SetStatY(GetY2NDC());
00622       gStyle->SetStatW(GetX2NDC()-GetX1NDC());
00623       gStyle->SetStatH(GetY2NDC()-GetY1NDC());
00624    }
00625 }

Generated on Tue Jul 5 14:14:28 2011 for ROOT_528-00b_version by  doxygen 1.5.1