ROOT logo
ROOT » HIST » HIST » TProfile2D

class TProfile2D: public TH2D


  Profile2D histograms are used to display the mean
  value of Z and its RMS for each cell in X,Y.
  Profile2D histograms are in many cases an
  elegant replacement of three-dimensional histograms : the inter-relation of three
  measured quantities X, Y and Z can always be visualized by a three-dimensional
  histogram or scatter-plot; its representation on the line-printer is not particularly
  satisfactory, except for sparse data. If Z is an unknown (but single-valued)
  approximate function of X,Y this function is displayed by a profile2D histogram with
  much better precision than by a scatter-plot.

  The following formulae show the cumulated contents (capital letters) and the values
  displayed by the printing or plotting routines (small letters) of the elements for cell I, J.

                                                        2
      H(I,J)  =  sum Z                  E(I,J)  =  sum Z
      l(I,J)  =  sum l                  L(I,J)  =  sum l
      h(I,J)  =  H(I,J)/L(I,J)          s(I,J)  =  sqrt(E(I,J)/L(I,J)- h(I,J)**2)
      e(I,J)  =  s(I,J)/sqrt(L(I,J))

  In the special case where s(I,J) is zero (eg, case of 1 entry only in one cell)
  e(I,J) is computed from the average of the s(I,J) for all cells.
  This simple/crude approximation was suggested in order to keep the cell
  during a fit operation.

           Example of a profile2D histogram
{
  TCanvas *c1 = new TCanvas("c1","Profile histogram example",200,10,700,500);
  hprof2d  = new TProfile2D("hprof2d","Profile of pz versus px and py",40,-4,4,40,-4,4,0,20);
  Float_t px, py, pz;
  for ( Int_t i=0; i<25000; i++) {
     gRandom->Rannor(px,py);
     pz = px*px + py*py;
     hprof2d->Fill(px,py,pz,1);
  }
  hprof2d->Draw();
}

Function Members (Methods)

