00001 00002 00003 00004 00005 00006 00007 00008 #ifndef BATCHSIMULATOR_H 00009 #define BATCHSIMULATOR_H 00010 00011 #include <vector> 00012 #include "TH1D.h" 00013 #include "TRandom3.h" 00014 00015 using std::vector; 00016 00017 class BatchSimulator 00018 { 00019 public: 00020 BatchSimulator(); 00021 virtual ~BatchSimulator(){}; 00022 00023 virtual void CreateSmearedTimeList(Double_t smearing); 00024 virtual void CreateMonteCarloTimeList(Int_t nEvts); 00025 00026 virtual Double_t Offset() const {return fOffset;}; 00027 virtual void Offset(const Double_t offset){fOffset = offset;}; 00028 virtual TH1D PlotTrueTimes() const; 00029 virtual TH1D PlotSmearedTimes() const; 00030 virtual TH1D PlotMonteCarloTimes() const; 00031 virtual Double_t Width() const {return fWidth;}; 00032 virtual void Width(const Double_t width){fWidth = width;}; 00033 virtual TH1D WrappedPlotOfTrueTimes() const; 00034 virtual TH1D WrappedPlotOfSmearedTimes() const; 00035 virtual TH1D WrappedPlotOfMonteCarloTimes() const; 00036 virtual void WriteTrueTimesToFile(const char* filename) const; 00037 virtual void WriteSmearedTimesToFile(const char* filename) const; 00038 virtual void WriteMonteCarloTimesToFile(const char* filename) const; 00039 virtual void GenerateMC(int nSamples, int nEventsPerSample, double offset, 00040 double smearing, TString outDir); 00041 00042 private: 00043 00044 Int_t fNumBatches; 00045 Int_t fEventsPerBunch; 00046 Double_t fOffset; 00047 Double_t fWidth; 00048 vector<Double_t> fTrueTimeList; 00049 vector<Double_t> fSmearedTimeList; 00050 vector<Double_t> fMonteCarloTimeList; 00051 TRandom3 fRandomator; 00052 00053 virtual vector<Double_t> CreateTrueTimeList() const; 00054 virtual Double_t EventsPerBunch() const {return fEventsPerBunch;}; 00055 virtual TH1D HistogramTheSpill(const vector<Double_t>& timeList) const; 00056 virtual void WriteToFile(const vector<Double_t>& timeList, const char* filename) const; 00057 virtual vector<Double_t> TrueTimeList() const {return fTrueTimeList;}; 00058 virtual TH1D WrappedBatchPlot(const vector<Double_t>& timeList) const; 00059 00060 }; 00061 00062 #endif //BATCHSIMULATOR_h