103 strlcpy(myopt,opt,128);
248 l = strstr(opt,
"CANDLE");
252 char direction =
' ';
257 if (
l[6] >=
'A' &&
l[6] <=
'Z') direction =
l[6];
258 if (
l[6] >=
'1' &&
l[6] <=
'9') preset =
l[6];
259 if (
l[7] >=
'A' &&
l[7] <=
'Z' && preset !=
' ') direction =
l[7];
260 if (
l[7] >=
'1' &&
l[7] <=
'9' && direction !=
' ') preset =
l[7];
262 if (direction ==
'X' || direction ==
'V') { }
266 else if (preset ==
'2')
268 else if (preset ==
'3')
270 else if (preset ==
'4')
272 else if (preset ==
'5')
274 else if (preset ==
'6')
276 else if (preset !=
' ')
279 if (preset !=
' ' && direction !=
' ')
281 else if (preset !=
' ' || direction !=
' ')
286 Bool_t useIndivOption =
false;
288 if (direction ==
' ') direction =
'X';
290 char *brOpen = strstr(opt,
"(");
291 char *brClose = strstr(opt,
")");
292 char indivOption[32];
293 if (brOpen && brClose) {
294 useIndivOption =
true;
296 strlcpy(indivOption, brOpen, brClose-brOpen+2);
297 sscanf(indivOption,
"(%d)", (
int*) &
fOption);
299 memcpy(brOpen,
" ",brClose-brOpen+1);
307 sprintf(
fOptionStr,
"CANDLE%c%c",direction,preset);
310 if (!useIndivOption && !
fOption ) {
316 l = strstr(opt,
"VIOLIN");
320 char direction =
' ';
323 if (
l[6] >=
'A' &&
l[6] <=
'Z') direction =
l[6];
324 if (
l[6] >=
'1' &&
l[6] <=
'9') preset =
l[6];
325 if (
l[7] >=
'A' &&
l[7] <=
'Z' && preset !=
' ') direction =
l[7];
326 if (
l[7] >=
'1' &&
l[7] <=
'9' && direction !=
' ') preset =
l[7];
328 if (direction ==
'X' || direction ==
'V') { }
332 else if (preset ==
'2')
334 else if (preset !=
' ')
337 if (preset !=
' ' && direction !=
' ')
339 else if (preset !=
' ' || direction !=
' ')
344 Bool_t useIndivOption =
false;
346 if (direction ==
' ') direction =
'X';
348 char *brOpen = strstr(opt,
"(");
349 char *brClose = strstr(opt,
")");
350 char indivOption[32];
351 if (brOpen && brClose) {
352 useIndivOption =
true;
354 strlcpy(indivOption, brOpen, brClose-brOpen +2);
355 sscanf(indivOption,
"(%d)", (
int*) &
fOption);
357 memcpy(brOpen,
" ",brClose-brOpen+1);
366 sprintf(
fOptionStr,
"VIOLIN%c%c",direction,preset);
369 if (!useIndivOption && !
fOption ) {
421 quantiles[0]=0.; quantiles[1]=0.; quantiles[2] = 0.; quantiles[3] = 0.; quantiles[4] = 0.;
438 if (quantiles[0] >= quantiles[4] ||
439 quantiles[1] >= quantiles[3]) {
510 if (scaledBinContent >0 && scaledBinContent < 1) scaledBinContent = 1;
511 for (
int j=0; j < (int)scaledBinContent; j++) {
518 if ((
int)scaledBinContent == 1)
541 Error (
"PaintCandlePlot",
"Not possible to draw all outliers.");
548 myScale = nOutliers/(maxOutliers/2.);
556 if (!(i % (
int) myScale == 0 ))
continue;
584 Error (
"PaintCandlePlotRaw",
"Not possible to draw all outliers.");
595 fProj =
new TH1D(
"hpa",
"hpa",100,min,max+0.0001*(max-min));
629 if (myBinValue > 0) myBinValue =
TMath::Log10(myBinValue);
else myBinValue = 0;
729 dimRight, dimRight-
fCandleWidth/3., dimRight, dimRight, dimLeft};
734 Double_t x[] = {dimLeft, dimLeft, dimRight, dimRight, dimLeft};
762 Double_t myMedianX[1], myMedianY[1];
773 if (myMedianX[0] > 0) myMedianX[0] =
TMath::Log10(myMedianX[0]);
else isValid =
false;
776 if (myMedianY[0] > 0) myMedianY[0] =
TMath::Log10(myMedianY[0]);
else isValid =
false;
782 if (isValid)
gPad->PaintPolyMarker(1,myMedianX,myMedianY);
801 if (myMeanX[0] > 0) myMeanX[0] =
TMath::Log10(myMeanX[0]);
else isValid =
false;
804 if (myMeanY[0] > 0) myMeanY[0] =
TMath::Log10(myMeanY[0]);
else isValid =
false;
810 if (isValid)
gPad->PaintPolyMarker(1,myMeanX,myMeanY);
852 for (pos = 0; pos < 16; pos++) {
853 if (myOpt > opt)
break;
859 return ((thisOpt * myOpt) == opt);
870 for (
int i=0; i<nPoints; i++) {
876 for (
int i=0; i<nPoints; i++) {
882 gPad->PaintFillArea(nPoints,
x,
y);
883 gPad->PaintPolyLine(nPoints,
x,
y);
885 gPad->PaintFillArea(nPoints,
y,
x);
886 gPad->PaintPolyLine(nPoints,
y,
x);
915void TCandle::Streamer(
TBuffer &R__b)
944 fMean = axisMinCoord + ((
fMean-
a)/
b)*(axisMaxCoord-axisMinCoord);
947 fBoxUp = axisMinCoord + ((
fBoxUp-
a)/
b)*(axisMaxCoord-axisMinCoord);
static const double x2[5]
static const double x1[5]
void Error(const char *location, const char *msgfmt,...)
Fill Area Attributes class.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void Modify()
Change current fill area attributes if necessary.
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
virtual void Modify()
Change current line attributes if necessary.
virtual void Modify()
Change current marker attributes if necessary.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Buffer base class used for serializing objects.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
The candle plot painter class.
Double_t fMedian
Position of the median.
static Double_t fBoxRange
The fraction which is covered by the box (0 < x < 1), default 0.5.
@ kHorizontal
If this bit is not set it is vertical.
static void SetScaledViolin(const Bool_t vScale=true)
Static function to set scaling between violin-withs.
bool fIsRaw
0: for TH1 projection, 1: using raw data
static Double_t fWhiskerRange
The fraction which is covered by the whiskers (0 < x < 1), default 1.
CandleOption fOption
Setting the style of the candle.
Double_t fAxisMax
The Maximum which is visible by the axis (used by zero indicator)
int fLogZ
make the candle appear logz-like
bool IsOption(CandleOption opt)
Return true is this option is activated in fOption.
Double_t fPosCandleAxis
x-pos for a vertical candle
Double_t fMean
Position of the mean.
Double_t fWhiskerDown
Position of the lower whisker end.
Long64_t fNDrawPoints
max number of outliers or other point to be shown
virtual void Paint(Option_t *option="")
Paint one candle with its current attributes.
Double_t fAxisMin
The Minimum which is visible by the axis (used by zero indicator)
void ConvertToPadCoords(Double_t minAxis, Double_t maxAxis, Double_t axisMinCoord, Double_t axisMaxCoord)
The coordinates in the TParallelCoordVar-class are in Pad-Coordinates, so we need to convert them.
Double_t fDrawPointsY[kNMAXPOINTS]
y-coord for every outlier, ..
Long64_t fNDatapoints
Number of Datapoints within this candle.
Double_t fHistoPointsY[kNMAXPOINTS]
y-coord for the polyline of the histo
Double_t fHistoPointsX[kNMAXPOINTS]
x-coord for the polyline of the histo
static void SetScaledCandle(const Bool_t cScale=true)
Static function to set scaling between candles-withs.
Double_t * fDatapoints
position of all Datapoints within this candle
int ParseOption(char *optin)
Parsing of the option-string.
bool fDismiss
True if the candle cannot be painted.
Double_t fWhiskerUp
Position of the upper whisker end.
static void SetBoxRange(const Double_t bRange)
Static function to set fBoxRange, by setting whisker-range, one can force the box of the candle-chart...
static Bool_t fScaledViolin
shall the violin or histos be scaled to each other by the maximum height?
int fLogY
make the candle appear logy-like
Double_t fMedianErr
The size of the notch.
void PaintBox(Int_t nPoints, Double_t *x, Double_t *y, Bool_t swapXY)
Paint a box for candle.
Double_t fBoxUp
Position of the upper box end.
virtual ~TCandle()
TCandle default destructor.
int fLogX
make the candle appear logx-like
Double_t fDrawPointsX[kNMAXPOINTS]
x-coord for every outlier, ..
TCandle()
TCandle default constructor.
Double_t fBoxDown
Position of the lower box end.
void Calculate()
Calculates all values needed by the candle definition depending on the candle options.
void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Bool_t swapXY)
Paint a line for candle.
Double_t fHistoWidth
The histo width (the height of the max bin)
int GetCandleOption(const int pos)
static void SetWhiskerRange(const Double_t wRange)
Static function to set fWhiskerRange, by setting whisker-range, one can force the whiskers to cover t...
static Bool_t fScaledCandle
shall the box-width be scaled to each other by the integral of a box?
char fOptionStr[128]
String to draw the candle.
Double_t fCandleWidth
The candle width.
1-D histogram with a double per channel (see TH1 documentation)}
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
virtual Int_t GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum=0)
Compute Quantiles for this histogram Quantile x_q of a probability distribution Function F is defined...
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual Int_t GetNbinsX() const
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
virtual TH1 * RebinX(Int_t ngroup=2, const char *newname="")
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual Double_t GetEntries() const
Return the current number of entries.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z.
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
virtual Double_t Rndm()
TausWorth generator from L'Ecuyer, uses as seed 3x32bits integers Use a mask of 0xffffffffUL to make ...
constexpr Double_t E()
Base of natural log:
void Quantiles(Int_t n, Int_t nprob, Double_t *x, Double_t *quantiles, Double_t *prob, Bool_t isSorted=kTRUE, Int_t *index=0, Int_t type=7)
Computes sample quantiles, corresponding to the given probabilities.
Double_t Log10(Double_t x)