MVibraDataReader.hh
Go to the documentation of this file.00001
00032 #ifndef _Q_VIBRADATAREADER_HH
00033 #define _Q_VIBRADATAREADER_HH
00034
00035 #include "QReader.hh"
00036
00037 #include "QCuore.hh"
00038 #include "QVector.hh"
00039 #include "QCorrelations.hh"
00040 #include "QTime.hh"
00041 #include <string>
00042 #include <vector>
00043 #include "zlib.h"
00044
00045 int VibraChannel(int read);
00046
00047
00048 class MVibraDataReader : public QReader {
00049
00050 public:
00051 MVibraDataReader(QSequence* s);
00052
00053 virtual ~MVibraDataReader();
00054
00055
00056 void Init();
00057
00058
00059 QEvent* Do( QEvent* ev);
00060
00061
00062 void End();
00063 void Done(){}
00064
00065 private:
00066
00068 void NewRun();
00070 int Trigger(const double* data);
00071
00072
00074 std::string ParseFileId(const std::string& filename);
00075
00076 int fMinAdcRange, fMaxAdcRange;
00077 int fNumSamples;
00078 int fPulseDurationMs;
00079 int fRunNumber;
00080
00081
00082
00083
00086 std::string fFileUName;
00087
00089 gzFile fCurrentFile;
00090
00092 int fEventNumber;
00093
00095 int fRunEventNumber;
00096
00098 std::vector<std::string>::iterator fIter;
00099
00100
00101
00102 std::string fName;
00103
00104
00105 QTime fTime;
00106
00107
00108
00109 int NBins(){ return 512;}
00110
00111 int BinWidth(){return 8000000;}
00112
00113 int TrgOffset(){return 80;}
00114
00115 int NChannels(){return 57;}
00116
00117 bool IsPulser(int channel);
00118
00119
00120
00121
00122 std::vector<QVector> fBuffer;
00123 std::vector<QVector> fAuxData;
00124
00125
00126
00127 QVector fHasTriggered;
00128 int fCurrIndex;
00129 bool fStartTrigger;
00130
00131
00132 float fFirstFreq;
00133 float fLastFreq;
00134 float fStepFreq;
00135 int fLengthFreq;
00136 int fPeriodFreq;
00137 float fCurrentFreq;
00138 int fTimeSinceLastFreq;
00139 std::vector<int> fFreqIsOn;
00140
00141
00142 QCorrelations fCor_noise;
00143 QCorrelations fCor_nonoise;
00144 };
00145
00146
00147 #endif