ADC 400F Handbuch Seite 62

  • Herunterladen
  • Zu meinen Handbüchern hinzufügen
  • Drucken
  • Seite
    / 74
  • Inhaltsverzeichnis
  • LESEZEICHEN
  • Bewertet. / 5. Basierend auf Kundenbewertungen
Seitenansicht 61
Chapter 5. Complete program listings.
unpackPacket(p); // co:invokeUnpack
}
catch(string msg) {
cerr << "Error Unpacking packet " << hex << nId << dec
<< " " << msg << endl;
return kfFALSE; // co:handleError
}
catch(...) {
cerr << "Some sort of exception caught unpacking packet " << hex << nId
<< dec << endl;
return kfFALSE;
}
}
p += nPacketWords; // co:nextPacket
nWords -= nPacketWords;
}
return kfTRUE; // co:aOk
}
void
MyEventProcessor::unpackPacket(TranslatorPointer<UShort_t> pEvent)
{
pEvent += 2; // co:toBody
ULong_t header = getLong(pEvent);
if ((header & CAEN_DATUM_TYPE) != CAEN_HEADER) { // co:headerSanity
throw string("Did not find V785 header when expected");
}
if (((header & CAEN_GEOMASK) >> CAEN_GEOSHIFT) != m_nSlot) {
throw string("Mismatch on slot");
}
Long_t nChannelCount = (header & CAEN_COUNTMASK) >> CAEN_COUNTSHIFT;
pEvent += 2; // co:toData
for (ULong_t i =0; i < nChannelCount; i++) { // co:decodeBody
ULong_t channelData = getLong(pEvent);
int channel = (channelData & CAEN_CHANNELMASK) >> CAEN_CHANNELSHIFT;
int data = (channelData & CAEN_DATAMASK);
m_rawData[channel] = data;
pEvent += 2;
}
Long_t trailer = getLong(pEvent);
trailer &= CAEN_DATUM_TYPE;
if ((trailer != CAEN_TRAILER) ) { // co:trailerSanity
throw string("Did not find V785 trailer when expected");
}
}
57
Seitenansicht 61
1 2 ... 57 58 59 60 61 62 63 64 65 66 67 ... 73 74

Kommentare zu diesen Handbüchern

Keine Kommentare