26 class RooNLLVar : 
public RooAbsOptTestStatistic {
 
   30   RooNLLVar() { _first = kTRUE ; }
 
   31   RooNLLVar(
const char *name, 
const char* title, RooAbsPdf& pdf, RooAbsData& data,
 
   32        const RooCmdArg& arg1=RooCmdArg::none(), 
const RooCmdArg& arg2=RooCmdArg::none(),
const RooCmdArg& arg3=RooCmdArg::none(),
 
   33        const RooCmdArg& arg4=RooCmdArg::none(), 
const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none(),
 
   34        const RooCmdArg& arg7=RooCmdArg::none(), 
const RooCmdArg& arg8=RooCmdArg::none(),
const RooCmdArg& arg9=RooCmdArg::none()) ;
 
   36   RooNLLVar(
const char *name, 
const char *title, RooAbsPdf& pdf, RooAbsData& data,
 
   37        Bool_t extended, 
const char* rangeName=0, 
const char* addCoefRangeName=0, 
 
   38        Int_t nCPU=1, RooFit::MPSplit interleave=RooFit::BulkPartition, Bool_t verbose=kTRUE, Bool_t splitRange=kFALSE, 
 
   39        Bool_t cloneData=kTRUE, Bool_t binnedL=kFALSE) ;
 
   41   RooNLLVar(
const char *name, 
const char *title, RooAbsPdf& pdf, RooAbsData& data,
 
   42        const RooArgSet& projDeps, Bool_t extended=kFALSE, 
const char* rangeName=0, 
 
   43        const char* addCoefRangeName=0, Int_t nCPU=1, RooFit::MPSplit interleave=RooFit::BulkPartition, Bool_t verbose=kTRUE, Bool_t splitRange=kFALSE, 
 
   44        Bool_t cloneData=kTRUE, Bool_t binnedL=kFALSE) ;
 
   46   RooNLLVar(
const RooNLLVar& other, 
const char* name=0);
 
   47   virtual TObject* clone(
const char* newname)
 const { 
return new RooNLLVar(*
this,newname); }
 
   49   virtual RooAbsTestStatistic* create(
const char *name, 
const char *title, RooAbsReal& pdf, RooAbsData& adata,
 
   50                   const RooArgSet& projDeps, 
const char* rangeName, 
const char* addCoefRangeName=0, 
 
   51                   Int_t nCPU=1, RooFit::MPSplit interleave=RooFit::BulkPartition, Bool_t verbose=kTRUE, Bool_t splitRange=kFALSE, Bool_t binnedL=kFALSE) {
 
   52     return new RooNLLVar(name,title,(RooAbsPdf&)pdf,adata,projDeps,_extended,rangeName, addCoefRangeName, nCPU, interleave,verbose,splitRange,kFALSE,binnedL) ;
 
   57   void applyWeightSquared(Bool_t flag) ; 
 
   59   virtual Double_t defaultErrorLevel()
 const { 
return 0.5 ; }
 
   61   void batchMode(
bool on = 
true) {
 
   62     _batchEvaluations = on;
 
   67   virtual Bool_t processEmptyDataSets()
 const { 
return _extended ; }
 
   68   virtual Double_t evaluatePartition(std::size_t firstEvent, std::size_t lastEvent, std::size_t stepSize) 
const;
 
   70   static RooArgSet _emptySet ; 
 
   73   std::tuple<double, double, double> computeBatched(
 
   74       std::size_t stepSize, std::size_t firstEvent, std::size_t lastEvent) 
const;
 
   76   std::tuple<double, double, double> computeScalar(
 
   77         std::size_t stepSize, std::size_t firstEvent, std::size_t lastEvent) 
const;
 
   80   bool _batchEvaluations{
false};
 
   82   mutable Bool_t _first ; 
 
   83   Double_t _offsetSaveW2; 
 
   84   Double_t _offsetCarrySaveW2; 
 
   86   mutable std::vector<Double_t> _binw ; 
 
   87   mutable RooRealSumPdf* _binnedPdf ;