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

#include "QFramework/TQFolder.h"
#include "RooWorkspace.h"
#include "RooStats/HistFactory/Measurement.h"

class TSModelFactory {

private:

  Bool_t fShowInfo;
  Bool_t fShowError;
  Bool_t fShowWarn;

  void splitHistoLocation(TString input, TString &histoFile, TString &histoName, TString &histoPath);

  Bool_t addChannel(TQFolder * definition, RooStats::HistFactory::Measurement * measurement);
  Bool_t addSample(TQFolder * definition, RooStats::HistFactory::Channel * channel);
  Bool_t addNormFactor(TQFolder * definition, RooStats::HistFactory::Sample * sample);
  Bool_t addOverallSys(TQFolder * definition, RooStats::HistFactory::Sample * sample);
  Bool_t addHistoSys(TQFolder * definition, RooStats::HistFactory::Sample * sample);
  Bool_t addShapeFactor(TQFolder * definition, RooStats::HistFactory::Sample * sample);
  Bool_t addHistoFactor(TQFolder * definition, RooStats::HistFactory::Sample * sample);  
  Bool_t addShapeSys(TQFolder * definition, RooStats::HistFactory::Sample * sample);


protected:

  virtual void info(TString message);
  virtual void error(TString message);
  virtual void warn(TString message);

  mutable TQFolder* fModel = 0;
  
public:

  TSModelFactory();

  virtual RooStats::HistFactory::Measurement * createMeasurement(TQFolder * model);
  virtual Bool_t writeHistograms(TQFolder* model, const TString& histosFile);

  virtual Bool_t reviseWorkspace(RooWorkspace * workspace, TQFolder * model);

  virtual Bool_t createXML(RooStats::HistFactory::Measurement * measurement, const TString& xmlDir, const TString& histoFile);
  virtual Bool_t createXML(TQFolder * model, const TString& xmlDir);

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

};

#endif
 TSModelFactory.h:1
 TSModelFactory.h:2
 TSModelFactory.h:3
 TSModelFactory.h:4
 TSModelFactory.h:5
 TSModelFactory.h:6
 TSModelFactory.h:7
 TSModelFactory.h:8
 TSModelFactory.h:9
 TSModelFactory.h:10
 TSModelFactory.h:11
 TSModelFactory.h:12
 TSModelFactory.h:13
 TSModelFactory.h:14
 TSModelFactory.h:15
 TSModelFactory.h:16
 TSModelFactory.h:17
 TSModelFactory.h:18
 TSModelFactory.h:19
 TSModelFactory.h:20
 TSModelFactory.h:21
 TSModelFactory.h:22
 TSModelFactory.h:23
 TSModelFactory.h:24
 TSModelFactory.h:25
 TSModelFactory.h:26
 TSModelFactory.h:27
 TSModelFactory.h:28
 TSModelFactory.h:29
 TSModelFactory.h:30
 TSModelFactory.h:31
 TSModelFactory.h:32
 TSModelFactory.h:33
 TSModelFactory.h:34
 TSModelFactory.h:35
 TSModelFactory.h:36
 TSModelFactory.h:37
 TSModelFactory.h:38
 TSModelFactory.h:39
 TSModelFactory.h:40
 TSModelFactory.h:41
 TSModelFactory.h:42
 TSModelFactory.h:43
 TSModelFactory.h:44
 TSModelFactory.h:45
 TSModelFactory.h:46
 TSModelFactory.h:47
 TSModelFactory.h:48
 TSModelFactory.h:49
 TSModelFactory.h:50
 TSModelFactory.h:51
 TSModelFactory.h:52
 TSModelFactory.h:53
 TSModelFactory.h:54
 TSModelFactory.h:55