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   // Init method is called before event loop
00056   void Init();
00057   
00058   // Doit method is called for each event, getting the event as argument
00059   QEvent* Do( QEvent* ev);
00060   
00061   // Done method is called after event loop
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   /*@brief identifier of the current run, as listed in the file list*/
00102   std::string fName;
00103   
00104   /*@brief current time and start of run info */ 
00105   QTime fTime;
00106  
00107 
00108   /*@brief number of bins in a pulse*/ 
00109   int NBins(){ return 512;}
00110   /*@brief bin width in ns*/ 
00111   int BinWidth(){return 8000000;}
00112   /*@brief Number of bins between the start of pulse and trigger*/ 
00113   int TrgOffset(){return 80;}
00114   /*@brief number of channels read */ 
00115   int NChannels(){return 57;}
00116   /*@brief is it a heater pulse?*/ 
00117   bool IsPulser(int channel);// channel is with the Vibra convention
00118 
00119 
00120 
00121   /*@brief buffers*/ 
00122   std::vector<QVector> fBuffer;
00123   std::vector<QVector> fAuxData;
00124 
00125 
00126   /*@brief time elapsed since trigger*/
00127   QVector fHasTriggered;
00128   int fCurrIndex;
00129   bool fStartTrigger;
00130 
00131   /* @brief info about mechanical noise */
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   // correlations
00142   QCorrelations fCor_noise;
00143   QCorrelations fCor_nonoise;
00144 };
00145 
00146 
00147 #endif

Generated on Tue Nov 16 10:49:59 2010 for CUORE Software by  doxygen 1.5.6