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
00012
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
00037
00038
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 }