00001 #ifndef _M_PULSEGENERATOR_HH_
00002 #define _M_PULSEGENERATOR_HH_
00003
00124 #include "QReader.hh"
00125 #include "QVector.hh"
00126 #include "QTime.hh"
00127 #include "QPulseGenerator.hh"
00128 #include <vector>
00129 #include <gsl/gsl_rng.h>
00130
00131 class QNoiseGenerator;
00132 namespace Cuore {class QMathFunction; class QRunData; }
00133
00134 class MPulseGenerator : public QReader {
00135
00136 public:
00138 MPulseGenerator(QSequence* s);
00139
00141 ~MPulseGenerator();
00142
00143 void Init();
00144
00145 QEvent* Do(QEvent* ev);
00146
00147 void Done();
00148
00149 private:
00150 static bool ComparePulseGenerator(QPulseGenerator* one, QPulseGenerator* two);
00151 std::vector<QPulseGenerator*> fChannelGenerators;
00152 std::string fConfigurationFile;
00153 int fSeed;
00154 time_t fStartTime;
00155 gsl_rng* fRandomGen;
00156 bool fRoundToADC;
00157 bool fGenerateFromEnergy;
00158 int fThisRun;
00159 int fRunNumber;
00160 double fApolloADC2mV;
00161 double fOldDAQADC2mV;
00162 double* fADC2mV;
00163 QRunData* fRunData;
00164 QVector fTimes;
00165 QVector fDeltaTs;
00166 QVector fEnergies;
00167 QVector fAmplitudes;
00168 QVector fMax;
00169 QVector fMaxPos;
00170 };
00171
00172 #endif