mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-23 23:10:02 +02:00
eiger top mapping done. bottom doesnt work
This commit is contained in:
parent
1f6c5c26b4
commit
5731ead4cb
@ -20,7 +20,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
eigerHalfModuleData(int dr, int np, int bsize, int dsize, bool top, double c=0): slsReceiverData<uint32_t>(xpixels, ypixels, np, bsize),
|
eigerHalfModuleData(int dr, int np, int bsize, int dsize, bool top, double c=0): slsReceiverData<uint32_t>(xpixels, ypixels, np, bsize),
|
||||||
xtalk(c), bufferSize(bsize), dataSize(dsize), dynamicRange(dr), numberOfPackets(np){
|
xtalk(c), bufferSize(bsize), dataSize(dsize), dynamicRange(dr), numberOfPackets(np), top(top){
|
||||||
|
|
||||||
|
|
||||||
int **dMap;
|
int **dMap;
|
||||||
@ -40,6 +40,7 @@ public:
|
|||||||
int iPacket1 = 8;
|
int iPacket1 = 8;
|
||||||
int iPacket2 = (totalNumberOfBytes/2) + 8;
|
int iPacket2 = (totalNumberOfBytes/2) + 8;
|
||||||
int iData1 = 0, iData2 = 0;
|
int iData1 = 0, iData2 = 0;
|
||||||
|
/*int iData=0*/
|
||||||
int iPort;
|
int iPort;
|
||||||
|
|
||||||
|
|
||||||
@ -51,6 +52,7 @@ public:
|
|||||||
dMap[ir][ic] = iPacket1;
|
dMap[ir][ic] = iPacket1;
|
||||||
iPacket1 += (dynamicRange / 8);
|
iPacket1 += (dynamicRange / 8);
|
||||||
iData1 +=(dynamicRange / 8);
|
iData1 +=(dynamicRange / 8);
|
||||||
|
//increment header
|
||||||
if(iData1 >= dataSize){
|
if(iData1 >= dataSize){
|
||||||
iPacket1 += 16;
|
iPacket1 += 16;
|
||||||
iData1 = 0;
|
iData1 = 0;
|
||||||
@ -59,28 +61,38 @@ public:
|
|||||||
dMap[ir][ic] = iPacket2;
|
dMap[ir][ic] = iPacket2;
|
||||||
iPacket2 += (dynamicRange / 8);
|
iPacket2 += (dynamicRange / 8);
|
||||||
iData2 +=(dynamicRange / 8);
|
iData2 +=(dynamicRange / 8);
|
||||||
|
//increment header
|
||||||
if(iData2 >= dataSize){
|
if(iData2 >= dataSize){
|
||||||
iPacket2 += 16;
|
iPacket2 += 16;
|
||||||
iData2 = 0;
|
iData2 = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*iData +=(dynamicRange / 8);
|
||||||
|
//increment header
|
||||||
|
if(iData1 >= dataSize){
|
||||||
|
iPacket1 += 16;
|
||||||
|
iData1 = 0;
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
else{
|
else{
|
||||||
iPacket1 = (totalNumberOfBytes/2) - 1040 - 8;
|
/*int iData=0;*/
|
||||||
iPacket2 = totalNumberOfBytes - 1040 - 8;
|
iData1 = 0; iData2 = 0;
|
||||||
|
iPacket1 = (totalNumberOfBytes/2) - bufferSize - 8;
|
||||||
|
iPacket2 = totalNumberOfBytes - bufferSize - 8;
|
||||||
for (int ir=0; ir<ypixels; ir++) {
|
for (int ir=0; ir<ypixels; ir++) {
|
||||||
for (int ic=0; ic<xpixels; ic++) {
|
for (int ic=0; ic<xpixels; ic++) {
|
||||||
iPort = ic / (xpixels/2);
|
iPort = ic / (xpixels/2);
|
||||||
if(!iPort){
|
if(!iPort){
|
||||||
dMap[ir][ic] = iPacket1;
|
dMap[ir][ic] = iPacket1;
|
||||||
iPacket1 += (dynamicRange / 8);//increment now but decrement before by 1024 before and after
|
iPacket1 += (dynamicRange / 8);
|
||||||
iData1 +=(dynamicRange / 8);
|
iData1 +=(dynamicRange / 8);
|
||||||
if(iData1 >= dataSize){
|
if(iData1 >= dataSize){
|
||||||
iPacket1 += 16;
|
iPacket1 -= (dataSize*2);
|
||||||
|
iPacket1 -= 16;
|
||||||
iData1 = 0;
|
iData1 = 0;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
@ -88,14 +100,24 @@ public:
|
|||||||
iPacket2 += (dynamicRange / 8);
|
iPacket2 += (dynamicRange / 8);
|
||||||
iData2 +=(dynamicRange / 8);
|
iData2 +=(dynamicRange / 8);
|
||||||
if(iData2 >= dataSize){
|
if(iData2 >= dataSize){
|
||||||
iPacket2 += 16;
|
iPacket2 -= (dataSize*2);
|
||||||
|
iPacket2 -= 16;
|
||||||
iData2 = 0;
|
iData2 = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*iData +=(dynamicRange / 8);
|
||||||
|
//increment header
|
||||||
|
if(iData >= dataSize){
|
||||||
|
iPacket1 -= (bufferSize*2);
|
||||||
|
iPacket2 -= (bufferSize*2);
|
||||||
|
iPacket1 += 16;
|
||||||
|
iPacket2 += 16;
|
||||||
|
iData = 0;
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -127,8 +149,6 @@ public:
|
|||||||
\returns packet number
|
\returns packet number
|
||||||
*/
|
*/
|
||||||
int getPacketNumber(char *buff){
|
int getPacketNumber(char *buff){
|
||||||
/*other way roud if its a bottom*/
|
|
||||||
|
|
||||||
#ifdef VERY_DEBUG
|
#ifdef VERY_DEBUG
|
||||||
cprintf(RED, "\n0x%x - %d - %d",
|
cprintf(RED, "\n0x%x - %d - %d",
|
||||||
(*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num3)),
|
(*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num3)),
|
||||||
@ -137,19 +157,31 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
//32 bit packet number written in num2
|
//32 bit packet number written in num2
|
||||||
if(dynamicRange == 32){
|
if(dynamicRange == 32){
|
||||||
//both ports have same packet numbers, so reconstruct
|
//both ports have same packet numbers, so reconstruct, ports interchanged for bottom
|
||||||
if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3))){
|
if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3))){
|
||||||
|
if (top)
|
||||||
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+(numberOfPackets/2) +1);
|
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+(numberOfPackets/2) +1);
|
||||||
}else{
|
else
|
||||||
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+1);
|
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+1);
|
||||||
|
}else{
|
||||||
|
if (top)
|
||||||
|
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+1);
|
||||||
|
else
|
||||||
|
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+(numberOfPackets/2) +1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//both ports have same packet numbers, so reconstruct
|
//both ports have same packet numbers, so reconstruct
|
||||||
if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3))){
|
if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3))){
|
||||||
|
if (top)
|
||||||
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+(numberOfPackets/2) +1);
|
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+(numberOfPackets/2) +1);
|
||||||
}else{
|
else
|
||||||
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+1);
|
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+1);
|
||||||
|
}else{
|
||||||
|
if (top)
|
||||||
|
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+1);
|
||||||
|
else
|
||||||
|
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+(numberOfPackets/2) +1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -202,6 +234,7 @@ private:
|
|||||||
const int dataSize;
|
const int dataSize;
|
||||||
const int dynamicRange;
|
const int dynamicRange;
|
||||||
const int numberOfPackets;
|
const int numberOfPackets;
|
||||||
|
bool top;
|
||||||
|
|
||||||
|
|
||||||
/** structure of an eiger image header*/
|
/** structure of an eiger image header*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user