public:
TProfile2D()
TProfile2D(const TProfile2D& profile)
TProfile2D(const char* name, const char* title, Int_t nbinsx, const Double_t* xbins, Int_t nbinsy, const Double_t* ybins, Option_t* option = "")
TProfile2D(const char* name, const char* title, Int_t nbinsx, const Double_t* xbins, Int_t nbinsy, Double_t ylow, Double_t yup, Option_t* option = "")
TProfile2D(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, const Double_t* ybins, Option_t* option = "")
TProfile2D(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, Option_t* option = "")
TProfile2D(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, Double_t zlow, Double_t zup, Option_t* option = "")
virtual~TProfile2D()
voidTObject::AbstractMethod(const char* method) const
virtual voidAdd(const TH1* h1, Double_t c1 = 1)
virtual voidAdd(TF1* h1, Double_t c1 = 1, Option_t* option = "")
virtual voidAdd(const TH1* h1, const TH1* h2, Double_t c1 = 1, Double_t c2 = 1)MENU
voidTArrayD::AddAt(Double_t c, Int_t i)
virtual voidTH2D::AddBinContent(Int_t bin)
virtual voidTH2D::AddBinContent(Int_t bin, Double_t w)
static voidTH1::AddDirectory(Bool_t add = kTRUE)
static Bool_tTH1::AddDirectoryStatus()
voidTArrayD::Adopt(Int_t n, Double_t* array)
virtual voidTObject::AppendPad(Option_t* option = "")
static voidApproximate(Bool_t approx = kTRUE)
Double_tTArrayD::At(Int_t i) const
virtual voidTH1::Browse(TBrowser* b)
virtual Int_tBufferEmpty(Int_t action = 0)
voidBuildOptions(Double_t zmin, Double_t zmax, Option_t* option)
virtual Double_tTH1::Chi2Test(const TH1* h2, Option_t* option = "UU", Double_t* res = 0) const
virtual Double_tTH1::Chi2TestX(const TH1* h2, Double_t& chi2, Int_t& ndf, Int_t& igood, Option_t* option = "UU", Double_t* res = 0) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual Double_tTH1::ComputeIntegral()
virtual voidCopy(TObject& hnew) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual voidTH1::DirectoryAutoAdd(TDirectory*)
Int_tTAttLine::DistancetoLine(Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2)
virtual Int_tTH1::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidDivide(const TH1* h1)
virtual voidDivide(TF1* h1, Double_t c1 = 1)
virtual voidDivide(const TH1* h1, const TH1* h2, Double_t c1 = 1, Double_t c2 = 1, Option_t* option = "")MENU
virtual voidTH1::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual TH1*DrawCopy(Option_t* option = "") const
virtual TH1*TH1::DrawNormalized(Option_t* option = "", Double_t norm = 1) const
virtual voidTH1::DrawPanel()MENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTH1::Eval(TF1* f1, Option_t* option = "")
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 voidTH1::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TH1*TH1::FFT(TH1* h_output, Option_t* option)
virtual Int_tFill(Double_t)
virtual Int_tFill(const char*, Double_t)
virtual Int_tFill(Double_t, Double_t)
virtual Int_tFill(Double_t x, Double_t y, Double_t z)
virtual Int_tFill(Double_t x, const char* namey, Double_t z)
virtual Int_tFill(const char* namex, Double_t y, Double_t z)
virtual Int_tFill(const char* namex, const char* namey, Double_t z)
virtual Int_tFill(Double_t x, Double_t y, Double_t z, Double_t w)
virtual voidTNamed::FillBuffer(char*& buffer)
virtual voidTH2::FillN(Int_t, const Double_t*, const Double_t*, Int_t)
virtual voidTH2::FillN(Int_t ntimes, const Double_t* x, const Double_t* y, const Double_t* w, Int_t stride = 1)
virtual voidTH2::FillRandom(const char* fname, Int_t ntimes = 5000)
virtual voidTH2::FillRandom(TH1* h, Int_t ntimes = 5000)
virtual Int_tTH1::FindBin(Double_t x, Double_t y = 0, Double_t z = 0)
virtual Int_tTH2::FindFirstBinAbove(Double_t threshold = 0, Int_t axis = 1) const
virtual Int_tTH1::FindFixBin(Double_t x, Double_t y = 0, Double_t z = 0) const
virtual Int_tTH2::FindLastBinAbove(Double_t threshold = 0, Int_t axis = 1) const
virtual TObject*TH1::FindObject(const char* name) const
virtual TObject*TH1::FindObject(const TObject* obj) const
virtual TFitResultPtrTH1::Fit(const char* formula, Option_t* option = "", Option_t* goption = "", Double_t xmin = 0, Double_t xmax = 0)MENU
virtual TFitResultPtrTH1::Fit(TF1* f1, Option_t* option = "", Option_t* goption = "", Double_t xmin = 0, Double_t xmax = 0)
static Int_tTH1::FitOptionsMake(Option_t* option, Foption_t& Foption)
virtual voidTH1::FitPanel()MENU
virtual voidTH2::FitSlicesX(TF1* f1 = 0, Int_t firstybin = 0, Int_t lastybin = -1, Int_t cut = 0, Option_t* option = "QNR", TObjArray* arr = 0)MENU
virtual voidTH2::FitSlicesY(TF1* f1 = 0, Int_t firstxbin = 0, Int_t lastxbin = -1, Int_t cut = 0, Option_t* option = "QNR", TObjArray* arr = 0)MENU
const Double_t*TArrayD::GetArray() const
Double_t*TArrayD::GetArray()
TH1*TH1::GetAsymmetry(TH1* h2, Double_t c2 = 1, Double_t dc2 = 0)
virtual Double_tTArrayD::GetAt(Int_t i) const
virtual Color_tTH1::GetAxisColor(Option_t* axis = "X") const
virtual Float_tTH1::GetBarOffset() const
virtual Float_tTH1::GetBarWidth() const
virtual Int_tTH1::GetBin(Int_t binx, Int_t biny = 0, Int_t binz = 0) const
virtual Double_tTH1::GetBinCenter(Int_t bin) const
virtual Double_tGetBinContent(Int_t bin) const
virtual Double_tGetBinContent(Int_t binx, Int_t biny) const
virtual Double_tGetBinContent(Int_t binx, Int_t biny, Int_t) const
virtual Double_tGetBinEffectiveEntries(Int_t bin)
virtual Double_tGetBinEntries(Int_t bin) const
virtual Double_tGetBinError(Int_t bin) const
virtual Double_tGetBinError(Int_t binx, Int_t biny) const
virtual Double_tGetBinError(Int_t binx, Int_t biny, Int_t) const
virtual Double_tTH1::GetBinLowEdge(Int_t bin) const
virtual TArrayD*GetBinSumw2()
virtual const TArrayD*GetBinSumw2() const
virtual Double_tTH1::GetBinWidth(Int_t bin) const
virtual Double_tTH1::GetBinWithContent(Double_t c, Int_t& binx, Int_t firstx = 0, Int_t lastx = 0, Double_t maxdiff = 0) const
virtual Double_tTH2::GetBinWithContent2(Double_t c, Int_t& binx, Int_t& biny, Int_t firstxbin = 1, Int_t lastxbin = -1, Int_t firstybin = 1, Int_t lastybin = -1, Double_t maxdiff = 0) const
virtual voidTH1::GetBinXYZ(Int_t binglobal, Int_t& binx, Int_t& biny, Int_t& binz) const
const Double_t*TH1::GetBuffer() const
Int_tTH1::GetBufferLength() const
Int_tTH1::GetBufferSize() const
virtual Double_tTH1::GetCellContent(Int_t binx, Int_t biny) const
virtual Double_tTH1::GetCellError(Int_t binx, Int_t biny) const
virtual voidTH1::GetCenter(Double_t* center) const
virtual Int_tTH1::GetContour(Double_t* levels = 0)
virtual Double_tTH1::GetContourLevel(Int_t level) const
virtual Double_tTH1::GetContourLevelPad(Int_t level) const
virtual Double_tTH2::GetCorrelationFactor(Int_t axis1 = 1, Int_t axis2 = 2) const
virtual Double_tTH2::GetCovariance(Int_t axis1 = 1, Int_t axis2 = 2) const
static Int_tTH1::GetDefaultBufferSize()
static Bool_tTH1::GetDefaultSumw2()
virtual Int_tTH1::GetDimension() const
TDirectory*TH1::GetDirectory() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Double_tTH1::GetEffectiveEntries() const
virtual Double_tTH1::GetEntries() const
Option_t*GetErrorOption() const
virtual Color_tTAttFill::GetFillColor() const
virtual Style_tTAttFill::GetFillStyle() const
virtual TF1*TH1::GetFunction(const char* name) const
virtual const char*TObject::GetIconName() const
virtual Double_t*TH1::GetIntegral()
virtual Double_tTH1::GetKurtosis(Int_t axis = 1) const
virtual Color_tTH1::GetLabelColor(Option_t* axis = "X") const
virtual Style_tTH1::GetLabelFont(Option_t* axis = "X") const
virtual Float_tTH1::GetLabelOffset(Option_t* axis = "X") const
virtual Float_tTH1::GetLabelSize(Option_t* axis = "X") const
virtual Color_tTAttLine::GetLineColor() const
virtual Style_tTAttLine::GetLineStyle() const
virtual Width_tTAttLine::GetLineWidth() const
TList*TH1::GetListOfFunctions() const
virtual voidTH1::GetLowEdge(Double_t* edge) const
virtual Color_tTAttMarker::GetMarkerColor() const
virtual Size_tTAttMarker::GetMarkerSize() const
virtual Style_tTAttMarker::GetMarkerStyle() const
virtual Double_tTH1::GetMaximum(Double_t maxval = FLT_MAX) const
virtual Int_tTH1::GetMaximumBin() const
virtual Int_tTH1::GetMaximumBin(Int_t& locmax, Int_t& locmay, Int_t& locmaz) const
virtual Double_tTH1::GetMaximumStored() const
virtual Double_tTH1::GetMean(Int_t axis = 1) const
virtual Double_tTH1::GetMeanError(Int_t axis = 1) const
virtual Double_tTH1::GetMinimum(Double_t minval = -FLT_MAX) const
virtual Int_tTH1::GetMinimumBin() const
virtual Int_tTH1::GetMinimumBin(Int_t& locmix, Int_t& locmiy, Int_t& locmiz) const
virtual Double_tTH1::GetMinimumStored() const
virtual const char*TNamed::GetName() const
virtual Int_tTH1::GetNbinsX() const
virtual Int_tTH1::GetNbinsY() const
virtual Int_tTH1::GetNbinsZ() const
virtual Int_tTH1::GetNdivisions(Option_t* axis = "X") const
virtual Double_tTH1::GetNormFactor() const
virtual char*TH1::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TH1::GetOption() const
TVirtualHistPainter*TH1::GetPainter(Option_t* option = "")
virtual Int_tTH1::GetQuantiles(Int_t nprobSum, Double_t* q, const Double_t* probSum = 0)
virtual Double_tTH1::GetRandom() const
virtual voidTH2::GetRandom2(Double_t& x, Double_t& y)
virtual Double_tTH1::GetRMS(Int_t axis = 1) const
virtual Double_tTH1::GetRMSError(Int_t axis = 1) const
Int_tTArray::GetSize() const
virtual Double_tTH1::GetSkewness(Int_t axis = 1) const
virtual voidGetStats(Double_t* stats) const
Stat_tTArrayD::GetSum() const
virtual Double_tTH1::GetSumOfWeights() const
virtual TArrayD*TH1::GetSumw2()
virtual const TArrayD*TH1::GetSumw2() const
virtual Int_tTH1::GetSumw2N() const
virtual Float_tTH1::GetTickLength(Option_t* axis = "X") const
virtual const char*TNamed::GetTitle() const
virtual Style_tTH1::GetTitleFont(Option_t* axis = "X") const
virtual Float_tTH1::GetTitleOffset(Option_t* axis = "X") const
virtual Float_tTH1::GetTitleSize(Option_t* axis = "X") const
virtual UInt_tTObject::GetUniqueID() const
TAxis*TH1::GetXaxis() const
TAxis*TH1::GetYaxis() const
TAxis*TH1::GetZaxis() const
virtual Double_tGetZmax() const
virtual Double_tGetZmin() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::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
virtual Double_tTH2::Integral(Option_t* option = "") const
virtual Double_tTH2::Integral(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Option_t* option = "") const
virtual Double_tTH2::Integral(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Option_t* = "") const
virtual Double_tTH2::IntegralAndError(Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Double_t& err, Option_t* option = "") const
virtual Double_tTH2::Interpolate(Double_t x)
virtual Double_tTH2::Interpolate(Double_t x, Double_t y)
virtual Double_tTH2::Interpolate(Double_t x, Double_t y, Double_t z)
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tTH1::IsBinOverflow(Int_t bin) const
Bool_tTH1::IsBinUnderflow(Int_t bin) const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
virtual Bool_tTAttFill::IsTransparent() const
Bool_tTObject::IsZombie() const
virtual Double_tTH2::KolmogorovTest(const TH1* h2, Option_t* option = "") const
virtual voidLabelsDeflate(Option_t* axis = "X")
virtual voidLabelsInflate(Option_t* axis = "X")
virtual voidLabelsOption(Option_t* option = "h", Option_t* axis = "X")
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Long64_tMerge(TCollection* list)
virtual voidTAttLine::Modify()
virtual voidMultiply(const TH1* h1)
virtual voidMultiply(TF1* h1, Double_t c1 = 1)
virtual voidMultiply(const TH1* h1, const TH1* h2, Double_t c1 = 1, Double_t c2 = 1, Option_t* option = "")MENU
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)
TH2D&TH2D::operator=(const TH2D& h1)
Double_t&TArrayD::operator[](Int_t i)
Double_tTArrayD::operator[](Int_t i) const
virtual voidTH1::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTH1::Print(Option_t* option = "") const
TProfile*TH2::ProfileX(const char* name = "_pfx", Int_t firstybin = 1, Int_t lastybin = -1, Option_t* option = "") constMENU
TProfile*TH2::ProfileY(const char* name = "_pfy", Int_t firstxbin = 1, Int_t lastxbin = -1, Option_t* option = "") constMENU
TH1D*TH2::ProjectionX(const char* name = "_px", Int_t firstybin = 0, Int_t lastybin = -1, Option_t* option = "") constMENU
TH2D*ProjectionXY(const char* name = "_pxy", Option_t* option = "e") const
TH1D*TH2::ProjectionY(const char* name = "_py", Int_t firstxbin = 0, Int_t lastxbin = -1, Option_t* option = "") constMENU
virtual voidPutStats(Double_t* stats)
virtual Int_tTObject::Read(const char* name)
static TArray*TArray::ReadArray(TBuffer& b, const TClass* clReq)
virtual TH1*TH1::Rebin(Int_t ngroup = 2, const char* newname = "", const Double_t* xbins = 0)MENU
virtual TProfile2D*Rebin2D(Int_t nxgroup = 2, Int_t nygroup = 2, const char* newname = "")
virtual voidRebinAxis(Double_t x, TAxis* axis)
virtual TProfile2D*RebinX(Int_t ngroup = 2, const char* newname = "")
virtual TProfile2D*RebinY(Int_t ngroup = 2, const char* newname = "")
virtual voidTH1::Rebuild(Option_t* option = "")
virtual voidTH1::RecursiveRemove(TObject* obj)
virtual voidReset(Option_t* option = "")
virtual voidTAttFill::ResetAttFill(Option_t* option = "")
virtual voidTAttLine::ResetAttLine(Option_t* option = "")
virtual voidTAttMarker::ResetAttMarker(Option_t* toption = "")
voidTObject::ResetBit(UInt_t f)
virtual voidTH1::ResetStats()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTAttFill::SaveFillAttributes(ostream& out, const char* name, Int_t coldef = 1, Int_t stydef = 1001)
virtual voidTAttLine::SaveLineAttributes(ostream& out, const char* name, Int_t coldef = 1, Int_t stydef = 1, Int_t widdef = 1)
virtual voidTAttMarker::SaveMarkerAttributes(ostream& out, const char* name, Int_t coldef = 1, Int_t stydef = 1, Int_t sizdef = 1)
virtual voidSavePrimitive(ostream& out, Option_t* option = "")
virtual voidScale(Double_t c1 = 1, Option_t* option = "")
virtual voidTArrayD::Set(Int_t n)
voidTArrayD::Set(Int_t n, const Double_t* array)
virtual voidTArrayD::SetAt(Double_t v, Int_t i)
virtual voidTH1::SetAxisColor(Color_t color = 1, Option_t* axis = "X")
virtual voidTH1::SetAxisRange(Double_t xmin, Double_t xmax, Option_t* axis = "X")
virtual voidTH1::SetBarOffset(Float_t offset = 0.25)
virtual voidTH1::SetBarWidth(Float_t width = 0.5)
virtual voidTH2D::SetBinContent(Int_t bin, Double_t content)
virtual voidTH2D::SetBinContent(Int_t binx, Int_t biny, Double_t content)
virtual voidTH2D::SetBinContent(Int_t binx, Int_t biny, Int_t, Double_t content)
virtual voidSetBinEntries(Int_t bin, Double_t w)
virtual voidTH1::SetBinError(Int_t bin, Double_t error)
virtual voidTH1::SetBinError(Int_t binx, Int_t biny, Double_t error)
virtual voidTH1::SetBinError(Int_t binx, Int_t biny, Int_t binz, Double_t error)
virtual voidSetBins(Int_t nbinsx, Double_t xmin, Double_t xmax, Int_t nbinsy, Double_t ymin, Double_t ymax)
virtual voidTH2D::SetBinsLength(Int_t n = -1)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidSetBuffer(Int_t buffersize, Option_t* option = "")
virtual voidTH1::SetCellContent(Int_t binx, Int_t biny, Double_t content)
virtual voidTH1::SetCellError(Int_t binx, Int_t biny, Double_t content)
virtual voidTH1::SetContent(const Double_t* content)
virtual voidTH1::SetContour(Int_t nlevels, const Double_t* levels = 0)
virtual voidTH1::SetContourLevel(Int_t level, Double_t value)
static voidTH1::SetDefaultBufferSize(Int_t buffersize = 1000)
static voidTH1::SetDefaultSumw2(Bool_t sumw2 = kTRUE)
virtual voidTH1::SetDirectory(TDirectory* dir)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidTH1::SetEntries(Double_t n)
virtual voidTH1::SetError(const Double_t* error)
virtual voidSetErrorOption(Option_t* option = "")MENU
virtual voidTAttFill::SetFillAttributes()MENU
virtual voidTAttFill::SetFillColor(Color_t fcolor)
virtual voidTAttFill::SetFillStyle(Style_t fstyle)
virtual voidTH1::SetLabelColor(Color_t color = 1, Option_t* axis = "X")
virtual voidTH1::SetLabelFont(Style_t font = 62, Option_t* axis = "X")
virtual voidTH1::SetLabelOffset(Float_t offset = 0.005, Option_t* axis = "X")
virtual voidTH1::SetLabelSize(Float_t size = 0.02, Option_t* axis = "X")
virtual voidTAttLine::SetLineAttributes()MENU
virtual voidTAttLine::SetLineColor(Color_t lcolor)
virtual voidTAttLine::SetLineStyle(Style_t lstyle)
virtual voidTAttLine::SetLineWidth(Width_t lwidth)
virtual voidTAttMarker::SetMarkerAttributes()MENU
virtual voidTAttMarker::SetMarkerColor(Color_t tcolor = 1)
virtual voidTAttMarker::SetMarkerSize(Size_t msize = 1)
virtual voidTAttMarker::SetMarkerStyle(Style_t mstyle = 1)
virtual voidTH1::SetMaximum(Double_t maximum = -1111)MENU
virtual voidTH1::SetMinimum(Double_t minimum = -1111)MENU
virtual voidTH1::SetName(const char* name)MENU
virtual voidTH1::SetNameTitle(const char* name, const char* title)
virtual voidTH1::SetNdivisions(Int_t n = 510, Option_t* axis = "X")
virtual voidTH1::SetNormFactor(Double_t factor = 1)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTH1::SetOption(Option_t* option = " ")
virtual voidTH2::SetShowProjectionX(Int_t nbins)MENU
virtual voidTH2::SetShowProjectionY(Int_t nbins)MENU
virtual voidTH1::SetStats(Bool_t stats = kTRUE)MENU
virtual voidTH1::SetTickLength(Float_t length = 0.02, Option_t* axis = "X")
virtual voidTH1::SetTitle(const char* title)MENU
virtual voidTH1::SetTitleFont(Style_t font = 62, Option_t* axis = "X")
virtual voidTH1::SetTitleOffset(Float_t offset = 1, Option_t* axis = "X")
virtual voidTH1::SetTitleSize(Float_t size = 0.02, Option_t* axis = "X")
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidTH1::SetXTitle(const char* title)
virtual voidTH1::SetYTitle(const char* title)
virtual voidTH1::SetZTitle(const char* title)
virtual TH1*TH2::ShowBackground(Int_t niter = 20, Option_t* option = "same")
virtual voidShowMembers(TMemberInspector& insp)
virtual Int_tTH2::ShowPeaks(Double_t sigma = 2, Option_t* option = "", Double_t threshold = 0.05)MENU
virtual Int_tTNamed::Sizeof() const
virtual voidTH2::Smooth(Int_t ntimes = 1, Option_t* option = "")MENU
static voidTH1::SmoothArray(Int_t NN, Double_t* XX, Int_t ntimes = 1)
static voidTH1::StatOverflows(Bool_t flag = kTRUE)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidSumw2()
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 TH1*TH1::TransformHisto(TVirtualFFT* fft, TH1* h_output, Option_t* option)
virtual voidTH1::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 voidTArray::WriteArray(TBuffer& b, const TArray* a)
protected:
Bool_tTArray::BoundsOk(const char* where, Int_t at) const
virtual Int_tBufferFill(Double_t, Double_t)
virtual Int_tBufferFill(Double_t, Double_t, Double_t)
virtual Int_tBufferFill(Double_t x, Double_t y, Double_t z, Double_t w)
static boolTH1::CheckAxisLimits(const TAxis* a1, const TAxis* a2)
static boolTH1::CheckBinLimits(const TAxis* a1, const TAxis* a2)
static boolTH1::CheckConsistency(const TH1* h1, const TH1* h2)
static boolTH1::CheckConsistentSubAxes(const TAxis* a1, Int_t firstBin1, Int_t lastBin1, const TAxis* a2, Int_t firstBin2 = 0, Int_t lastBin2 = 0)
static boolTH1::CheckEqualAxes(const TAxis* a1, const TAxis* a2)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual voidTH2::DoFitSlices(bool onX, TF1* f1, Int_t firstbin, Int_t lastbin, Int_t cut, Option_t* option, TObjArray* arr)
virtual Double_tTH1::DoIntegral(Int_t ix1, Int_t ix2, Int_t iy1, Int_t iy2, Int_t iz1, Int_t iz2, Double_t& err, Option_t* opt, Bool_t doerr = kFALSE) const
virtual TProfile*TH2::DoProfile(bool onX, const char* name, Int_t firstbin, Int_t lastbin, Option_t* option) const
virtual TH1D*TH2::DoProjection(bool onX, const char* name, Int_t firstbin, Int_t lastbin, Option_t* option) const
Int_tFill(const Double_t* v)
virtual Bool_tTH1::FindNewAxisLimits(const TAxis* axis, const Double_t point, Double_t& newMin, Double_t& newMax)
voidTObject::MakeZombie()
Bool_tTArray::OutOfBoundsError(const char* where, Int_t i) const
static Bool_tTH1::RecomputeAxisLimits(TAxis& destAxis, const TAxis& anAxis)
static Bool_tTH1::SameLimitsAndNBins(const TAxis& axis1, const TAxis& axis2)
virtual voidTH1::SavePrimitiveHelp(ostream& out, const char* hname, Option_t* option = "")
voidSetBins(const Int_t* nbins, const Double_t* range)
private:
Double_t*GetB()
Double_t*GetB2()
Double_t*GetW()
Double_t*GetW2()
virtual voidSetBins(Int_t, const Double_t*)
virtual voidSetBins(Int_t, Double_t, Double_t)
virtual voidSetBins(Int_t, const Double_t*, Int_t, const Double_t*)
virtual voidSetBins(Int_t, const Double_t*, Int_t, const Double_t*, Int_t, const Double_t*)
virtual voidSetBins(Int_t, Double_t, Double_t, Int_t, Double_t, Double_t, Int_t, Double_t, Double_t)

