00001 #ifndef CSPADPIXCOORDS_PIXCOORDSTEST_H
00002 #define CSPADPIXCOORDS_PIXCOORDSTEST_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "psana/Module.h"
00021
00022
00023
00024
00025 #include "PSCalib/CSPadCalibPars.h"
00026
00027 #include "CSPadPixCoords/QuadParameters.h"
00028 #include "CSPadPixCoords/PixCoords2x1.h"
00029 #include "CSPadPixCoords/PixCoordsQuad.h"
00030 #include "CSPadPixCoords/PixCoordsCSPad.h"
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 namespace CSPadPixCoords {
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 class PixCoordsTest : public Module {
00066 public:
00067
00068
00069 PixCoordsTest (const std::string& name) ;
00070
00071
00072 virtual ~PixCoordsTest () ;
00073
00074
00075 virtual void beginJob(Event& evt, Env& env);
00076
00077
00078 virtual void beginRun(Event& evt, Env& env);
00079
00080
00081 virtual void beginCalibCycle(Event& evt, Env& env);
00082
00083
00084
00085 virtual void event(Event& evt, Env& env);
00086
00087
00088 virtual void endCalibCycle(Event& evt, Env& env);
00089
00090
00091 virtual void endRun(Event& evt, Env& env);
00092
00093
00094 virtual void endJob(Event& evt, Env& env);
00095
00096 void getQuadConfigPars(Env& env);
00097
00098
00099
00100
00101 void test_2x1 (const int16_t* data, QuadParameters* quadpars, PSCalib::CSPadCalibPars *cspad_calibpar);
00102 void test_quad (const int16_t* data, QuadParameters* quadpars, PSCalib::CSPadCalibPars *cspad_calibpar);
00103 void test_cspad (const int16_t* data, QuadParameters* quadpars, PSCalib::CSPadCalibPars *cspad_calibpar);
00104
00105
00106
00107 void test_cspad_init();
00108 void test_cspad_save();
00109
00110
00111 protected:
00112
00113 private:
00114
00115
00116
00117 std::string m_calibDir;
00118 std::string m_typeGroupName;
00119 std::string m_source;
00120
00121 Source m_src;
00122 unsigned m_runNumber;
00123 unsigned m_maxEvents;
00124 bool m_filter;
00125 long m_count;
00126
00127 uint32_t m_roiMask [4];
00128 uint32_t m_numAsicsStored [4];
00129
00130 uint32_t m_n2x1;
00131 uint32_t m_ncols2x1;
00132 uint32_t m_nrows2x1;
00133 uint32_t m_sizeOf2x1Arr;
00134
00135 PSCalib::CSPadCalibPars *m_cspad_calibpar;
00136
00137 CSPadPixCoords::PixCoords2x1 *m_pix_coords_2x1;
00138 CSPadPixCoords::PixCoordsQuad *m_pix_coords_quad;
00139 CSPadPixCoords::PixCoordsCSPad *m_pix_coords_cspad;
00140
00141 CSPadPixCoords::PixCoords2x1::COORDINATE XCOOR;
00142 CSPadPixCoords::PixCoords2x1::COORDINATE YCOOR;
00143 CSPadPixCoords::PixCoords2x1::COORDINATE ZCOOR;
00144
00145 uint32_t m_cspad_ind;
00146 double *m_coor_x_pix;
00147 double *m_coor_y_pix;
00148 uint32_t *m_coor_x_int;
00149 uint32_t *m_coor_y_int;
00150
00151 enum{ NX_2x1=450,
00152 NY_2x1=250 };
00153 double m_arr_2x1_image[NX_2x1][NY_2x1];
00154
00155 enum{ NX_QUAD=850,
00156 NY_QUAD=850 };
00157 double m_arr_quad_image[NX_QUAD][NY_QUAD];
00158
00159 enum{ NX_CSPAD=1750,
00160 NY_CSPAD=1750 };
00161 double m_arr_cspad_image[NX_CSPAD][NY_CSPAD];
00162
00163 };
00164
00165 }
00166
00167 #endif // CSPADPIXCOORDS_PIXCOORDSTEST_H