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");
928 if (pname ==
"_px") {
932 if (xbins->
fN == 0 && ybins->
fN == 0 && zbins->
fN == 0)
933 h1 =
new TH3D(pname,
GetTitle(),nx,
fXaxis.
GetXmin(),
fXaxis.
GetXmax(),ny,
fYaxis.
GetXmin(),
fYaxis.
GetXmax(),nz,
fZaxis.
GetXmin(),
fZaxis.
GetXmax());
934 else if ( xbins->
fN != 0 && ybins->
fN != 0 && zbins->
fN != 0)
937 Error(
"ProjectionXYZ",
"Histogram has an axis with variable bins and an axis with fixed bins. This case is not supported - return a null pointer");
951 if (computeErrors || binWeight || (binEntries &&
fBinSumw2.
fN) ) h1->
Sumw2();
954 Int_t bin,binx,biny,binz;
956 for (binx =0;binx<=nx+1;binx++) {
957 for (biny =0;biny<=ny+1;biny++) {
958 for (binz =0;binz<=nz+1;binz++) {
959 bin =
GetBin(binx,biny,binz);
1023 bool originalRange,
bool useUF,
bool useOF)
const 1030 if (ixmin == 0 && ixmax == 0) { ixmin = 1; ixmax = projX->
GetNbins(); }
1031 if (iymin == 0 && iymax == 0) { iymin = 1; iymax = projY->
GetNbins(); }
1032 Int_t nx = ixmax-ixmin+1;
1033 Int_t ny = iymax-iymin+1;
1042 if ( originalRange ) {
1043 if (xbins->
fN == 0 && ybins->
fN == 0) {
1050 if (xbins->
fN == 0 && ybins->
fN == 0) {
1060 if (useWeights) p2->
Sumw2();
1095 TH2D * h2W =
TH3::DoProject2D(*h3dW,
"htemp-W",
"",projX_hW, projY_hW,
true, originalRange, useUF, useOF);
1096 TH2D * h2N =
TH3::DoProject2D(*h3dN,
"htemp-N",
"",projX_hN, projY_hN, useWeights, originalRange, useUF, useOF);
1104 for (
int i = 0; i < p2->
fN ; ++i) {
1179 out <<
" "<<std::endl;
1195 out <<
");" << std::endl;
1200 for (bin=0;bin<
fNcells;bin++) {
1203 out<<
" "<<
GetName()<<
"->SetBinEntries("<<bin<<
","<<bi<<
");"<<std::endl;
1207 for (bin=0;bin<
fNcells;bin++) {
1210 out<<
" "<<
GetName()<<
"->SetBinContent("<<bin<<
","<<bc<<
");"<<std::endl;
1215 for (bin=0;bin<
fNcells;bin++) {
1218 out<<
" "<<
GetName()<<
"->SetBinError("<<bin<<
","<<be<<
");"<<std::endl;
1251 TH1::SetBins(nx, xmin, xmax, ny, ymin, ymax, nz, zmin, zmax);
1287 if (buffersize <= 0) {
1291 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 GetStatOverflowsBehaviour() const
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
virtual ~TProfile3D()
Default destructor for Profile3D histograms.
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.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
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...
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)
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the non-empt...
Double_t fTsumwx
Total Sum of weight*X.
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis from bin first to last.
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.
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)
Histogram is forced to be not weighted even when the histogram is filled with weighted different than...
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.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
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
2-D histogram with a double per channel (see TH1 documentation)}
virtual TArrayD * GetBinSumw2()