This commit is contained in:
Dhanya Maliakal
2017-06-27 14:57:43 +02:00
parent 697fc5b85e
commit e6f1a90ed7
2 changed files with 39 additions and 0 deletions

View File

@ -462,6 +462,8 @@ class JungfrauData : public GeneralData {
class EigerData : public GeneralData { class EigerData : public GeneralData {
private: private:
#ifndef EIGER_NEWHEADER
/** Structure of an eiger packet header */ /** Structure of an eiger packet header */
typedef struct { typedef struct {
unsigned char subFrameNumber[4]; unsigned char subFrameNumber[4];
@ -483,29 +485,48 @@ private:
/** Footer offset */ /** Footer offset */
uint32_t footerOffset; uint32_t footerOffset;
#endif
/** Constructor */ /** Constructor */
EigerData(){ EigerData(){
myDetectorType = slsReceiverDefs::EIGER; myDetectorType = slsReceiverDefs::EIGER;
nPixelsX = (256*2); nPixelsX = (256*2);
nPixelsY = 256; nPixelsY = 256;
#ifndef EIGER_NEWHEADER
headerSizeinPacket = 8; headerSizeinPacket = 8;
#else
headerSizeinPacket = sizeof(slsReceiverDefs::sls_detector_header);
#endif
dataSize = 1024; dataSize = 1024;
#ifndef EIGER_NEWHEADER
packetSize = headerSizeinPacket + dataSize + 8; packetSize = headerSizeinPacket + dataSize + 8;
#else
packetSize = headerSizeinPacket + dataSize;
#endif
packetsPerFrame = 256; packetsPerFrame = 256;
imageSize = dataSize*packetsPerFrame; imageSize = dataSize*packetsPerFrame;
#ifndef EIGER_NEWHEADER
frameIndexMask = 0xffffff; frameIndexMask = 0xffffff;
#endif
maxFramesPerFile = EIGER_MAX_FRAMES_PER_FILE; maxFramesPerFile = EIGER_MAX_FRAMES_PER_FILE;
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header); fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsReceiverDefs::sls_detector_header);
defaultFifoDepth = 100; defaultFifoDepth = 100;
#ifndef EIGER_NEWHEADER
footerOffset = headerSizeinPacket + dataSize; footerOffset = headerSizeinPacket + dataSize;
#endif
threadsPerReceiver = 2; threadsPerReceiver = 2;
#ifndef EIGER_NEWHEADER
headerPacketSize = 48; headerPacketSize = 48;
#else
headerPacketSize = 40;
#endif
nPixelsX_Streamer = nPixelsX; nPixelsX_Streamer = nPixelsX;
nPixelsY_Streamer = nPixelsY; nPixelsY_Streamer = nPixelsY;
imageSize_Streamer = imageSize; imageSize_Streamer = imageSize;
}; };
#ifndef EIGER_NEWHEADER
/** /**
* Get Header Infomation (frame number, packet number) * Get Header Infomation (frame number, packet number)
* @param index thread index for debugging purposes * @param index thread index for debugging purposes
@ -541,6 +562,7 @@ private:
subFrameNumber = (uint64_t) *( (uint32_t*) header->subFrameNumber); subFrameNumber = (uint64_t) *( (uint32_t*) header->subFrameNumber);
} }
} }
#endif
/** /**
* Setting dynamic range changes member variables * Setting dynamic range changes member variables
@ -559,12 +581,20 @@ private:
*/ */
void SetTenGigaEnable(bool tgEnable, int dr) { void SetTenGigaEnable(bool tgEnable, int dr) {
dataSize = (tgEnable ? 4096 : 1024); dataSize = (tgEnable ? 4096 : 1024);
#ifndef EIGER_NEWHEADER
packetSize = (tgEnable ? 4112 : 1040); packetSize = (tgEnable ? 4112 : 1040);
#else
packetSize = headerSizeinPacket + dataSize;
#endif
packetsPerFrame = (tgEnable ? 4 : 16) * dr; packetsPerFrame = (tgEnable ? 4 : 16) * dr;
imageSize = dataSize*packetsPerFrame; imageSize = dataSize*packetsPerFrame;
#ifndef EIGER_NEWHEADER
footerOffset = packetHeaderSize+dataSize; footerOffset = packetHeaderSize+dataSize;
#endif
}; };
#ifndef EIGER_NEWHEADER
/** /**
* Print all variables * Print all variables
*/ */
@ -575,5 +605,6 @@ private:
packetHeaderSize, packetHeaderSize,
footerOffset); footerOffset);
} }
#endif
}; };

View File

@ -62,6 +62,10 @@ Listener::Listener(detectorType dtype, Fifo*& f, runStatus* s, uint32_t* portno,
switch(myDetectorType){ switch(myDetectorType){
case JUNGFRAU: case JUNGFRAU:
standardheader = true; standardheader = true;
#ifndef EIGER_NEWHEADER
#else
case EIGER:
#endif
break; break;
default: default:
standardheader = false; standardheader = false;
@ -377,8 +381,10 @@ uint32_t Listener::ListenToAnImage(char* buf) {
else { else {
memset(new_header, 0, sizeof(sls_detector_header)); memset(new_header, 0, sizeof(sls_detector_header));
new_header->frameNumber = fnum; new_header->frameNumber = fnum;
#ifndef EIGER_NEWHEADER
if (generalData->myDetectorType == EIGER && *dynamicRange == 32) if (generalData->myDetectorType == EIGER && *dynamicRange == 32)
new_header->expLength = snum; new_header->expLength = snum;
#endif
new_header->packetNumber = pperFrame; new_header->packetNumber = pperFrame;
/*new_header->xCoord = index; given by det packet, also for ycoord, zcoord */ /*new_header->xCoord = index; given by det packet, also for ycoord, zcoord */
new_header->detType = (uint8_t) generalData->myDetectorType; new_header->detType = (uint8_t) generalData->myDetectorType;
@ -469,8 +475,10 @@ uint32_t Listener::ListenToAnImage(char* buf) {
else { else {
memset(new_header, 0, sizeof(sls_detector_header)); memset(new_header, 0, sizeof(sls_detector_header));
new_header->frameNumber = fnum; new_header->frameNumber = fnum;
#ifndef EIGER_NEWHEADER
if (generalData->myDetectorType == EIGER && *dynamicRange == 32) if (generalData->myDetectorType == EIGER && *dynamicRange == 32)
new_header->expLength = snum; new_header->expLength = snum;
#endif
new_header->packetNumber = pperFrame; new_header->packetNumber = pperFrame;
/*new_header->xCoord = index; given by det packet, also for ycoord, zcoord */ /*new_header->xCoord = index; given by det packet, also for ycoord, zcoord */
new_header->detType = (uint8_t) generalData->myDetectorType; new_header->detType = (uint8_t) generalData->myDetectorType;