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

#include "TString.h"
#include <map>

class RooWorkspace;

class TQSampleFolder;
class TQFolder;

class TSStatisticsManager {
 public:
  class Action { // nested
  protected:
    virtual bool execute(TQFolder* config) const = 0;
    mutable TSStatisticsManager* manager = NULL;

    TQFolder* models () const;
    TQFolder* workspaces () const;
    TQFolder* results () const;

  public:
    int perform(TQFolder* config, TSStatisticsManager* manager) const;
  };
  
  static bool registerAction(const Action* a, const char* name);
  static void printActions();
  static const std::map<const std::string,const TSStatisticsManager::Action*>& getActions();
  friend Action;

 protected:

		TQFolder * fModels;
		TQFolder * fWorkspaces;
		TQFolder * fResults;
		TQSampleFolder * fDefaultSampleFolder;

		Int_t fFileCompression;

 public:
		void info(TString message);
		void error(TString message);
		void warn(TString message);

		TSStatisticsManager();

    void reset();

    void setDefaultSampleFolder(TQSampleFolder * sampleFolder);
    TQSampleFolder * getDefaultSampleFolder();

		TQFolder * getModels();
		TQFolder * getWorkspaces();
		TQFolder * getResults();

    void  setHistogramsFileCompression(Int_t compression);
    Int_t getHistogramsFileCompression();

    Bool_t run(TQFolder * config);

		virtual ~TSStatisticsManager();
		
		ClassDef(TSStatisticsManager, 0);

};

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