Data Members

public:
Double_t*TArrayD::fArray[fN] Array of fN doubles
Int_tTArray::fNNumber of array elements
protected:
Short_tTH1::fBarOffset(1000*offset) for bar charts or legos
Short_tTH1::fBarWidth(1000*width) for bar charts or legos
TArrayDfBinEntriesnumber of entries per bin
TArrayDfBinSumw2Array of sum of squares of weights per bin
Double_t*TH1::fBuffer[fBufferSize] entry buffer
Int_tTH1::fBufferSizefBuffer size
TArrayDTH1::fContourArray to display contour levels
Int_tTH1::fDimension!Histogram dimension (1, 2 or 3 dim)
TDirectory*TH1::fDirectory!Pointer to directory holding this histogram
Double_tTH1::fEntriesNumber of entries
EErrorTypefErrorModeOption to compute errors
Color_tTAttFill::fFillColorfill area color
Style_tTAttFill::fFillStylefill area style
TList*TH1::fFunctions->Pointer to list of functions (fits and user)
Double_t*TH1::fIntegral!Integral of bins used by GetRandom
Color_tTAttLine::fLineColorline color
Style_tTAttLine::fLineStyleline style
Width_tTAttLine::fLineWidthline width
Color_tTAttMarker::fMarkerColorMarker color index
Size_tTAttMarker::fMarkerSizeMarker size
Style_tTAttMarker::fMarkerStyleMarker style
Double_tTH1::fMaximumMaximum value for plotting
Double_tTH1::fMinimumMinimum value for plotting
TStringTNamed::fNameobject identifier
Int_tTH1::fNcellsnumber of bins(1D), cells (2D) +U/Overflows
Double_tTH1::fNormFactorNormalization factor
TStringTH1::fOptionhistogram options
TVirtualHistPainter*TH1::fPainter!pointer to histogram painter
Double_tTH2::fScalefactorScale factor
Bool_tfScaling!True when TProfile2D::Scale is called
TArrayDTH1::fSumw2Array of sum of squares of weights
TStringTNamed::fTitleobject title
Double_tTH1::fTsumwTotal Sum of weights
Double_tTH1::fTsumw2Total Sum of squares of weights
Double_tTH1::fTsumwxTotal Sum of weight*X
Double_tTH1::fTsumwx2Total Sum of weight*X*X
Double_tTH2::fTsumwxyTotal Sum of weight*X*Y
Double_tTH2::fTsumwyTotal Sum of weight*Y
Double_tTH2::fTsumwy2Total Sum of weight*Y*Y
Double_tfTsumwzTotal Sum of weight*Z
Double_tfTsumwz2Total Sum of weight*Z*Z
TAxisTH1::fXaxisX axis descriptor
TAxisTH1::fYaxisY axis descriptor
TAxisTH1::fZaxisZ axis descriptor
Double_tfZmaxUpper limit in Z (if set)
Double_tfZminLower limit in Z (if set)
static Bool_tTH1::fgAddDirectory!flag to add histograms to the directory
static Bool_tfgApproximatebin error approximation option
static Int_tTH1::fgBufferSize!default buffer size for automatic histograms
static Bool_tTH1::fgDefaultSumw2!flag to call TH1::Sumw2 automatically at histogram creation time
static Bool_tTH1::fgStatOverflows!flag to use under/overflows in statistics

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TProfile2D()
Default constructor for Profile2D histograms*-*-*-
*-*        ============================================
~TProfile2D()
Default destructor for Profile2D histograms*-*-*-
*-*        ===========================================
TProfile2D(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, Option_t* option = "")
Normal Constructor for Profile histograms*-*-*-*-
*-*        ==========================================

  The first eight parameters are similar to TH2D::TH2D.
  All values of z are accepted at filling time.
  To fill a profile2D histogram, one must use TProfile2D::Fill function.

  Note that when filling the profile histogram the function Fill
  checks if the variable z is betyween fZmin and fZmax.
  If a minimum or maximum value is set for the Z scale before filling,
  then all values below zmin or above zmax will be discarded.
  Setting the minimum or maximum value for the Z scale before filling
  has the same effect as calling the special TProfile2D constructor below
  where zmin and zmax are specified.

  H(I,J) is printed as the cell contents. The errors computed are s(I,J) if CHOPT='S'
  (spread option), or e(I,J) if CHOPT=' ' (error on mean).

        See TProfile2D::BuildOptions for explanation of parameters

   see other constructors below with all possible combinations of
   fix and variable bin size like in TH2D.
