mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 19:30:03 +02:00
178 lines
5.7 KiB
C++
178 lines
5.7 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
|
|
#include "sls/ansi.h"
|
|
#include <iostream>
|
|
|
|
#include "single_photon_hit.h"
|
|
|
|
#include "noInterpolation.h"
|
|
|
|
using namespace std;
|
|
#define NC 400
|
|
#define NR 400
|
|
|
|
int main(int argc, char *argv[]) {
|
|
/**
|
|
* trial.o [socket ip] [starting port number] [outfname]
|
|
*
|
|
*/
|
|
|
|
if (argc < 7) {
|
|
cout << "Wrong usage! Should be: " << argv[0] << " infile "
|
|
<< " etafile outfile runmin runmax ns" << endl;
|
|
return 1;
|
|
}
|
|
|
|
char infname[10000];
|
|
char outfname[10000];
|
|
int runmin = atoi(argv[4]);
|
|
int runmax = atoi(argv[5]);
|
|
int nsubpix = atoi(argv[6]);
|
|
|
|
// int etabins = 1000; // nsubpix*2*100;
|
|
// double etamin = -1, etamax = 2;
|
|
int quad;
|
|
double sum, totquad;
|
|
double sDum[2][2];
|
|
// double etax, etay;
|
|
double int_x, int_y;
|
|
// int ok;
|
|
|
|
int ix, iy, isx, isy;
|
|
|
|
FILE *f = NULL;
|
|
|
|
single_photon_hit cl(3, 3);
|
|
// etaInterpolationPosXY *interp=new etaInterpolationPosXY(NC, NR, nsubpix,
|
|
// etabins, etamin, etamax);
|
|
noInterpolation *interp = new noInterpolation(NC, NR, nsubpix);
|
|
// interp->readFlatField(argv[2]);
|
|
// interp->prepareInterpolation(ok);
|
|
|
|
int *img;
|
|
float *totimg = new float[NC * NR * nsubpix * nsubpix];
|
|
for (ix = 0; ix < NC; ix++) {
|
|
for (iy = 0; iy < NR; iy++) {
|
|
for (isx = 0; isx < nsubpix; isx++) {
|
|
for (isy = 0; isy < nsubpix; isy++) {
|
|
totimg[ix * nsubpix + isx +
|
|
(iy * nsubpix + isy) * (NC * nsubpix)] = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#ifdef FF
|
|
|
|
float ff[nsubpix * nsubpix];
|
|
float *ffimg = new float[NC * NR * nsubpix * nsubpix];
|
|
float totff = 0;
|
|
|
|
#endif
|
|
|
|
for (int irun = runmin; irun < runmax; irun++) {
|
|
sprintf(infname, argv[1], irun);
|
|
sprintf(outfname, argv[3], irun);
|
|
|
|
f = fopen(infname, "r");
|
|
|
|
if (f) {
|
|
while (cl.read(f)) {
|
|
quad = interp->calcQuad(cl.get_cluster(), sum, totquad, sDum);
|
|
if (sum > 200 && sum < 580) {
|
|
interp->getInterpolatedPosition(cl.x, cl.y, totquad, quad,
|
|
cl.get_cluster(), int_x,
|
|
int_y);
|
|
interp->addToImage(int_x, int_y);
|
|
}
|
|
}
|
|
fclose(f);
|
|
#ifdef FF
|
|
img = interp->getInterpolatedImage();
|
|
for (isx = 0; isx < nsubpix; isx++) {
|
|
for (isy = 0; isy < nsubpix; isy++) {
|
|
ff[isy * nsubpix + isx] = 0;
|
|
}
|
|
}
|
|
totff = 0;
|
|
for (ix = 0; ix < NC; ix++) {
|
|
for (iy = 0; iy < NR - 100; iy++) {
|
|
for (isx = 0; isx < nsubpix; isx++) {
|
|
for (isy = 0; isy < nsubpix; isy++) {
|
|
ff[isy * nsubpix + isx] +=
|
|
img[ix * nsubpix + isx +
|
|
(iy * nsubpix + isy) * (NC * nsubpix)];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for (isx = 0; isx < nsubpix; isx++) {
|
|
for (isy = 0; isy < nsubpix; isy++) {
|
|
totff += ff[isy * nsubpix + isx];
|
|
}
|
|
}
|
|
totff /= nsubpix * nsubpix;
|
|
|
|
if (totff) {
|
|
|
|
cout << "ff: " << totff << endl;
|
|
|
|
for (isx = 0; isx < nsubpix; isx++) {
|
|
for (isy = 0; isy < nsubpix; isy++) {
|
|
ff[isy * nsubpix + isx] /= totff;
|
|
cout << ff[isy * nsubpix + isx] << "\t";
|
|
}
|
|
cout << endl;
|
|
}
|
|
|
|
for (ix = 0; ix < NC; ix++) {
|
|
for (iy = 0; iy < NR; iy++) {
|
|
for (isx = 0; isx < nsubpix; isx++) {
|
|
for (isy = 0; isy < nsubpix; isy++) {
|
|
ffimg[ix * nsubpix + isx +
|
|
(iy * nsubpix + isy) * (NC * nsubpix)] =
|
|
img[ix * nsubpix + isx +
|
|
(iy * nsubpix + isy) * (NC * nsubpix)] /
|
|
ff[isy * nsubpix + isx];
|
|
totimg[ix * nsubpix + isx +
|
|
(iy * nsubpix + isy) * (NC * nsubpix)] +=
|
|
ffimg[ix * nsubpix + isx +
|
|
(iy * nsubpix + isy) *
|
|
(NC * nsubpix)];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
WriteToTiff(ffimg, outfname, NC * nsubpix, NR * nsubpix);
|
|
}
|
|
#endif
|
|
#ifndef FF
|
|
interp->writeInterpolatedImage(outfname);
|
|
img = interp->getInterpolatedImage();
|
|
for (ix = 0; ix < NC; ix++) {
|
|
for (iy = 0; iy < NR; iy++) {
|
|
for (isx = 0; isx < nsubpix; isx++) {
|
|
for (isy = 0; isy < nsubpix; isy++) {
|
|
totimg[ix * nsubpix + isx +
|
|
(iy * nsubpix + isy) * (NC * nsubpix)] +=
|
|
img[ix * nsubpix + isx +
|
|
(iy * nsubpix + isy) * (NC * nsubpix)];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
interp->clearInterpolatedImage();
|
|
}
|
|
}
|
|
|
|
sprintf(outfname, argv[3], 11111);
|
|
WriteToTiff(totimg, outfname, NC * nsubpix, NR * nsubpix);
|
|
|
|
return 0;
|
|
}
|