00001 // @(#)root/tmva $Id: Volume.h 29122 2009-06-22 06:51:30Z brun $ 00002 // Author: Andreas Hoecker, Joerg Stelzer, Helge Voss, Kai Voss 00003 00004 /********************************************************************************** 00005 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis * 00006 * Package: TMVA * 00007 * Class : Volume * 00008 * Web : http://tmva.sourceforge.net * 00009 * * 00010 * Description: * 00011 * Volume for BinarySearchTree * 00012 * * 00013 * Authors (alphabetical): * 00014 * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland * 00015 * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany * 00016 * Kai Voss <Kai.Voss@cern.ch> - U. of Victoria, Canada * 00017 * * 00018 * Copyright (c) 2005: * 00019 * CERN, Switzerland * 00020 * U. of Victoria, Canada * 00021 * MPI-K Heidelberg, Germany * 00022 * * 00023 * Redistribution and use in source and binary forms, with or without * 00024 * modification, are permitted according to the terms listed in LICENSE * 00025 * (http://tmva.sourceforge.net/LICENSE) * 00026 **********************************************************************************/ 00027 00028 #ifndef ROOT_TMVA_Volume 00029 #define ROOT_TMVA_Volume 00030 00031 ////////////////////////////////////////////////////////////////////////// 00032 // // 00033 // Volume // 00034 // // 00035 // Volume for BinarySearchTree // 00036 // // 00037 // volume element: cubic variable space beteen upper and lower bonds of // 00038 // nvar-dimensional variable space // 00039 // // 00040 ////////////////////////////////////////////////////////////////////////// 00041 00042 #include <vector> 00043 #ifndef ROOT_Rtypes 00044 #include "Rtypes.h" 00045 #endif 00046 //#include "time.h" 00047 00048 namespace TMVA { 00049 00050 class Volume { 00051 00052 public: 00053 00054 // constructors 00055 Volume( std::vector<Float_t>* l, std::vector<Float_t>* u = 0); 00056 Volume( std::vector<Double_t>* l = 0, std::vector<Double_t>* u = 0); 00057 Volume( Volume& ); 00058 Volume( Float_t* l , Float_t* u , Int_t nvar ); 00059 Volume( Double_t* l , Double_t* u , Int_t nvar ); 00060 Volume( Float_t l , Float_t u ); 00061 Volume( Double_t l , Double_t u ); 00062 00063 // destructor 00064 virtual ~Volume( void ); 00065 00066 // destruct the volue 00067 void Delete ( void ); 00068 // "scale" the volume by multiplying each upper and lower boundary by "f" 00069 void Scale ( Double_t f ); 00070 // "scale" the volume by symmetrically blowing up the interval in each dimension 00071 void ScaleInterval( Double_t f ); 00072 void Print ( void ) const; 00073 00074 // allow direct access for better speed 00075 std::vector<Double_t> *fLower; // vector with lower volume dimensions 00076 std::vector<Double_t> *fUpper; // vector with upper volume dimensions 00077 00078 private: 00079 00080 Bool_t fOwnerShip; // flag if "boundary vector" is owned by the volume of not 00081 }; 00082 00083 } // namespace TMVA 00084 00085 #endif