TProfile2D(const char* name, const char* title, Int_t nbinsx, const Double_t* xbins, Int_t nbinsy, Double_t ylow, Double_t yup, Option_t* option = "")
  Create a 2-D Profile with variable bins in X and fix bins in Y
TProfile2D(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, const Double_t* ybins, Option_t* option = "")
  Create a 2-D Profile with fix bins in X and variable bins in Y
TProfile2D(const char* name, const char* title, Int_t nbinsx, const Double_t* xbins, Int_t nbinsy, const Double_t* ybins, Option_t* option = "")
  Create a 2-D Profile with variable bins in X and variable bins in Y
TProfile2D(const char* name, const char* title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, Double_t zlow, Double_t zup, Option_t* option = "")
Constructor for Profile2D histograms with range in z
*-*        ====================================================
  The first eight parameters are similar to TH2D::TH2D.
  Only the values of Z between ZMIN and ZMAX will be considered at filling time.
  zmin and zmax will also be the maximum and minimum values
  on the z scale when drawing the profile2D.

        See TProfile2D::BuildOptions for more explanations on errors

void BuildOptions(Double_t zmin, Double_t zmax, Option_t* option)
Set Profile2D histogram structure and options*-*-
*-*          =============================================

    If a cell has N data points all with the same value Z (especially
    possible when dealing with integers), the spread in Z for that cell
    is zero, and the uncertainty assigned is also zero, and the cell is
    ignored in making subsequent fits. If SQRT(Z) was the correct error
    in the case above, then SQRT(Z)/SQRT(N) would be the correct error here.
    In fact, any cell with non-zero number of entries N but with zero spread
    should have an uncertainty SQRT(Z)/SQRT(N).

    Now, is SQRT(Z)/SQRT(N) really the correct uncertainty?
    that it is only in the case where the Z variable is some sort
    of counting statistics, following a Poisson distribution. This should
    probably be set as the default case. However, Z can be any variable
    from an original NTUPLE, not necessarily distributed "Poissonly".
    The computation of errors is based on the parameter option:
    option:
     ' '  (Default) Errors are Spread/SQRT(N) for Spread.ne.0. ,
                      "     "  SQRT(Z)/SQRT(N) for Spread.eq.0,N.gt.0 ,
                      "     "  0.  for N.eq.0
     's'            Errors are Spread  for Spread.ne.0. ,
                      "     "  SQRT(Z)  for Spread.eq.0,N.gt.0 ,
                      "     "  0.  for N.eq.0
     'i'            Errors are Spread/SQRT(N) for Spread.ne.0. ,
                      "     "  1./SQRT(12.*N) for Spread.eq.0,N.gt.0 ,
                      "     "  0.  for N.eq.0

    The third case above corresponds to Integer Z values for which the
    uncertainty is +-0.5, with the assumption that the probability that Z
    takes any value between Z-0.5 and Z+0.5 is uniform (the same argument
    goes for Z uniformly distributed between Z and Z+1); this would be
    useful if Z is an ADC measurement, for example. Other, fancier options
    would be possible, at the cost of adding one more parameter to the PROFILE2D
    For example, if all Z variables are distributed according to some
    known Gaussian of standard deviation Sigma, then:
     'G'            Errors are Spread/SQRT(N) for Spread.ne.0. ,
                      "     "  Sigma/SQRT(N) for Spread.eq.0,N.gt.0 ,
                      "     "  0.  for N.eq.0
    For example, this would be useful when all Z's are experimental quantities
    measured with the same instrument with precision Sigma.


