Erik Fröjdh f6e76145c1
Make a library for writing and reading tiff, added tests (#347)
* removed Makefile for moench and integrated the build in CMake
* broke out tiff reading and writing to its own library
* moved tiff includes to include/sls
* moved tiffio source to src
* removed incorrectly used bps
* cleanup and tests for tiffio
* removed using namespace std from header
* some fixing for moench04
* Program for offline processing renamed

Co-authored-by: Anna Bergamaschi <anna.bergamaschi@psi.ch>
2022-01-27 10:24:02 +01:00

65 lines
2.2 KiB
C++

// SPDX-License-Identifier: LGPL-3.0-or-other
// Copyright (C) 2021 Contributors to the SLS Detector Package
#ifndef MOENCH03COMMONMODE_H
#define MOENCH03COMMONMODE_H
#include "commonModeSubtractionNew.h"
class commonModeSubtractionColumn : public commonModeSubtraction {
public:
commonModeSubtractionColumn(int nr = 200)
: commonModeSubtraction(800), rows(nr){};
virtual int getROI(int ix, int iy) { return ix + (iy / 200) * 400; };
virtual void addToCommonMode(double val, int ix = 0, int iy = 0) {
if (iy < rows || iy > 399 - rows) {
int iroi = getROI(ix, iy);
// cout << iy << " " << ix << " " << iroi ;
if (iroi >= 0 && iroi < nROI) {
mean[iroi] += val;
mean2[iroi] += val * val;
nCm[iroi]++;
if (nCm[iroi] > rows)
std::cout << "Too many pixels added " << nCm[iroi] << std::endl;
/* if (ix==10 && iy<20) */
/* cout << " ** "<<val << " " << mean[iroi] << " " <<
* nCm[iroi] << " " << getCommonMode(ix, iy) << endl; */
}
}
};
virtual commonModeSubtractionColumn *Clone() {
return new commonModeSubtractionColumn(this->rows);
}
private:
int rows;
};
class commonModeSubtractionSuperColumn : public commonModeSubtraction {
public:
commonModeSubtractionSuperColumn() : commonModeSubtraction(32){};
virtual int getROI(int ix, int iy) { return ix / 25 + (iy / 200) * 16; };
};
class commonModeSubtractionHalf : public commonModeSubtraction {
public:
commonModeSubtractionHalf() : commonModeSubtraction(2){};
virtual int getROI(int ix, int iy) {
(void)ix;
return iy / 200;
};
};
class moench03CommonMode : public commonModeSubtractionColumn {
/** @short class to calculate the common mode noise for moench02 i.e. on 4
* supercolumns separately */
public:
/** constructor - initalizes a commonModeSubtraction with 4 different
regions of interest \param nn number of samples for the moving average
*/
moench03CommonMode(int nr = 20) : commonModeSubtractionColumn(nr){};
};
#endif