#ifndef ROOT_TMVA_Tools
#define ROOT_TMVA_Tools
#include <vector>
#include <string>
#ifndef ROOT_TMVA_TMatrixDSymEigen
#include "TMatrixDSymEigen.h"
#endif
#ifndef ROOT_TMVA_MsgLogger
#include "TMVA/MsgLogger.h"
#endif
class TList;
class TTree;
class TString;
class TH1;
class TSpline;
namespace TMVA {
class Event;
class PDF;
class Tools {
private:
Tools();
public:
~Tools();
static Tools& Instance() { return fgTools?*(fgTools): *(fgTools = new Tools()); }
void ComputeStat( TTree* theTree, const TString theVarName,
Double_t&, Double_t&, Double_t&,
Double_t&, Double_t&, Double_t&, Bool_t norm = kFALSE );
inline Double_t ComputeVariance( Double_t sumx2, Double_t sumx, Int_t nx );
TH1* ProjNormTH1F( TTree* theTree, TString theVarName,
TString name, Int_t nbins,
Double_t xmin, Double_t xmax, TString cut );
Double_t NormHist( TH1* theHist, Double_t norm = 1.0 );
TList* ParseFormatLine( TString theString, const char * sep = ":" );
std::vector<Int_t>* ParseANNOptionString( TString theOptions, Int_t nvar,
std::vector<Int_t>* nodes );
TMatrixD* GetSQRootMatrix( TMatrixDSym* symMat );
const TMatrixD* GetCorrelationMatrix( const TMatrixD* covMat );
Bool_t CheckSplines( const TH1*, const TSpline* );
Double_t NormVariable( Double_t x, Double_t xmin, Double_t xmax );
Double_t GetSeparation( const TH1& S, const TH1& B ) const;
Double_t GetSeparation( const PDF& pdfS, const PDF& pdfB ) const;
std::vector<Double_t> MVADiff( std::vector<Double_t>&, std::vector<Double_t>& );
void Scale( std::vector<Double_t>&, Double_t );
void Scale( std::vector<Float_t>&, Float_t );
void UsefulSortDescending( std::vector< std::vector<Double_t> >&, std::vector<TString>* vs = 0 );
void UsefulSortAscending ( std::vector< std::vector<Double_t> >& );
void UsefulSortDescending( std::vector<Double_t>& );
void UsefulSortAscending ( std::vector<Double_t>& );
Int_t GetIndexMaxElement ( std::vector<Double_t>& );
Int_t GetIndexMinElement ( std::vector<Double_t>& );
Bool_t ContainsRegularExpression( const TString& s );
TString ReplaceRegularExpressions( const TString& s, const TString& replace = "+" );
void FormattedOutput( const std::vector<Double_t>&, const std::vector<TString>&,
const TString titleVars, const TString titleValues, MsgLogger& logger,
TString format = "%+1.3f" );
void FormattedOutput( const TMatrixD&, const std::vector<TString>&, MsgLogger& logger );
void WriteFloatArbitraryPrecision( Float_t val, ostream& os );
void ReadFloatArbitraryPrecision ( Float_t& val, istream& is );
template<typename T>
inline Bool_t VerifyRange( MsgLogger& mlog, const char *varstr, T& var, T vmin, T vmax );
template<typename T>
inline Bool_t VerifyRange( MsgLogger& mlog, const char *varstr, T& var, T vmin, T vmax, T vdef );
template<typename T>
inline Int_t VerifyRange( T& var, T vmin, T vmax );
MsgLogger& Logger() const;
const TString& Color( const TString& );
enum EWelcomeMessage { kStandardWelcomeMsg = 1,
kIsometricWelcomeMsg,
kBlockWelcomeMsg,
kLeanWelcomeMsg,
kLogoWelcomeMsg,
kSmall1WelcomeMsg,
kSmall2WelcomeMsg,
kOriginalWelcomeMsgColor,
kOriginalWelcomeMsgBW };
void TMVAWelcomeMessage();
void TMVAWelcomeMessage( MsgLogger& logger, EWelcomeMessage m = kStandardWelcomeMsg );
void TMVAVersionMessage( MsgLogger& logger );
void ROOTVersionMessage( MsgLogger& logger );
const TString fRegexp;
mutable MsgLogger* fLogger;
static Tools* fgTools;
};
#if !defined(__CINT__) || defined(__MAKECINT__)
Tools& gTools();
#endif
}
inline Double_t TMVA::Tools::ComputeVariance( Double_t sumx2, Double_t sumx, Int_t nx )
{
if (nx<2) return 0;
return (sumx2 - ((sumx*sumx)/static_cast<Double_t>(nx)))/static_cast<Double_t>(nx-1);
}
template<typename T>
inline Int_t TMVA::Tools::VerifyRange( T& var, T vmin, T vmax )
{
if (var>vmax) return 1;
if (var<vmin) return -1;
return 0;
}
template<typename T>
inline Bool_t TMVA::Tools::VerifyRange( TMVA::MsgLogger& mlog, const char *varstr, T& var, T vmin, T vmax )
{
Int_t dir = TMVA::Tools::VerifyRange(var,vmin,vmax);
Bool_t modif=kFALSE;
if (dir==1) {
modif = kTRUE;
var=vmax;
}
if (dir==-1) {
modif = kTRUE;
var=vmin;
}
if (modif) {
mlog << kWARNING << "Option <" << varstr << "> " << (dir==1 ? "above":"below") << " allowed range. Reset to new value = " << var << Endl;
}
return modif;
}
template<typename T>
inline Bool_t TMVA::Tools::VerifyRange( TMVA::MsgLogger& mlog, const char *varstr, T& var, T vmin, T vmax, T vdef )
{
Int_t dir = TMVA::Tools::VerifyRange(var,vmin,vmax);
Bool_t modif=kFALSE;
if (dir!=0) {
modif = kTRUE;
var=vdef;
}
if (modif) {
mlog << kWARNING << "Option <" << varstr << "> " << (dir==1 ? "above":"below") << " allowed range. Reset to default value = " << var << Endl;
}
return modif;
}
#endif
Last change: Tue Nov 11 12:37:49 2008
Last generated: 2008-11-11 12:37
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.