#ifndef ROOT_TMVA_QUICKMVAPROBESTIMATOR 
#define ROOT_TMVA_QUICKMVAPROBESTIMATOR 

#include <iostream>
#include <vector>
#include <algorithm>

#include "TMVA/MsgLogger.h"

namespace TMVA {

  class QuickMVAProbEstimator {
  public:
    
    struct EventInfo{
      Double_t eventValue;
      Double_t eventWeight; 
      Int_t    eventType;  //signal or background
    };
    static bool compare(EventInfo e1, EventInfo e2){return e1.eventValue < e2.eventValue;}
    
    QuickMVAProbEstimator(Int_t nMin=40, Int_t nMax=5000):fIsSorted(false),fNMin(nMin),fNMax(nMax){ fLogger = new MsgLogger("QuickMVAProbEstimator");}
    
    
    virtual ~QuickMVAProbEstimator(){delete fLogger;}
    void AddEvent(Double_t val, Double_t weight, Int_t type);
    
   
    Double_t GetMVAProbAt(Double_t value);
    
    
  private:
    std::vector<EventInfo> fEvtVector;
    Bool_t                 fIsSorted;
    UInt_t                 fNMin;
    UInt_t                 fNMax;
    
    mutable MsgLogger*    fLogger;
    MsgLogger& Log() const { return *fLogger; }
    
    ClassDef(QuickMVAProbEstimator,0) // Interface to different separation critiera used in training algorithms
      
      
  };
}


#endif
 QuickMVAProbEstimator.h:1
 QuickMVAProbEstimator.h:2
 QuickMVAProbEstimator.h:3
 QuickMVAProbEstimator.h:4
 QuickMVAProbEstimator.h:5
 QuickMVAProbEstimator.h:6
 QuickMVAProbEstimator.h:7
 QuickMVAProbEstimator.h:8
 QuickMVAProbEstimator.h:9
 QuickMVAProbEstimator.h:10
 QuickMVAProbEstimator.h:11
 QuickMVAProbEstimator.h:12
 QuickMVAProbEstimator.h:13
 QuickMVAProbEstimator.h:14
 QuickMVAProbEstimator.h:15
 QuickMVAProbEstimator.h:16
 QuickMVAProbEstimator.h:17
 QuickMVAProbEstimator.h:18
 QuickMVAProbEstimator.h:19
 QuickMVAProbEstimator.h:20
 QuickMVAProbEstimator.h:21
 QuickMVAProbEstimator.h:22
 QuickMVAProbEstimator.h:23
 QuickMVAProbEstimator.h:24
 QuickMVAProbEstimator.h:25
 QuickMVAProbEstimator.h:26
 QuickMVAProbEstimator.h:27
 QuickMVAProbEstimator.h:28
 QuickMVAProbEstimator.h:29
 QuickMVAProbEstimator.h:30
 QuickMVAProbEstimator.h:31
 QuickMVAProbEstimator.h:32
 QuickMVAProbEstimator.h:33
 QuickMVAProbEstimator.h:34
 QuickMVAProbEstimator.h:35
 QuickMVAProbEstimator.h:36
 QuickMVAProbEstimator.h:37
 QuickMVAProbEstimator.h:38
 QuickMVAProbEstimator.h:39
 QuickMVAProbEstimator.h:40
 QuickMVAProbEstimator.h:41
 QuickMVAProbEstimator.h:42
 QuickMVAProbEstimator.h:43
 QuickMVAProbEstimator.h:44
 QuickMVAProbEstimator.h:45
 QuickMVAProbEstimator.h:46
 QuickMVAProbEstimator.h:47
 QuickMVAProbEstimator.h:48