TProfile2D(const TProfile2D& profile)
 Copy constructor.
void Add(TF1* h1, Double_t c1 = 1, Option_t* option = "")
 Performs the operation: this = this + c1*f1
void Add(const TH1* h1, Double_t c1 = 1)
 Performs the operation: this = this + c1*h1
void Add(const TH1* h1, const TH1* h2, Double_t c1 = 1, Double_t c2 = 1)
-*-*Replace contents of this profile2D by the addition of h1 and h2
*-*      ===============================================================

   this = c1*h1 + c2*h2

void Approximate(Bool_t approx = kTRUE)
     static function
 set the fgApproximate flag. When the flag is true, the function GetBinError
 will approximate the bin error with the average profile error on all bins
 in the following situation only
  - the number of bins in the profile2D is less than 10404 (eg 100x100)
  - the bin number of entries is small ( <5)
  - the estimated bin error is extremely small compared to the bin content
  (see TProfile2D::GetBinError)
Int_t BufferEmpty(Int_t action = 0)
 Fill histogram with all entries in the buffer.
 action = -1 histogram is reset and refilled from the buffer (called by THistPainter::Paint)
 action =  0 histogram is filled from the buffer
 action =  1 histogram is filled and buffer is deleted
             The buffer is automatically deleted when the number of entries
             in the buffer is greater than the number of entries in the histogram
