97#define BXOPE std::cout<<\ 
   98"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"<<std::endl<<\ 
 
  100#define BXTXT(text) std::cout<<\ 
  101"F                   "<<std::setw(40)<<         text           <<"                   F"<<std::endl 
 
  102#define BX1I(name,numb,text) std::cout<<\ 
  103"F "<<std::setw(10)<<name<<" = "<<std::setw(10)<<numb<<" = "          <<std::setw(50)<<text<<" F"<<std::endl 
 
  104#define BX1F(name,numb,text)     std::cout<<"F "<<std::setw(10)<<name<<\ 
  105          " = "<<std::setw(15)<<std::setprecision(8)<<numb<<"   =    "<<std::setw(40)<<text<<" F"<<std::endl 
 
  106#define BX2F(name,numb,err,text) std::cout<<"F "<<std::setw(10)<<name<<\ 
  107" = "<<std::setw(15)<<std::setprecision(8)<<numb<<" +- "<<std::setw(15)<<std::setprecision(8)<<err<< \ 
  108                                                      "  = "<<std::setw(25)<<text<<" F"<<std::endl 
 
  109#define BXCLO std::cout<<\ 
  111"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"<<std::endl 
 
  117#define SW2 setprecision(7) << std::setw(12) 
  146   fDim(0), fNCells(0), fRNmax(0),
 
  147   fOptDrive(0), fChat(0), fOptRej(0),
 
  148   fNBin(0), fNSampl(0), fEvPerBin(0),
 
  149   fMaskDiv(nullptr), fInhiDiv(nullptr), fOptPRD(0), fXdivPRD(nullptr),
 
  150   fNoAct(0), fLastCe(0),
 
  151   fMCMonit(nullptr), fMaxWtRej(0), fPrimAcu(nullptr),
 
  152   fHistEdg(nullptr), fHistDbg(nullptr), fHistWt(nullptr),
 
  153   fMCvect(nullptr), fMCwt(0), fRvec(nullptr),
 
  154   fRho(nullptr), fMethodCall(nullptr), fPseRan(nullptr),
 
  155   fNCalls(0), fNEffev(0),
 
  156   fSumWt(0), fSumWt2(0),
 
  157   fSumOve(0), fNevGen(0),
 
  158   fWtMax(0), fWtMin(0),
 
  159   fPrime(0), fMCresult(0), fMCerror(0),
 
 
  167   fDim(0), fNCells(0), fRNmax(0),
 
  168   fOptDrive(0), fChat(0), fOptRej(0),
 
  169   fNBin(0), fNSampl(0), fEvPerBin(0),
 
  170   fMaskDiv(nullptr), fInhiDiv(nullptr), fOptPRD(0), fXdivPRD(nullptr),
 
  171   fNoAct(0), fLastCe(0),
 
  172   fMCMonit(nullptr), fMaxWtRej(0), fPrimAcu(nullptr),
 
  173   fHistEdg(nullptr), fHistDbg(nullptr), fHistWt(nullptr),
 
  174   fMCvect(nullptr), fMCwt(0), fRvec(nullptr),
 
  175   fRho(nullptr), fMethodCall(nullptr), fPseRan(nullptr),
 
  176   fNCalls(0), fNEffev(0),
 
  177   fSumWt(0), fSumWt2(0),
 
  178   fSumOve(0), fNevGen(0),
 
  179   fWtMax(0), fWtMin(0),
 
  180   fPrime(0), fMCresult(0), fMCerror(0),
 
  184      Error(
"TFoam",
"Name too long %s \n",Name);
 
  187   fDate=
