ROOT  6.06/09
Reference Guide
PDEFoam.h
Go to the documentation of this file.
1 // @(#)root/tmva $Id$
2 // Author: S. Jadach, Tancredi Carli, Dominik Dannheim, Alexander Voigt
3 
4 /**********************************************************************************
5  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6  * Package: TMVA *
7  * Classes: PDEFoam *
8  * Web : http://tmva.sourceforge.net *
9  * *
10  * Description: *
11  * Class for PDEFoam object *
12  * *
13  * Authors (alphabetical): *
14  * S. Jadach - Institute of Nuclear Physics, Cracow, Poland *
15  * Tancredi Carli - CERN, Switzerland *
16  * Dominik Dannheim - CERN, Switzerland *
17  * Alexander Voigt - TU Dresden, Germany *
18  * *
19  * Copyright (c) 2008, 2010: *
20  * CERN, Switzerland *
21  * MPI-K Heidelberg, Germany *
22  * *
23  * Redistribution and use in source and binary forms, with or without *
24  * modification, are permitted according to the terms listed in LICENSE *
25  * (http://tmva.sourceforge.net/LICENSE) *
26  **********************************************************************************/
27 
28 #ifndef ROOT_TMVA_PDEFoam
29 #define ROOT_TMVA_PDEFoam
30 
31 #include <iosfwd>
32 #include <cassert>
33 
34 #ifndef ROOT_TH2D
35 #include "TH2D.h"
36 #endif
37 #ifndef ROOT_TObjArray
38 #include "TObjArray.h"
39 #endif
40 #ifndef ROOT_TObjString
41 #include "TObjString.h"
42 #endif
43 #ifndef ROOT_TVectorT
44 #include "TVectorT.h"
45 #endif
46 #ifndef ROOT_TString
47 #include "TString.h"
48 #endif
49 #ifndef ROOT_TMVA_VariableInfo
50 #include "TMVA/VariableInfo.h"
51 #endif
52 #ifndef ROOT_TMVA_Timer
53 #include "TMVA/Timer.h"
54 #endif
55 #ifndef ROOT_TObject
56 #include "TObject.h"
57 #endif
58 #ifndef ROOT_TRandom3
59 #include "TRandom3.h"
60 #endif
61 
62 namespace TMVA {
63  class PDEFoamCell;
64  class PDEFoamVect;
65  class PDEFoamDensityBase;
66  class PDEFoamKernelBase;
67  class PDEFoam;
68 
69  // separation types
72 
73  // foam types
75 
76  // enum type for possible foam cell values
77  // kValue : cell value who's rms is minimized
78  // kValueError : error on kValue
79  // kValueDensity : kValue / cell volume
80  // kMeanValue : mean sampling value (saved in fIntegral)
81  // kRms : rms of sampling distribution (saved in fDriver)
82  // kRmsOvMean : rms/mean of sampling distribution (saved in
83  // fDriver and fIntegral)
84  // kCellVolume : volume of cell
87 }
88 
89 #ifndef ROOT_TMVA_PDEFoamDensityBase
91 #endif
92 #ifndef ROOT_TMVA_PDEFoamVect
93 #include "TMVA/PDEFoamVect.h"
94 #endif
95 #ifndef ROOT_TMVA_PDEFoamCell
96 #include "TMVA/PDEFoamCell.h"
97 #endif
98 #ifndef ROOT_TMVA_PDEFoamKernelBase
99 #include "TMVA/PDEFoamKernelBase.h"
100 #endif
101 
102 namespace TMVA {
103 
104  class PDEFoam : public TObject {
105  protected:
106  // COMPONENTS //
107  //-------------- Input parameters
108  TString fName; // Name of a given instance of the FOAM class
109  Int_t fDim; // Dimension of the integration/simulation space
110  Int_t fNCells; // Maximum number of cells
111  //-------------------
112  Int_t fNBin; // No. of bins in the edge histogram for cell MC exploration
113  Int_t fNSampl; // No. of MC events, when dividing (exploring) cell
114  Int_t fEvPerBin; // Maximum number of effective (wt=1) events per bin
115  //------------------- MULTI-BRANCHING ---------------------
116  Int_t *fMaskDiv; //! [fDim] Dynamic Mask for cell division
117  Int_t *fInhiDiv; //! [fDim] Flags for inhibiting cell division
118  //------------------- GEOMETRY ----------------------------
119  Int_t fNoAct; // Number of active cells
120  Int_t fLastCe; // Index of the last cell
121  PDEFoamCell **fCells; // [fNCells] Array of ALL cells
122  //------------------ M.C. generation----------------------------
123  TObjArray *fHistEdg; // Histograms of wt, one for each cell edge
124  Double_t *fRvec; // [fDim] random number vector from r.n. generator fDim+1 maximum elements
125  //----------- Procedures
126  TRandom3 *fPseRan; // Pointer to user-defined generator of pseudorandom numbers
127  //---------- working space for CELL exploration -------------
128  Double_t *fAlpha; // [fDim] Internal parameters of the hyperrectangle
129  // --------- PDE-Foam specific variables
130  EFoamType fFoamType; // BACKWARDS COMPATIBILITY: type of foam
131  Double_t *fXmin; // [fDim] minimum for variable transform
132  Double_t *fXmax; // [fDim] maximum for variable transform
133  UInt_t fNElements; // BACKWARDS COMPATIBILITY: number of variables in every cell
134  UInt_t fNmin; // minimal number of events in cell to split cell
135  UInt_t fMaxDepth; // maximum depth of cell tree
136  Float_t fVolFrac; // BACKWARDS COMPATIBILITY: volume fraction (with respect to total phase space
137  Bool_t fFillFoamWithOrigWeights; // BACKWARDS COMPATIBILITY: fill the foam with boost or orig. weights
138  EDTSeparation fDTSeparation; // BACKWARDS COMPATIBILITY: split cells according to decision tree logic
139  Bool_t fPeekMax; // BACKWARDS COMPATIBILITY: peek up cell with max. driver integral for split
140  PDEFoamDensityBase *fDistr; //! distribution of training events
141  Timer *fTimer; //! timer for graphical output
142  TObjArray *fVariableNames;// collection of all variable names
143  mutable MsgLogger* fLogger; //! message logger
144 
145  /////////////////////////////////////////////////////////////////
146  // METHODS //
147  /////////////////////////////////////////////////////////////////
148 
149  protected:
150  // ---------- TMVA console output
151 
152  void OutputGrow(Bool_t finished = false ); // nice TMVA console output
153 
154  // ---------- Foam build-up functions
155 
156  // Internal foam initialization functions
157  void InitCells(); // Initialisation of all foam cells
158  Int_t CellFill(Int_t, PDEFoamCell*);// Allocates new empty cell and return its index
159  virtual void Explore(PDEFoamCell *Cell); // Exploration of the new cell, determine <wt>, wtMax etc.
160  void Varedu(Double_t [], Int_t&, Double_t&,Double_t&); // Determines the best edge, variace reduction
161  void MakeAlpha(); // Provides random point inside hyperrectangle
162  void Grow(); // build up foam
163  Long_t PeekMax(); // peek cell with max. driver integral
164  Int_t Divide(PDEFoamCell *); // Divide iCell into two daughters; iCell retained, taged as inactive
165  Double_t Eval(Double_t *xRand, Double_t &event_density); // evaluate distribution on point 'xRand'
166 
167  // ---------- Cell value access functions
168 
169  // low level functions to access a certain cell value
170  Double_t GetCellElement(const PDEFoamCell *cell, UInt_t i) const; // get Element 'i' in cell 'cell'
171  void SetCellElement(PDEFoamCell *cell, UInt_t i, Double_t value); // set Element 'i' in cell 'cell' to value 'value'
172 
173  // specific function used during evaluation; determines, whether a cell value is undefined
175 
176  // finds cell according to given event variables
177  PDEFoamCell* FindCell(const std::vector<Float_t>&) const ;
178  std::vector<TMVA::PDEFoamCell*> FindCells(const std::vector<Float_t>&) const;
179  std::vector<TMVA::PDEFoamCell*> FindCells(const std::map<Int_t,Float_t>&) const;
180  void FindCells(const std::map<Int_t, Float_t>&, PDEFoamCell*, std::vector<PDEFoamCell*> &) const;
181 
182  // get internal density
183  PDEFoamDensityBase* GetDistr() const { assert(fDistr); return fDistr; }
184 
185  // Square function (fastest implementation)
186  template<typename T> T Sqr(T x) const { return x*x; }
187 
188  PDEFoam(const PDEFoam&); // Copy Constructor NOT USED
189 
190  // ---------- Public functions ----------------------------------
191  public:
192  PDEFoam(); // Default constructor (used only by ROOT streamer)
193  PDEFoam(const TString&); // Principal user-defined constructor
194  virtual ~PDEFoam(); // Default destructor
195 
196  // ---------- Foam creation functions
197 
198  void Initialize() {} // initialize the PDEFoam
199  void FillBinarySearchTree( const Event* ev ); // fill event into BST
200  void Create(); // build-up foam
201 
202  // function to fill created cell with given value
203  virtual void FillFoamCells(const Event* ev, Float_t wt);
204 
205  // remove all cell elements
206  void ResetCellElements();
207 
208  // function to call after foam is grown
209  virtual void Finalize() {}
210 
211  // ---------- Getters and Setters
212 
213  void SetDim(Int_t kDim); // Sets dimension of cubical space
214  void SetnCells(Long_t nCells){fNCells =nCells;} // Sets maximum number of cells
215  void SetnSampl(Long_t nSampl){fNSampl =nSampl;} // Sets no of MC events in cell exploration
216  void SetnBin(Int_t nBin){fNBin = nBin;} // Sets no of bins in histogs in cell exploration
217  void SetEvPerBin(Int_t EvPerBin){fEvPerBin =EvPerBin;} // Sets max. no. of effective events per bin
218  void SetInhiDiv(Int_t, Int_t ); // Set inhibition of cell division along certain edge
219  void SetDensity(PDEFoamDensityBase *dens) { fDistr = dens; }
220 
221  // coverity[ -tainted_data_return ]
222  Int_t GetTotDim() const {return fDim; } // Get total dimension
223  TString GetFoamName() const {return fName; } // Get name of foam
224  UInt_t GetNActiveCells() const {return fNoAct;} // returns number of active cells
225  UInt_t GetNInActiveCells() const {return GetNCells()-GetNActiveCells();} // returns number of not active cells
226  UInt_t GetNCells() const {return fNCells;} // returns number of cells
227  PDEFoamCell* GetRootCell() const {return fCells[0];} // get pointer to root cell
228 
229  // Getters and Setters for user cut options
230  void SetNmin(UInt_t val) { fNmin=val; }
231  UInt_t GetNmin() { return fNmin; }
232  void SetMaxDepth(UInt_t maxdepth) { fMaxDepth = maxdepth; }
233  UInt_t GetMaxDepth() const { return fMaxDepth; }
234 
235  // Getters and Setters for foam boundaries
236  void SetXmin(Int_t idim, Double_t wmin);
237  void SetXmax(Int_t idim, Double_t wmax);
238  Double_t GetXmin(Int_t idim) const {return fXmin[idim];}
239  Double_t GetXmax(Int_t idim) const {return fXmax[idim];}
240 
241  // Getters and Setters for variable names
242  void AddVariableName(const char *s) { AddVariableName(new TObjString(s)); }
243  void AddVariableName(TObjString *s) { fVariableNames->Add(s); }
244  TObjString* GetVariableName(Int_t idx) {return dynamic_cast<TObjString*>(fVariableNames->At(idx));}
245 
246  // Delete the fDistr object, which contains the binary search
247  // tree
248  void DeleteBinarySearchTree();
249 
250  // ---------- Transformation functions for event variables into foam boundaries
251  // reason: foam allways has boundaries [0, 1]
252 
253  Float_t VarTransform(Int_t idim, Float_t x) const; // transform [xmin, xmax] --> [0, 1]
254  std::vector<Float_t> VarTransform(const std::vector<Float_t> &invec) const;
255  Float_t VarTransformInvers(Int_t idim, Float_t x) const; // transform [0, 1] --> [xmin, xmax]
256  std::vector<Float_t> VarTransformInvers(const std::vector<Float_t> &invec) const;
257 
258  // ---------- Debug functions
259 
260  void CheckAll(Int_t); // Checks correctness of the entire data structure in the FOAM object
261  void PrintCell(Long_t iCell=0); // Print content of cell
262  void PrintCells(); // Prints content of all cells
263 
264  // Message logger
265  MsgLogger& Log() const { return *fLogger; }
266 
267  // ---------- Foam projection methods
268 
269  // project foam to two-dimensional histogram
270  virtual TH2D* Project2(Int_t idim1, Int_t idim2, ECellValue cell_value=kValue,
271  PDEFoamKernelBase *kernel=NULL, UInt_t nbin=50);
272 
273  // Project one-dimensional foam to a 1-dim histogram
274  TH1D* Draw1Dim(ECellValue cell_value, Int_t nbin, PDEFoamKernelBase *kernel=NULL);
275 
276  // Generates C++ code (root macro) for drawing foam with boxes (only 2-dim!)
277  void RootPlot2dim( const TString& filename, TString opt,
278  Bool_t createCanvas = kTRUE, Bool_t colors = kTRUE );
279 
280  // ---------- Foam evaluation functions
281 
282  // get cell value for a given event
283  virtual Float_t GetCellValue( const std::vector<Float_t>& xvec, ECellValue cv, PDEFoamKernelBase* );
284 
285  // get cell values for a given (incomplete) event vector
286  virtual std::vector<Float_t> GetCellValue( const std::map<Int_t,Float_t>& xvec, ECellValue cv );
287 
288  // get cell value stored in a foam cell
289  virtual Float_t GetCellValue( const PDEFoamCell* cell, ECellValue cv );
290 
291  // ---------- friend classes
292  friend class PDEFoamKernelBase;
293  friend class PDEFoamKernelTrivial;
294  friend class PDEFoamKernelLinN;
295  friend class PDEFoamKernelGauss;
296 
297  // ---------- ROOT class definition
298  ClassDef(PDEFoam,7) // Tree of PDEFoamCells
299  }; // end of PDEFoam
300 
301 } // namespace TMVA
302 
303 // ---------- Inline functions
304 
305 //_____________________________________________________________________
307 {
308  // transform variable x from [xmin, xmax] --> [0, 1]
309  return (x-fXmin[idim])/(fXmax[idim]-fXmin[idim]);
310 }
311 
312 //_____________________________________________________________________
313 inline std::vector<Float_t> TMVA::PDEFoam::VarTransform(const std::vector<Float_t> &invec) const
314 {
315  // transform vector invec from [xmin, xmax] --> [0, 1]
316  std::vector<Float_t> outvec;
317  for(UInt_t i=0; i<invec.size(); i++)
318  outvec.push_back(VarTransform(i, invec.at(i)));
319  return outvec;
320 }
321 
322 //_____________________________________________________________________
324 {
325  // transform variable x from [0, 1] --> [xmin, xmax]
326  return x*(fXmax[idim]-fXmin[idim]) + fXmin[idim];
327 }
328 
329 //_____________________________________________________________________
330 inline std::vector<Float_t> TMVA::PDEFoam::VarTransformInvers(const std::vector<Float_t> &invec) const
331 {
332  // transform vector invec from [0, 1] --> [xmin, xmax]
333  std::vector<Float_t> outvec;
334  for(UInt_t i=0; i<invec.size(); i++)
335  outvec.push_back(VarTransformInvers(i, invec.at(i)));
336  return outvec;
337 }
338 
339 #endif
Double_t * fRvec
Definition: PDEFoam.h:124
Bool_t fFillFoamWithOrigWeights
Definition: PDEFoam.h:137
virtual void FillFoamCells(const Event *ev, Float_t wt)
This function fills a weight 'wt' into the PDEFoam cell, which corresponds to the given event 'ev'...
Definition: PDEFoam.cxx:965
An array of TObjects.
Definition: TObjArray.h:39
MsgLogger * fLogger
Definition: PDEFoam.h:143
UInt_t fNmin
Definition: PDEFoam.h:134
Random number generator class based on M.
Definition: TRandom3.h:29
Long_t PeekMax()
Internal subprogram used by Create.
Definition: PDEFoam.cxx:661
EDTSeparation
Definition: PDEFoam.h:70
TObjArray * fVariableNames
timer for graphical output
Definition: PDEFoam.h:142
Int_t * fInhiDiv
[fDim] Dynamic Mask for cell division
Definition: PDEFoam.h:117
Float_t fVolFrac
Definition: PDEFoam.h:136
Int_t fDim
Definition: PDEFoam.h:109
Collectable string class.
Definition: TObjString.h:32
float Float_t
Definition: RtypesCore.h:53
EFoamType fFoamType
Definition: PDEFoam.h:130
UInt_t GetMaxDepth() const
Definition: PDEFoam.h:233
void OutputGrow(Bool_t finished=false)
message logger
Definition: PDEFoam.cxx:1470
MsgLogger & Log() const
Definition: PDEFoam.h:265
double T(double x)
Definition: ChebyshevPol.h:34
#define assert(cond)
Definition: unittest.h:542
UInt_t GetNCells() const
Definition: PDEFoam.h:226
PDEFoamDensityBase * GetDistr() const
Definition: PDEFoam.h:183
void Grow()
Internal subrogram used by Create.
Definition: PDEFoam.cxx:777
static const char * filename()
Double_t * fXmax
Definition: PDEFoam.h:132
Basic string class.
Definition: TString.h:137
void SetXmin(Int_t idim, Double_t wmin)
set lower foam bound in dimension idim
Definition: PDEFoam.cxx:275
UInt_t GetNActiveCells() const
Definition: PDEFoam.h:224
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
Double_t GetXmin(Int_t idim) const
Definition: PDEFoam.h:238
void SetCellElement(PDEFoamCell *cell, UInt_t i, Double_t value)
Set cell element i of cell to value.
Definition: PDEFoam.cxx:1442
Int_t Divide(PDEFoamCell *)
Internal subrogram used by Create.
Definition: PDEFoam.cxx:724
TH1D * Draw1Dim(ECellValue cell_value, Int_t nbin, PDEFoamKernelBase *kernel=NULL)
Draws 1-dimensional foam (= histogram)
Definition: PDEFoam.cxx:1228
void CheckAll(Int_t)
User utility, miscellaneous and debug.
Definition: PDEFoam.cxx:832
std::vector< TMVA::PDEFoamCell * > FindCells(const std::vector< Float_t > &) const
Find all cells, that contain txvec.
Definition: PDEFoam.cxx:1175
Int_t CellFill(Int_t, PDEFoamCell *)
Internal subprogram used by Create.
Definition: PDEFoam.cxx:399
void MakeAlpha()
Internal subrogram used by Create.
Definition: PDEFoam.cxx:647
Timer * fTimer
distribution of training events
Definition: PDEFoam.h:141
virtual Bool_t CellValueIsUndefined(PDEFoamCell *)
Returns true, if the value of the given cell is undefined.
Definition: PDEFoam.cxx:1000
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:254
void RootPlot2dim(const TString &filename, TString opt, Bool_t createCanvas=kTRUE, Bool_t colors=kTRUE)
Debugging tool which plots the cells of a 2-dimensional PDEFoam as rectangles in C++ format readable ...
Definition: PDEFoam.cxx:1521
UInt_t GetNmin()
Definition: PDEFoam.h:231
PDEFoamDensityBase * fDistr
Definition: PDEFoam.h:140
Int_t GetTotDim() const
Definition: PDEFoam.h:222
EFoamType
Definition: PDEFoam.h:74
TRandom3 * fPseRan
Definition: PDEFoam.h:126
void ResetCellElements()
Remove the cell elements from all cells.
Definition: PDEFoam.cxx:981
virtual void Explore(PDEFoamCell *Cell)
Internal subprogram used by Create.
Definition: PDEFoam.cxx:444
void SetMaxDepth(UInt_t maxdepth)
Definition: PDEFoam.h:232
Int_t fNBin
Definition: PDEFoam.h:112
Double_t GetXmax(Int_t idim) const
Definition: PDEFoam.h:239
void SetnSampl(Long_t nSampl)
Definition: PDEFoam.h:215
void InitCells()
Internal subprogram used by Create.
Definition: PDEFoam.cxx:366
void SetNmin(UInt_t val)
Definition: PDEFoam.h:230
void PrintCells()
Prints geometry of ALL cells of the FOAM.
Definition: PDEFoam.cxx:952
void Varedu(Double_t[], Int_t &, Double_t &, Double_t &)
Internal subrogram used by Create.
Definition: PDEFoam.cxx:580
void AddVariableName(const char *s)
Definition: PDEFoam.h:242
void SetXmax(Int_t idim, Double_t wmax)
set upper foam bound in dimension idim
Definition: PDEFoam.cxx:286
UInt_t fNElements
Definition: PDEFoam.h:133
Double_t GetCellElement(const PDEFoamCell *cell, UInt_t i) const
Returns cell element i of cell 'cell'.
Definition: PDEFoam.cxx:1426
T Sqr(T x) const
Definition: PDEFoam.h:186
Int_t fEvPerBin
Definition: PDEFoam.h:114
TObjString * GetVariableName(Int_t idx)
Definition: PDEFoam.h:244
unsigned int UInt_t
Definition: RtypesCore.h:42
Bool_t fPeekMax
Definition: PDEFoam.h:139
void SetDensity(PDEFoamDensityBase *dens)
Definition: PDEFoam.h:219
void SetDim(Int_t kDim)
Sets dimension of cubical space.
Definition: PDEFoam.cxx:260
Float_t VarTransform(Int_t idim, Float_t x) const
Definition: PDEFoam.h:306
1-D histogram with a double per channel (see TH1 documentation)}
Definition: TH1.h:613
TObjArray * fHistEdg
Definition: PDEFoam.h:123
void PrintCell(Long_t iCell=0)
Prints geometry of and elements of 'iCell', as well as relations to parent and daughter cells...
Definition: PDEFoam.cxx:905
UInt_t GetNInActiveCells() const
Definition: PDEFoam.h:225
EDTSeparation fDTSeparation
Definition: PDEFoam.h:138
Double_t * fXmin
Definition: PDEFoam.h:131
Int_t fNSampl
Definition: PDEFoam.h:113
long Long_t
Definition: RtypesCore.h:50
Color * colors
Definition: X3DBuffer.c:19
Double_t Eval(Double_t *xRand, Double_t &event_density)
Internal subprogram.
Definition: PDEFoam.cxx:757
double Double_t
Definition: RtypesCore.h:55
ECellValue
Definition: PDEFoam.h:85
Int_t fNoAct
[fDim] Flags for inhibiting cell division
Definition: PDEFoam.h:119
void SetnCells(Long_t nCells)
Definition: PDEFoam.h:214
void Create()
Basic initialization of FOAM invoked by the user.
Definition: PDEFoam.cxx:302
Double_t * fAlpha
Definition: PDEFoam.h:128
PDEFoamCell ** fCells
Definition: PDEFoam.h:121
virtual TH2D * Project2(Int_t idim1, Int_t idim2, ECellValue cell_value=kValue, PDEFoamKernelBase *kernel=NULL, UInt_t nbin=50)
Project foam variable idim1 and variable idim2 to histogram.
Definition: PDEFoam.cxx:1280
Int_t * fMaskDiv
Definition: PDEFoam.h:116
virtual Float_t GetCellValue(const std::vector< Float_t > &xvec, ECellValue cv, PDEFoamKernelBase *)
This function finds the cell, which corresponds to the given untransformed event vector 'xvec' and re...
Definition: PDEFoam.cxx:1026
void AddVariableName(TObjString *s)
Definition: PDEFoam.h:243
PDEFoamCell * GetRootCell() const
Definition: PDEFoam.h:227
UInt_t fMaxDepth
Definition: PDEFoam.h:135
void Initialize()
Definition: PDEFoam.h:198
Mother of all ROOT objects.
Definition: TObject.h:58
Abstract ClassifierFactory template that handles arbitrary types.
void DeleteBinarySearchTree()
Delete the foam's density estimator, which contains the binary search tree.
Definition: PDEFoam.cxx:1676
void FillBinarySearchTree(const Event *ev)
Insert event to internal foam's density estimator PDEFoamDensityBase.
Definition: PDEFoam.cxx:1667
virtual ~PDEFoam()
Default destructor.
Definition: PDEFoam.cxx:194
void SetnBin(Int_t nBin)
Definition: PDEFoam.h:216
void SetEvPerBin(Int_t EvPerBin)
Definition: PDEFoam.h:217
#define NULL
Definition: Rtypes.h:82
Int_t fLastCe
Definition: PDEFoam.h:120
PDEFoamCell * FindCell(const std::vector< Float_t > &) const
Find cell that contains 'xvec' (in foam coordinates [0,1]).
Definition: PDEFoam.cxx:1090
Int_t fNCells
Definition: PDEFoam.h:110
void Add(TObject *obj)
Definition: TObjArray.h:75
virtual void Finalize()
Definition: PDEFoam.h:209
TObject * At(Int_t idx) const
Definition: TObjArray.h:167
Float_t VarTransformInvers(Int_t idim, Float_t x) const
Definition: PDEFoam.h:323
const Bool_t kTRUE
Definition: Rtypes.h:91
TString fName
Definition: PDEFoam.h:108
float value
Definition: math.cpp:443
TString GetFoamName() const
Definition: PDEFoam.h:223
void SetInhiDiv(Int_t, Int_t)
This can be called before Create, after setting kDim It defines which variables are excluded in the p...
Definition: PDEFoam.cxx:812
PDEFoam()
Default constructor for streamer, user should not use it.
Definition: PDEFoam.cxx:113
2-D histogram with a double per channel (see TH1 documentation)}
Definition: TH2.h:297