//this file looks like plain C, but it's actually -*- c++ -*-
#ifndef LIKELIHOOD_SCANNER
#define LIKELIHOOD_SCANNER

#include "RooWorkspace.h"

#include "TSStatisticsCalculator.h"

class TSLikelihoodScanner : public TSStatisticsCalculator {

 protected:

  typedef std::map<TString,double> Point; // EXCLUDE
  virtual void info(TString message) override;
  void generatePoints(const std::vector<TQFolder*>& params, std::vector<Point>& points, const Point& thispoint, size_t idx=0);
  TString stringify(const Point& p);
  
public:
  
  static int nPoints(TQFolder* config);
  
  TSLikelihoodScanner(RooWorkspace * ws, TQFolder* snapshots);
  
  std::map<TString,TQFolder*> collectParameters(TQFolder* options);

  virtual TQFolder * runCalculation(TQFolder * options = NULL) override;

  TQFolder* runPreFit(TQFolder * options);
  std::map<Point,TQFolder*> runScan(TQFolder * options, TQFolder* uncondResult);
  TQFolder * finalizeScan(TQFolder * options, std::map<Point,TQFolder*>& result);
  
  virtual ~TSLikelihoodScanner();
  
  ClassDefOverride(TSLikelihoodScanner, 0);
  
};

#endif
 TSLikelihoodScanner.h:1
 TSLikelihoodScanner.h:2
 TSLikelihoodScanner.h:3
 TSLikelihoodScanner.h:4
 TSLikelihoodScanner.h:5
 TSLikelihoodScanner.h:6
 TSLikelihoodScanner.h:7
 TSLikelihoodScanner.h:8
 TSLikelihoodScanner.h:9
 TSLikelihoodScanner.h:10
 TSLikelihoodScanner.h:11
 TSLikelihoodScanner.h:12
 TSLikelihoodScanner.h:13
 TSLikelihoodScanner.h:14
 TSLikelihoodScanner.h:15
 TSLikelihoodScanner.h:16
 TSLikelihoodScanner.h:17
 TSLikelihoodScanner.h:18
 TSLikelihoodScanner.h:19
 TSLikelihoodScanner.h:20
 TSLikelihoodScanner.h:21
 TSLikelihoodScanner.h:22
 TSLikelihoodScanner.h:23
 TSLikelihoodScanner.h:24
 TSLikelihoodScanner.h:25
 TSLikelihoodScanner.h:26
 TSLikelihoodScanner.h:27
 TSLikelihoodScanner.h:28
 TSLikelihoodScanner.h:29
 TSLikelihoodScanner.h:30
 TSLikelihoodScanner.h:31
 TSLikelihoodScanner.h:32
 TSLikelihoodScanner.h:33
 TSLikelihoodScanner.h:34
 TSLikelihoodScanner.h:35
 TSLikelihoodScanner.h:36
 TSLikelihoodScanner.h:37
 TSLikelihoodScanner.h:38