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
00017
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
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 }