65 Init(1, 0, 0.5, 0.5, 0.4);
75 Init(npoints, 0, 0.5, 0.5, 0.4);
95 Init(npoints, 0, 0.5, 0.5, 0.4);
110 Init(npoints, 0, 0.5, 0.5, 0.4);
124 const TAxis *axis =
h->GetXaxis();
128 Init(np, 0, 0.5, 0.5, 0.4);
236 if ( ((ang>=phimin && ang <= phimax) || (phimax>
TMath::TwoPi() &&
247 if (dist<.95 && dist>.65) {
256 if (lang/range<.25 || rang/range<.25) {
281 if (soption.
Length()==0) soption =
"l";
284 if (!
gPad->IsEditable())
gROOT->MakeDefCanvas();
287 gPad->Range(0.,0.,1.,1.);
323 Double_t dphi = (maxphi-minphi)/ndiv;
325 if (dphi>.15) ndiv = (
Int_t) ((maxphi-minphi)/.15);
326 dphi = (maxphi-minphi)/ndiv;
329 for (
Int_t j=0;j<ndiv;++j) {
339 gPad->XtoAbsPixel(x0),
gPad->YtoAbsPixel(y0) );
342 gPad->YtoAbsPixel(y0),
343 gPad->XtoAbsPixel(x0),
372 Double_t dphi = (maxphi-minphi)/ndiv;
374 if (dphi>.15) ndiv = (
Int_t) ((maxphi-minphi)/.15);
375 dphi = (maxphi-minphi)/ndiv;
378 for (
Int_t j=0;j<ndiv;++j) {
388 gPad->XtoAbsPixel(x0),
gPad->YtoAbsPixel(y0) );
407 static bool isMovingPie(
kFALSE);
408 static bool isMovingSlice(
kFALSE);
409 static bool isResizing(
kFALSE);
410 static bool isRotating(
kFALSE);
411 static bool onBorder(
kFALSE);
413 static Int_t prev_event(-1);
414 static Int_t oldpx, oldpy;
458 && !isMovingPie && !isMovingSlice && !isResizing) {
482 }
else if (gCurrent_rad<=fRadius*.6 && gCurrent_rad>=
fRadius*.3) {
488 if (isMovingPie || isMovingSlice)
gPad->SetCursor(
kMove);
493 if (!isMovingSlice || !isMovingPie || !isResizing || !isRotating) {
498 isMovingSlice =
kTRUE;
501 }
else if (gCurrent_rad<fRadius*.6 && gCurrent_rad>
fRadius*.3) {
510 mdx =
gPad->PixeltoX(dx);
511 mdy =
gPad->PixeltoY(dy);
513 if (isMovingPie || isMovingSlice) {
533 }
else if (isResizing) {
544 }
else if (isRotating) {
564 if ( ((isMovingPie || isMovingSlice || isRotating) &&
gPad->OpaqueMoving()) ||
565 (isResizing &&
gPad->OpaqueResizing()) ) {
578 if (
gROOT->IsEscaped()) {
590 if (isRedrawing && (isMovingPie || isMovingSlice))
gPad->SetCursor(
kMove);
592 if (isMovingPie) isMovingPie =
kFALSE;
593 if (isMovingSlice) isMovingSlice =
kFALSE;
594 if (isResizing) isResizing =
kFALSE;
616 event =
gVirtualX->RequestLocator(1, 1, px, py);
826 if ( (idx=soption.
Index(
"same"))>=0 ) {
831 if ( (idx=soption.
Index(
"nol"))>=0 ) {
836 if ( (idx=soption.
Index(
"sc"))>=0 ) {
837 optionSameColor =
kTRUE;
842 if ( (idx=soption.
Index(
"3d"))>=0 ) {
850 if ( (idx=soption.
Index(
"t"))>=0 ) {
856 if ( (idx=soption.
Index(
"r"))>=0 ) {
862 if ( (idx=soption.
Index(
">"))>=0 ) {
868 if ( (idx=soption.
Index(
"<"))>=0 ) {
879 Warning(
"Paint",
"No valid arrays of values");
912 if (optionLine==
kTRUE) {
930 if (optionLine==
kTRUE) {
952 if (optionLine==
kTRUE) {
1017 }
else if (lblor==2) {
1034 if (aphi<0) ly -=
h;
1038 if (rphi < 0 && fIs3D && label_off>=0.)
1051 if (optionSame)
return;
1062 if (title)
delete title;
1070 if (ht<=0) ht = 0.05;
1092 if (talh < 1) talh = 1;
else if (talh > 3) talh = 3;
1094 if (talv < 1) talv = 1;
else if (talv > 3) talv = 3;
1098 if (talh == 2) xpos = xpos-wt/2.;
1099 if (talh == 3) xpos = xpos-wt;
1100 if (talv == 2) ypos = ypos+ht/2.;
1101 if (talv == 1) ypos = ypos+ht;
1103 title =
new TPaveText(xpos,ypos-ht,xpos+wt,ypos,
"blNDC");
1126 out <<
" " << std::endl;
1127 if (
gROOT->ClassSaved(TPie::Class())) {
1133 <<
"\", " <<
fNvals <<
");" << std::endl;
1134 out <<
" " <<
GetName() <<
"->SetCircle(" <<
fX <<
", " <<
fY <<
", "
1135 <<
fRadius <<
");" << std::endl;
1137 <<
"\");" << std::endl;
1139 <<
"\");" << std::endl;
1141 <<
"\");" << std::endl;
1143 <<
");" << std::endl;
1145 <<
");" << std::endl;
1154 out <<
" " <<
GetName() <<
"->GetSlice(" << i <<
")->SetTitle(\""
1156 out <<
" " <<
GetName() <<
"->GetSlice(" << i <<
")->SetValue("
1158 out <<
" " <<
GetName() <<
"->GetSlice(" << i <<
")->SetRadiusOffset("
1160 out <<
" " <<
GetName() <<
"->GetSlice(" << i <<
")->SetFillColor("
1162 out <<
" " <<
GetName() <<
"->GetSlice(" << i <<
")->SetFillStyle("
1164 out <<
" " <<
GetName() <<
"->GetSlice(" << i <<
")->SetLineColor("
1166 out <<
" " <<
GetName() <<
"->GetSlice(" << i <<
")->SetLineStyle("
1168 out <<
" " <<
GetName() <<
"->GetSlice(" << i <<
")->SetLineWidth("
1172 out <<
" " <<
GetName() <<
"->Draw(\"" << option <<
"\");" << std::endl;
1181 while (val>360.) val -= 360.;
1182 while (val<0) val += 360.;
1183 if (val>=90 && val<180) val = 180-val;
1184 else if (val>=180 && val<=360) val = 360-val;
1374 "It's not possible set the radius to a negative value");
1409 if (
fSlices && !force)
return;
1416 "Negative values in TPie, absolute value will be used");
1422 if (
fSum<=.0)
return;
1466 if (merge_threshold>0) {
1485 delete merged_slice;
1491 new_array[0] = merged_slice;
1492 for (
Int_t i=0;i<old_fNvals;++i) {
1509 delete merged_slice;
1515 new_array[
fNvals-1] = merged_slice;
1516 for (
Int_t i=old_fNvals-1;i>=0;--i) {
static const double x2[5]
static const double x1[5]
include TDocParser_001 C image html pict1_TDocParser_001 png width
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
virtual Color_t GetLabelColor() const
virtual Style_t GetLabelFont() const
virtual Float_t GetLabelSize() const
virtual Color_t GetFillColor() const
Return the fill area color.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Float_t GetTextSize() const
Return the text size.
virtual Font_t GetTextFont() const
Return the text font.
virtual Color_t GetTextColor() const
Return the text color.
virtual Float_t GetTextAngle() const
Return the text angle.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Class to manage histogram axis.
const char * GetBinLabel(Int_t bin) const
Return label for bin.
Int_t GetLast() const
Return last bin on the axis i.e.
Int_t GetFirst() const
Return first bin on the axis i.e.
THashList * GetLabels() const
static Int_t GetColorDark(Int_t color)
Static function: Returns the dark color number corresponding to n If the TColor object does not exist...
virtual void PaintEllipse(Double_t x1, Double_t y1, Double_t r1, Double_t r2, Double_t phimin, Double_t phimax, Double_t theta, Option_t *option="")
Draw this ellipse with new coordinates.
TH1 is the base class of all histogram classes in ROOT.
To draw Mathematical Formula.
Double_t GetXsize()
Return size of the formula along X in pad coordinates when the text precision is smaller than 3.
Double_t GetYsize()
Return size of the formula along Y in pad coordinates when the text precision is smaller than 3.
virtual void PaintLatex(Double_t x, Double_t y, Double_t angle, Double_t size, const char *text)
Main drawing function.
This class displays a legend box (TPaveText) containing several legend entries.
virtual void Clear(Option_t *option="")
Clear all entries in this legend, including the header.
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
Use the TLine constructor to create a simple line.
virtual void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
The TNamed class is the base class for all named ROOT classes.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
Mother of all ROOT objects.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
@ kCanDelete
if object in a list can be deleted
A Pave (see TPave) with text, lines or/and boxes inside.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.
virtual void Paint(Option_t *option="")
Paint this pavetext with its current attributes.
virtual TText * GetLine(Int_t number) const
Get Pointer to line number in this pavetext.
virtual void SetName(const char *name="")
virtual void SetBorderSize(Int_t bordersize=4)
Double_t GetX1NDC() const
virtual void SetX2NDC(Double_t x2)
A slice of a piechart, see the TPie class.
void SetValue(Double_t)
Set the value for this slice.
void SetIsActive(Bool_t is)
void SetRadiusOffset(Double_t)
Set the radial offset of this slice.
Double_t GetRadiusOffset()
return the value of the offset in radial direction for this slice.
Double_t GetValue()
Return the value of this slice.
void SetEntryVal(Int_t, Double_t)
Set the value of a slice.
TPieSlice * GetSlice(Int_t i)
Return the reference to the slice of index 'id'.
Float_t fLabelsOffset
LabelsOffset offset of label.
void SetAngularOffset(Double_t)
Set the global angular offset for slices in degree [0,360].
Double_t GetEntryVal(Int_t)
Return the value associated with the slice number "i".
TString fLabelFormat
Format format of the slices' label.
Float_t * fSlices
!Subdivisions of the slices
void SetX(Double_t)
Set X value.
Double_t fAngularOffset
Offset angular offset for the first slice.
void SortSlices(Bool_t amode=kTRUE, Float_t merge_thresold=.0)
This method, mainly intended for internal use, ordered the slices according their values.
void SetEntryFillStyle(Int_t, Int_t)
Set the fill style for the "i" slice.
TPie()
Default constructor.
void SetFractionFormat(const char *)
Set numeric format in the label, is used if the label format there is the modifier frac,...
Float_t fAngle3D
The angle of the pseudo-3d view.
Double_t fHeight
Height of the slice in pixel.
const char * GetPercentFormat()
void SetPercentFormat(const char *)
Set the numeric format for the percent value of a slice, default: %3.1f.
void SetLabels(const char *[])
Set the labels for all the slices.
void SetY(Double_t)
Set Y value.
TLegend * GetLegend()
If created before by Paint option or by MakeLegend method return the pointer to the legend,...
Bool_t fIs3D
! true if the pseudo-3d is enabled
void Init(Int_t np, Double_t ao, Double_t x, Double_t y, Double_t r)
Common initialization for all constructors.
Int_t GetEntryFillColor(Int_t)
Return the color of the slice number "i".
void SetLabelsOffset(Float_t)
Set the distance between the label end the external line of the TPie.
virtual void Draw(Option_t *option="l")
Draw the pie chart.
void SetEntryRadiusOffset(Int_t, Double_t)
Set the distance, in the direction of the radius of the slice.
Double_t GetAngularOffset()
void SavePrimitive(std::ostream &out, Option_t *opts="")
Save primitive as a C++ statement(s) on output stream out.
void DrawGhost()
This method is for internal use.
Float_t GetLabelsOffset()
TLegend * fLegend
!Legend for this piechart
void SetLabelFormat(const char *)
This method is used to customize the label format.
Double_t fRadius
Radius Pie radius.
TPieSlice ** fPieSlices
[fNvals] Slice array of this pie-chart
void SetEntryLineStyle(Int_t, Int_t)
Set the style for the slice's outline. "i" is the slice number.
void MakeSlices(Bool_t force=kFALSE)
Make the slices.
void SetEntryFillColor(Int_t, Int_t)
Set the color for the slice "i".
void SetEntryLineWidth(Int_t, Int_t)
Set the width of the slice's outline. "i" is the slice number.
const char * GetLabelFormat()
void SetCircle(Double_t x=.5, Double_t y=.5, Double_t rad=.4)
Set the coordinates of the circle that describe the pie:
const char * GetEntryLabel(Int_t)
Returns the label of the entry number "i".
TString fValueFormat
Vform numeric format for the value.
TString fFractionFormat
Rform numeric format for the fraction of a slice.
virtual void Paint(Option_t *)
Paint a Pie chart in a canvas.
void SetAngle3D(Float_t val=30.)
Set the value of for the pseudo 3D view angle, in degree.
Double_t GetEntryRadiusOffset(Int_t)
Return the radial offset's value for the slice number "i".
Int_t GetEntryFillStyle(Int_t)
Return the style use to fill the slice number "i".
const char * GetValueFormat()
void SetRadius(Double_t)
Set the pie chart's radius' value.
TString fPercentFormat
Pfrom numeric format for the percent of a slice.
TLegend * MakeLegend(Double_t x1=.65, Double_t y1=.65, Double_t x2=.95, Double_t y2=.95, const char *leg_header="")
This method create a legend that explains the contents of the slice for this pie-chart.
virtual void ExecuteEvent(Int_t, Int_t, Int_t)
Execute the mouse events.
Int_t fNvals
Number of elements.
Int_t DistancetoSlice(Int_t, Int_t)
Returns the slice number at the pixel position (px,py).
Int_t GetEntryLineStyle(Int_t)
Return the style used to outline thi "i" slice.
Float_t fSum
!Sum for the slice values
Double_t fY
Y coordinate of the pie centre.
void SetEntryLabel(Int_t, const char *text="Slice")
Set slice number "i" label.
Double_t fX
X coordinate of the pie centre.
void SetHeight(Double_t val=.08)
Set the height, in pixel, for the piechart if is drawn using the pseudo-3d mode.
Int_t GetEntryLineWidth(Int_t)
Return the line width used to outline thi "i" slice.
Int_t GetEntryLineColor(Int_t)
Return the line color used to outline thi "i" slice.
void SetValueFormat(const char *)
Set the numeric format the slices' values.
void SetEntryLineColor(Int_t, Int_t)
Set the color for the slice's outline. "i" is the slice number.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Evaluate the distance to the chart in gPad.
void SetFillColors(Int_t *)
Set the fill colors for all the TPie's slices.
void ToLower()
Change string to lower-case.
void Clear()
Clear string without changing its capacity.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
TString & Remove(Ssiz_t pos)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Float_t GetTitleX() const
Int_t GetOptTitle() const
Float_t GetTitleY() const
Style_t GetTitleFont(Option_t *axis="X") const
Return title font.
Color_t GetTitleFillColor() const
Style_t GetTitleStyle() const
Float_t GetLabelOffset(Option_t *axis="X") const
Return label offset.
Width_t GetTitleBorderSize() const
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
Color_t GetTitleTextColor() const
Float_t GetTitleH() const
Float_t GetTitleFontSize() const
Float_t GetTitleW() const
Base class for several text objects.
Short_t Max(Short_t a, Short_t b)
constexpr Double_t PiOver2()
Double_t ATan2(Double_t y, Double_t x)
Double_t Sqrt(Double_t x)
Short_t Min(Short_t a, Short_t b)
constexpr Double_t PiOver4()
constexpr Double_t TwoPi()