Int_t BufferFill(Double_t x, Double_t y, Double_t z, Double_t w)
 accumulate arguments in buffer. When buffer is full, empty the buffer
 fBuffer[0] = number of entries in buffer
 fBuffer[1] = w of first entry
 fBuffer[2] = x of first entry
 fBuffer[3] = y of first entry
 fBuffer[4] = z of first entry
void Copy(TObject& hnew) const
-*-*-*-*Copy a Profile2D histogram to a new profile2D histogram
*-*            =======================================================
void Divide(TF1* h1, Double_t c1 = 1)
 Performs the operation: this = this/(c1*f1)
void Divide(const TH1* h1)
Divide this profile2D by h1*-*-
*-*                  ===========================

   this = this/h1

void Divide(const TH1* h1, const TH1* h2, Double_t c1 = 1, Double_t c2 = 1, Option_t* option = "")
-*-*Replace contents of this profile2D by the division of h1 by h2
*-*      ==============================================================

   this = c1*h1/(c2*h2)

TH1 * DrawCopy(Option_t* option = "") const
Draw a copy of this profile2D histogram*-*-*-
*-*            =======================================
Int_t Fill(Double_t x, Double_t y, Double_t z)
-*-*-*Fill a Profile2D histogram (no weights)
*-*                  =======================================
Int_t Fill(Double_t x, const char* namey, Double_t z)
 Fill a Profile2D histogram (no weights)

