Logo ROOT  
Reference Guide
Tools.h
Go to the documentation of this file.
1// @(#)root/tmva $Id$
2// Author: Andreas Hoecker, Joerg Stelzer, Helge Voss, Kai Voss
3
4/**********************************************************************************
5 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6 * Package: TMVA *
7 * Class : Tools *
8 * Web : http://tmva.sourceforge.net *
9 * *
10 * Description: *
11 * Global auxiliary applications and data treatment routines *
12 * *
13 * Authors (alphabetical): *
14 * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
15 * Peter Speckmayer <peter.speckmayer@cern.ch> - CERN, Switzerland *
16 * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany *
17 * Kai Voss <Kai.Voss@cern.ch> - U. of Victoria, Canada *
18 * *
19 * Copyright (c) 2005: *
20 * CERN, Switzerland *
21 * U. of Victoria, Canada *
22 * MPI-K Heidelberg, Germany *
23 * *
24 * Redistribution and use in source and binary forms, with or without *
25 * modification, are permitted according to the terms listed in LICENSE *
26 * (http://tmva.sourceforge.net/LICENSE) *
27 **********************************************************************************/
28
29#ifndef ROOT_TMVA_Tools
30#define ROOT_TMVA_Tools
31
32//////////////////////////////////////////////////////////////////////////
33// //
34// Tools (namespace) //
35// //
36// Global auxiliary applications and data treatment routines //
37// //
38//////////////////////////////////////////////////////////////////////////
39
40#include <vector>
41#include <string>
42#include <sstream>
43#include <iostream>
44#include <atomic>
45
46#include "TXMLEngine.h"
47
48#include "TMatrixDSymfwd.h"
49
50#include "TMatrixDfwd.h"
51
52#include "TVectorDfwd.h"
53
54#include "TMVA/Types.h"
55
57
58#include "TString.h"
59
60#include "TMVA/MsgLogger.h"
61
62class TList;
63class TTree;
64class TH1;
65class TH2;
66class TH2F;
67class TSpline;
68class TXMLEngine;
69
70namespace TMVA {
71
72 class Event;
73 class PDF;
74 class MsgLogger;
75
76 class Tools {
77
78 private:
79
80 Tools();
81
82 public:
83
84 // destructor
85 ~Tools();
86
87 // accessor to single instance
88 static Tools& Instance();
89 static void DestroyInstance();
90
91
92 template <typename T> Double_t Mean(Long64_t n, const T *a, const Double_t *w=0);
93 template <typename Iterator, typename WeightIterator> Double_t Mean ( Iterator first, Iterator last, WeightIterator w);
94
95 template <typename T> Double_t RMS(Long64_t n, const T *a, const Double_t *w=0);
96 template <typename Iterator, typename WeightIterator> Double_t RMS(Iterator first, Iterator last, WeightIterator w);
97
98
99 // simple statistics operations on tree entries
100 void ComputeStat( const std::vector<TMVA::Event*>&,
101 std::vector<Float_t>*,
103 Double_t&, Double_t&, Double_t&, Int_t signalClass,
104 Bool_t norm = kFALSE );
105
106 // compute variance from sums
107 inline Double_t ComputeVariance( Double_t sumx2, Double_t sumx, Int_t nx );
108
109 // creates histograms normalized to one
110 TH1* projNormTH1F( TTree* theTree, const TString& theVarName,
111 const TString& name, Int_t nbins,
112 Double_t xmin, Double_t xmax, const TString& cut );
113
114 // normalize histogram by its integral
115 Double_t NormHist( TH1* theHist, Double_t norm = 1.0 );
116
117 // parser for TString phrase with items separated by a character
118 TList* ParseFormatLine( TString theString, const char * sep = ":" );
119
120 // parse option string for ANN methods
121 std::vector<Int_t>* ParseANNOptionString( TString theOptions, Int_t nvar,
122 std::vector<Int_t>* nodes );
123
124 // returns the square-root of a symmetric matrix: symMat = sqrtMat*sqrtMat
126
127 // returns the covariance matrix of of the different classes (and the sum)
128 // given the event sample
129 std::vector<TMatrixDSym*>* CalcCovarianceMatrices( const std::vector<Event*>& events, Int_t maxCls, VariableTransformBase* transformBase=0 );
130 std::vector<TMatrixDSym*>* CalcCovarianceMatrices( const std::vector<const Event*>& events, Int_t maxCls, VariableTransformBase* transformBase=0 );
131
132
133 // turns covariance into correlation matrix
134 const TMatrixD* GetCorrelationMatrix( const TMatrixD* covMat );
135
136 // check spline quality by comparison with initial histogram
137 Bool_t CheckSplines( const TH1*, const TSpline* );
138
139 // normalization of variable output
141
142 // return separation of two histograms
143 Double_t GetSeparation( TH1* S, TH1* B ) const;
144 Double_t GetSeparation( const PDF& pdfS, const PDF& pdfB ) const;
145
146 // vector rescaling
147 std::vector<Double_t> MVADiff( std::vector<Double_t>&, std::vector<Double_t>& );
148 void Scale( std::vector<Double_t>&, Double_t );
149 void Scale( std::vector<Float_t>&, Float_t );
150
151 // re-arrange a vector of arrays (vectors) in a way such that the first array
152 // is ordered, and the other arrays reshuffled accordingly
153 void UsefulSortDescending( std::vector< std::vector<Double_t> >&, std::vector<TString>* vs = 0 );
154 void UsefulSortAscending ( std::vector< std::vector<Double_t> >&, std::vector<TString>* vs = 0 );
155
156 void UsefulSortDescending( std::vector<Double_t>& );
157 void UsefulSortAscending ( std::vector<Double_t>& );
158
159 Int_t GetIndexMaxElement ( std::vector<Double_t>& );
160 Int_t GetIndexMinElement ( std::vector<Double_t>& );
161
162 // check if input string contains regular expression
164 TString ReplaceRegularExpressions( const TString& s, const TString& replace = "+" );
165
166 // routines for formatted output -----------------
167 void FormattedOutput( const std::vector<Double_t>&, const std::vector<TString>&,
168 const TString titleVars, const TString titleValues, MsgLogger& logger,
169 TString format = "%+1.3f" );
170 void FormattedOutput( const TMatrixD&, const std::vector<TString>&, MsgLogger& logger );
171 void FormattedOutput( const TMatrixD&, const std::vector<TString>& vert, const std::vector<TString>& horiz,
172 MsgLogger& logger );
173
174 void WriteFloatArbitraryPrecision( Float_t val, std::ostream& os );
175 void ReadFloatArbitraryPrecision ( Float_t& val, std::istream& is );
176
177 // for histogramming
178 TString GetXTitleWithUnit( const TString& title, const TString& unit );
179 TString GetYTitleWithUnit( const TH1& h, const TString& unit, Bool_t normalised );
180
181 // Mutual Information method for non-linear correlations estimates in 2D histogram
182 // Author: Moritz Backes, Geneva (2009)
184
185 // Correlation Ratio method for non-linear correlations estimates in 2D histogram
186 // Author: Moritz Backes, Geneva (2009)
188 TH2F* TransposeHist ( const TH2F& );
189
190 // check if "silent" or "verbose" option in configuration string
191 Bool_t CheckForSilentOption ( const TString& ) const;
192 Bool_t CheckForVerboseOption( const TString& ) const;
193
194 // color information
195 const TString& Color( const TString& );
196
197 // print welcome message (to be called from, eg, .TMVAlogon)
207
208 // print TMVA citation (to be called from, eg, .TMVAlogon)
213
214 void TMVAWelcomeMessage();
215 void TMVAWelcomeMessage( MsgLogger& logger, EWelcomeMessage m = kStandardWelcomeMsg );
216 void TMVAVersionMessage( MsgLogger& logger );
217 void ROOTVersionMessage( MsgLogger& logger );
218
219 void TMVACitation( MsgLogger& logger, ECitation citType = kPlainText );
220
221 // string tools
222
223 std::vector<TString> SplitString( const TString& theOpt, const char separator ) const;
224
225 // variables
228 MsgLogger& Log() const { return *fLogger; }
229 static std::atomic<Tools*> fgTools;
230
231 // xml tools
232
235 void WriteTMatrixDToXML ( void* node, const char* name, TMatrixD* mat );
236 void WriteTVectorDToXML ( void* node, const char* name, TVectorD* vec );
237 void ReadTMatrixDFromXML( void* node, const char* name, TMatrixD* mat );
238 void ReadTVectorDFromXML( void* node, const char* name, TVectorD* vec );
240
241 Bool_t HasAttr ( void* node, const char* attrname );
242 template<typename T>
243 inline void ReadAttr ( void* node, const char* , T& value );
244 void ReadAttr ( void* node, const char* attrname, TString& value );
245 void ReadAttr(void *node, const char *, float &value);
246 void ReadAttr(void *node, const char *, int &value);
247 void ReadAttr(void *node, const char *, short &value);
248
249 template<typename T>
250 void AddAttr ( void* node, const char* , const T& value, Int_t precision = 16 );
251 void AddAttr ( void* node, const char* attrname, const char* value );
252 void* AddChild ( void* parent, const char* childname, const char* content = 0, bool isRootNode = false );
253 Bool_t AddRawLine ( void* node, const char * raw );
254 Bool_t AddComment ( void* node, const char* comment );
255
256 void* GetParent( void* child);
257 void* GetChild ( void* parent, const char* childname=0 );
258 void* GetNextChild( void* prevchild, const char* childname=0 );
259 const char* GetContent ( void* node );
260 const char* GetName ( void* node );
261
264 void SetXMLEngineBufferSize(int buffer) { fXMLBufferSize = buffer; }
266
268
269 private:
270
271 int fXMLBufferSize = 10000000;
272 // utilities for correlation ratio
273 Double_t GetYMean_binX( const TH2& , Int_t bin_x );
274
275 }; // Common tools
276
277 Tools& gTools(); // global accessor
278
279 //
280 // Adapts a TRandom random number generator to the interface of the ones in the
281 // standard library (STL) so that TRandom derived generators can be used with
282 // STL algorithms such as `std::shuffle`.
283 //
284 // Example:
285 // ```
286 // std::vector<double> v {0, 1, 2, 3, 4, 5};
287 // TRandom3StdEngine rng(seed);
288 // std::shuffle(v.begin(), v.end(), rng);
289 // ```
290 //
291 // Or at a lower level:
292 // ```
293 // std::vector<double> v {0, 1, 2, 3, 4, 5};
294 // RandomGenerator<TRandom3> rng(seed);
295 // std::shuffle(v.begin(), v.end(), rng);
296 // ```
297 //
298 template <typename TRandomLike, typename UIntType = UInt_t, UIntType max_val = kMaxUInt>
300 public:
301 using result_type = UIntType;
302
303 RandomGenerator(UIntType s = 0) { fRandom.SetSeed(s); }
304
305 static constexpr UIntType min() { return 0; }
306 static constexpr UIntType max() { return max_val; }
307
308 void seed(UIntType s = 0) { fRandom.SetSeed(s); }
309
310 UIntType operator()() { return fRandom.Integer(max()); }
311
312 void discard(unsigned long long z)
313 {
314 double r;
315 for (unsigned long long i = 0; i < z; ++i)
316 r = fRandom.Rndm();
317 (void) r; /* avoid unused variable warning */
318 }
319
320 private:
321 TRandomLike fRandom; // random generator
322 };
323
324} // namespace TMVA
325
326////////////////////////////////////////////////////////////////////////////////
327/// read attribute from xml
328
329template<typename T> void TMVA::Tools::ReadAttr( void* node, const char* attrname, T& value )
330{
331 // read attribute from xml
332 const char *val = xmlengine().GetAttr(node, attrname);
333 if (val == 0) {
334 const char *nodename = xmlengine().GetNodeName(node);
335 Log() << kFATAL << "Trying to read non-existing attribute '" << attrname << "' from xml node '" << nodename << "'"
336 << Endl;
337 }
338 std::stringstream s(val);
339 // coverity[tainted_data_argument]
340 s >> value;
341}
342
343////////////////////////////////////////////////////////////////////////////////
344/// add attribute to xml
345
346template<typename T>
347void TMVA::Tools::AddAttr( void* node, const char* attrname, const T& value, Int_t precision )
348{
349 std::stringstream s;
350 s.precision( precision );
351 s << std::scientific << value;
352 AddAttr( node, attrname, s.str().c_str() );
353}
354
355////////////////////////////////////////////////////////////////////////////////
356/// compute variance from given sums
357
359{
360 if (nx<2) return 0;
361 return (sumx2 - ((sumx*sumx)/static_cast<Double_t>(nx)))/static_cast<Double_t>(nx-1);
362}
363
364#endif
typedef void(GLAPIENTRYP _GLUfuncptr)(void)
ROOT::R::TRInterface & r
Definition: Object.C:4
#define d(i)
Definition: RSha256.hxx:102
#define h(i)
Definition: RSha256.hxx:106
int Int_t
Definition: RtypesCore.h:45
const Bool_t kFALSE
Definition: RtypesCore.h:101
long Long_t
Definition: RtypesCore.h:54
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
long long Long64_t
Definition: RtypesCore.h:80
float Float_t
Definition: RtypesCore.h:57
char name[80]
Definition: TGX11.cxx:110
float xmin
Definition: THbookFile.cxx:95
float xmax
Definition: THbookFile.cxx:95
TH1 is the base class of all histogram classes in ROOT.
Definition: TH1.h:58
2-D histogram with a float per channel (see TH1 documentation)}
Definition: TH2.h:251
Service class for 2-D histogram classes.
Definition: TH2.h:30
A doubly linked list.
Definition: TList.h:44
ostringstream derivative to redirect and format output
Definition: MsgLogger.h:57
PDF wrapper for histograms; uses user-defined spline interpolation.
Definition: PDF.h:63
UIntType operator()()
Definition: Tools.h:310
void discard(unsigned long long z)
Definition: Tools.h:312
TRandomLike fRandom
Definition: Tools.h:321
static constexpr UIntType max()
Definition: Tools.h:306
void seed(UIntType s=0)
Definition: Tools.h:308
RandomGenerator(UIntType s=0)
Definition: Tools.h:303
static constexpr UIntType min()
Definition: Tools.h:305
UIntType result_type
Definition: Tools.h:301
Global auxiliary applications and data treatment routines.
Definition: Tools.h:76
void ComputeStat(const std::vector< TMVA::Event * > &, std::vector< Float_t > *, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Int_t signalClass, Bool_t norm=kFALSE)
sanity check
Definition: Tools.cxx:202
void * GetParent(void *child)
get parent node
Definition: Tools.cxx:1140
void FormattedOutput(const std::vector< Double_t > &, const std::vector< TString > &, const TString titleVars, const TString titleValues, MsgLogger &logger, TString format="%+1.3f")
formatted output of simple table
Definition: Tools.cxx:887
void UsefulSortDescending(std::vector< std::vector< Double_t > > &, std::vector< TString > *vs=0)
sort 2D vector (AND in parallel a TString vector) in such a way that the "first vector is sorted" and...
Definition: Tools.cxx:564
Bool_t HistoHasEquidistantBins(const TH1 &h)
Definition: Tools.cxx:1487
TList * ParseFormatLine(TString theString, const char *sep=":")
Parse the string and cut into labels separated by ":".
Definition: Tools.cxx:401
Double_t NormVariable(Double_t x, Double_t xmin, Double_t xmax)
normalise to output range: [-1, 1]
Definition: Tools.cxx:110
void WriteFloatArbitraryPrecision(Float_t val, std::ostream &os)
writes a float value with the available precision to a stream
Definition: Tools.cxx:1058
void * GetNextChild(void *prevchild, const char *childname=0)
XML helpers.
Definition: Tools.cxx:1162
TString GetYTitleWithUnit(const TH1 &h, const TString &unit, Bool_t normalised)
histogramming utility
Definition: Tools.cxx:1048
Double_t GetSeparation(TH1 *S, TH1 *B) const
compute "separation" defined as
Definition: Tools.cxx:121
static Tools & Instance()
Definition: Tools.cxx:71
TMatrixD * GetSQRootMatrix(TMatrixDSym *symMat)
square-root of symmetric matrix of course the resulting sqrtMat is also symmetric,...
Definition: Tools.cxx:271
std::vector< Double_t > MVADiff(std::vector< Double_t > &, std::vector< Double_t > &)
computes difference between two vectors
Definition: Tools.cxx:506
Int_t GetIndexMinElement(std::vector< Double_t > &)
find index of minimum entry in vector
Definition: Tools.cxx:765
TH1 * projNormTH1F(TTree *theTree, const TString &theVarName, const TString &name, Int_t nbins, Double_t xmin, Double_t xmax, const TString &cut)
projects variable from tree into normalised histogram
Definition: Tools.cxx:366
void ROOTVersionMessage(MsgLogger &logger)
prints the ROOT release number and date
Definition: Tools.cxx:1325
TString ReplaceRegularExpressions(const TString &s, const TString &replace="+")
replace regular expressions helper function to remove all occurrences "$!%^&()'<>?...
Definition: Tools.cxx:798
void * AddChild(void *parent, const char *childname, const char *content=0, bool isRootNode=false)
add child node
Definition: Tools.cxx:1124
void ReadTVectorDFromXML(void *node, const char *name, TVectorD *vec)
Definition: Tools.cxx:1267
TH1 * GetCumulativeDist(TH1 *h)
get the cumulative distribution of a histogram
Definition: Tools.cxx:1760
void ReadFloatArbitraryPrecision(Float_t &val, std::istream &is)
reads a float value with the available precision from a stream
Definition: Tools.cxx:1073
Bool_t AddRawLine(void *node, const char *raw)
XML helpers.
Definition: Tools.cxx:1190
~Tools()
destructor
Definition: Tools.cxx:101
Bool_t ContainsRegularExpression(const TString &s)
check if regular expression helper function to search for "$!%^&()'<>?= " in a string
Definition: Tools.cxx:784
static void DestroyInstance()
Definition: Tools.cxx:82
Double_t Mean(Long64_t n, const T *a, const Double_t *w=0)
Return the weighted mean of an array a with length n.
Definition: Tools.cxx:1691
Double_t GetMutualInformation(const TH2F &)
Mutual Information method for non-linear correlations estimates in 2D histogram Author: Moritz Backes...
Definition: Tools.cxx:589
std::vector< TString > SplitString(const TString &theOpt, const char separator) const
splits the option string at 'separator' and fills the list 'splitV' with the primitive strings
Definition: Tools.cxx:1199
MsgLogger & Log() const
Definition: Tools.h:228
const TString & Color(const TString &)
human readable color strings
Definition: Tools.cxx:828
TString StringFromDouble(Double_t d)
string tools
Definition: Tools.cxx:1233
int xmlenginebuffersize()
Definition: Tools.h:263
Bool_t CheckForVerboseOption(const TString &) const
check if verbosity "V" set in option
Definition: Tools.cxx:708
Double_t RMS(Long64_t n, const T *a, const Double_t *w=0)
Return the Standard Deviation of an array a with length n.
Definition: Tools.cxx:1747
const char * GetContent(void *node)
XML helpers.
Definition: Tools.cxx:1174
void * GetChild(void *parent, const char *childname=0)
get child node
Definition: Tools.cxx:1150
void WriteTVectorDToXML(void *node, const char *name, TVectorD *vec)
Definition: Tools.cxx:1259
Double_t ComputeVariance(Double_t sumx2, Double_t sumx, Int_t nx)
compute variance from given sums
Definition: Tools.h:358
TXMLEngine & xmlengine()
Definition: Tools.h:262
TXMLEngine * fXMLEngine
Definition: Tools.h:265
void Scale(std::vector< Double_t > &, Double_t)
scales double vector
Definition: Tools.cxx:519
Bool_t CheckSplines(const TH1 *, const TSpline *)
check quality of splining by comparing splines and histograms in each bin
Definition: Tools.cxx:479
const char * GetName(void *node)
XML helpers.
Definition: Tools.cxx:1182
const TMatrixD * GetCorrelationMatrix(const TMatrixD *covMat)
turns covariance into correlation matrix
Definition: Tools.cxx:324
void WriteTMatrixDToXML(void *node, const char *name, TMatrixD *mat)
XML helpers.
Definition: Tools.cxx:1243
MsgLogger * fLogger
Definition: Tools.h:227
Double_t GetCorrelationRatio(const TH2F &)
Compute Correlation Ratio of 2D histogram to estimate functional dependency between two variables Aut...
Definition: Tools.cxx:620
void ReadAttr(void *node, const char *, T &value)
read attribute from xml
Definition: Tools.h:329
static std::atomic< Tools * > fgTools
Definition: Tools.h:229
Bool_t AddComment(void *node, const char *comment)
Definition: Tools.cxx:1132
void ReadTMatrixDFromXML(void *node, const char *name, TMatrixD *mat)
Definition: Tools.cxx:1276
TString GetXTitleWithUnit(const TString &title, const TString &unit)
histogramming utility
Definition: Tools.cxx:1040
void AddAttr(void *node, const char *, const T &value, Int_t precision=16)
add attribute to xml
Definition: Tools.h:347
@ kHtmlLink
Definition: Tools.h:212
@ kBibTeX
Definition: Tools.h:210
@ kPlainText
Definition: Tools.h:209
@ kLaTeX
Definition: Tools.h:211
TString StringFromInt(Long_t i)
string tools
Definition: Tools.cxx:1223
int fXMLBufferSize
Definition: Tools.h:271
Tools()
constructor
Definition: Tools.cxx:91
Double_t NormHist(TH1 *theHist, Double_t norm=1.0)
normalises histogram
Definition: Tools.cxx:383
std::vector< TMatrixDSym * > * CalcCovarianceMatrices(const std::vector< Event * > &events, Int_t maxCls, VariableTransformBase *transformBase=0)
compute covariance matrices
Definition: Tools.cxx:1514
Double_t GetYMean_binX(const TH2 &, Int_t bin_x)
Compute the mean in Y for a given bin X of a 2D histogram.
Definition: Tools.cxx:642
void TMVACitation(MsgLogger &logger, ECitation citType=kPlainText)
kinds of TMVA citation
Definition: Tools.cxx:1441
void TMVAVersionMessage(MsgLogger &logger)
prints the TMVA release number and date
Definition: Tools.cxx:1316
void TMVAWelcomeMessage()
direct output, eg, when starting ROOT session -> no use of Logger here
Definition: Tools.cxx:1302
std::vector< Int_t > * ParseANNOptionString(TString theOptions, Int_t nvar, std::vector< Int_t > *nodes)
parse option string for ANN methods default settings (should be defined in theOption string)
Definition: Tools.cxx:443
Int_t GetIndexMaxElement(std::vector< Double_t > &)
find index of maximum entry in vector
Definition: Tools.cxx:748
void SetXMLEngineBufferSize(int buffer)
Definition: Tools.h:264
TH2F * TransposeHist(const TH2F &)
Transpose quadratic histogram.
Definition: Tools.cxx:657
EWelcomeMessage
Definition: Tools.h:198
@ kSmall1WelcomeMsg
Definition: Tools.h:203
@ kSmall2WelcomeMsg
Definition: Tools.h:204
@ kLogoWelcomeMsg
Definition: Tools.h:202
@ kOriginalWelcomeMsgColor
Definition: Tools.h:205
@ kOriginalWelcomeMsgBW
Definition: Tools.h:206
@ kBlockWelcomeMsg
Definition: Tools.h:200
@ kStandardWelcomeMsg
Definition: Tools.h:198
@ kIsometricWelcomeMsg
Definition: Tools.h:199
@ kLeanWelcomeMsg
Definition: Tools.h:201
Bool_t HasAttr(void *node, const char *attrname)
add attribute from xml
Definition: Tools.cxx:1094
void UsefulSortAscending(std::vector< std::vector< Double_t > > &, std::vector< TString > *vs=0)
sort 2D vector (AND in parallel a TString vector) in such a way that the "first vector is sorted" and...
Definition: Tools.cxx:538
const TString fRegexp
Definition: Tools.h:226
Bool_t CheckForSilentOption(const TString &) const
check for "silence" option in configuration option string
Definition: Tools.cxx:691
Linear interpolation class.
@ kFATAL
Definition: Types.h:61
Base class for spline implementation containing the Draw/Paint methods.
Definition: TSpline.h:31
Basic string class.
Definition: TString.h:136
A TTree represents a columnar dataset.
Definition: TTree.h:79
const char * GetNodeName(XMLNodePointer_t xmlnode)
returns name of xmlnode
const char * GetAttr(XMLNodePointer_t xmlnode, const char *name)
returns value of attribute for xmlnode
Definition: TXMLEngine.cxx:555
Double_t x[n]
Definition: legend1.C:17
const Int_t n
Definition: legend1.C:16
static double B[]
double T(double x)
Definition: ChebyshevPol.h:34
static const std::string separator("@@@")
static const std::string comment("comment")
RooArgSet S(Args_t &&... args)
Definition: RooArgSet.h:215
static constexpr double s
create variable transformations
Tools & gTools()
MsgLogger & Endl(MsgLogger &ml)
Definition: MsgLogger.h:148
Definition: first.py:1
Definition: civetweb.c:2228
auto * m
Definition: textangle.C:8
auto * a
Definition: textangle.C:12