#ifndef RICH_MIRRORS_CBMRICHRONCHIANA_H_ #define RICH_MIRRORS_CBMRICHRONCHIANA_H_ #include "TObject.h" #include #include #include using namespace std; class TH2; class CbmRichRonchiAna : public TObject { public: CbmRichRonchiAna(); virtual ~CbmRichRonchiAna(); void Run(); void SetTiffFileNameV(const string& fileName) {fTiffFileNameV = fileName;} void SetTiffFileNameH(const string& fileName) {fTiffFileNameH = fileName;} private: string fTiffFileNameV; string fTiffFileNameH; // constant values double fPi; int fRadiusMirror; // in microns int fEdgeLengthCCD; // in microns int fEdgeLengthPixel; // in microns int fPitchGrid; // in microns; distance of lines int fImageWidth; // in pixels // values to be measured first int fDistRulingCCD; // in microns int fDistMirrorRuling; // in microns int fEffectiveEdgeLengthGridPlate; // in microns int fEffectiveEdgeLengthMirror; // in microns; edge length of part of mirror that is projected onto CCD int fEffectiveEdgeLengthCCD; // in microns; edge length of mirror image on CCD (NumberOfLines*LineDistance) int fLineDistance; // in pixels int fCenterX; // in pixels; approximate center of image int fCenterY; // in pixels vector > ReadTiffFile(const string& fileName); void DoMeanIntensityY(vector >& data); void DoPeakFinderY(vector >& data); void DoRotation(vector >& data); void DoMeanY(vector >& data); void FillH2WithVector(TH2* hist, const vector >& data); void DoEjectSingle(vector >& data); void DoFillGaps(vector >& data); void DoShadowCenter(vector >& data); vector > DoSuperpose(const vector >& dataH, const vector >& dataV); vector > DoIntersection(vector >& dataH, const vector >& dataV); void DoIntersectionFinder(vector >& dataSup); vector > DoNumberIntersections(vector >& intersectionXY); void DoScanLine(vector >& intersectionXY, vector >& matrix); void DoSearchNextLine(vector >& matrix); void DoSearchAbove(vector>& intersectionXY, vector >& matrix); void DoSearchBelow(vector>& intersectionXY, vector >& matrix); vector> DoLocalNormal(vector >& matrix); vector> DoHeight(vector >& normal); void DoSphere(vector >& sphere); void DoScanLineHeight(vector >& sphere); void DoCalculateRemaining(vector >& sphere); void DoIntegrate(vector >& sphere); void DoAverageSurroundings(vector >& sphere); /** * \brief Copy constructor. */ CbmRichRonchiAna(const CbmRichRonchiAna&); /** * \brief Assignment operator. */ CbmRichRonchiAna& operator=(const CbmRichRonchiAna&); ClassDef(CbmRichRonchiAna,1) }; #endif /* RICH_MIRRORS_CBMRICHRONCHIANA_H_ */