// @(#)root/tmva $Id$   
// Author: Omar Zapata, Lorenzo Moneta, Sergei Gleyzer

/**********************************************************************************
 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis       *
 * Package: TMVA                                                                  *
 * Class  : ROCCurve                                                              *
 *                                                                                *
 * Description:                                                                   *
 *      This is class to compute ROC Integral (AUC)                               *
 *                                                                                *
 * Authors :                                                                      *
 *      Omar Zapata     <Omar.Zapata@cern.ch>    - UdeA/ITM Colombia              *
 *      Lorenzo Moneta  <Lorenzo.Moneta@cern.ch> - CERN, Switzerland              *
 *      Sergei Gleyzer  <Sergei.Gleyzer@cern.ch> - U of Florida & CERN            *
 *                                                                                *
 * Copyright (c) 2015:                                                            *
 *      CERN, Switzerland                                                         *
 *      UdeA/ITM, Colombia                                                        *
 *      U. of Florida, USA                                                        *
 **********************************************************************************/
#ifndef ROOT_TMVA_ROCCurve
#define ROOT_TMVA_ROCCurve

#include "Rtypes.h"

#include <iomanip>
#include <iostream>
#include <sstream>
#include <vector>

class TList;
class TTree;
class TString;
class TH1;
class TH2;
class TH2F;
class TSpline;
class TSpline1;
class TGraph;

namespace TMVA {

  class MsgLogger;


  class ROCCurve {
    
  public:
    ROCCurve( const std::vector<Float_t> & mvaS, const std::vector<Bool_t> & mvat);
    
    ~ROCCurve();
    

    Double_t GetROCIntegral();
    TGraph* GetROCCurve(const UInt_t points=100);//nvidisions = #points -1
    
  private:
    void EpsilonCount();
    mutable MsgLogger* fLogger;   //! message logger
    MsgLogger& Log() const { return *fLogger; }                       
    TGraph *fGraph;
    std::vector<Float_t> fMvaS;
    std::vector<Float_t> fMvaB;
    std::vector<Float_t> fEpsilonSig;
    std::vector<Float_t> fEpsilonBgk;

  };
}
#endif
 ROCCurve.h:1
 ROCCurve.h:2
 ROCCurve.h:3
 ROCCurve.h:4
 ROCCurve.h:5
 ROCCurve.h:6
 ROCCurve.h:7
 ROCCurve.h:8
 ROCCurve.h:9
 ROCCurve.h:10
 ROCCurve.h:11
 ROCCurve.h:12
 ROCCurve.h:13
 ROCCurve.h:14
 ROCCurve.h:15
 ROCCurve.h:16
 ROCCurve.h:17
 ROCCurve.h:18
 ROCCurve.h:19
 ROCCurve.h:20
 ROCCurve.h:21
 ROCCurve.h:22
 ROCCurve.h:23
 ROCCurve.h:24
 ROCCurve.h:25
 ROCCurve.h:26
 ROCCurve.h:27
 ROCCurve.h:28
 ROCCurve.h:29
 ROCCurve.h:30
 ROCCurve.h:31
 ROCCurve.h:32
 ROCCurve.h:33
 ROCCurve.h:34
 ROCCurve.h:35
 ROCCurve.h:36
 ROCCurve.h:37
 ROCCurve.h:38
 ROCCurve.h:39
 ROCCurve.h:40
 ROCCurve.h:41
 ROCCurve.h:42
 ROCCurve.h:43
 ROCCurve.h:44
 ROCCurve.h:45
 ROCCurve.h:46
 ROCCurve.h:47
 ROCCurve.h:48
 ROCCurve.h:49
 ROCCurve.h:50
 ROCCurve.h:51
 ROCCurve.h:52
 ROCCurve.h:53
 ROCCurve.h:54
 ROCCurve.h:55
 ROCCurve.h:56
 ROCCurve.h:57
 ROCCurve.h:58
 ROCCurve.h:59
 ROCCurve.h:60
 ROCCurve.h:61
 ROCCurve.h:62
 ROCCurve.h:63
 ROCCurve.h:64
 ROCCurve.h:65
 ROCCurve.h:66
 ROCCurve.h:67
 ROCCurve.h:68
 ROCCurve.h:69
 ROCCurve.h:70