/usr/include/root/TMVA/PDEFoamCell.h is in libroot-tmva-dev 5.34.19+dfsg-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | // @(#)root/tmva $Id$
// Author: S. Jadach, Tancredi Carli, Dominik Dannheim, Alexander Voigt
/**********************************************************************************
* Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
* Package: TMVA *
* Classes: PDEFoamCell *
* Web : http://tmva.sourceforge.net *
* *
* Description: *
* Objects of this class are hyperrectangular cells organized in *
* the binary tree. Special algoritm for encoding relalive *
* positioning of the cells saves total memory allocation needed *
* for the system of cells. *
* *
* Authors (alphabetical): *
* S. Jadach - Institute of Nuclear Physics, Cracow, Poland *
* Tancredi Carli - CERN, Switzerland *
* Dominik Dannheim - CERN, Switzerland *
* Alexander Voigt - TU Dresden, Germany *
* *
* Copyright (c) 2008: *
* CERN, Switzerland *
* MPI-K Heidelberg, Germany *
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted according to the terms listed in LICENSE *
* (http://tmva.sourceforge.net/LICENSE) *
**********************************************************************************/
#ifndef ROOT_TMVA_PDEFoamCell
#define ROOT_TMVA_PDEFoamCell
#ifndef ROOT_TObject
#include "TObject.h"
#endif
#ifndef ROOT_TRef
#include "TRef.h"
#endif
#ifndef ROOT_TMVA_PDEFoamVect
#include "TMVA/PDEFoamVect.h"
#endif
namespace TMVA {
class PDEFoamCell : public TObject {
// static, the same for all cells!
private:
Short_t fDim; // Dimension of the vector space
// MEMBERS
private:
//--- linked tree organization ---
Int_t fSerial; // Serial number
Int_t fStatus; // Status (active, inactive)
TRef fParent; // Pointer to parent cell
TRef fDaught0; // Pointer to daughter 1
TRef fDaught1; // Pointer to daughter 2
//--- M.C. sampling and choice of the best edge ---
private:
Double_t fXdiv; // Factor for division
Int_t fBest; // Best Edge for division
//--- Integrals of all kinds ---
Double_t fVolume; // Cartesian Volume of cell
Double_t fIntegral; // Integral over cell (estimate from exploration)
Double_t fDrive; // Driver integral, only for cell build-up
//---------- working space for the user --------------
TObject *fElement; // may set by the user to save some data in this cell
//////////////////////////////////////////////////////////////////////////////////////
// METHODS //
//////////////////////////////////////////////////////////////////////////////////////
public:
PDEFoamCell(); // Default Constructor for ROOT streamers
PDEFoamCell(Int_t); // User Constructor
PDEFoamCell(const PDEFoamCell&); // Copy constructor
virtual ~PDEFoamCell(); // Destructor
void Fill(Int_t, PDEFoamCell*, PDEFoamCell*, PDEFoamCell*); // Assigns values of attributes
//--------------- Geometry ----------------------------------
Double_t GetXdiv() const { return fXdiv;} // Pointer to Xdiv
Int_t GetBest() const { return fBest;} // Pointer to Best
void SetBest(Int_t Best){ fBest =Best;} // Set Best edge candidate
void SetXdiv(Double_t Xdiv){ fXdiv =Xdiv;} // Set x-division for best edge cand.
void GetHcub( PDEFoamVect&, PDEFoamVect&) const; // Get position and size vectors (h-cubical subspace)
void GetHSize( PDEFoamVect& ) const; // Get size only of cell vector (h-cubical subspace)
//--------------- Integrals/Volumes -------------------------
void CalcVolume(); // Calculates volume of cell
Double_t GetVolume() const { return fVolume;} // Volume of cell
Double_t GetIntg() const { return fIntegral;} // Get Integral
Double_t GetDriv() const { return fDrive;} // Get Drive
void SetIntg(Double_t Intg){ fIntegral=Intg;} // Set true integral
void SetDriv(Double_t Driv){ fDrive =Driv;} // Set driver integral
//--------------- linked tree organization ------------------
Int_t GetStat() const { return fStatus;} // Get Status
void SetStat(Int_t Stat){ fStatus=Stat;} // Set Status
PDEFoamCell* GetPare() const { return (PDEFoamCell*) fParent.GetObject(); } // Get Pointer to parent cell
PDEFoamCell* GetDau0() const { return (PDEFoamCell*) fDaught0.GetObject(); } // Get Pointer to 1-st daughter vertex
PDEFoamCell* GetDau1() const { return (PDEFoamCell*) fDaught1.GetObject(); } // Get Pointer to 2-nd daughter vertex
void SetDau0(PDEFoamCell* Daug){ fDaught0 = Daug;} // Set pointer to 1-st daughter
void SetDau1(PDEFoamCell* Daug){ fDaught1 = Daug;} // Set pointer to 2-nd daughter
void SetPare(PDEFoamCell* Pare){ fParent = Pare;} // Set pointer to parent
void SetSerial(Int_t Serial){ fSerial=Serial;} // Set serial number
Int_t GetSerial() const { return fSerial;} // Get serial number
UInt_t GetDepth(); // Get depth in binary tree
UInt_t GetTreeDepth(UInt_t depth=0); // Get depth of binary tree
//--- other ---
void Print(Option_t *option) const ; // Prints cell content
//--- getter and setter for user variable ---
void SetElement(TObject* fobj){ fElement = fobj; } // Set user variable
TObject* GetElement() const { return fElement; } // Get pointer to user varibale
////////////////////////////////////////////////////////////////////////////
ClassDef(PDEFoamCell,2) //Single cell of FOAM
}; // end of PDEFoamCell
} // namespace TMVA
#endif
|