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 strncpy(brOpen,
" ",brClose-brOpen+1);
301 sprintf(
fOptionStr,
"CANDLE%c(%ld)",direction,(
long)fOption);
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 strncpy(brOpen,
" ",brClose-brOpen+1);
359 sprintf(
fOptionStr,
"VIOLIN%c(%ld)",direction,(
long)fOption);
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]) {
472 if (myData < fWhiskerDown && myData >= fBoxDown - 1.5*iqr)
fWhiskerDown = myData;
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);
906 gPad->PaintLine(x1, y1, x2, y2);
908 gPad->PaintLine(y1, x1, y2, x2);
915 void TCandle::Streamer(
TBuffer &R__b)
944 fMean = axisMinCoord + ((
fMean-
a)/b)*(axisMaxCoord-axisMinCoord);
947 fBoxUp = axisMinCoord + ((
fBoxUp-
a)/b)*(axisMaxCoord-axisMinCoord);
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
Return Global bin number corresponding to x,y,z.
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
TCandle()
TCandle default constructor.
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 WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
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.
If this bit is not set it is vertical.
Double_t fWhiskerUp
Position of the upper whisker end.
bool IsOption(CandleOption opt)
Return true is this option is activated in fOption.
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
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...
Buffer base class used for serializing objects.
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.
int ParseOption(char *optin)
Parsing of the option-string.
static Bool_t fScaledCandle
shall the box-width be scaled to each other by the integral of a box?
Double_t fAxisMin
The Minimum which is visible by the axis (used by zero indicator)
Double_t * fDatapoints
position of all Datapoints within this candle
Double_t fDrawPointsX[kNMAXPOINTS]
x-coord for every outlier, ..
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual void Modify()
Change current line attributes if necessary.
void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Bool_t swapXY)
Paint a line for candle.
Double_t fMean
Position of the mean.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual Style_t GetLineStyle() const
Return the line style.
static const double x2[5]
Fill Area Attributes class.
Double_t fHistoWidth
The histo width (the height of the max bin)
Double_t fCandleWidth
The candle width.
int fLogX
make the candle appear logx-like
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)
virtual void Modify()
Change current fill area attributes if necessary.
void PaintBox(Int_t nPoints, Double_t *x, Double_t *y, Bool_t swapXY)
Paint a box for candle.
Double_t Log10(Double_t x)
static Bool_t fScaledViolin
shall the violin or histos be scaled to each other by the maximum height?
Double_t fDrawPointsY[kNMAXPOINTS]
y-coord for every outlier, ..
void Error(const char *location, const char *msgfmt,...)
Double_t fHistoPointsX[kNMAXPOINTS]
x-coord for the polyline of the histo
Double_t fBoxDown
Position of the lower box end.
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...
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void Modify()
Change current marker attributes if necessary.
Double_t fBoxUp
Position of the upper box end.
int fLogY
make the candle appear logy-like
The candle plot painter class.
void Calculate()
Calculates all values needed by the candle definition depending on the candle options.
Double_t fAxisMax
The Maximum which is visible by the axis (used by zero indicator)
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
1-D histogram with a double per channel (see TH1 documentation)}
constexpr Double_t E()
Base of natural log: .
virtual void Paint(Option_t *option="")
Paint one candle with its current attributes.
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...
virtual Color_t GetLineColor() const
Return the line color.
bool fDismiss
True if the candle cannot be painted.
static void SetScaledCandle(const Bool_t cScale=true)
Static function to set scaling between candles-withs.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
static Double_t fWhiskerRange
The fraction which is covered by the whiskers (0 < x < 1), default 1.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Double_t Rndm()
TausWorth generator from L'Ecuyer, uses as seed 3x32bits integers Use a mask of 0xffffffffUL to make ...
static const double x1[5]
virtual TH1 * RebinX(Int_t ngroup=2, const char *newname="")
char fOptionStr[128]
String to draw the candle.
CandleOption fOption
Setting the style of the candle.
Double_t fMedianErr
The size of the notch.
Double_t fHistoPointsY[kNMAXPOINTS]
y-coord for the polyline of the histo
virtual Color_t GetFillColor() const
Return the fill area color.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
virtual Double_t GetEntries() const
Return the current number of entries.
int GetCandleOption(const int pos)
Long64_t fNDrawPoints
max number of outliers or other point to be shown
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
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 void SetScaledViolin(const Bool_t vScale=true)
Static function to set scaling between violin-withs.
Double_t fWhiskerDown
Position of the lower whisker end.
Double_t fPosCandleAxis
x-pos for a vertical candle
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
THist< 1, double, THistStatContent, THistStatUncertainty > TH1D
virtual ~TCandle()
TCandle default destructor.
bool fIsRaw
0: for TH1 projection, 1: using raw data
virtual Int_t GetNbinsX() const
virtual Style_t GetFillStyle() const
Return the fill area style.
int fLogZ
make the candle appear logz-like
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
Long64_t fNDatapoints
Number of Datapoints within this candle.