#ifndef ROOT_TMVA_MethodPDERS
#define ROOT_TMVA_MethodPDERS
#ifndef ROOT_TMVA_MethodBase
#include "TMVA/MethodBase.h"
#endif
#ifndef ROOT_TMVA_BinarySearchTree
#include "TMVA/BinarySearchTree.h"
#endif
#ifndef ROOT_TMVA_TVector
#include "TVector.h"
#endif
namespace TMVA {
   class Volume;
   class Event;
   class MethodPDERS : public MethodBase {
   public:
      MethodPDERS( TString jobName,
                   TString methodTitle, 
                   DataSet& theData,
                   TString theOption,
                   TDirectory* theTargetDir = 0 );
      MethodPDERS( DataSet& theData,
                   TString theWeightFile,
                   TDirectory* theTargetDir = NULL );
      virtual ~MethodPDERS( void );
      
      virtual void Train( void );
      
      virtual void WriteWeightsToStream( ostream& o ) const;
      virtual void WriteWeightsToStream( TFile& rf ) const;
      
      virtual void ReadWeightsFromStream( istream& istr );
      virtual void ReadWeightsFromStream( TFile& istr );
      
      virtual Double_t GetMvaValue();
   public:
      
      static Double_t IGetVolumeContentForRoot( Double_t );
      Double_t         GetVolumeContentForRoot( Double_t );
      
      static MethodPDERS* ThisPDERS( void ) { return fgThisPDERS; }
   protected:
      
      virtual void MakeClassSpecific( std::ostream&, const TString& ) const;
      
      void GetHelpMessage() const;
      Volume*      fHelpVolume; 
      Int_t        fFcnCall;    
      
      BinarySearchTree* GetBinaryTreeSig( void ) const { return fBinaryTreeS; }
      BinarySearchTree* GetBinaryTreeBkg( void ) const { return fBinaryTreeB; }
      Double_t KernelEstimate( const Event&, std::vector<const BinarySearchTreeNode*>&, Volume& );
      Double_t ApplyKernelFunction( Double_t normalized_distance );
      Double_t KernelNormalization( Double_t pdf );
      Double_t GetNormalizedDistance( const TMVA::Event &base_event, 
                                      const BinarySearchTreeNode &sample_event, 
                                      Double_t *dim_normalization);
      Double_t NormSinc( Double_t x );
      Double_t LanczosFilter( Int_t level, Double_t x );
      
      const Ranking* CreateRanking() { return 0; }
   private:
      
      virtual void DeclareOptions();
      virtual void ProcessOptions();
      
      void CalcAverages();
      
      void CreateBinarySearchTrees( TTree* tree );
      
      TString fVolumeRange;   
      TString fKernelString;  
      enum EVolumeRangeMode {
         kUnsupported = 0,
         kMinMax,
         kRMS,
         kAdaptive,
         kUnscaled
      } fVRangeMode;
      enum EKernelEstimator {
         kBox = 0,
         kSphere,
         kTeepee,
         kGauss,
         kSinc3,     
         kSinc5,
         kSinc7,
         kSinc9,
         kSinc11,
         kLanczos2,
         kLanczos3,
         kLanczos5,
         kLanczos8
      } fKernelEstimator;
      BinarySearchTree*  fBinaryTreeS;   
      BinarySearchTree*  fBinaryTreeB;   
      vector<Float_t>*   fDelta;         
      vector<Float_t>*   fShift;         
      vector<Float_t>    fAverageRMS;    
      Float_t            fScaleS;        
      Float_t            fScaleB;        
      Float_t            fDeltaFrac;     
      Double_t           fGaussSigma;    
      
      Float_t            fNEventsMin;    
      Float_t            fNEventsMax;    
      Float_t            fMaxVIterations;
      Float_t            fInitialScale;  
      Bool_t             fInitializedVolumeEle; 
      void    SetVolumeElement ( void );
      Float_t RScalc           ( const Event& );
      Float_t GetError         ( Float_t countS, Float_t countB,
                                 Float_t sumW2S, Float_t sumW2B ) const;
      
      static MethodPDERS* fgThisPDERS; 
      void UpdateThis() { fgThisPDERS = this; }
      void InitPDERS( void );
      ClassDef(MethodPDERS,0) 
   };
} 
#endif // MethodPDERS_H
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.