#ifndef ROO_RANDOMIZE_PARAM_MCS_MODULE
#define ROO_RANDOMIZE_PARAM_MCS_MODULE
#include "RooAbsMCStudyModule.h"
#include "RooRealVar.h"
#include <list>
class RooRandomizeParamMCSModule : public RooAbsMCStudyModule {
public:
RooRandomizeParamMCSModule() ;
RooRandomizeParamMCSModule(const RooRandomizeParamMCSModule& other) ;
virtual ~RooRandomizeParamMCSModule() ;
void sampleUniform(RooRealVar& param, Double_t lo, Double_t hi) ;
void sampleGaussian(RooRealVar& param, Double_t mean, Double_t sigma) ;
void sampleSumUniform(const RooArgSet& paramSet, Double_t lo, Double_t hi) ;
void sampleSumGauss(const RooArgSet& paramSet, Double_t lo, Double_t hi) ;
Bool_t initializeInstance() ;
Bool_t initializeRun(Int_t ) ;
RooDataSet* finalizeRun() ;
Bool_t processBeforeGen(Int_t ) ;
private:
struct UniParam {
UniParam() {}
UniParam(RooRealVar* p, Double_t lo, Double_t hi) : _param(p), _lo(lo), _hi(hi) {}
bool operator==(const UniParam& other) { return (_param==other._param) ; }
bool operator<(const UniParam& other) { return (_lo<other._lo) ; }
RooRealVar* _param ;
Double_t _lo ;
Double_t _hi ;
} ;
struct UniParamSet {
UniParamSet() {}
UniParamSet(const RooArgSet& pset, Double_t lo, Double_t hi) : _pset(pset), _lo(lo), _hi(hi) {}
bool operator==(const UniParamSet& other) { return (_lo==other._lo) ; }
bool operator<(const UniParamSet& other) { return (_lo<other._lo) ; }
RooArgSet _pset ;
Double_t _lo ;
Double_t _hi ;
} ;
struct GausParam {
GausParam() {}
GausParam(RooRealVar* p, Double_t mean, Double_t sigma) : _param(p), _mean(mean), _sigma(sigma) {}
bool operator==(const GausParam& other) { return (_param==other._param) ; }
bool operator<(const GausParam& other) { return (_mean<other._mean) ; }
RooRealVar* _param ;
Double_t _mean ;
Double_t _sigma ;
} ;
struct GausParamSet {
GausParamSet() {}
GausParamSet(const RooArgSet& pset, Double_t mean, Double_t sigma) : _pset(pset), _mean(mean), _sigma(sigma) {}
bool operator==(const GausParamSet& other) { return (_mean==other._mean) ; }
bool operator<(const GausParamSet& other) { return (_mean<other._mean) ; }
RooArgSet _pset ;
Double_t _mean ;
Double_t _sigma ;
} ;
std::list<UniParam> _unifParams ;
std::list<UniParamSet> _unifParamSets ;
std::list<GausParam> _gausParams ;
std::list<GausParamSet> _gausParamSets ;
RooArgSet _genParSet ;
RooDataSet* _data ;
ClassDef(RooRandomizeParamMCSModule,0)
} ;
#endif
RooRandomizeParamMCSModule.h:1 RooRandomizeParamMCSModule.h:2 RooRandomizeParamMCSModule.h:3 RooRandomizeParamMCSModule.h:4 RooRandomizeParamMCSModule.h:5 RooRandomizeParamMCSModule.h:6 RooRandomizeParamMCSModule.h:7 RooRandomizeParamMCSModule.h:8 RooRandomizeParamMCSModule.h:9 RooRandomizeParamMCSModule.h:10 RooRandomizeParamMCSModule.h:11 RooRandomizeParamMCSModule.h:12 RooRandomizeParamMCSModule.h:13 RooRandomizeParamMCSModule.h:14 RooRandomizeParamMCSModule.h:15 RooRandomizeParamMCSModule.h:16 RooRandomizeParamMCSModule.h:17 RooRandomizeParamMCSModule.h:18 RooRandomizeParamMCSModule.h:19 RooRandomizeParamMCSModule.h:20 RooRandomizeParamMCSModule.h:21 RooRandomizeParamMCSModule.h:22 RooRandomizeParamMCSModule.h:23 RooRandomizeParamMCSModule.h:24 RooRandomizeParamMCSModule.h:25 RooRandomizeParamMCSModule.h:26 RooRandomizeParamMCSModule.h:27 RooRandomizeParamMCSModule.h:28 RooRandomizeParamMCSModule.h:29 RooRandomizeParamMCSModule.h:30 RooRandomizeParamMCSModule.h:31 RooRandomizeParamMCSModule.h:32 RooRandomizeParamMCSModule.h:33 RooRandomizeParamMCSModule.h:34 RooRandomizeParamMCSModule.h:35 RooRandomizeParamMCSModule.h:36 RooRandomizeParamMCSModule.h:37 RooRandomizeParamMCSModule.h:38 RooRandomizeParamMCSModule.h:39 RooRandomizeParamMCSModule.h:40 RooRandomizeParamMCSModule.h:41 RooRandomizeParamMCSModule.h:42 RooRandomizeParamMCSModule.h:43 RooRandomizeParamMCSModule.h:44 RooRandomizeParamMCSModule.h:45 RooRandomizeParamMCSModule.h:46 RooRandomizeParamMCSModule.h:47 RooRandomizeParamMCSModule.h:48 RooRandomizeParamMCSModule.h:49 RooRandomizeParamMCSModule.h:50 RooRandomizeParamMCSModule.h:51 RooRandomizeParamMCSModule.h:52 RooRandomizeParamMCSModule.h:53 RooRandomizeParamMCSModule.h:54 RooRandomizeParamMCSModule.h:55 RooRandomizeParamMCSModule.h:56 RooRandomizeParamMCSModule.h:57 RooRandomizeParamMCSModule.h:58 RooRandomizeParamMCSModule.h:59 RooRandomizeParamMCSModule.h:60 RooRandomizeParamMCSModule.h:61 RooRandomizeParamMCSModule.h:62 RooRandomizeParamMCSModule.h:63 RooRandomizeParamMCSModule.h:64 RooRandomizeParamMCSModule.h:65 RooRandomizeParamMCSModule.h:66 RooRandomizeParamMCSModule.h:67 RooRandomizeParamMCSModule.h:68 RooRandomizeParamMCSModule.h:69 RooRandomizeParamMCSModule.h:70 RooRandomizeParamMCSModule.h:71 RooRandomizeParamMCSModule.h:72 RooRandomizeParamMCSModule.h:73 RooRandomizeParamMCSModule.h:74 RooRandomizeParamMCSModule.h:75 RooRandomizeParamMCSModule.h:76 RooRandomizeParamMCSModule.h:77 RooRandomizeParamMCSModule.h:78 RooRandomizeParamMCSModule.h:79 RooRandomizeParamMCSModule.h:80 RooRandomizeParamMCSModule.h:81 RooRandomizeParamMCSModule.h:82 RooRandomizeParamMCSModule.h:83 RooRandomizeParamMCSModule.h:84 RooRandomizeParamMCSModule.h:85 RooRandomizeParamMCSModule.h:86 RooRandomizeParamMCSModule.h:87 RooRandomizeParamMCSModule.h:88 RooRandomizeParamMCSModule.h:89 RooRandomizeParamMCSModule.h:90 RooRandomizeParamMCSModule.h:91 RooRandomizeParamMCSModule.h:92 RooRandomizeParamMCSModule.h:93 RooRandomizeParamMCSModule.h:94 RooRandomizeParamMCSModule.h:95 RooRandomizeParamMCSModule.h:96 RooRandomizeParamMCSModule.h:97 RooRandomizeParamMCSModule.h:98 RooRandomizeParamMCSModule.h:99