#ifndef MOENCH02CTB10GBDATA_H #define MOENCH02CTB10GBDATA_H #include #include "slsDetectorData.h" #include "slsReceiverData.h" class moench02Ctb10GbData : public slsReceiverData { private: int iframe; // int *xmap, *ymap; int nadc; int sc_width; int sc_height; int maplength; public: /** Implements the slsReceiverData structure for the moench02 prototype read out by a module i.e. using the slsReceiver (160x160 pixels, 40 packets 1286 large etc.) \param c crosstalk parameter for the output buffer */ moench02Ctb10GbData(int ns=6400): slsReceiverData(160, 160, 50, 8208) , nadc(4), sc_width(40), sc_height(160) { int adc_nr[4]={120,0,80,40}; int row, col; int isample; int iadc; int ix, iy; int i; int npackets=50; maplength = 8208*npackets; //this->setDataSize(maplength); /* maplength=this->getDataSize()/2; */ for (int ip=0; ip=8208*npackets) { cout << "Error: pointer " << dataMap[row][col] << " out of range "<< endl; } } } } } int ibyte; int ii=0; for (int ipacket=0; ipacket=2 && iadc<=5){ xmap[i]=adc_nr[iadc-2]+ix; ymap[i]=iy; }else{ xmap[i]=-1; ymap[i]=-1; } ii++; } }//end loop on bytes }//end loop on packets iframe=0; cout << "data struct created" << endl; }; void getPixel(int ip, int &x, int &y) { if(ip>=0 && ip0) { */ /* iframe++; */ /* //cout << ib << "-" << endl; */ /* return (char*)afifo_cont; */ /* } else { */ /* delete [] afifo_cont; */ /* return NULL; */ /* } */ /* } */ /* return NULL; */ /* }; */ virtual char *readNextFrame(ifstream &filebin, int& ff, int &np) { char *data=new char[packetSize*nPackets]; char *retval=0; int nd; np=0; int pn; char aa[8224]={0}; char *packet=(char *)aa; int fnum = -1; if (ff>=0) fnum=ff; if (filebin.is_open()) { cout << "+"; while(filebin.read((char*)packet, 8208)){ pn=getPacketNumber(packet); if (fnum<0) fnum= getFrameNumber(packet); if (fnum>=0) { if (getFrameNumber(packet) !=fnum) { if (np==0){ cout << "-"; delete [] data; return NULL; } else filebin.seekg(-8208,ios_base::cur); return data; } memcpy(data+(pn-1)*packetSize, packet, packetSize); np++; if (np==nPackets) break; if (pn==nPackets) break; } } }else{ cerr<