54 fNbins =
new Int_t[fValSize];
55 fVarMultiple =
new Bool_t[fValSize];
57 for (
Int_t i = 0; i < fValSize; ++i) {
78 fCurrentSubEntry = -1;
115 const char *varexp0 = obj ? obj->
GetTitle() :
"";
117 const char *selection = obj ? obj->
GetTitle() :
"";
121 char *hdefault = (
char *)
"htemp";
122 char *varexp =
nullptr;
143 if (opt.
Contains(
"entrylistarray")) {
144 optEnlistArray =
kTRUE;
162 TCut realSelection(selection);
166 if (evlist && inElist) {
181 realSelection *= inElist->
GetTitle();
195 if (optSame) canExtend =
kFALSE;
197 Int_t nbinsx = 0, nbinsy = 0, nbinsz = 0;
202 char *hnamealloc = 0;
204 if (varexp0 && strlen(varexp0)) {
205 for (
UInt_t k = strlen(varexp0) - 1; k > 0; k--) {
206 if (varexp0[k] ==
'>' && varexp0[k-1] ==
'>') {
207 i = (int)(&(varexp0[k-1]) - varexp0);
208 hnamealloc =
new char[strlen(&(varexp0[k+1])) + 1];
210 strcpy(hname, &(varexp0[k+1]));
218 varexp =
new char[i+1];
221 while (*hname ==
' ') hname++;
225 while (*hname ==
' ') hname++;
227 j = strlen(hname) - 1;
229 if (hname[j] !=
' ')
break;
235 strlcpy(varexp,varexp0,i+1);
237 Int_t mustdelete = 0;
254 const Int_t maxvalues = 9;
256 pstart = strchr(hname,
'(');
257 pend = strchr(hname,
')');
263 if (pstart == strrchr(hname,
'(') && pend == strrchr(hname,
')')) {
268 cdummy = strchr(&cdummy[1],
',');
269 while (cdummy != 0) {
270 cdummy = strchr(&cdummy[1],
',');
274 if (ncomma + 1 > maxvalues) {
275 Error(
"DrawSelect",
"ncomma+1>maxvalues, ncomma=%d, maxvalues=%d", ncomma, maxvalues);
276 ncomma = maxvalues - 1;
284 for (j = 0; j < i; j++) {
286 && !((j > 0 && varexp[j-1] ==
':') || varexp[j+1] ==
':')
292 Error(
"DrawSelect",
"ncols > 3, ncols=%d", ncols);
297 if (ncols * 3 < ncomma) {
298 Error(
"DrawSelect",
"ncols*3 < ncomma ncols=%d, ncomma=%d", ncols, ncomma);
303 for (j = 0; j < ncomma; j++) {
305 if (sscanf(cdummy,
" %lf ", &value) == 1) {
306 cdummy = strchr(&cdummy[1],
',');
310 nbinsx = (
Int_t)value;
313 }
else if (ncols < 3) {
329 nbinsy = (
Int_t)value;
330 if (ncols < 3)
gEnv->
SetValue(
"Hist.Binning.2D.y", nbinsy);
343 nbinsz = (
Int_t)value;
353 Error(
"DrawSelect",
"j>8");
359 Error(
"Begin",
"Two open or close brackets found, hname=%s", hname);
366 j = strlen(hname) - 1;
368 if (hname[j] !=
' ')
break;
377 abrt.
Form(
"An object of type '%s' has the same name as the requested histo (%s)", oldObject->IsA()->
GetName(), hname);
385 Warning(
"Begin",
"Deleting old histogram, since (possibly new) limits and binnings have been given");
395 enlist = oldObject ?
dynamic_cast<TEntryList*
>(oldObject) : 0;
397 if (!enlist && oldObject) {
398 abrt.
Form(
"An object of type '%s' has the same name as the requested event list (%s)",
399 oldObject->IsA()->
GetName(), hname);
404 if (optEnlistArray) {
412 if (enlist == inElist) {
415 if (optEnlistArray) {
433 evlist = oldObject ?
dynamic_cast<TEventList*
>(oldObject) : 0;
435 if (!evlist && oldObject) {
436 abrt.
Form(
"An object of type '%s' has the same name as the requested event list (%s)",
437 oldObject->IsA()->
GetName(), hname);
449 Abort(
"Input and output lists are the same!");
467 const size_t varexpLen = strlen(varexp0) + 1;
468 varexp =
new char[varexpLen];
469 strlcpy(varexp, varexp0, varexpLen);
478 abrt.
Form(
"Variable compilation failed: {%s,%s}", varexp, realSelection.
GetTitle());
484 Abort(
"Too many variables. Use the option \"para\", \"gl5d\" or \"candle\" to display more than 4 variables.");
488 if (
fDimension < 2 && (optpara || optcandle)) {
489 Abort(
"The options \"para\" and \"candle\" require at least 2 variables.");
495 Int_t nsel = strlen(selection);
497 htitle.
Form(
"%s {%s}", varexp, selection);
503 Int_t mustdelete = 0;
514 if (!profile || olddim !=
fDimension) mustdelete = 1;
521 Warning(
"Begin",
"Deleting old histogram with different dimensions");
530 gROOT->MakeDefCanvas();
532 Abort(
"Creation of default canvas failed");
543 if (
gPad && optSame) {
547 while ((op = np()) && !oldhtemp) {
590 }
else if (
fDimension == 2 && !(optpara || optcandle)) {
597 TH1 *oldhtemp = (
TH1*)
gPad->FindObject(hdefault);
622 if (profile || opt.
Contains(
"prof")) {
637 TH1 *oldhtemp = (
TH1*)
gPad->FindObject(hdefault);
697 if (l == 0 || optSame) graph =
kTRUE;
726 TH1 *oldhtemp = (
TH1*)
gPad->FindObject(hdefault);
740 Error(
"Begin",
"You cannot use option same when no 3D view exists");
841 h3 =
new TH3F(hname, htitle.
Data(),
fNbins[2],
fVmin[2],
fVmax[2],
fNbins[1], fVmin[1], fVmax[1], fNbins[0], fVmin[0], fVmax[0]);
869 Int_t noscat = strlen(option);
870 if (optSame) noscat -= 4;
887 }
else if (optcandle || optpara || opt5d) {
892 if (varexp)
delete [] varexp;
893 if (hnamealloc)
delete [] hnamealloc;
969 if (strlen(selection)) {
980 nch = strlen(varexp);
999 std::vector<TString> varnames;
1007 for (i = 0; i < ncols; ++i) {
1091 for (
Int_t i = 0; i < oldsize; ++i)
1115 if (varexp[i] ==
':' 1116 && !((i > 0 && varexp[i-1] ==
':') || varexp[i+1] ==
':')
1121 names.push_back(varexp(prev, i - prev));
1125 if (varexp[i] ==
'?') {
1129 names.push_back(varexp(prev, varexp.
Length() - prev));
1130 return names.size();
1230 if (subList && !subList->
Contains(i))
continue;
1234 if (ww == 0)
continue;
1282 if (ww == 0)
continue;
1297 if (nextbit >= nbits)
break;
1308 "Not implemented for %s",
1309 cl ? cl->
GetName() :
"unknown class");
1334 delete []
fW;
fW = 0;
1361 enlist->
Enter(enumb);
1372 for (i = 0; i <
fNfill; i++) {
1411 for (i = 0; i <
fNfill; i++) {
1433 for (col = 0; col < ncolors; col++) {
1438 grs->
AddAt(gr, col);
1445 for (i = 0; i <
fNfill; i++) {
1447 if (col < 0) col = 0;
1448 if (col > ncolors - 1) col = ncolors - 1;
1453 for (col = 0; col < ncolors; col++) {
1480 for (col = 0; col < ncolors; col++) {
1485 pms->
AddAt(pm3d, col);
1491 for (i = 0; i <
fNfill; i++) {
1493 if (col > ncolors-1) col = ncolors-1;
1494 if (col < 0) col = 0;
1505 gROOT->ProcessLine(
TString::Format(
"TParallelCoord::BuildParallelCoord((TSelectorDraw*)0x%lx,0x%lx)",
1535 for (i = 0; i <
fValSize && i < 4; i++) {
1536 vminOld[i] =
fVmin[i];
1537 vmaxOld[i] =
fVmax[i];
1541 fVmax[i] = - DBL_MAX;
1547 for (i = 0; i <
fNfill; i++) {
1558 for (i = 0; i <
fNfill; i++) {
1571 for (i = 0; i <
fNfill; i++) {
1584 for (i = 0; i <
fNfill; i++) {
1597 if (xmin == 0 || ymin == 0) {
1660 if (vminOld[2] == DBL_MAX)
1662 for (i = 0; i < fValSize && i < 4; i++) {
1663 fVmin[i] = vminOld[i];
1664 fVmax[i] = vmaxOld[i];
1666 for (i = 0; i <
fNfill; i++) {
1683 if (xmin == 0 || ymin == 0) {
1689 for (i = 0; i <
fNfill; i++) {
1698 for (i = 0; i <
fNfill; i++) {
1731 gPad->Range(-1, -1, 1, 1);
1738 for (i = 0; i <
fNfill; i++) {
1750 for (i = 0; i <
fNfill; i++) {
1765 for (i = 0; i < fValSize && i < 4; i++) {
1766 fVmin[i] = vminOld[i];
1767 fVmax[i] = vmaxOld[i];
1769 for (i = 0; i <
fNfill; i++) {
1781 for (i = 0; i <
fNfill; i++) {
virtual const char * GetOption() const
Int_t GetFirst() const
Return first bin on the axis i.e.
virtual void InitArrays(Int_t newsize)
Initialization of the primitive type arrays if the new size is bigger than the available space...
virtual void Enter(Long64_t entry)
Enter element entry into the list.
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title Offset is a correction factor with respect to the "s...
virtual const char * GetTitle() const
Returns title of object.
virtual Style_t GetLineStyle() const
Return the line style.
virtual Style_t GetFillStyle() const
Return the fill area style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
TList * GetListOfFunctions() const
virtual void Terminate()
Called at the end of a loop on a TTree.
virtual Double_t * GetVal(Int_t i) const
Return the last values corresponding to the i-th component of the formula being processed (where the ...
virtual void SetMaximum(Double_t maximum=-1111)
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
A list of entries and subentries in a TTree or TChain.
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
tomato 3-D histogram with a float per channel (see TH1 documentation)}
virtual Double_t * GetRmax()=0
TEventList * GetEventList() const
virtual void SetEstimate(Long64_t n)
Set number of entries to estimate variable limits.
virtual Long64_t GetReadEntry() const
TString & ReplaceAll(const TString &s1, const TString &s2)
TEntryListArray * fTreeElistArray
TTreeFormula * GetVar(Int_t i) const
Return the TTreeFormula corresponding to the i-th component of the request formula (where the compone...
R__EXTERN TStyle * gStyle
virtual Int_t GetDimension() const
virtual void ProcessFill(Long64_t entry)
Called in the entry loop for all entries accepted by Select.
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
virtual TEntryList * GetEntryList()
Returns the entry list, set to this tree.
Int_t fAction
Pointer to previously used histogram.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
virtual Bool_t Enter(Long64_t entry, TTree *tree, Long64_t subentry)
Add entry #entry (, #subentry) to the list.
UInt_t FirstSetBit(UInt_t startBit=0) const
Return position of first non null bit (starting from position 0 and up)
Bool_t * fVarMultiple
[fSelectedRows]Local buffer for weights
virtual void SetMinimum(Double_t minimum=-1111)
TTreeFormulaManager * fManager
static THLimitsFinder * GetLimitsFinder()
Return pointer to the current finder.
virtual TObject * Remove(TObject *obj)
Remove object from array.
virtual void TakeAction()
Execute action for object obj fNfill times.
void ToLower()
Change string to lower-case.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual Long64_t GetEstimate() const
Long64_t fCurrentSubEntry
virtual Int_t FindGoodLimits(TH1 *h, Double_t xmin, Double_t xmax)
compute the best axis limits for the X axis.
TH1 * fOldHistogram
pointer to Tree Event list array
virtual void Draw(Option_t *chopt="")
Draw this graph with its current attributes.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
virtual Long64_t GetChainOffset() const
if object in a list can be deleted
Int_t fValSize
[fSelectedRows][fDimension] Local buffer for the variables
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=0)
Set the value of a resource or create a new resource.
virtual TEntryListArray * GetSubListForEntry(Long64_t entry, TTree *tree=0)
Return the list holding the subentries for the given entry or 0.
const char * Data() const
Int_t Fill(const Double_t *v)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
std::vector< std::vector< double > > Data
TString fOption
Option given to TTree::Process.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Double_t fWeight
[fDimension] Maxima of varexp columns
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
Copy this histogram and Draw in the current pad.
TTreeFormula * fSelect
[fDimension] Array of pointers to variables formula
The 3-D histogram classes derived from the 1-D histogram classes.
virtual Float_t GetTitleOffset() const
A specialized string object used for TTree selections.
TObject * UncheckedAt(Int_t i) const
Int_t fMultiplicity
Total number of histogram fills.
TObject * fObject
! Current object if processing object (vs. TTree)
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void Delete(Option_t *option="")
Delete this object.
virtual void Begin(TTree *tree)
Called every time a loop on the tree(s) starts.
virtual Size_t GetMarkerSize() const
Return the marker size.
virtual Bool_t Notify()
This function is called at the first entry of a new tree in a chain.
virtual void SetEstimate(Long64_t nentries=1000000)
Set number of entries to estimate variable limits.
Service class for 2-Dim histogram classes.
Class to manage histogram axis.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetStatus(Long64_t status)
virtual void Abort(const char *why, EAbort what=kAbortProcess)
Abort processing.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual ~TSelectorDraw()
Selector destructor.
tomato 2-D histogram with a float per channel (see TH1 documentation)}
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual Bool_t CompileVariables(const char *varexp="", const char *selection="")
Compile input variables and selection expression.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t TestBit(UInt_t f) const
Double_t * fVmin
[fDimension] Number of bins per dimension
A TEventList object is a list of selected events (entries) in a TTree.
virtual const char * GetName() const
Returns name of object.
The ROOT global object gROOT contains a list of all defined classes.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Int_t Fill(Double_t)
Invalid Fill method.
void SetName(const char *name)
virtual Color_t GetLineColor() const
Return the line color.
virtual Int_t Contains(Long64_t entry, TTree *tree=0)
virtual void Draw(Option_t *option="")
Draws 3-D polymarker with its current attributes.
virtual void AddAt(TObject *obj, Int_t idx)
Add object at position ids.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
virtual Double_t * GetRmin()=0
Long64_t fDraw
Action type.
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
A specialized TSelector for TTree::Draw.
const Int_t kCustomHistogram
void SetPoint(Int_t n, Double_t x, Double_t y, Double_t z)
Set point n to x, y, z.
virtual void ResetAbort()
virtual void SetEntryList(TEntryList *list, Option_t *opt="")
Set an EntryList.
virtual const char * GetName() const
Returns name of object.
Bool_t fSelectMultiple
[fDimension] true if fVar[i] has a variable index
virtual Int_t GetUpdate() const
Double_t * fVmax
[fDimension] Minima of varexp columns
virtual void ProcessFillMultiple(Long64_t entry)
Called in the entry loop for all entries accepted by Select.
virtual void ProcessFillObject(Long64_t entry)
Called in the entry loop for all entries accepted by Select.
virtual TTree * GetTree() const
virtual Bool_t Enter(Long64_t entry, TTree *tree=0)
Add entry #entry to the list.
Profile2D histograms are used to display the mean value of Z and its RMS for each cell in X...
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
static TView * CreateView(Int_t system=1, const Double_t *rmin=0, const Double_t *rmax=0)
Create a concrete default 3-d view via the plug-in manager.
THist< 3, float, THistStatContent, THistStatUncertainty > TH3F
virtual UInt_t SetCanExtend(UInt_t extendBitMask)
Make the histogram axes extendable / not extendable according to the bit mask returns the previous bi...
virtual Int_t GetIndex(Long64_t entry) const
Return index in the list of element with value entry array is supposed to be sorted prior to this cal...
Mother of all ROOT objects.
virtual void TakeEstimate()
Estimate limits for 1-D, 2-D or 3-D objects.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set x and y values for point number i.
TList * fInput
List of objects available during processing.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
void FillN(Int_t, const Double_t *, const Double_t *, Int_t)
Fill this histogram with an array x and weights w.
virtual void Add(TObject *obj)
virtual void Reset()
Reset this list.
virtual void FillN(Int_t ntimes, const Double_t *x, const Double_t *w, Int_t stride=1)
Fill this histogram with an array x and weights w.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
A Graph is a graphics object made of two arrays X and Y with npoints each.
virtual Bool_t GetReapplyCut() const
Int_t fNfill
Last entry loop number when object was drawn.
virtual Bool_t CanExtendAllAxes() const
Returns true if all axes are extendable.
virtual void ClearFormula()
Delete internal buffers.
virtual UInt_t SplitNames(const TString &varexp, std::vector< TString > &names)
Build Index array for names in varexp.
virtual void SetEntries(Double_t n)
A TTree object has a header with a name and a title.
static void InitializeColors()
Initialize colors used by the TCanvas based graphics (via TColor objects).
virtual Double_t GetWeight() const
TObject * At(Int_t idx) const
virtual Style_t GetMarkerStyle() const
Return the marker style.
Int_t Fill(Double_t)
Invalid Fill method.
virtual Width_t GetLineWidth() const
Return the line width.
virtual const char * GetTitle() const
Returns title of object.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
THist< 2, float, THistStatContent, THistStatUncertainty > TH2F
virtual void SetEditable(Bool_t editable=kTRUE)
if editable=kFALSE, the graph cannot be modified with the mouse by default a TGraph is editable ...
A List of entry numbers in a TTree or TChain.
Int_t GetMultiplicity() const
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
virtual Int_t GetLastPoint() const
virtual void Reset(Option_t *option="")
Reset number of entries in event list.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.