TDT724RawData.cxx

Go to the documentation of this file.
00001 #include "TDT724RawData.hxx"
00002 
00003 #include <iostream>
00004 
00005 
00006 
00007 TDT724RawData::TDT724RawData(int bklen, int bktype, const char* name, void *pdata):
00008     TGenericData(bklen, bktype, name, pdata)
00009 {
00010   
00011         fGlobalHeader.push_back(GetData32()[0]);
00012         fGlobalHeader.push_back(GetData32()[1]);
00013         fGlobalHeader.push_back(GetData32()[2]);
00014         fGlobalHeader.push_back(GetData32()[3]);
00015   
00016   // Do some sanity checking.  
00017   // Make sure first word has right identifier
00018   if( (GetData32()[0] & 0xf0000000) != 0xa0000000) 
00019     std::cerr << "First word has wrong identifier; first word = 0x" 
00020               << std::hex << GetData32()[0] << std::dec << std::endl;
00021 
00022         int counter = 4;
00023         
00024         int number_available_channels = 0;
00025         for(int ch = 0; ch < 16; ch++){         
00026                 if((1<<ch) & GetChMask()){
00027                         number_available_channels++;
00028                 }
00029         }
00030 
00031         int nwords_per_channel = (GetEventSize() - 4)/number_available_channels;
00032 
00033         // Loop over channel data (only two channels).
00034         for(int ch = 0; ch < 2; ch++){
00035                 
00036                 if((1<<ch) & GetChMask()){
00037 
00038                         std::vector<uint32_t> Samples;
00039                         for(int i = 0; i < nwords_per_channel; i++){
00040                                 uint32_t sample = (GetData32()[counter] & 0x3fff);
00041                                 Samples.push_back(sample);
00042                                 sample = (GetData32()[counter] & 0x3fff0000) >> 16;
00043                                 Samples.push_back(sample);                              
00044                                 counter++;
00045                         }
00046                         RawChannelMeasurement meas = RawChannelMeasurement(ch);
00047                         meas.AddSamples(Samples);
00048 
00049                         fMeasurements.push_back(meas);
00050                         
00051                 }
00052         }
00053 
00054 }
00055 
00056 void TDT724RawData::Print(){
00057 
00058   std::cout << "DT724 decoder for bank " << GetName().c_str() << std::endl;
00059 
00060 
00061 }

Generated on 12 Feb 2016 for ROOT Analyzer by  doxygen 1.6.1