Int_t Fill(const char* namex, const char* namey, Double_t z)
 Fill a Profile2D histogram (no weights)

Int_t Fill(const char* namex, Double_t y, Double_t z)
 Fill a Profile2D histogram (no weights)

Int_t Fill(Double_t x, Double_t y, Double_t z, Double_t w)
-*-*-*Fill a Profile2D histogram with weights
*-*                  =======================================
Double_t GetBinContent(Int_t bin) const
Return bin content of a Profile2D histogram*-*-
*-*          ===========================================
Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile2D histogram*-*-
*-*          ===========================================
Double_t GetBinEffectiveEntries(Int_t bin)
            Return bin effective entries for a weighted filled Profile histogram.
            In case of an unweighted profile, it is equivalent to the number of entries per bin
            The effective entries is defined as the square of the sum of the weights divided by the
            sum of the weights square.
            TProfile::Sumw2() must be called before filling the profile with weights.
            Only by calling this method the  sum of the square of the weights per bin is stored.

*-*          =========================================
Double_t GetBinError(Int_t bin) const
 *-*-*-*-*-*-*Return bin error of a Profile2D histogram*-*-*-*-*-*-*-*-*

 Computing errors: A moving field

 The computation of errors for a TProfile2D has evolved with the versions
 of ROOT. The difficulty is in computing errors for bins with low statistics.
 - prior to version 3.10, we had no special treatment of low statistic bins.
   As a result, these bins had huge errors. The reason is that the
   expression eprim2 is very close to 0 (rounding problems) or 0.
 - The algorithm is modified/protected for the case
   when a TProfile2D is projected (ProjectionX). The previous algorithm
   generated a N^2 problem when projecting a TProfile2D with a large number of
   bins (eg 100000).
 - in version 3.10/02, a new static function TProfile::Approximate
   is introduced to enable or disable (default) the approximation.
   (see also comments in TProfile::GetBinError)
Option_t * GetErrorOption() const
-*-*Return option to compute profile2D errors
*-*                =========================================
void GetStats(Double_t* stats) const
 fill the array stats from the contents of this profile
 The array stats must be correctly dimensionned in the calling program.
 stats[0] = sumw
 stats[1] = sumw2
 stats[2] = sumwx
 stats[3] = sumwx2
 stats[4] = sumwy
 stats[5] = sumwy2
 stats[6] = sumwxy
 stats[7] = sumwz
 stats[8] = sumwz2

 If no axis-subrange is specified (via TAxis::SetRange), the array stats
 is simply a copy of the statistics quantities computed at filling time.
 If a sub-range is specified, the function recomputes these quantities
 from the bin contents in the current axis range.
void LabelsDeflate(Option_t* axis = "X")
 Reduce the number of bins for this axis to the number of bins having a label.
void LabelsInflate(Option_t* axis = "X")
 Double the number of bins for axis.
 Refill histogram
 This function is called by TAxis::FindBin(const char *label)
void LabelsOption(Option_t* option = "h", Option_t* axis = "X")
  Set option(s) to draw axis with labels
  option = "a" sort by alphabetic order
         = ">" sort by decreasing values
         = "<" sort by increasing values
         = "h" draw labels horizonthal
         = "v" draw labels vertical
         = "u" draw labels up (end of label right adjusted)
         = "d" draw labels down (start of label left adjusted)
Long64_t Merge(TCollection* list)
Merge all histograms in the collection in this histogram.
This function computes the min/max for the axes,
compute a new number of bins, if necessary,
add bin contents, errors and statistics.
If overflows are present and limits are different the function will fail.
The function returns the total number of entries in the result histogram
if the merge is successfull, -1 otherwise.

IMPORTANT remark. The 2 axis x and y may have different number
of bins and different limits, BUT the largest bin width must be
a multiple of the smallest bin width and the upper limit must also
be a multiple of the bin width.
void Multiply(TF1* h1, Double_t c1 = 1)
 Performs the operation: this = this*c1*f1
void Multiply(const TH1* h1)
Multiply this profile2D by h1*-
*-*                  =============================

   this = this*h1

void Multiply(const TH1* h1, const TH1* h2, Double_t c1 = 1, Double_t c2 = 1, Option_t* option = "")
-*-*-*Replace contents of this profile2D by multiplication of h1 by h2
*-*      ================================================================

   this = (c1*h1)*(c2*h2)

TH2D * ProjectionXY(const char* name = "_pxy", Option_t* option = "e") const
Project this profile2D into a 2-D histogram along X,Y*-*-
*-*      =====================================================

   The projection is always of the type TH2D.

   if option "E" is specified  the errors of the projected histogram are computed and set
      to be equal to the errors of the profile.
      Option "E" is defined as the default one in the header file.
   if option "" is specified the histogram errors are simply the sqrt of its content
   if option "B" is specified, the content of bin of the returned histogram
      will be equal to the GetBinEntries(bin) of the profile,
   if option "C=E" the bin contents of the projection are set to the
       bin errors of the profile
   if option "W" is specified the bin content of the projected histogram  is set to the
       product of the bin content of the profile and the entries.
       With this option the returned histogram will be equivalent to the one obtained by
       filling directly a TH2D using the 3-rd value as a weight.
       This option makes sense only for profile filled with all weights =1.
       When the profile is weighted (filled with weights different than 1) the
       bin error of the projected histogram (obtained using this option "W") cannot be
       correctly computed from the information stored in the profile.
void PutStats(Double_t* stats)
 Replace current statistics with the values in array stats
void Reset(Option_t* option = "")
-*-*Reset contents of a Profile2D histogram
*-*                =======================================
void RebinAxis(Double_t x, TAxis* axis)
 Profile histogram is resized along axis such that x is in the axis range.
 The new axis limits are recomputed by doubling iteratively
 the current axis range until the specified value x is within the limits.
 The algorithm makes a copy of the histogram, then loops on all bins
 of the old histogram to fill the rebinned histogram.
 Takes into account errors (Sumw2) if any.
 The bit kCanRebin must be set before invoking this function.
  Ex:  h->SetBit(TH1::kCanRebin);