"  Release date:  2005.04.10";                   
 
 
  269   Error(
"TFoam", 
"COPY CONSTRUCTOR NOT IMPLEMENTED \n");
 
 
  329      BXTXT(
"****************************************");
 
  330      BXTXT(
"******      TFoam::Initialize    ******");
 
  331      BXTXT(
"****************************************");
 
  334      BX1I(
"     kDim",
fDim,     
" Dimension of the hyper-cubical space             ");
 
  335      BX1I(
"   nCells",
fNCells,   
" Requested number of Cells (half of them active)  ");
 
  336      BX1I(
"   nSampl",
fNSampl,   
" No of MC events in exploration of a cell         ");
 
  337      BX1I(
"     nBin",
fNBin,     
" No of bins in histograms, MC exploration of cell ");
 
  338      BX1I(
" EvPerBin",
fEvPerBin, 
" Maximum No effective_events/bin, MC exploration  ");
 
  339      BX1I(
" OptDrive",
fOptDrive, 
" Type of Driver   =1,2 for Sigma,WtMax            ");
 
  340      BX1I(
"   OptRej",
fOptRej,   
" MC rejection on/off for OptRej=0,1               ");
 
  341      BX1F(
" MaxWtRej",
fMaxWtRej, 
" Maximum wt in rejection for wt=1 evts");
 
  345   if(
fPseRan==
nullptr) 
Error(
"Initialize", 
"Random number generator not set \n");
 
  346   if(
fRho==
nullptr && 
fMethodCall==
nullptr ) 
Error(
"Initialize", 
"Distribution function not set \n");
 
  347   if(
fDim==0) 
Error(
"Initialize", 
"Zero dimension not allowed \n");
 
  355   if(
fRvec==
nullptr)  
Error(
"Initialize", 
"Cannot initialize buffer fRvec \n");
 
  359      if(
fAlpha==
nullptr)  
Error(
"Initialize", 
"Cannot initialize buffer fAlpha \n" );
 
  362   if(
fMCvect==
nullptr)  
Error(
"Initialize", 
"Cannot initialize buffer fMCvect  \n" );
 
  430      BXTXT(
"***  TFoam::Initialize FINISHED!!!  ***");
 
  431      BX1I(
"    nCalls",
fNCalls,  
"Total number of function calls         ");
 
  432      BX1F(
"    XPrime",
fPrime,   
"Primary total integral                 ");
 
  433      BX1F(
"    XDiver",driver,    
"Driver  total integral                 ");
 
  434      BX1F(
"  mcResult",
fMCresult,
"Estimate of the true MC Integral       ");
 
 
  460   if(
fCells==
nullptr) 
Error(
"InitCells", 
"Cannot initialize CELLS \n"  );
 
 
  481      Error( 
"CellFill", 
"Too many cells\n");
 
  488   cell->Fill(Status, parent, 
nullptr, 
nullptr);
 
 
  574         for(k=0; k<
fDim; k++) {
 
  593   for(k=0; k<
fDim;k++){
 
  601      for(k=0; k<
fDim; k++) {
 
  640      Error(
"Explore", 
"Wrong fOptDrive = \n" );
 
  654   for(parent = 
cell->GetPare(); parent!=
nullptr; parent = parent->
GetPare()){
 
 
  759   if(bins==
nullptr)    
Error(
"Carver", 
"Cannot initialize buffer Bins \n" );
 
 
  868        Error(
"Grow", 
"Wrong iCell \n");
 
  879                  std::cout<<
fDim<<std::flush;
 
  881                  std::cout<<
"."<<std::flush;
 
  889      std::cout<<std::endl<<std::flush;
 
 
  906      if( 
getCell(i)->GetStat() == 1 ) {
 
  917      std::cout << 
"STOP in TFoam::PeekMax: not found iCell=" <<  
iCell << std::endl;
 
 
  986   if(
fPrime == 0.) 
Error(
"MakeActiveList", 
"Integrand function is zero  \n"  );
 
  989   if( 
fPrimAcu==
nullptr ) 
Error(
"MakeActiveList", 
"Cant allocate fCellsAct or fPrimAcu \n");
 
 
 1009      Info(
"ResetPseRan", 
"Resetting random number generator  \n");
 
 
 1023      Error(
"SetRho", 
"Bad function \n" );
 
 
 1037      Error(
"SetRho", 
"Bad function \n" );
 
 
 1052      Info(
"ResetRho", 
"!!! Resetting distribution function  !!!\n");
 
 
 1275      BXTXT(
"****************************************");
 
 1276      BXTXT(
"******     TFoam::Finalize       ******");
 
 1277      BXTXT(
"****************************************");
 
 1278      BX1I(
"    NevGen",
fNevGen, 
"Number of generated events in the MC generation   ");
 
 1279      BX1I(
"    nCalls",
fNCalls, 
"Total number of function calls                    ");
 
 1280      BXTXT(
"----------------------------------------");
 
 1281      BX1F(
"     AveWt",
aveWt,    
"Average MC weight                      ");
 
 1282      BX1F(
"     WtMin",
fWtMin,  
"Minimum MC weight (absolute)           ");
 
 1283      BX1F(
"     WtMax",
fWtMax,  
"Maximum MC weight (absolute)           ");
 
 1284      BXTXT(
"----------------------------------------");
 
 1285      BX1F(
"    XPrime",
fPrime,  
"Primary total integral, R_prime        ");
 
 1286      BX1F(
"    XDiver",driver,   
"Driver  total integral, R_loss         ");
 
 1287      BXTXT(
"----------------------------------------");
 
 1289      BX1F(
" mCerelat", 
mCerelat,  
"Relative error of the MC integral      ");
 
 1290      BX1F(
" <w>/WtMax",
mCeff,     
"MC efficiency, acceptance rate");
 
 1291      BX1F(
" Sigma/<w>",
mcEf2,     
"MC efficiency, variance/ave_wt");
 
 1292      BX1F(
"     WtMax",
wtMax,     
"WtMax(esp= 0.0005)            ");
 
 1293      BX1F(
"     Sigma",
sigma,     
"variance of MC weight         ");
 
 1296         BX1F(
"<OveW>/<W>",
avOve,     
"Contrib. of events wt>MaxWtRej");
 
 
 1314   if(
fDim==0) 
Error(
"TFoam",
"SetInhiDiv: fDim=0 \n");
 
 1323      Error(
"SetInhiDiv:",
"Wrong iDim \n");
 
 
 1344   if(
fDim<=0)  
Error(
"SetXdivPRD", 
"fDim=0 \n");
 
 1345   if(   
len<1 )  
Error(
"SetXdivPRD", 
"len<1 \n");
 
 1355         Error(
"SetXdivPRD", 
"Second allocation of XdivPRD not allowed \n");
 
 1357      for(i=0; i<
len; i++) {
 
 1361      Error(
"SetXdivPRD", 
"Wrong iDim  \n");
 
 1364   std::cout<<
" SetXdivPRD, idim= "<<
iDim<<
"  len= "<<
len<<
"   "<<std::endl;
 
 1365   for(i=0; i<
len; i++) {
 
 1368   std::cout<<std::endl;
 
 1369   for(i=0; i<
len; i++)  std::cout<< 
xDiv[i] <<
"   ";
 
 1370   std::cout<<std::endl;
 
 
 1387   if (level==1) std::cout << 
"///////////////////////////// FOAM_Checks /////////////////////////////////" << std::endl;
 
 1391      if( ((
cell->GetDau0()==
nullptr) && (
cell->GetDau1()!=
nullptr) ) ||
 
 1392         ((
cell->GetDau1()==
nullptr) && (
cell->GetDau0()!=
nullptr) ) ) {
 
 1394         if (level==1) 
Error(
"CheckAll",
"ERROR: Cell's no %ld has only one daughter \n",
iCell);
 
 1396      if( (
cell->GetDau0()==
nullptr) && (
cell->GetDau1()==
nullptr) && (
cell->GetStat()==0) ) {
 
 1398         if (level==1) 
Error(
"CheckAll",
"ERROR: Cell's no %ld  has no daughter and is inactive \n",
iCell);
 
 1400      if( (
cell->GetDau0()!=
nullptr) && (
cell->GetDau1()!=
nullptr) && (
cell->GetStat()==1) ) {
 
 1402         if (level==1) 
Error(
"CheckAll",
"ERROR: Cell's no %ld has two daughters and is active \n",
iCell);
 
 1407         if ( (
cell != 
cell->GetPare()->GetDau0()) && (
cell != 
cell->GetPare()->GetDau1()) ) {
 
 1409            if (level==1) 
Error(
"CheckAll",
"ERROR: Cell's no %ld parent not pointing to this cell\n ",
iCell);
 
 1414      if(
cell->GetDau0()!=
nullptr) {
 
 1415         if(
cell != (
cell->GetDau0())->GetPare()) {
 
 1417            if (level==1)  
Error(
"CheckAll",
"ERROR: Cell's no %ld daughter 0 not pointing to this cell \n",
iCell);
 
 1420      if(
cell->GetDau1()!=
nullptr) {
 
 1421         if(
cell != (
cell->GetDau1())->GetPare()) {
 
 1423            if (level==1) 
Error(
"CheckAll",
"ERROR: Cell's no %ld daughter 1 not pointing to this cell \n",
iCell);
 
 1431      if( (
cell->GetStat()==1) && (
cell->GetDriv()==0) ) {
 
 1433         if(level==1) 
Warning(
"CheckAll", 
"Warning: Cell no. %ld is active but empty \n", 
iCell);
 
 1441      Info(
"CheckAll",
"Check - found total %d  errors \n",
errors);
 
 
 1453      std::cout<<
"Cell["<<
iCell<<
"]={ ";
 
 1455      std::cout<<std::endl;
 
 1457      std::cout<<
"}"<<std::endl;
 
 
 1473   outfile<<
"cMap = new TCanvas(\"Map1\",\" Cell Map \",600,600);"<<std::endl;
 
 1475   outfile<<
"TBox*a=new TBox();"<<std::endl;
 
 1476   outfile<<
"a->SetFillStyle(0);"<<std::endl;  
 
 1477   outfile<<
"a->SetLineWidth(4);"<<std::endl;
 
 1478   outfile<<
"a->SetLineColor(2);"<<std::endl;
 
 1479   outfile<<
"a->DrawBox("<<offs<<
","<<offs<<
","<<(offs+
lpag)<<
","<<(offs+
lpag)<<
");"<<std::endl;
 
 1481   outfile<<
"TText*t=new TText();"<<std::endl;  
 
 1482   outfile<<
"t->SetTextColor(4);"<<std::endl;
 
 1484      outfile<<
"t->SetTextSize(0.025);"<<std::endl;  
 
 1486      outfile<<
"t->SetTextSize(0.015);"<<std::endl;
 
 1488      outfile<<
"t->SetTextSize(0.008);"<<std::endl;
 
 1490   outfile<<
"TBox*b=new TBox();"<<std::endl;  
 
 1491   outfile <<
"b->SetFillStyle(0);"<<std::endl;
 
 1495      outfile << 
"// =========== Rectangular cells  ==========="<< std::endl;
 
 1503            outfile<<
"b->DrawBox("<<
x1<<
","<<
y1<<
","<<
x2<<
","<<
y2<<
");"<<std::endl;
 
 1507               outfile<<
"t->DrawText("<<
x<<
","<<
y<<
","<<
"\""<<
iCell<<
"\""<<
");"<<std::endl;
 
 1511      outfile<<
"// ============== End Rectangles ==========="<< std::endl;
 
 
 1523   Info(
"LinkCells", 
"VOID function for backward compatibility \n");
 
 
 1530  if(
fCells[i]->GetCells() == 
nullptr) {
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
#define BX1F(name, numb, text)
 
#define BX1I(name, numb, text)
 
#define BX2F(name, numb, err, text)
 
static const Double_t gVlow
 
static const Double_t gHigh
 
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 winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
 
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 result
 
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 winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
Option_t Option_t TPoint TPoint const char y2
 
Option_t Option_t TPoint TPoint const char y1
 
Double_t Density(Int_t nDim, Double_t *x) override
 
~FoamIntegrandFunction() override
 
FoamIntegrandFunction(FunctionPtr func)
 
Double_t(* FunctionPtr)(Int_t, Double_t *)
 
void Print(Option_t *option) const override
Printout of the cell geometry parameters for the debug purpose.
 
void SetCells(TFoamCell **cells)
 
void GetHcub(TFoamVect &, TFoamVect &) const
Provides size and position of the cell These parameter are calculated by analyzing information in all...
 
TFoamCell * GetPare() const
 
void SetSerial(Int_t Serial)
 
void SetDriv(Double_t Driv)
 
void SetIntg(Double_t Intg)
 
Abstract class representing n-dimensional real positive integrand function.
 
virtual Double_t Density(Int_t ndim, Double_t *)=0
 
Small auxiliary class for controlling MC weight.
 
void Fill(Double_t)
Filling analyzed weight.
 
void GetMCeff(Double_t, Double_t &, Double_t &)
Calculates Efficiency= aveWt/wtLim for a given tolerance level epsilon<<1 using information stored in...
 
Auxiliary class TFoamVect of n-dimensional vector, with dynamic allocation used for the cartesian geo...
 
TFoam is the main class of the multi-dimensional general purpose Monte Carlo event generator (integra...
 
TFoamCell * getCell(std::size_t i) const
 
virtual void MakeActiveList()
Internal method used by Initialize.
 
virtual void CheckAll(Int_t)
User utility, miscellaneous and debug.
 
TString fName
Name of a given instance of the FOAM class.
 
virtual Int_t Divide(TFoamCell *)
Internal method used by Initialize.
 
virtual void PrintCells()
Prints geometry of ALL cells of the FOAM.
 
TH1D * fHistWt
Histogram of the MC wt.
 
virtual void GetMCvect(Double_t *)
User may get generated MC point/vector with help of this method.
 
TFoamIntegrand * fRho
! Pointer to the user-defined integrand function/distribution
 
TRandom * fPseRan
Pointer to user-defined generator of pseudorandom numbers.
 
Double_t fMCerror
and its error
 
Double_t fPrime
Primary integral R' (R=R'<wt>)
 
Int_t fChat
Chat=0,1,2 chat level in output, Chat=1 normal level.
 
virtual void InitCells()
Internal method used by Initialize.
 
Double_t fNevGen
Total number of the generated MC events.
 
virtual void MakeEvent()
User method.
 
Double_t fSumWt2
Total sum of wt and wt^2.
 
TFoamVect ** fXdivPRD
! Lists of division values encoded in one vector per direction
 
~TFoam() override
Default destructor.
 
virtual Long_t PeekMax()
Internal method used by Initialize.
 
virtual void GenerCel2(TFoamCell *&)
Internal method.
 
virtual void Initialize()
Basic initialization of FOAM invoked by the user.
 
virtual void Varedu(Double_t[5], Int_t &, Double_t &, Double_t &)
Internal method used by Initialize.
 
virtual void GetIntNorm(Double_t &, Double_t &)
User method.
 
TFoamMaxwt * fMCMonit
Monitor of the MC weight for measuring MC efficiency.
 
Int_t fRNmax
Maximum No. of the rand. numb. requested at once.
 
Int_t * fInhiDiv
! [fDim] Flags for inhibiting cell division
 
Long_t fNCalls
Total number of the function calls.
 
virtual Double_t GetMCwt()
User may get weight MC weight using this method.
 
Double_t fWtMin
Maximum/Minimum MC weight.
 
virtual void ResetRho(TFoamIntegrand *Rho)
User may optionally reset the distribution using this method.
 
Int_t fEvPerBin
Maximum number of effective (wt=1) events per bin.
 
virtual void GetIntegMC(Double_t &, Double_t &)
User method.
 
Double_t fMaxWtRej
Maximum weight in rejection for getting wt=1 events.
 
Int_t fNCells
Maximum number of cells.
 
Double_t * fRvec
[fRNmax] random number vector from r.n. generator fDim+1 maximum elements
 
virtual void RootPlot2dim(Char_t *)
Debugging tool which plots 2-dimensional cells as rectangles in C++ format readable for root.
 
Double_t * fAlpha
[fDim] Internal parameters of the hyper-rectangle
 
Int_t fOptDrive
Optimization switch =1,2 for variance or maximum weight optimization.
 
virtual void Explore(TFoamCell *Cell)
Internal method used by Initialize.
 
virtual Double_t Eval(Double_t *)
Internal method.
 
virtual void MakeAlpha()
Internal method used by Initialize.
 
virtual void ResetPseRan(TRandom *PseRan)
User may optionally reset random number generator using this method.
 
TMethodCall * fMethodCall
! ROOT's pointer to user-defined global distribution function
 
Double_t Sqr(Double_t x) const
 
Int_t fLastCe
Index of the last cell.
 
Int_t fOptPRD
Option switch for predefined division, for quick check.
 
TObjArray * fHistDbg
Histograms of wt, for debug.
 
virtual void SetXdivPRD(Int_t, Int_t, Double_t[])
This should be called before Initialize, after setting kDim It predefines values of the cell division...
 
Double_t fSumOve
Total Sum of overweighted events.
 
virtual void SetInhiDiv(Int_t, Int_t)
This can be called before Initialize, after setting kDim It defines which variables are excluded in t...
 
std::vector< Long_t > fCellsAct
Index of active cells, constructed at the end of foam build-up.
 
Int_t * fMaskDiv
! [fDim] Dynamic Mask for cell division
 
virtual void LinkCells(void)
 
virtual void SetRho(TFoamIntegrand *Rho)
User may use this method to set the distribution object.
 
virtual void SetRhoInt(Double_t(*fun)(Int_t, Double_t *))
User may use this method to set the distribution object as a global function pointer (and not as an i...
 
Int_t fNoAct
Number of active cells.
 
virtual void Finalize(Double_t &, Double_t &)
May be called optionally by the user after the MC run.
 
Long_t fNEffev
Total number of effective events (wt=1) in the foam buildup.
 
Int_t fOptRej
Switch =0 for weighted events; =1 for unweighted events in MC.
 
Double_t * fPrimAcu
[fNoAct] Array of cumulative probability of all active cells
 
virtual Double_t MCgenerate(Double_t *MCvect)
User method which generates MC event and returns MC weight.
 
Double_t * fMCvect
[fDim] Generated MC vector for the outside user
 
TString fVersion
Actual version of the FOAM like (1.01m)
 
virtual Int_t CellFill(Int_t, TFoamCell *)
Internal method used by Initialize.
 
Int_t fDim
Dimension of the integration/simulation space.
 
Int_t fNSampl
No. of MC events, when dividing (exploring) cell.
 
TString fDate
Release date of FOAM.
 
TFoamCell ** fCells
[fNCells] Array of ALL cells
 
virtual void SetPseRan(TRandom *PseRan)
 
TObjArray * fHistEdg
Histograms of wt, one for each cell edge.
 
Double_t fMCresult
True Integral R from MC series.
 
virtual void GetWtParams(Double_t, Double_t &, Double_t &, Double_t &)
May be called optionally after the MC run.
 
Int_t fNBin
No. of bins in the edge histogram for cell MC exploration.
 
virtual void Grow()
Internal method used by Initialize.
 
TFoam()
Default constructor for streamer, user should not use it.
 
virtual void Carver(Int_t &, Double_t &, Double_t &)
Internal method used by Initialize.
 
1-D histogram with a double per channel (see TH1 documentation)
 
void Reset(Option_t *option="") override
Reset.
 
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
 
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
 
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
 
void Execute(const char *, const char *, int *=nullptr) override
Execute method on this object with the given parameter string, e.g.
 
void SetParamPtrs(void *paramArr, Int_t nparam=-1)
ParamArr is an array containing the function argument values.
 
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
 
Mother of all ROOT objects.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
This is the base class for the ROOT Random number generators.
 
virtual void RndmArray(Int_t n, Float_t *array)
Return an array of n random numbers uniformly distributed in ]0,1].
 
Double_t Rndm() override
Machine independent random number generator.
 
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
 
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
 
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
 
static uint64_t sum(uint64_t i)