Fixed all warning in moenchZmqProcess

This commit is contained in:
bergamaschi 2019-09-25 12:14:15 +02:00
parent 26bc737445
commit 2a48f70320
13 changed files with 167 additions and 110 deletions

View File

@ -276,15 +276,15 @@ class moench03T1ZmqDataNew : public slsDetectorData<uint16_t> {
virtual char *readNextFrame(ifstream &filebin, int& ff, int &np, char *data) { virtual char *readNextFrame(ifstream &filebin, int& ff, int &np, char *data) {
char *retval=0; //char *retval=0;
int nd; // int nd;
int fnum = -1; //int fnum = -1;
np=0; np=0;
int pn; // int pn;
if (ff>=0) // if (ff>=0)
fnum=ff; // fnum=ff;
if (filebin.is_open()) { if (filebin.is_open()) {
if (filebin.read(data, 32*2*nSamples) ){ if (filebin.read(data, 32*2*nSamples) ){

View File

@ -139,8 +139,8 @@ class interpolatingDetector : public singlePhotonDetector {
nph=addFrame(data,val,0); nph=addFrame(data,val,0);
if (interp) if (interp)
return interp->getInterpolatedImage(); return interp->getInterpolatedImage();
else //else
singlePhotonDetector::getImage(); return singlePhotonDetector::getImage();
//return NULL; //return NULL;
}; };
@ -233,7 +233,7 @@ int addFrame(char *data, int *ph=NULL, int ff=0) {
}; };
virtual slsInterpolation *setInterpolation(slsInterpolation *ii){ virtual slsInterpolation *setInterpolation(slsInterpolation *ii){
int ok; // int ok;
interp=ii; interp=ii;
/* pthread_mutex_lock(fi); /* pthread_mutex_lock(fi);
if (interp) if (interp)

View File

@ -33,7 +33,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
{ {
double sDum[2][2]; double sDum[2][2];
double tot, totquad; double tot, totquad;
double etax,etay; double etax=0,etay=0;
int corner; int corner;
corner=calcQuad(data, tot, totquad, sDum); corner=calcQuad(data, tot, totquad, sDum);
@ -49,7 +49,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
{ {
double sDum[2][2]; double sDum[2][2];
double tot, totquad; double tot, totquad;
double etax,etay; double etax=0,etay=0;
int corner; int corner;
corner=calcQuad(data, tot, totquad, sDum); corner=calcQuad(data, tot, totquad, sDum);
@ -71,7 +71,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
virtual void getInterpolatedPosition(int x, int y, double totquad,int quad,double *cl,double &int_x, double &int_y) { virtual void getInterpolatedPosition(int x, int y, double totquad,int quad,double *cl,double &int_x, double &int_y) {
double cc[2][2]; double cc[2][2];
int xoff, yoff; int xoff=0, yoff=0;
switch (quad) { switch (quad) {
case BOTTOM_LEFT: case BOTTOM_LEFT:
xoff=0; xoff=0;
@ -92,7 +92,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
default: default:
; ;
} }
double etax, etay; double etax=0, etay=0;
if (nSubPixels>2) { if (nSubPixels>2) {
cc[0][0]=cl[xoff+3*yoff]; cc[0][0]=cl[xoff+3*yoff];
cc[1][0]=cl[xoff+3*(yoff+1)]; cc[1][0]=cl[xoff+3*(yoff+1)];
@ -100,6 +100,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
cc[1][1]=cl[xoff+1+3*(yoff+1)]; cc[1][1]=cl[xoff+1+3*(yoff+1)];
calcEta(totquad,cc,etax,etay); calcEta(totquad,cc,etax,etay);
} }
return getInterpolatedPosition(x,y,etax, etay,quad,int_x,int_y); return getInterpolatedPosition(x,y,etax, etay,quad,int_x,int_y);
} }
@ -109,7 +110,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
virtual void getInterpolatedPosition(int x, int y, double totquad,int quad,int *cl,double &int_x, double &int_y) { virtual void getInterpolatedPosition(int x, int y, double totquad,int quad,int *cl,double &int_x, double &int_y) {
double cc[2][2]; double cc[2][2];
int xoff, yoff; int xoff=0, yoff=0;
switch (quad) { switch (quad) {
case BOTTOM_LEFT: case BOTTOM_LEFT:
@ -131,7 +132,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
default: default:
; ;
} }
double etax, etay; double etax=0, etay=0;
if (nSubPixels>2) { if (nSubPixels>2) {
cc[0][0]=cl[xoff+3*yoff]; cc[0][0]=cl[xoff+3*yoff];
cc[1][0]=cl[xoff+3*(yoff+1)]; cc[1][0]=cl[xoff+3*(yoff+1)];
@ -222,7 +223,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
virtual int addToFlatField(double totquad,int quad,int *cl,double &etax, double &etay) { virtual int addToFlatField(double totquad,int quad,int *cl,double &etax, double &etay) {
double cc[2][2]; double cc[2][2];
int xoff, yoff; int xoff=0, yoff=0;
switch (quad) { switch (quad) {
case BOTTOM_LEFT: case BOTTOM_LEFT:
@ -260,7 +261,7 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
virtual int addToFlatField(double totquad,int quad,double *cl,double &etax, double &etay) { virtual int addToFlatField(double totquad,int quad,double *cl,double &etax, double &etay) {
double cc[2][2]; double cc[2][2];
int xoff, yoff; int xoff=0, yoff=0;
switch (quad) { switch (quad) {
case BOTTOM_LEFT: case BOTTOM_LEFT:
@ -308,11 +309,12 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
virtual int addToFlatField(double *cluster, double &etax, double &etay){ virtual int addToFlatField(double *cluster, double &etax, double &etay){
double sDum[2][2]; double sDum[2][2];
double tot, totquad; double tot, totquad;
int corner; // int corner;
corner=calcQuad(cluster, tot, totquad, sDum); //corner=
calcQuad(cluster, tot, totquad, sDum);
double xpos_eta,ypos_eta; //double xpos_eta,ypos_eta;
double dX,dY; //double dX,dY;
calcEta(totquad, sDum, etax, etay); calcEta(totquad, sDum, etax, etay);
@ -324,11 +326,12 @@ class eta2InterpolationBase : public virtual etaInterpolationBase {
virtual int addToFlatField(int *cluster, double &etax, double &etay){ virtual int addToFlatField(int *cluster, double &etax, double &etay){
double sDum[2][2]; double sDum[2][2];
double tot, totquad; double tot, totquad;
int corner; //int corner;
corner=calcQuad(cluster, tot, totquad, sDum); //corner=
calcQuad(cluster, tot, totquad, sDum);
double xpos_eta,ypos_eta; // double xpos_eta,ypos_eta;
double dX,dY; //double dX,dY;
calcEta(totquad, sDum, etax, etay); calcEta(totquad, sDum, etax, etay);

View File

@ -59,10 +59,10 @@ class eta3InterpolationBase : public virtual etaInterpolationBase {
//////////// /*It return position hit for the event in input */ ////////////// //////////// /*It return position hit for the event in input */ //////////////
virtual void getInterpolatedPosition(int x, int y, int *data, double &int_x, double &int_y) virtual void getInterpolatedPosition(int x, int y, int *data, double &int_x, double &int_y)
{ {
double tot, totquad; double tot;
double etax,etay; double etax,etay;
int corner=calcEta3(data,etax,etay, totquad); int corner=calcEta3(data,etax,etay, tot);
getInterpolatedPosition(x,y,etax,etay,corner,int_x,int_y); getInterpolatedPosition(x,y,etax,etay,corner,int_x,int_y);
@ -72,11 +72,11 @@ class eta3InterpolationBase : public virtual etaInterpolationBase {
virtual void getInterpolatedPosition(int x, int y, double *data, double &int_x, double &int_y) virtual void getInterpolatedPosition(int x, int y, double *data, double &int_x, double &int_y)
{ {
double sDum[2][2]; //double sDum[2][2];
double tot, totquad; double tot;
double etax,etay; double etax,etay;
int corner=calcEta3(data,etax,etay, totquad); int corner=calcEta3(data,etax,etay, tot);
getInterpolatedPosition(x,y,etax,etay,corner,int_x,int_y); getInterpolatedPosition(x,y,etax,etay,corner,int_x,int_y);

View File

@ -190,7 +190,7 @@ float *gethhx()
void debugSaveAll(int ind=0) { void debugSaveAll(int ind=0) {
int ib, ibx, iby; int ibx, iby;
char tit[10000]; char tit[10000];
float tot_eta=0; float tot_eta=0;
@ -204,7 +204,7 @@ float *gethhx()
etah[ii]=heta[ii]; etah[ii]=heta[ii];
tot_eta+=heta[ii]; tot_eta+=heta[ii];
} }
sprintf(tit,"/scratch/eta.tiff",ind); sprintf(tit,"/scratch/eta_%d.tiff",ind);
WriteToTiff(etah, tit, etabins, etabins); WriteToTiff(etah, tit, etabins, etabins);
@ -284,7 +284,7 @@ float *gethhx()
double calcDiff(double avg, float *hx, float *hy) { double calcDiff(double avg, float *hx, float *hy) {
//double p_tot=0; //double p_tot=0;
double diff=0, d; double diff=0, d;
double bsize=1./nSubPixels; //double bsize=1./nSubPixels;
int nbad=0; int nbad=0;
double p_tot_x[nSubPixels], p_tot_y[nSubPixels], p_tot[nSubPixels*nSubPixels]; double p_tot_x[nSubPixels], p_tot_y[nSubPixels], p_tot[nSubPixels*nSubPixels];
double maxdiff=0, mindiff=avg*nSubPixels*nSubPixels; double maxdiff=0, mindiff=avg*nSubPixels*nSubPixels;
@ -351,9 +351,9 @@ float *gethhx()
return sqrt(diff); return sqrt(diff);
} }
int *heta;
float *hhx; float *hhx;
float *hhy; float *hhy;
int *heta;
int nbeta; int nbeta;
double etamin, etamax, etastep; double etamin, etamax, etastep;
double rangeMin, rangeMax; double rangeMin, rangeMax;

View File

@ -35,7 +35,7 @@ class etaInterpolationPosXY : public virtual etaInterpolationBase{
///*Eta Distribution Rebinning*/// ///*Eta Distribution Rebinning*///
double bsize=1./nSubPixels; //precision // double bsize=1./nSubPixels; //precision
// cout<<"nPixelsX = "<<nPixelsX<<" nPixelsY = "<<nPixelsY<<" nSubPixels = "<<nSubPixels<<endl; // cout<<"nPixelsX = "<<nPixelsX<<" nPixelsY = "<<nPixelsY<<" nSubPixels = "<<nSubPixels<<endl;
double tot_eta=0; double tot_eta=0;
double tot_eta_x=0; double tot_eta_x=0;
@ -50,8 +50,8 @@ class etaInterpolationPosXY : public virtual etaInterpolationBase{
double hy[nbeta]; //profile y double hy[nbeta]; //profile y
double hix[nbeta]; //integral of projection x double hix[nbeta]; //integral of projection x
double hiy[nbeta]; //integral of projection y double hiy[nbeta]; //integral of projection y
int ii=0; // int ii=0;
double etax, etay; double etax;//, etay;
for (int ib=0; ib<nbeta; ib++) { for (int ib=0; ib<nbeta; ib++) {
tot_eta_x=0; tot_eta_x=0;
@ -81,7 +81,7 @@ class etaInterpolationPosXY : public virtual etaInterpolationBase{
hiy[iby]=hiy[iby-1]+hy[iby]; hiy[iby]=hiy[iby-1]+hy[iby];
} }
ii=0; // ii=0;
tot_eta_x=hix[nbeta-1]+1; tot_eta_x=hix[nbeta-1]+1;
tot_eta_y=hiy[nbeta-1]+1; tot_eta_y=hiy[nbeta-1]+1;
@ -98,7 +98,7 @@ class etaInterpolationPosXY : public virtual etaInterpolationBase{
/* if (ii!=(nSubPixels-1)) */ /* if (ii!=(nSubPixels-1)) */
/* cout << ib << " x " << tot_eta_x << " " << (ii+1)*tot_eta_x*bsize << " " << ii << " " << hix[nbeta-1]<< endl; */ /* cout << ib << " x " << tot_eta_x << " " << (ii+1)*tot_eta_x*bsize << " " << ii << " " << hix[nbeta-1]<< endl; */
ii=0; //ii=0;
for (int ibx=0; ibx<nbeta; ibx++) { for (int ibx=0; ibx<nbeta; ibx++) {
if (tot_eta_y<=0) { if (tot_eta_y<=0) {

View File

@ -1,6 +1,6 @@
INCDIR= -I. -I../dataStructures ../tiffIO.cpp -I../ -I../interpolations/ -I../../slsSupportLib/include/ -I../../slsReceiverSoftware/include/ INCDIR= -I. -I../dataStructures ../tiffIO.cpp -I../ -I../interpolations/ -I../../slsSupportLib/include/ -I../../slsReceiverSoftware/include/
LDFLAG= -L/usr/lib64/ -lpthread -lm -lstdc++ -lzmq -pthread -lrt -ltiff -O3 -g -std=c++11 LDFLAG= -L/usr/lib64/ -lpthread -lm -lstdc++ -lzmq -pthread -lrt -ltiff -O3 -g -std=c++11 -Wall
#-L../../bin -lhdf5 -L. #-L../../bin -lhdf5 -L.
#DESTDIR?=../bin #DESTDIR?=../bin

View File

@ -389,7 +389,7 @@ int main(int argc, char *argv[]) {
// // // cout << " " << (void*)buff; // // // cout << " " << (void*)buff;
mt->popFree(buff); mt->popFree(buff);
while (mt->isBusy()) {;}
ifr++; ifr++;

View File

@ -1,4 +1,9 @@
#define WRITE_QUAD #define WRITE_QUAD
#define DEVELOPER
#define C_GHOST 0.0004
#define CM_ROWS 20
#include "sls_detector_defs.h" #include "sls_detector_defs.h"
#include "ZmqSocket.h" #include "ZmqSocket.h"
@ -46,6 +51,8 @@ int main(int argc, char *argv[]) {
int fifosize=5000; int fifosize=5000;
int etabins=1000;//nsubpix*2*100; int etabins=1000;//nsubpix*2*100;
double etamin=-1, etamax=2; double etamin=-1, etamax=2;
int nSubPixels=2;
// int emin, emax;
// help // help
if (argc < 3 ) { if (argc < 3 ) {
cprintf(RED, "Help: ./trial [receive socket ip] [receive starting port number] [send_socket ip] [send starting port number] [nthreads] [nsubpix] [gainmap] [etafile]\n"); cprintf(RED, "Help: ./trial [receive socket ip] [receive starting port number] [send_socket ip] [send starting port number] [nthreads] [nsubpix] [gainmap] [etafile]\n");
@ -60,6 +67,7 @@ int main(int argc, char *argv[]) {
char* socketip2 = 0; char* socketip2 = 0;
uint32_t portnum2 = 0; uint32_t portnum2 = 0;
uint32_t nSigma=5;
int ok; int ok;
@ -85,7 +93,6 @@ int main(int argc, char *argv[]) {
nthreads=atoi(argv[5]); nthreads=atoi(argv[5]);
cout << "Number of threads is: " << nthreads << endl; cout << "Number of threads is: " << nthreads << endl;
int nSubPixels=2;
if (argc>6) if (argc>6)
nSubPixels=atoi(argv[6]); nSubPixels=atoi(argv[6]);
cout << "Number of subpixels is: " << nSubPixels << endl; cout << "Number of subpixels is: " << nSubPixels << endl;
@ -114,22 +121,24 @@ int main(int argc, char *argv[]) {
int maxSize = npx*npy*2;//32*2*8192;//5000;//atoi(argv[3]); int maxSize = npx*npy*2;//32*2*8192;//5000;//atoi(argv[3]);
int size= maxSize;//32*2*5000; int size= maxSize;//32*2*5000;
int multisize=size; //int multisize=size;
int dataSize=size; //int dataSize=size;
char dummybuff[size]; char dummybuff[size];
int ncol_cm=20;
double xt_ghost=0.0004; int ncol_cm=CM_ROWS;
double xt_ghost=C_GHOST;
moench03CommonMode *cm=new moench03CommonMode(ncol_cm); moench03CommonMode *cm=new moench03CommonMode(ncol_cm);
moench03GhostSummation *gs=new moench03GhostSummation(det, xt_ghost); moench03GhostSummation *gs=new moench03GhostSummation(det, xt_ghost);
double *gainmap=NULL; double *gainmap=NULL;
float *gm; float *gm;
double *gmap=NULL;
uint32_t nnnx, nnny;
if (gainfname) { if (gainfname) {
gm=ReadFromTiff(gainfname, npy, npx); gm=ReadFromTiff(gainfname, nnny, nnnx);
if (gm) { if (gm && nnnx==(uint)npx && nnny==(uint)npy) {
gmap=new double[npx*npy]; gmap=new double[npx*npy];
for (int i=0; i<npx*npy; i++) { for (int i=0; i<npx*npy; i++) {
gmap[i]=gm[i]; gmap[i]=gm[i];
@ -149,7 +158,7 @@ int main(int argc, char *argv[]) {
//analogDetector<uint16_t> *filter=new analogDetector<uint16_t>(det,1,NULL,1000); //analogDetector<uint16_t> *filter=new analogDetector<uint16_t>(det,1,NULL,1000);
#ifndef INTERP #ifndef INTERP
singlePhotonDetector *filter=new singlePhotonDetector(det,3, 5, 1, cm, 1000, 10, -1, -1, gainmap, gs); singlePhotonDetector *filter=new singlePhotonDetector(det,3, nSigma, 1, cm, 1000, 10, -1, -1, gainmap, gs);
multiThreadedCountingDetector *mt=new multiThreadedCountingDetector(filter,nthreads,fifosize); multiThreadedCountingDetector *mt=new multiThreadedCountingDetector(filter,nthreads,fifosize);
@ -160,7 +169,7 @@ int main(int argc, char *argv[]) {
if (etafname) interp->readFlatField(etafname); if (etafname) interp->readFlatField(etafname);
interpolatingDetector *filter=new interpolatingDetector(det,interp, 5, 1, cm, 1000, 10, -1, -1, gainmap, gs); interpolatingDetector *filter=new interpolatingDetector(det,interp, nSigma, 1, cm, 1000, 10, -1, -1, gainmap, gs);
multiThreadedInterpolatingDetector *mt=new multiThreadedInterpolatingDetector(filter,nthreads,fifosize); multiThreadedInterpolatingDetector *mt=new multiThreadedInterpolatingDetector(filter,nthreads,fifosize);
#endif #endif
@ -251,21 +260,22 @@ int main(int argc, char *argv[]) {
// header variables // header variables
uint64_t acqIndex = -1; uint64_t acqIndex = -1;
uint64_t frameIndex = -1; uint64_t frameIndex = -1;
uint32_t subFrameIndex = -1; //uint32_t subFrameIndex = -1;
uint64_t fileindex = -1; uint64_t fileindex = -1;
string filename = ""; string filename = "";
// char* image = new char[size]; // char* image = new char[size];
//int* image = new int[(size/sizeof(int))](); //int* image = new int[(size/sizeof(int))]();
uint32_t flippedDataX = -1; //uint32_t flippedDataX = -1;
int *nph; //int *nph;
int iframe=0; int iframe=0;
char ofname[10000]; char ofname[10000];
char fname[10000]; char fname[10000];
int length; // int length;
int *detimage; int *detimage;
int nnx, nny,nns; int nnx, nny,nns;
uint32_t imageSize = 0, nPixelsX = 0, nPixelsY = 0, dynamicRange = 0; //uint32_t imageSize = 0, nPixelsX = 0, nPixelsY = 0,
//uint32_t dynamicRange = 0;
// infinite loop // infinite loop
uint32_t packetNumber = 0; uint32_t packetNumber = 0;
uint64_t bunchId = 0; uint64_t bunchId = 0;
@ -279,11 +289,10 @@ int main(int argc, char *argv[]) {
//int16_t *dout;//=new int16_t [nnx*nny]; //int16_t *dout;//=new int16_t [nnx*nny];
uint32_t dr = 32; uint32_t dr = 32;
int32_t *dout=NULL;//=new int32_t [nnx*nny]; int32_t *dout=NULL;//=new int32_t [nnx*nny];
uint32_t nSigma=5;
uint16_t roundRNumber = 0; uint16_t roundRNumber = 0;
uint8_t detType = 0; uint8_t detType = 0;
uint8_t version = 0; uint8_t version = 0;
int* flippedData = 0; // int* flippedData = 0;
char* additionalJsonHeader = 0; char* additionalJsonHeader = 0;
int32_t threshold=0; int32_t threshold=0;
@ -292,15 +301,14 @@ int main(int argc, char *argv[]) {
string frameMode_s, detectorMode_s, intMode_s; string frameMode_s, detectorMode_s, intMode_s;
int emin, emax; // int resetFlat=0;
int resetFlat=0; //int resetPed=0;
int resetPed=0; // int nsubPixels=1;
int nsubPixels=1; //int isPedestal=0;
int isPedestal; //int isFlat=0;
int isFlat=0;
int newFrame=1; int newFrame=1;
detectorMode dMode; detectorMode dMode=eAnalog;
frameMode fMode; frameMode fMode=eFrame;
double *ped; double *ped;
filter->getImageSize(nnx, nny,nns); filter->getImageSize(nnx, nny,nns);
@ -345,20 +353,20 @@ int main(int argc, char *argv[]) {
} }
} else { } else {
if (fMode==ePedestal) { if (fMode==ePedestal) {
sprintf(ofname,"%s_%d_ped.tiff",fname,fileindex); sprintf(ofname,"%s_%ld_ped.tiff",fname,fileindex);
mt->writePedestal(ofname); mt->writePedestal(ofname);
cout << "Writing pedestal to " << ofname << endl; cout << "Writing pedestal to " << ofname << endl;
} }
#ifdef INTERP #ifdef INTERP
else if (fMode==eFlat) { else if (fMode==eFlat) {
mt->prepareInterpolation(ok); mt->prepareInterpolation(ok);
sprintf(ofname,"%s_%d_eta.tiff",fname,fileindex); sprintf(ofname,"%s_%ld_eta.tiff",fname,fileindex);
mt->writeFlatField(ofname); mt->writeFlatField(ofname);
cout << "Writing eta to " << ofname << endl; cout << "Writing eta to " << ofname << endl;
} }
#endif #endif
else { else {
sprintf(ofname,"%s_%d.tiff",fname,fileindex); sprintf(ofname,"%s_%ld.tiff",fname,fileindex);
mt->writeImage(ofname); mt->writeImage(ofname);
cout << "Writing image to " << ofname << endl; cout << "Writing image to " << ofname << endl;
} }
@ -387,7 +395,7 @@ int main(int argc, char *argv[]) {
#ifdef INTERP #ifdef INTERP
else if (fMode==eFlat) { else if (fMode==eFlat) {
int nb; int nb;
double emi, ema; double emi=0, ema=1;
int *ff=mt->getFlatField(nb, emi, ema); int *ff=mt->getFlatField(nb, emi, ema);
nnx=nb; nnx=nb;
nny=nb; nny=nb;
@ -437,8 +445,47 @@ int main(int argc, char *argv[]) {
// char* additionalJsonHeader = 0) { // char* additionalJsonHeader = 0) {
// cout << "Sending image size " << nnx << " " << nny << endl; // cout << "Sending image size " << nnx << " " << nny << endl;
#ifndef DEVELOPER
#ifndef MOENCH_BRANCH
zmqsocket2->SendHeaderData (0, false, SLS_DETECTOR_JSON_HEADER_VERSION, dr, fileindex, 0,0, nnx, nny, nnx*nny*dr/8,acqIndex, frameIndex, fname, acqIndex,0 , packetNumber,bunchId, timestamp, modId, xCoord, yCoord, zCoord,debug, roundRNumber, detType, version, 0,0, additionalJsonHeader); zmqsocket2->SendHeaderData (0, false, SLS_DETECTOR_JSON_HEADER_VERSION, dr, fileindex, 0,0, nnx, nny, nnx*nny*dr/8,acqIndex, frameIndex, fname, acqIndex,0 , packetNumber,bunchId, timestamp, modId, xCoord, yCoord, zCoord,debug, roundRNumber, detType, version, 0,0, additionalJsonHeader);
#endif
#endif
#ifdef DEVELOPER
zmqsocket2->SendHeaderData (0, false,SLS_DETECTOR_JSON_HEADER_VERSION , dr, fileindex, 0,0,nnx,nny,nnx*nny*dr/8,acqIndex, frameIndex, fname,acqIndex,0 , packetNumber,bunchId, timestamp, modId,xCoord, yCoord, zCoord,debug, roundRNumber, detType, version, 0,0, 0,additionalJsonHeader);
#endif
#ifdef MOENCH_BRANCH
/*
int SendHeaderData ( int index, bool dummy, uint32_t jsonversion, uint32_t dynamicrange = 0, uint64_t fileIndex = 0,
uint32_t npixelsx = 0, uint32_t npixelsy = 0, uint32_t imageSize = 0,
uint64_t acqIndex = 0, uint64_t fIndex = 0, char* fname = NULL,
uint64_t frameNumber = 0, uint32_t expLength = 0, uint32_t packetNumber = 0,
uint64_t bunchId = 0, uint64_t timestamp = 0,
uint16_t modId = 0, uint16_t row = 0, uint16_t column = 0, uint16_t reserved = 0,
uint32_t debug = 0, uint16_t roundRNumber = 0,
uint8_t detType = 0, uint8_t version = 0, int* flippedData = 0,
char* additionalJsonHeader = 0) {
int ZmqSocket::SendHeaderData(int 0, bool false, uint32_t SLS_DETECTOR_JSON_HEADER_VERSION , uint32_t dr, uint64_t fileindex, uint32_t 0, uint32_t 0, uint32_t, uint64_t, uint64_t, char*, uint64_t, uint32_t, uint32_t, uint64_t, uint64_t, uint16_t, uint16_t, uint16_t, uint16_t, uint32_t, uint16_t, uint8_t, uint8_t, int*, char*)
*/
//zmqsocket2->SendHeaderData (0, false,SLS_DETECTOR_JSON_HEADER_VERSION , dr, fileindex, 0,0,nnx,nny,nnx*nny*dr/8,acqIndex, frameIndex, fname,acqIndex,0 , packetNumber,bunchId, timestamp, modId,xCoord, yCoord, zCoord,debug, roundRNumber, detType, version);//, 0,additionalJsonHeader);
zmqsocket2->SendHeaderData (0, false, SLS_DETECTOR_JSON_HEADER_VERSION, dr, fileindex, nnx, nny, nnx*nny*dr/8,acqIndex, frameIndex, fname, acqIndex, subFrameIndex, packetNumber,bunchId, timestamp, modId, xCoord, yCoord, zCoord,debug, roundRNumber, detType, version, flippedData, additionalJsonHeader);
/* old
zmqsocket2->SendHeaderData (0, false, SLS_DETECTOR_JSON_HEADER_VERSION, dr, fileindex, nnx, nny, nnx*nny*dr/8,acqIndex, frameIndex, fname, acqIndex, subFrameIndex, packetNumber,bunchId, timestamp, modId, xCoord, yCoord, zCoord,debug, roundRNumber, detType, version, flippedData, additionalJsonHeader);
*/
/*
new
zmqsocket2->SendHeaderData (0, false,SLS_DETECTOR_JSON_HEADER_VERSION , dr, fileindex, 0,0,nnx,nny,nnx*nny*dr/8,acqIndex, frameIndex, fname,acqIndex,0 , packetNumber,bunchId, timestamp, modId,xCoord, yCoord, zCoord,debug, roundRNumber, detType, version, 0,additionalJsonHeader);
*/
#endif
zmqsocket2->SendData((char*)dout,nnx*nny*dr/8); zmqsocket2->SendData((char*)dout,nnx*nny*dr/8);
cprintf(GREEN, "Sent Data\n"); cprintf(GREEN, "Sent Data\n");
@ -477,7 +524,7 @@ int main(int argc, char *argv[]) {
// acqIndex, frameIndex, subframeIndex, filename, fileindex // acqIndex, frameIndex, subframeIndex, filename, fileindex
size = doc["size"].GetUint(); size = doc["size"].GetUint();
// multisize = size;// * zmqsocket->size(); // multisize = size;// * zmqsocket->size();
dynamicRange = doc["bitmode"].GetUint(); // dynamicRange = doc["bitmode"].GetUint();
// nPixelsX = doc["shape"][0].GetUint(); // nPixelsX = doc["shape"][0].GetUint();
// nPixelsY = doc["shape"][1].GetUint(); // nPixelsY = doc["shape"][1].GetUint();
filename = doc["fname"].GetString(); filename = doc["fname"].GetString();
@ -494,7 +541,7 @@ int main(int argc, char *argv[]) {
//detType=doc["detType"].GetUint(); //detType=doc["detType"].GetUint();
//version=doc["version"].GetUint(); //version=doc["version"].GetUint();
dataSize=size; //dataSize=size;
strcpy(fname,filename.c_str()); strcpy(fname,filename.c_str());
@ -528,8 +575,8 @@ int main(int argc, char *argv[]) {
// flippedDataX, packetNumber, bunchId, timestamp, modId, debug, roundRNumber, detType, version); // flippedDataX, packetNumber, bunchId, timestamp, modId, debug, roundRNumber, detType, version);
/* Analog detector commands */ /* Analog detector commands */
isPedestal=0; //isPedestal=0;
isFlat=0; //isFlat=0;
fMode=eFrame; fMode=eFrame;
frameMode_s="frame"; frameMode_s="frame";
cprintf(MAGENTA, "Frame mode: "); cprintf(MAGENTA, "Frame mode: ");
@ -538,28 +585,28 @@ int main(int argc, char *argv[]) {
frameMode_s=doc["frameMode"].GetString(); frameMode_s=doc["frameMode"].GetString();
if (frameMode_s == "pedestal"){ if (frameMode_s == "pedestal"){
fMode=ePedestal; fMode=ePedestal;
isPedestal=1; //isPedestal=1;
} else if (frameMode_s == "newPedestal"){ } else if (frameMode_s == "newPedestal"){
mt->newDataSet(); //resets pedestal mt->newDataSet(); //resets pedestal
// cprintf(MAGENTA, "Resetting pedestal\n"); // cprintf(MAGENTA, "Resetting pedestal\n");
fMode=ePedestal; fMode=ePedestal;
isPedestal=1; //isPedestal=1;
} }
#ifdef INTERP #ifdef INTERP
else if (frameMode_s == "flatfield") { else if (frameMode_s == "flatfield") {
fMode=eFlat; fMode=eFlat;
isFlat=1; //isFlat=1;
} else if (frameMode_s == "newFlatfield") { } else if (frameMode_s == "newFlatfield") {
mt->resetFlatField(); mt->resetFlatField();
isFlat=1; //isFlat=1;
cprintf(MAGENTA, "Resetting flatfield\n"); cprintf(MAGENTA, "Resetting flatfield\n");
fMode=eFlat; fMode=eFlat;
} }
#endif #endif
else { else {
fMode=eFrame; fMode=eFrame;
isPedestal=0; //isPedestal=0;
isFlat=0; //isFlat=0;
fMode=eFrame; fMode=eFrame;
frameMode_s="frame"; frameMode_s="frame";
} }
@ -692,10 +739,10 @@ int main(int argc, char *argv[]) {
// cout << "data " << endl; // cout << "data " << endl;
if (of==NULL) { if (of==NULL) {
#ifdef WRITE_QUAD #ifdef WRITE_QUAD
sprintf(ofname,"%s_%d.clust2",filename.c_str(),fileindex); sprintf(ofname,"%s_%ld.clust2",filename.c_str(),fileindex);
#endif #endif
#ifndef WRITE_QUAD #ifndef WRITE_QUAD
sprintf(ofname,"%s_%d.clust",filename.c_str(),fileindex); sprintf(ofname,"%s_%ld.clust",filename.c_str(),fileindex);
#endif #endif
of=fopen(ofname,"w"); of=fopen(ofname,"w");
if (of) { if (of) {
@ -720,13 +767,15 @@ int main(int argc, char *argv[]) {
if (packetNumber>=40) { if (packetNumber>=40) {
//*((int*)buff)=frameIndex; //*((int*)buff)=frameIndex;
memcpy(buff,&frameIndex,sizeof(int)); memcpy(buff,&frameIndex,sizeof(int));
length = zmqsocket->ReceiveData(0, buff+sizeof(int), size); //length =
zmqsocket->ReceiveData(0, buff+sizeof(int), size);
mt->pushData(buff); mt->pushData(buff);
mt->nextThread(); mt->nextThread();
mt->popFree(buff); mt->popFree(buff);
} else { } else {
cprintf(RED, "Incomplete frame: received only %d packet\n", packetNumber); cprintf(RED, "Incomplete frame: received only %d packet\n", packetNumber);
length = zmqsocket->ReceiveData(0, dummybuff, size); //length =
zmqsocket->ReceiveData(0, dummybuff, size);
} }

View File

@ -32,11 +32,11 @@ class threadedAnalogDetector
{ {
public: public:
threadedAnalogDetector(analogDetector<uint16_t> *d, int fs=10000) { threadedAnalogDetector(analogDetector<uint16_t> *d, int fs=10000) {
char *mem, *mm; char *mm;//*mem,
det=d; det=d;
fifoFree=new CircularFifo<char>(fs); fifoFree=new CircularFifo<char>(fs);
fifoData=new CircularFifo<char>(fs); fifoData=new CircularFifo<char>(fs);
// mem==NULL;
/* mem=(char*)calloc(fs, det->getDataSize()); */ /* mem=(char*)calloc(fs, det->getDataSize()); */
/* if (mem) */ /* if (mem) */
/* memset(mem,0, fs*det->getDataSize()); */ /* memset(mem,0, fs*det->getDataSize()); */
@ -46,6 +46,7 @@ public:
// mm=mem+i*det->getDataSize(); // mm=mem+i*det->getDataSize();
// cout << i << endl; // cout << i << endl;
mm=(char*)calloc(1, det->getDataSize()); mm=(char*)calloc(1, det->getDataSize());
if (mm) { if (mm) {
//memset(mm,0, det->getDataSize()); //memset(mm,0, det->getDataSize());
fifoFree->push(mm); fifoFree->push(mm);
@ -60,7 +61,8 @@ public:
fMode=eFrame; fMode=eFrame;
ff=NULL; ff=NULL;
} }
virtual int setFrameMode(int fm) { virtual int setFrameMode(int fm) {
if (fm>=0) { if (fm>=0) {
@ -96,7 +98,7 @@ public:
virtual int getImageSize(int &nnx, int &nny, int &ns) {return det->getImageSize(nnx, nny, ns);}; virtual int getImageSize(int &nnx, int &nny, int &ns) {return det->getImageSize(nnx, nny, ns);};
virtual int getDetectorSize(int &nnx, int &nny) {return det->getDetectorSize(nnx, nny);}; virtual int getDetectorSize(int &nnx, int &nny) {return det->getDetectorSize(nnx, nny);};
~threadedAnalogDetector() {StopThread(); free(mem); delete fifoFree; delete fifoData;} virtual ~threadedAnalogDetector() {StopThread(); delete fifoFree; delete fifoData;}
/** Returns true if the thread was successfully started, false if there was an error starting the thread */ /** Returns true if the thread was successfully started, false if there was an error starting the thread */
virtual bool StartThread() virtual bool StartThread()
@ -114,11 +116,11 @@ public:
virtual bool pushData(char* &ptr) { virtual bool pushData(char* &ptr) {
fifoData->push(ptr); return fifoData->push(ptr);
} }
virtual bool popFree(char* &ptr) { virtual bool popFree(char* &ptr) {
fifoFree->pop(ptr); return fifoFree->pop(ptr);
} }
virtual int isBusy() {return busy;} virtual int isBusy() {return busy;}
@ -185,16 +187,19 @@ FILE *getFilePointer(){return det->getFilePointer();};
void *writeFlatField(const char * imgname) { void *writeFlatField(const char * imgname) {
slsInterpolation *interp=(det)->getInterpolation(); slsInterpolation *interp=(det)->getInterpolation();
cout << "interp " << interp << endl; //cout << "interp " << interp << endl;
if (interp) { if (interp) {
cout << imgname << endl; cout << imgname << endl;
interp->writeFlatField(imgname); return interp->writeFlatField(imgname);
} }
return NULL;
} }
void *readFlatField(const char * imgname, int nb=-1, double emin=1, double emax=0){ void *readFlatField(const char * imgname, int nb=-1, double emin=1, double emax=0){
slsInterpolation *interp=(det)->getInterpolation(); slsInterpolation *interp=(det)->getInterpolation();
if (interp) if (interp)
interp->readFlatField(imgname, nb, emin, emax); return interp->readFlatField(imgname, nb, emin, emax);
return NULL;
} }
virtual int *getFlatField(int &nb, double emi, double ema){ virtual int *getFlatField(int &nb, double emi, double ema){
@ -231,7 +236,6 @@ protected:
int dMode; int dMode;
int *dataSize; int *dataSize;
pthread_t _thread; pthread_t _thread;
char *mem;
CircularFifo<char> *fifoFree; CircularFifo<char> *fifoFree;
CircularFifo<char> *fifoData; CircularFifo<char> *fifoData;
int stop; int stop;
@ -295,15 +299,15 @@ public:
StopThreads(); StopThreads();
for (int i=0; i<nThreads; i++) for (int i=0; i<nThreads; i++)
delete dets[i]; delete dets[i];
for (int i=1; i<nThreads; i++) /* for (int i=1; i<nThreads; i++) */
delete dd[i]; /* delete dd[i]; */
//delete [] image; //delete [] image;
} }
virtual int setFrameMode(int fm) { int ret; for (int i=0; i<nThreads; i++) { ret=dets[i]->setFrameMode(fm);} return ret;}; virtual int setFrameMode(int fm) { int ret=dets[0]->setFrameMode(fm); for (int i=1; i<nThreads; i++) { dets[i]->setFrameMode(fm);} return ret;};
virtual double setThreshold(int fm) { double ret; for (int i=0; i<nThreads; i++) ret=dets[i]->setThreshold(fm); return ret;}; virtual double setThreshold(int fm) { double ret=dets[0]->setThreshold(fm); for (int i=1; i<nThreads; i++) dets[i]->setThreshold(fm); return ret;};
virtual int setDetectorMode(int dm) { int ret; for (int i=0; i<nThreads; i++) ret=dets[i]->setDetectorMode(dm); return ret;}; virtual int setDetectorMode(int dm) { int ret=dets[0]->setDetectorMode(dm);; for (int i=1; i<nThreads; i++) dets[i]->setDetectorMode(dm); return ret;};
virtual void setROI(int xmin, int xmax, int ymin, int ymax) { for (int i=0; i<nThreads; i++) dets[i]->setROI(xmin, xmax,ymin,ymax);}; virtual void setROI(int xmin, int xmax, int ymin, int ymax) { for (int i=0; i<nThreads; i++) dets[i]->setROI(xmin, xmax,ymin,ymax);};
@ -411,12 +415,12 @@ public:
virtual bool pushData(char* &ptr) { virtual bool pushData(char* &ptr) {
dets[ithread]->pushData(ptr); return dets[ithread]->pushData(ptr);
} }
virtual bool popFree(char* &ptr) { virtual bool popFree(char* &ptr) {
// cout << ithread << endl; // cout << ithread << endl;
dets[ithread]->popFree(ptr); return dets[ithread]->popFree(ptr);
} }
virtual int nextThread() { virtual int nextThread() {
@ -496,20 +500,21 @@ public:
virtual void *readPedestal(const char * imgname, int nb=-1, double emin=1, double emax=0){ virtual void *readPedestal(const char * imgname, int nb=-1, double emin=1, double emax=0){
int nx, ny; int nx, ny;
dets[0]->getDetectorSize(nx,ny); dets[0]->getDetectorSize(nx,ny);
uint32 nnx; uint32 nnx;
uint32 nny; uint32 nny;
float *gm=ReadFromTiff(imgname, nnx, nny); float *gm=ReadFromTiff(imgname, nnx, nny);
if (ped) delete [] ped; if (ped) delete [] ped;
if (nnx>nx) nx=nnx; if (nnx>(uint)nx) nx=nnx;
if (nny>ny) ny=nny; if (nny>(uint)ny) ny=nny;
ped=new double[nx*ny]; ped=new double[nx*ny];
for (int ix=0; ix<nx*ny; ix++) { for (int ix=0; ix<nx*ny; ix++) {
ped[ix]=gm[ix]; ped[ix]=gm[ix];
} }
delete [] gm; delete [] gm;
return setPedestal(); return setPedestal();
}; };

View File

@ -25,7 +25,7 @@ class multiThreadedCountingDetector : public multiThreadedAnalogDetector
public: public:
multiThreadedCountingDetector(singlePhotonDetector *d, int n, int fs=1000) : multiThreadedAnalogDetector(d,n,fs) { }; multiThreadedCountingDetector(singlePhotonDetector *d, int n, int fs=1000) : multiThreadedAnalogDetector(d,n,fs) { };
virtual double setNSigma(double n) {double ret; for (int i=0; i<nThreads; i++) ret=(dets[i])->setNSigma(n); return ret;}; virtual double setNSigma(double n) {double ret=(dets[0])->setNSigma(n); for (int i=1; i<nThreads; i++) (dets[i])->setNSigma(n); return ret;};
virtual void setEnergyRange(double emi, double ema) {for (int i=0; i<nThreads; i++) (dets[i])->setEnergyRange(emi,ema);}; virtual void setEnergyRange(double emi, double ema) {for (int i=0; i<nThreads; i++) (dets[i])->setEnergyRange(emi,ema);};
}; };

View File

@ -37,12 +37,12 @@ public:
}; };
void *writeFlatField(const char * imgname){ void *writeFlatField(const char * imgname){
dets[0]->writeFlatField(imgname); return dets[0]->writeFlatField(imgname);
}; };
void *readFlatField(const char * imgname, int nb=-1, double emin=1, double emax=0){ void *readFlatField(const char * imgname, int nb=-1, double emin=1, double emax=0){
(dets[0])->readFlatField(imgname, nb, emin, emax); return (dets[0])->readFlatField(imgname, nb, emin, emax);
}; };
@ -56,7 +56,7 @@ public:
\returns current file pointer \returns current file pointer
*/ */
virtual slsInterpolation *setInterpolation(slsInterpolation *f){ virtual slsInterpolation *setInterpolation(slsInterpolation *f){
int ok; //int ok;
for (int i=0; i<nThreads; i++) for (int i=0; i<nThreads; i++)
(dets[i])->setInterpolation(f); (dets[i])->setInterpolation(f);
return (dets[0])->getInterpolation(); return (dets[0])->getInterpolation();

View File

@ -119,7 +119,7 @@ class single_photon_hit {
if (fread((void*)qq, 1, 4*sizeof(int), myFile)) { if (fread((void*)qq, 1, 4*sizeof(int), myFile)) {
quad=TOP_RIGHT; quad=TOP_RIGHT;
int mm=qq[0]; /* int mm=qq[0]; */
/* for (int i=1; i<4; i++) { */ /* for (int i=1; i<4; i++) { */
/* if (qq[i]>mm) { */ /* if (qq[i]>mm) { */
/* switch (i) { */ /* switch (i) { */