131 bool profile =
false;
144 if (opt.
Contains(
"entrylistarray")) {
202 char *
hname =
nullptr;
229 if (
hname[
j] !=
' ')
break;
269 while (
cdummy !=
nullptr) {
284 for (
j = 0;
j < i;
j++) {
292 Error(
"DrawSelect",
"ncols > 3, ncols=%d",
ncols);
313 }
else if (
ncols < 3) {
353 Error(
"DrawSelect",
"j>8");
359 Error(
"Begin",
"Two open or close brackets found, hname=%s",
hname);
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);
386 Warning(
"Begin",
"Deleting old histogram, since (possibly new) limits and binnings have been given");
399 abrt.Form(
"An object of type '%s' has the same name as the requested event list (%s)",
438 abrt.Form(
"An object of type '%s' has the same name as the requested event list (%s)",
452 Abort(
"Input and output lists are the same!");
487 Abort(
"Too many variables. Use the option \"para\", \"gl5d\" or \"candle\" to display more than 4 variables.");
492 Abort(
"The options \"para\" and \"candle\" require at least 2 variables.");
524 Warning(
"Begin",
"Deleting old histogram with different dimensions");
533 gROOT->MakeDefCanvas();
535 Abort(
"Creation of default canvas failed");
631 if (profile || opt.
Contains(
"prof")) {
664 if (!opt.
Contains(
"goff"))
hp->SetDirectory(
nullptr);
704 if (!opt.
Contains(
"goff")) h2->SetDirectory(
nullptr);
711 if (
l == 0 ||
optSame) graph =
true;
715 if (opt.
Contains(
"box")) graph =
false;
753 Error(
"Begin",
"You cannot use option same when no 3D view exists");
806 if (!opt.
Contains(
"goff"))
hp->SetDirectory(
nullptr);
842 if (!opt.
Contains(
"goff")) h2->SetDirectory(
nullptr);
856 h3 =
new TH3F(
hname,
htitle.Data(),
fNbins[2],
fVmin[2],
fVmax[2],
fNbins[1],
fVmin[1],
fVmax[1],
fNbins[0],
fVmin[0],
fVmax[0]);
858 h3 =
new TH3D(
hname,
htitle.Data(),
fNbins[2],
fVmin[2],
fVmax[2],
fNbins[1],
fVmin[1],
fVmax[1],
fNbins[0],
fVmin[0],
fVmax[0]);
873 h3->GetXaxis()->SetTitleOffset(1.2 *
xoffset);
874 h3->GetYaxis()->SetTitleOffset(1.2 *
yoffset);
880 if (!opt.
Contains(
"goff")) h3->SetDirectory(
nullptr);
1024 for (i = 0; i <
ncols; ++i) {
1133 && !((i > 0 &&
varexp[i-1] ==
':') ||
varexp[i+1] ==
':')
1138 names.push_back(
varexp(prev, i - prev));
1147 return names.size();
1258 if (ww == 0)
continue;
1308 if (ww == 0)
continue;
1334 "Not implemented for %s",
1335 cl ? cl->
GetName() :
"unknown class");
1359 delete []
fW;
fW =
nullptr;
1396 if (h2->CanExtendAllAxes() && h2->TestBit(
kCanDelete)) {
1397 for (i = 0; i <
fNfill; i++) {
1406 pm->SetEditable(
false);
1436 for (i = 0; i <
fNfill; i++) {
1456 grs->SetName(
"graphs");
1457 h2->GetListOfFunctions()->Add(
grs,
"P");
1458 for (col = 0; col < ncolors; col++) {
1463 grs->AddAt(
gr, col);
1467 h2->SetMinimum(
fVmin[2]);
1468 h2->SetMaximum(
fVmax[2]);
1470 for (i = 0; i <
fNfill; i++) {
1472 if (col < 0) col = 0;
1473 if (col > ncolors - 1) col = ncolors - 1;
1478 for (col = 0; col < ncolors; col++) {
1503 pms->SetName(
"polymarkers");
1504 h3->GetListOfFunctions()->Add(
pms);
1505 for (col = 0; col < ncolors; col++) {
1514 h3->SetMinimum(
fVmin[3]);
1515 h3->SetMaximum(
fVmax[3]);
1516 for (i = 0; i <
fNfill; i++) {
1518 if (col > ncolors-1) col = ncolors-1;
1519 if (col < 0) col = 0;
1530 gROOT->ProcessLine(
TString::Format(
"TParallelCoord::BuildParallelCoord((TSelectorDraw*)0x%zx,0x%zx)",
1531 (
size_t)
this, (
size_t)
candle));
1560 for (i = 0; i <
fValSize && i < 4; i++) {
1572 for (i = 0; i <
fNfill; i++) {
1582 if (h2->CanExtendAllAxes()) {
1583 for (i = 0; i <
fNfill; i++) {
1595 if (
hp->CanExtendAllAxes()) {
1596 for (i = 0; i <
fNfill; i++) {
1608 if (h2->CanExtendAllAxes()) {
1609 for (i = 0; i <
fNfill; i++) {
1625 h2->SetBins(
aX->GetNbins(),
xmin,
aX->GetXmax(),
aY->GetNbins(),
ymin,
aY->GetXmax());
1636 if (
h2c)
h2c->SetStats(
false);
1646 pm->SetEditable(
false);
1685 if (h2->CanExtendAllAxes()) {
1688 for (i = 0; i <
fValSize && i < 4; i++) {
1692 for (i = 0; i <
fNfill; i++) {
1712 h2->SetBins(
aX->GetNbins(),
xmin,
aX->GetXmax(),
aY->GetNbins(),
ymin,
aY->GetXmax());
1715 for (i = 0; i <
fNfill; i++) {
1723 if (h3->CanExtendAllAxes()) {
1724 for (i = 0; i <
fNfill; i++) {
1745 if (
h3c)
h3c->SetStats(
false);
1757 gPad->Range(-1, -1, 1, 1);
1764 for (i = 0; i <
fNfill; i++) {
1775 if (
hp->CanExtendAllAxes()) {
1776 for (i = 0; i <
fNfill; i++) {
1790 if (h3->CanExtendAllAxes()) {
1791 for (i = 0; i <
fValSize && i < 4; i++) {
1795 for (i = 0; i <
fNfill; i++) {
1807 for (i = 0; i <
fNfill; i++) {
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
const Int_t kCustomHistogram
R__EXTERN TStyle * gStyle
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 Style_t GetMarkerStyle() const
Return the marker style.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Size_t GetMarkerSize() const
Return the marker size.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Class to manage histogram axis.
UInt_t FirstSetBit(UInt_t startBit=0) const
Return position of first non null bit (starting from position 0 and up)
TClass instances represent classes, structs and namespaces in the ROOT type system.
static void InitializeColors()
Initialize colors used by the TCanvas based graphics (via TColor objects).
A specialized string object used for TTree selections.
A list of entries and subentries in a TTree or TChain.
virtual TEntryListArray * GetSubListForEntry(Long64_t entry, TTree *tree=nullptr)
Return the list holding the subentries for the given entry or 0.
A List of entry numbers in a TTree or TChain.
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=nullptr)
Set the value of a resource or create a new resource.
<div class="legacybox"><h2>Legacy Code</h2> TEventList is a legacy interface: there will be no bug fi...
A TGraph is an object made of two arrays X and Y with npoints each.
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set x and y values for point number i.
1-D histogram with a double per channel (see TH1 documentation)
1-D histogram with a float per channel (see TH1 documentation)
TH1 is the base class of all histogram classes in ROOT.
virtual void SetDirectory(TDirectory *dir)
By default, when a histogram is created, it is added to the list of histogram objects in the current ...
virtual Int_t GetDimension() const
@ kNoStats
Don't draw stats box.
virtual Bool_t CanExtendAllAxes() const
Returns true if all axes are extendable.
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
virtual UInt_t SetCanExtend(UInt_t extendBitMask)
Make the histogram axes extendable / not extendable according to the bit mask returns the previous bi...
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.
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
2-D histogram with a double per channel (see TH1 documentation)
2-D histogram with a float per channel (see TH1 documentation)
Service class for 2-D histogram classes.
3-D histogram with a double per channel (see TH1 documentation)
3-D histogram with a float per channel (see TH1 documentation)
The 3-D histogram classes derived from the 1-D histogram classes.
static THLimitsFinder * GetLimitsFinder()
Return pointer to the current finder.
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
Mother of all ROOT objects.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Delete(Option_t *option="")
Delete this object.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual const char * GetTitle() const
Returns title of object.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
@ kCanDelete
if object in a list can be deleted
Profile2D histograms are used to display the mean value of Z and its error for each cell in X,...
A specialized TSelector for TTree::Draw.
void ProcessFill(Long64_t entry) override
Called in the entry loop for all entries accepted by Select.
TEntryListArray * fTreeElistArray
! Pointer to Tree Event list array
virtual void SetEstimate(Long64_t n)
Set number of entries to estimate variable limits.
virtual void InitArrays(Int_t newsize)
Initialization of the primitive type arrays if the new size is bigger than the available space.
void Terminate() override
Called at the end of a loop on a TTree.
Int_t fAction
! Action type
Int_t GetMultiplicity() const
TTreeFormulaManager * fManager
Pointer to the formula manager.
TTreeFormula * GetVar(Int_t i) const
Return the TTreeFormula corresponding to the i-th component of the request formula (where the compone...
bool * fVarMultiple
![fDimension] True if fVar[i] has a variable index
~TSelectorDraw() override
Selector destructor.
TSelectorDraw()
Default selector constructor.
Double_t * fW
![fSelectedRows]Local buffer for weights
virtual UInt_t SplitNames(const TString &varexp, std::vector< TString > &names)
Build Index array for names in varexp.
Long64_t fCurrentSubEntry
Current subentry when fSelectMultiple is true. Used to fill TEntryListArray.
TTreeFormula * fSelect
Pointer to selection formula.
Long64_t fSelectedRows
Number of selected entries.
Int_t fForceRead
Force Read flag.
virtual void ClearFormula()
Delete internal buffers.
virtual void TakeAction()
Execute action for object obj fNfill times.
Long64_t fOldEstimate
Value of Tree fEstimate when selector is called.
Double_t fWeight
Tree weight (see TTree::SetWeight)
Int_t fNfill
! Total number of histogram fills
TH1 * fOldHistogram
! Pointer to previously used histogram
virtual bool CompileVariables(const char *varexp="", const char *selection="")
Compile input variables and selection expression.
Double_t * fVmax
![fDimension] Maxima of varexp columns
Int_t fMultiplicity
Indicator of the variability of the size of entries.
TTreeFormula ** fVar
![fDimension] Array of pointers to variables formula
virtual void ProcessFillMultiple(Long64_t entry)
Called in the entry loop for all entries accepted by Select.
bool fSelectMultiple
True if selection has a variable index.
TTree * fTree
Pointer to current Tree.
Int_t fDimension
Dimension of the current expression.
TObject * fTreeElist
Pointer to Tree Event list.
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 ...
Int_t * fNbins
![fDimension] Number of bins per dimension
Double_t ** fVal
![fSelectedRows][fDimension] Local buffer for the variables
Long64_t fDraw
! Last entry loop number when object was drawn
virtual void TakeEstimate()
Estimate limits for 1-D, 2-D or 3-D objects.
bool Notify() override
This function is called at the first entry of a new tree in a chain.
bool fCleanElist
True if original Tree elist must be saved.
bool fObjEval
True if fVar1 returns an object (or pointer to).
void Begin(TTree *tree) override
Called every time a loop on the tree(s) starts.
virtual void ProcessFillObject(Long64_t entry)
Called in the entry loop for all entries accepted by Select.
Double_t * fVmin
![fDimension] Minima of varexp columns
virtual void SetStatus(Long64_t status)
TList * fInput
List of objects available during processing.
TString fOption
Option given to TTree::Process.
virtual void Abort(const char *why, EAbort what=kAbortProcess)
Abort processing.
const char * GetOption() const override
TObject * fObject
! Current object if processing object (vs. TTree)
virtual void ResetAbort()
void ToLower()
Change string to lower-case.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
A TTree represents a columnar dataset.
virtual Long64_t GetEstimate() const
virtual Double_t GetWeight() const
virtual TEntryList * GetEntryList()
Returns the entry list assigned to this tree.
virtual void SetEstimate(Long64_t nentries=1000000)
Set number of entries to estimate variable limits.
virtual TTree * GetTree() const
virtual void SetEntryList(TEntryList *list, Option_t *opt="")
Set an EntryList.
TEventList * GetEventList() const
virtual Int_t GetUpdate() const
virtual Long64_t GetChainOffset() const
virtual Double_t * GetRmax()=0
virtual Double_t * GetRmin()=0
static TView * CreateView(Int_t system=1, const Double_t *rmin=nullptr, const Double_t *rmax=nullptr)
Create a concrete default 3-d view via the plug-in manager.