79 fTsumwt = fTsumwt2 = 0;
114 TProfile3D::TProfile3D(
const char *
name,
const char *title,
Int_t nx,
Double_t xlow,
Double_t xup,
Int_t ny,
Double_t ylow,
Double_t yup,
Int_t nz,
Double_t zlow,
Double_t zup,
Option_t *option)
115 :
TH3D(name,title,nx,xlow,xup,ny,ylow,yup,nz,zlow,zup)
125 :
TH3D(name,title,nx,xbins,ny,ybins,nz,zbins)
168 Error(
"Add",
"Function not implemented for TProfile3D");
178 Error(
"Add",
"Attempt to add a non-existing profile");
182 Error(
"Add",
"Attempt to add a non-profile2D object");
197 Error(
"Add",
"Attempt to add a non-existing profile");
201 Error(
"Add",
"Attempt to add a non-profile3D object");
205 Error(
"Add",
"Attempt to add a non-profile3D object");
245 if (!nbentries)
return 0;
248 if (action == 0)
return 0;
249 nbentries = -nbentries;
262 for (
Int_t i=1;i<nbentries;i++) {
264 if (x < xmin) xmin =
x;
265 if (x > xmax) xmax =
x;
267 if (y < ymin) ymin =
y;
268 if (y > ymax) ymax =
y;
270 if (z < zmin) zmin =
z;
271 if (z > zmax) zmax =
z;
290 for (
Int_t i=0;i<nbentries;i++) {
291 Fill(buffer[5*i+2],buffer[5*i+3],buffer[5*i+4],buffer[5*i+5],buffer[5*i+1]);
320 nbentries = -nbentries;
330 return Fill(x,y,z,t,w);
352 for (
int bin=0;bin<
fNcells;bin++) {
364 Fatal(
"Copy",
"Cannot copy a TProfile3D in a %s",obj.IsA()->
GetName());
375 Error(
"Divide",
"Function not implemented for TProfile3D");
389 Error(
"Divide",
"Attempt to divide a non-existing profile2D");
393 Error(
"Divide",
"Attempt to divide a non-profile3D object");
404 Error(
"Divide",
"Attempt to divide profiles with different number of bins");
409 Error(
"Divide",
"Attempt to divide profiles with different number of bins");
414 Error(
"Divide",
"Attempt to divide profiles with different number of bins");
422 Int_t bin,binx,biny,binz;
427 for (binx =0;binx<=nx+1;binx++) {
428 for (biny =0;biny<=ny+1;biny++) {
429 for (binz =0;binz<=nz+1;binz++) {
430 bin =
GetBin(binx,biny,binz);
458 else fSumw2.
fArray[bin] = (e0*c1*c1 + e1*c0*c0)/(c12*c12);
467 Warning(
"Divide",
"Cannot preserve during the division of profiles the sum of bin weight square");
487 Error(
"Divide",
"Attempt to divide a non-existing profile2D");
491 Error(
"Divide",
"Attempt to divide a non-profile2D object");
496 Error(
"Divide",
"Attempt to divide a non-profile2D object");
504 Error(
"Divide",
"Attempt to divide profiles with different number of bins");
509 Error(
"Divide",
"Attempt to divide profiles with different number of bins");
514 Error(
"Divide",
"Attempt to divide profiles with different number of bins");
518 Error(
"Divide",
"Coefficient of dividing profile cannot be zero");
526 Int_t bin,binx,biny,binz;
536 for (binx =0;binx<=nx+1;binx++) {
537 for (biny =0;biny<=ny+1;biny++) {
538 for (binz =0;binz<=nz+1;binz++) {
539 bin =
GetBin(binx,biny,binz);
542 if (b2) w = c1*b1/(c2*b2);
572 fSumw2.
fArray[bin] = ac1*ac2*(e1*b2*b2 + e2*b1*b1)/(b22*b22);
590 Int_t bin,binx,biny,binz;
600 if (binx <0 || biny <0 || binz<0)
return -1;
601 bin =
GetBin(binx,biny,binz);
639 Int_t bin,binx,biny,binz;
650 if (binx <0 || biny <0 || binz<0)
return -1;
651 bin =
GetBin(binx,biny,binz);
689 if (bin < 0 || bin >=
fNcells)
return 0;
702 if (bin < 0 || bin >=
fNcells)
return 0;
785 Int_t bin, binx, biny,binz;
788 for (bin=0;bin<
kNstat;bin++) stats[bin] = 0;
795 bin =
GetBin(binx,biny,binz);
857 Error(
"Multiply",
"Function not implemented for TProfile3D");
868 Error(
"Multiply",
"Multiplication of profile2D histograms not implemented");
879 Error(
"Multiply",
"Multiplication of profile2D histograms not implemented");
926 if (pname ==
"_px") {
930 if (xbins->
fN == 0 && ybins->
fN == 0 && zbins->
fN == 0)
931 h1 =
new TH3D(pname,
GetTitle(),nx,
fXaxis.
GetXmin(),
fXaxis.
GetXmax(),
ny,
fYaxis.
GetXmin(),
fYaxis.
GetXmax(),nz,
fZaxis.
GetXmin(),
fZaxis.
GetXmax());
932 else if ( xbins->
fN != 0 && ybins->
fN != 0 && zbins->
fN != 0)
935 Error(
"ProjectionXYZ",
"Histogram has an axis with variable bins and an axis with fixed bins. This case is not supported - return a null pointer");
949 if (computeErrors || binWeight || (binEntries &&
fBinSumw2.
fN) ) h1->
Sumw2();
952 Int_t bin,binx,biny,binz;
954 for (binx =0;binx<=nx+1;binx++) {
955 for (biny =0;biny<=ny+1;biny++) {
956 for (binz =0;binz<=nz+1;binz++) {
957 bin =
GetBin(binx,biny,binz);
1021 bool originalRange,
bool useUF,
bool useOF)
const 1028 if (ixmin == 0 && ixmax == 0) { ixmin = 1; ixmax = projX->
GetNbins(); }
1029 if (iymin == 0 && iymax == 0) { iymin = 1; iymax = projY->
GetNbins(); }
1040 if ( originalRange ) {
1041 if (xbins->
fN == 0 && ybins->
fN == 0) {
1048 if (xbins->
fN == 0 && ybins->
fN == 0) {
1058 if (useWeights) p2->
Sumw2();
1076 TH2D * h2W =
TH3::DoProject2D(*h3dW,
"htemp-W",
"",projX_hW, projY_hW,
true, originalRange, useUF, useOF);
1077 TH2D * h2N =
TH3::DoProject2D(*h3dN,
"htemp-N",
"",projX_hN, projY_hN, useWeights, originalRange, useUF, useOF);
1085 for (
int i = 0; i < p2->
fN ; ++i) {
1160 out <<
" "<<std::endl;
1176 out <<
");" << std::endl;
1181 for (bin=0;bin<
fNcells;bin++) {
1184 out<<
" "<<
GetName()<<
"->SetBinEntries("<<bin<<
","<<bi<<
");"<<std::endl;
1188 for (bin=0;bin<
fNcells;bin++) {
1191 out<<
" "<<
GetName()<<
"->SetBinContent("<<bin<<
","<<bc<<
");"<<std::endl;
1196 for (bin=0;bin<
fNcells;bin++) {
1199 out<<
" "<<
GetName()<<
"->SetBinError("<<bin<<
","<<be<<
");"<<std::endl;
1232 TH1::SetBins(nx, xmin, xmax, ny, ymin, ymax, nz, zmin, zmax);
1268 if (buffersize <= 0) {
1272 if (buffersize < 100) buffersize = 100;
TArrayD()
Default TArrayD ctor.
virtual const char * GetName() const
Returns name of object.
static void SetBinEntries(T *p, Int_t bin, Double_t w)
static void Scale(T *p, Double_t c1, Option_t *option)
virtual Double_t GetEffectiveEntries() const
Number of effective entries of the histogram.
virtual Double_t GetBinError(Int_t bin) const
Return bin error of a Profile3D histogram.
virtual void SetBinEntries(Int_t bin, Double_t w)
Set the number of entries in bin.
virtual void SetBuffer(Int_t buffersize, Option_t *opt="")
Set the buffer size in units of 8 bytes (double).
Int_t GetFirst() const
Return first bin on the axis i.e.
virtual TH3D * ProjectionXYZ(const char *name="_pxyz", Option_t *option="e") const
Project this profile3D into a 3-D histogram along X,Y,Z.
virtual TProfile2D * DoProjectProfile2D(const char *name, const char *title, const TAxis *projX, const TAxis *projY, bool originalRange, bool useUF, bool useOF) const
Internal method to project to a 2D Profile.
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
virtual void Sumw2(Bool_t flag=kTRUE)
Create/Delete structure to store sum of squares of weights per bin.
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this profile2D by a constant c1.
static Double_t GetBinError(T *p, Int_t bin)
Option_t * GetErrorOption() const
Return option to compute profile2D errors.
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
virtual void Sumw2(Bool_t flag=kTRUE)
Create/Delete structure to store sum of squares of weights per bin This is needed to compute the corr...
TAxis fYaxis
Y axis descriptor.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content.
static void SetErrorOption(T *p, Option_t *opt)
const Double_t * GetArray() const
Bool_t TestBit(UInt_t f) const
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
virtual ~TProfile3D()
Default destructor for Profile3D histograms.
static Bool_t fgStatOverflows
!flag to use under/overflows in statistics
virtual Double_t GetBinEntries(Int_t bin) const
Return bin entries of a Profile3D histogram.
virtual Int_t BufferFill(Double_t, Double_t)
accumulate arguments in buffer.
virtual Int_t GetBin(Int_t binx, Int_t biny, Int_t binz) const
See comments in TH1::GetBin.
void ToUpper()
Change string to upper case.
virtual Int_t GetNbinsZ() const
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
static THLimitsFinder * GetLimitsFinder()
Return pointer to the current finder.
void BuildOptions(Double_t tmin, Double_t tmax, Option_t *option)
Set Profile3D histogram structure and options.
void ToLower()
Change string to lower-case.
Profile3D histograms are used to display the mean value of T and its RMS for each cell in X...
Histogram is forced to be not weighted even when the histogram is filled with weighted different than...
TArrayD fSumw2
Array of sum of squares of weights.
virtual TProfile2D * Project3DProfile(Option_t *option="xy") const
Project a 3-D profile into a 2D-profile histogram depending on the option parameter.
virtual TProfile2D * Project3DProfile(Option_t *option="xy") const
Project a 3-d histogram into a 2-d profile histograms depending on the option parameter option may co...
virtual Int_t FindGoodLimits(TH1 *h, Double_t xmin, Double_t xmax)
compute the best axis limits for the X axis.
TAxis fZaxis
Z axis descriptor.
Double_t fTsumwx2
Total Sum of weight*X*X.
virtual Bool_t CanExtendAllAxes() const
Returns true if all axes are extendable.
virtual Bool_t Multiply(TF1 *h1, Double_t c1=1)
Performs the operation: this = this*c1*f1 .
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
static void BuildArray(T *p)
virtual TH2D * DoProject2D(const char *name, const char *title, const TAxis *projX, const TAxis *projY, bool computeErrors, bool originalRange, bool useUF, bool useOF) const
internal method performing the projection to a 2D histogram called from TH3::Project3D ...
virtual const char * ClassName() const
Returns name of class to which the object belongs.
static Bool_t fgApproximate
virtual void GetStats(Double_t *stats) const
fill the array stats from the contents of this profile.
static double p2(double t, double a, double b, double c)
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
Double_t fTsumwt
True when TProfile3D::Scale is called.
TString & Append(const char *cs)
static T * ExtendAxis(T *p, Double_t x, TAxis *axis)
virtual void Copy(TObject &hnew) const
Copy a Profile3D histogram to a new profile2D histogram.
virtual Double_t GetBinContent(Int_t bin) const
Return bin content of a Profile3D histogram.
virtual TArrayD * GetSumw2()
virtual void SetBinError(Int_t bin, Double_t error)
See convention for numbering bins in TH1::GetBin.
Double_t fTsumwx
Total Sum of weight*X.
static void Approximate(Bool_t approx=kTRUE)
Set the fgApproximate flag.
Int_t GetLast() const
Return last bin on the axis i.e.
Class to manage histogram axis.
tomato 3-D histogram with a double per channel (see TH1 documentation)}
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Int_t Fill(const Double_t *v)
Collection abstract base class.
static Int_t fgBufferSize
!default buffer size for automatic histograms
Double_t fEntries
Number of entries.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
virtual Bool_t Add(TF1 *h1, Double_t c1=1, Option_t *option="")
Performs the operation: this = this + c1*f1 .
static double p1(double t, double a, double b)
virtual Long64_t Merge(TCollection *list)
Merge all histograms in the collection in this histogram.
virtual void SetErrorOption(Option_t *option="")
Set option to compute profile3D errors.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
static Bool_t Add(T *p, const TH1 *h1, const TH1 *h2, Double_t c1, Double_t c2=1)
virtual Double_t GetBinEffectiveEntries(Int_t bin)
Return bin effective entries for a weighted filled Profile histogram.
Double_t fTsumw2
Total Sum of squares of weights.
TProfile3D()
Default constructor for Profile3D histograms.
virtual void PutStats(Double_t *stats)
Replace current statistics with the values in array stats.
virtual void SavePrimitiveHelp(std::ostream &out, const char *hname, Option_t *option="")
Helper function for the SavePrimitive functions from TH1 or classes derived from TH1, eg TProfile, TProfile2D.
Double_t fTsumw
Total Sum of weights.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow Reallocate bin contents array.
static Double_t GetBinEffectiveEntries(T *p, Int_t bin)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
void SetBins(const Int_t *nbins, const Double_t *range)
virtual void SetBinEntries(Int_t bin, Double_t w)
Set the number of entries in bin.
Profile2D histograms are used to display the mean value of Z and its RMS for each cell in X...
Array of doubles (64 bits per element).
virtual void Copy(TObject &hnew) const
Copy this 3-D histogram structure to newth3.
virtual void SetBinsLength(Int_t n=-1)
Set total number of bins including under/overflow.
Mother of all ROOT objects.
you should not use this method at all Int_t Int_t z
Int_t fBufferSize
fBuffer size
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
virtual Int_t BufferEmpty(Int_t action=0)
Fill histogram with all entries in the buffer.
virtual void SetEntries(Double_t n)
virtual void ExtendAxis(Double_t x, TAxis *axis)
Profile histogram is resized along axis such that x is in the axis range.
TAxis fXaxis
X axis descriptor.
static void Sumw2(T *p, Bool_t flag)
virtual Int_t GetNbinsX() const
Double_t Sqrt(Double_t x)
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual const char * GetName() const
Returns name of object.
Double_t * fBuffer
[fBufferSize] entry buffer
void Set(Int_t n)
Set size of this array to n doubles.
void Copy(TArrayD &array) const
static Long64_t Merge(T *p, TCollection *list)
const TArrayD * GetXbins() const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual const char * GetTitle() const
Returns title of object.
virtual Int_t GetNbinsY() const
virtual Bool_t Divide(TF1 *h1, Double_t c1=1)
Performs the operation: this = this/(c1*f1) .
Int_t fNcells
number of bins(1D), cells (2D) +U/Overflows
tomato 2-D histogram with a double per channel (see TH1 documentation)}
virtual TArrayD * GetBinSumw2()