/usr/include/root/TMVA/MethodFDA.h is in libroot-tmva-dev 5.34.30-0ubuntu8.
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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | // @(#)root/tmva $Id$
// Author: Andreas Hoecker, Peter Speckmayer
/**********************************************************************************
* Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
* Package: TMVA *
* Class : MethodFDA *
* Web : http://tmva.sourceforge.net *
* *
* Description: *
* Function discriminant analysis (FDA). This simple classifier *
* fits any user-defined TFormula (via option configuration string) to *
* the training data by requiring a formula response of 1 (0) to signal *
* (background) events. The parameter fitting is done via the abstract *
* class FitterBase, featuring Monte Carlo sampling, Genetic *
* Algorithm, Simulated Annealing, MINUIT and combinations of these. *
* *
* Authors (alphabetical): *
* Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
* Peter Speckmayer <speckmay@mail.cern.ch> - CERN, Switzerland *
* *
* Copyright (c) 2005-2010: *
* 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_MethodFDA
#define ROOT_TMVA_MethodFDA
//////////////////////////////////////////////////////////////////////////
// //
// MethodFDA //
// //
// Function discriminant analysis (FDA). This simple classifier //
// fits any user-defined TFormula (via option configuration string) to //
// the training data by requiring a formula response of 1 (0) to signal //
// (background) events. The parameter fitting is done via the abstract //
// class FitterBase, featuring Monte Carlo sampling, Genetic //
// Algorithm, Simulated Annealing, MINUIT and combinations of these. //
// //
// Can compute one-dimensional regression //
// //
//////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TMVA_MethodBase
#include "TMVA/MethodBase.h"
#endif
#ifndef ROOT_TMVA_IFitterTarget
#include "TMVA/IFitterTarget.h"
#endif
class TFormula;
namespace TMVA {
class Interval;
class Event;
class FitterBase;
class MethodFDA : public MethodBase, public IFitterTarget {
public:
MethodFDA( const TString& jobName,
const TString& methodTitle,
DataSetInfo& theData,
const TString& theOption = "",
TDirectory* theTargetDir = 0 );
MethodFDA( DataSetInfo& theData,
const TString& theWeightFile,
TDirectory* theTargetDir = NULL );
virtual ~MethodFDA( void );
Bool_t HasAnalysisType( Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets );
// training method
void Train( void );
using MethodBase::ReadWeightsFromStream;
void AddWeightsXMLTo ( void* parent ) const;
void ReadWeightsFromStream( std::istream & i );
void ReadWeightsFromXML ( void* wghtnode );
// calculate the MVA value
Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
virtual const std::vector<Float_t>& GetRegressionValues();
virtual const std::vector<Float_t>& GetMulticlassValues();
void Init( void );
// ranking of input variables
const Ranking* CreateRanking() { return 0; }
Double_t EstimatorFunction( std::vector<Double_t>& );
// no check of options at this place
void CheckSetup() {}
protected:
// make ROOT-independent C++ class for classifier response (classifier-specific implementation)
void MakeClassSpecific( std::ostream&, const TString& ) const;
// get help message text
void GetHelpMessage() const;
private:
// compute multiclass values
void CalculateMulticlassValues( const TMVA::Event*& evt, std::vector<Double_t>& parameters, std::vector<Float_t>& values);
// create and interpret formula expression and compute estimator
void CreateFormula ();
Double_t InterpretFormula( const Event*, std::vector<Double_t>::iterator begin, std::vector<Double_t>::iterator end );
// clean up
void ClearAll();
// print fit results
void PrintResults( const TString&, std::vector<Double_t>&, const Double_t ) const;
// the option handling methods
void DeclareOptions();
void ProcessOptions();
TString fFormulaStringP; // string with function
TString fParRangeStringP; // string with ranges of parameters
TString fFormulaStringT; // string with function
TString fParRangeStringT; // string with ranges of parameters
TFormula* fFormula; // the discrimination function
UInt_t fNPars; // number of parameters
std::vector<Interval*> fParRange; // ranges of parameters
std::vector<Double_t> fBestPars; // the pars that optimise (minimise) the estimator
TString fFitMethod; // estimator optimisation method
TString fConverger; // fitmethod uses fConverger as intermediate step to converge into local minimas
FitterBase* fFitter; // the fitter used in the training
IFitterTarget* fConvergerFitter; // intermediate fitter
// sum of weights (this should become centrally available through the dataset)
Double_t fSumOfWeightsSig; // sum of weights (signal)
Double_t fSumOfWeightsBkg; // sum of weights (background)
Double_t fSumOfWeights; // sum of weights
//
Int_t fOutputDimensions; // number of output values
ClassDef(MethodFDA,0) // Function Discriminant Analysis
};
} // namespace TMVA
#endif // MethodFDA_H
|