TV1730RawData.cxx

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

Generated on 12 Feb 2016 for ROOT Analyzer by  doxygen 1.6.1