#ifndef ROOT_TMVA_ROCCalc
#define ROOT_TMVA_ROCCalc
#include <vector>
#include <sstream>
#include <iostream>
#include <iomanip>
class TList;
class TTree;
class TString;
class TH1;
class TH2;
class TH2F;
class TSpline;
class TSpline1;
namespace TMVA {
class MsgLogger;
class ROCCalc {
public:
ROCCalc(TH1* mvaS, TH1* mvaB);
~ROCCalc();
TH1D* GetROC();
Double_t GetEffSForEffBof(Double_t effBref, Double_t &effSerr);
Double_t GetSignalReferenceCut(){return fSignalCut;}
Double_t GetROCIntegral();
TH1* GetSignificance( Int_t nStot, Int_t nBtot);
TH1* GetPurity(Int_t nStot, Int_t nBtot);
void ApplySignalAndBackgroundStyle( TH1* sig, TH1* bkg, TH1* any = 0 );
TH1* GetMvaSpdf(){return fmvaSpdf;}
TH1* GetMvaBpdf(){return fmvaBpdf;}
private:
Double_t Root(Double_t);
Double_t GetEffForRoot( Double_t theCut );
Int_t fMaxIter;
Double_t fAbsTol;
UInt_t fNbins;
Bool_t fUseSplines;
TH1* fmvaS, *fmvaB;
TH1* fmvaSpdf, *fmvaBpdf;
Float_t fXmin, fXmax;
Double_t fNevtS;
Int_t fCutOrientation;
TSpline* fSplS, *fSplB;
TSpline* fSplmvaCumS, *fSplmvaCumB;
TSpline* fSpleffBvsS;
TH1* fmvaScumul, *fmvaBcumul;
Int_t fnStot, fnBtot;
TH1* fSignificance;
TH1* fPurity;
Double_t fSignalCut;
mutable MsgLogger* fLogger;
MsgLogger& Log() const { return *fLogger; }
};
}
#endif