TProfile2D * Rebin2D(Int_t nxgroup = 2, Int_t nygroup = 2, const char* newname = "")
   -*-*-*Rebin this histogram grouping nxgroup/nygroup bins along the xaxis/yaxis together*-*-*-*-

   if newname is not blank a new profile hnew is created.
   else the current histogram is modified (default)
   The parameter nxgroup/nygroup indicate how many bins along the xaxis/yaxis of this
   have to be merged into one bin of hnew
   If the original profile has errors stored (via Sumw2), the resulting
   profile has new errors correctly calculated.

   examples: if hpxpy is an existing TProfile2D profile with 40 x 40 bins
     hpxpy->Rebin2D();  // merges two bins along the xaxis and yaxis in one
                        // Carefull: previous contents of hpxpy are lost
     hpxpy->Rebin2D(3,5);  // merges 3 bins along the xaxis and 5 bins along the yaxis in one
                           // Carefull: previous contents of hpxpy are lost
     hpxpy->RebinX(5); //merges five bins along the xaxis in one in hpxpy
     TProfile2D *hnew = hpxpy->RebinY(5,"hnew"); // creates a new profile hnew
                                                 // merging 5 bins of hpxpy along the yaxis in one bin

   NOTE : If nxgroup/nygroup is not an exact divider of the number of bins,
          along the xaxis/yaxis the top limit(s) of the rebinned profile
          is changed to the upper edge of the xbin=newxbins*nxgroup resp.
          ybin=newybins*nygroup and the remaining bins are added to
          the overflow bin.
          Statistics will be recomputed from the new bin contents.
TProfile2D * RebinX(Int_t ngroup = 2, const char* newname = "")
 Rebin only the X axis
 see Rebin2D
TProfile2D * RebinY(Int_t ngroup = 2, const char* newname = "")
 Rebin only the Y axis
 see Rebin2D
void SavePrimitive(ostream& out, Option_t* option = "")
 Save primitive as a C++ statement(s) on output stream out
void Scale(Double_t c1 = 1, Option_t* option = "")
 *-*-*-*-*Multiply this profile2D by a constant c1*-*-*-*-*-*-*-*-*
 *-*      ========================================

   this = c1*this

 This function uses the services of TProfile2D::Add

void SetBinEntries(Int_t bin, Double_t w)
Set the number of entries in bin*-*-*-
*-*              ================================
void SetBins(Int_t nbinsx, Double_t xmin, Double_t xmax, Int_t nbinsy, Double_t ymin, Double_t ymax)
Redefine  x axis parameters*-*-*-
*-*              ===========================
void SetBuffer(Int_t buffersize, Option_t* option = "")
 set the buffer size in units of 8 bytes (double)
void SetErrorOption(Option_t* option = "")
-*-*Set option to compute profile2D errors
*-*                =======================================

    The computation of errors is based on the parameter option:
    option:
     ' '  (Default) Errors are Spread/SQRT(N) for Spread.ne.0. ,
                      "     "  SQRT(Z)/SQRT(N) for Spread.eq.0,N.gt.0 ,
                      "     "  0.  for N.eq.0
     's'            Errors are Spread  for Spread.ne.0. ,
                      "     "  SQRT(Z)  for Spread.eq.0,N.gt.0 ,
                      "     "  0.  for N.eq.0
     'i'            Errors are Spread/SQRT(N) for Spread.ne.0. ,
                      "     "  1./SQRT(12.*N) for Spread.eq.0,N.gt.0 ,
                      "     "  0.  for N.eq.0
   See TProfile2D::BuildOptions for explanation of all options
void Streamer(TBuffer& b)
 Stream an object of class TProfile2D.
void Sumw2()
 Create structure to store sum of squares of weights per bin  *-*-*-*-*-*-*-*
   This is needed to compute  the correct statistical quantities
    of a profile filled with weights


  This function is automatically called when the histogram is created
  if the static function TH1::SetDefaultSumw2 has been called before.
Int_t BufferFill(Double_t , Double_t )
{return -2;}
Int_t BufferFill(Double_t , Double_t , Double_t )
{return -2;}
void SetBins(const Int_t* nbins, const Double_t* range)
 helper methods for the Merge unification in TProfileHelper
Int_t Fill(const Double_t* v)
{ return Fill(v[0], v[1], v[2], v[3]); }
Double_t * GetB()
{return &fBinEntries.fArray[0];}
Double_t * GetB2()
{return (fBinSumw2.fN ? &fBinSumw2.fArray[0] : 0 ); }
Double_t * GetW()
{return &fArray[0];}
Double_t * GetW2()
{return &fSumw2.fArray[0];}
void SetBins(Int_t , Double_t , Double_t )
{ MayNotUse("SetBins(Int_t, Double_t, Double_t"); }
void SetBins(Int_t , const Double_t* )
{ MayNotUse("SetBins(Int_t, const Double_t*"); }
void SetBins(Int_t , const Double_t* , Int_t , const Double_t* )
{ MayNotUse("SetBins(Int_t, const Double_t*, Int_t, const Double_t*"); }
void SetBins(Int_t , Double_t , Double_t , Int_t , Double_t , Double_t , Int_t , Double_t , Double_t )
{ MayNotUse("SetBins(Int_t, Double_t, Double_t, Int_t, Double_t, Double_t, Int_t, Double_t, Double_t"); }
void SetBins(Int_t , const Double_t* , Int_t , const Double_t* , Int_t , const Double_t* )
{ MayNotUse("SetBins(Int_t, const Double_t*, Int_t, const Double_t*, Int_t, const Double_t*"); }
Int_t Fill(Double_t )
{return -1;}
Int_t Fill(const char* , Double_t )
{return -1;}
Int_t Fill(Double_t , Double_t )
{return -1; }
Double_t GetBinContent(Int_t bin) const
Double_t GetBinContent(Int_t binx, Int_t biny) const
{return GetBinContent(GetBin(binx,biny));}
Double_t GetBinError(Int_t bin) const
Double_t GetBinError(Int_t binx, Int_t biny) const
{return GetBinError(GetBin(binx,biny));}
TArrayD * GetBinSumw2()
{return &fBinSumw2;}
const TArrayD * GetBinSumw2() const
{return &fBinSumw2;}
Double_t GetZmin() const
{return fZmin;}
Double_t GetZmax() const
{return fZmax;}