00001 #ifndef CSPAD_MOD_CSPADPEDESTALS_H
00002 #define CSPAD_MOD_CSPADPEDESTALS_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 "psddl_psana/cspad.ddl.h"
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 namespace cspad_mod {
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 class CsPadPedestals : public Module {
00049 public:
00050
00051 enum { MaxQuads = Psana::CsPad::MaxQuadsPerSensor };
00052 enum { MaxSectors = Psana::CsPad::SectorsPerQuad };
00053 enum { NumColumns = Psana::CsPad::ColumnsPerASIC };
00054 enum { NumRows = Psana::CsPad::MaxRowsPerASIC*2 };
00055
00056
00057 CsPadPedestals (const std::string& name) ;
00058
00059
00060 virtual ~CsPadPedestals () ;
00061
00062
00063 virtual void beginRun(Event& evt, Env& env);
00064
00065
00066
00067 virtual void event(Event& evt, Env& env);
00068
00069
00070 virtual void endJob(Event& evt, Env& env);
00071
00072 protected:
00073
00074
00075 void collectStat(unsigned qNum, const int16_t* data);
00076
00077 private:
00078
00079 std::string m_pedFile;
00080 std::string m_noiseFile;
00081
00082 Pds::Src m_src;
00083
00084 unsigned m_segMask[MaxQuads];
00085
00086 unsigned long m_count[MaxQuads];
00087 int64_t m_sum[MaxQuads][MaxSectors][NumColumns][NumRows];
00088 int64_t m_sum2[MaxQuads][MaxSectors][NumColumns][NumRows];
00089
00090 };
00091
00092 }
00093
00094 #endif // CSPAD_MOD_CSPADPEDESTALS_H