00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef PMD_READER_HH
00010 #define PMD_READER_HH
00011
00012 #include "StDaqLib/GENERIC/EventReader.hh"
00013 #include "StDaqLib/GENERIC/RecHeaderFormats.hh"
00014 #include "StDaqLib/GENERIC/swaps.hh"
00015
00016 #define PMD_SECTOR 2
00017 #define PMD_CRAMS_MAX 12
00018 #define PMD_CRAMS_BLOCK 2
00019 #define PMD_CRAMS_CH_MAX 1728
00020
00021
00022
00023 #define PMD_ADCD_N 0
00024 #define PMD_PEDR_N 1
00025 #define PMD_RMSR_N 2
00026 #define PMD_THRR_N 3
00027
00028 #define SM 15
00029 #define ROW 15
00030 #define COL 15
00031 struct Bank_PMDP: public Bank
00032 {
00033 struct Pointer sec[PMD_SECTOR];
00034 } ;
00035
00036 struct Bank_PMDSECP: public Bank
00037 {
00038 struct Pointer type[4];
00039 };
00040
00041 struct Bank_PMDADCD: public Bank
00042 {
00043 unsigned long data[PMD_CRAMS_MAX*2*(1+PMD_CRAMS_CH_MAX)];
00044 };
00045
00046 struct Bank_PMDPEDR: public Bank
00047 {
00048 unsigned int data[PMD_CRAMS_MAX*2*(1+PMD_CRAMS_CH_MAX)];
00049 };
00050
00051 struct Bank_PMDRMSR: public Bank
00052 {
00053 unsigned int data[PMD_CRAMS_MAX*2*(1+PMD_CRAMS_CH_MAX)];
00054 };
00055
00056 struct Bank_PMDTHRR: public Bank
00057 {
00058 unsigned int data[PMD_CRAMS_MAX*2*(1+PMD_CRAMS_CH_MAX)];
00059 };
00060
00061
00062 struct data{
00063 int mode ;
00064 int channels ;
00065 int max_channels ;
00066 int no_of_channels_in_cram_blk[2][PMD_CRAMS_MAX][PMD_CRAMS_CH_MAX];
00067
00068 unsigned short adc[2][PMD_CRAMS_MAX][2][PMD_CRAMS_CH_MAX] ;
00069
00070 unsigned short ped[2][PMD_CRAMS_MAX][2][PMD_CRAMS_CH_MAX] ;
00071 unsigned short rms[2][PMD_CRAMS_MAX][2][PMD_CRAMS_CH_MAX] ;
00072 unsigned short thr[2][PMD_CRAMS_MAX][2][PMD_CRAMS_CH_MAX] ;
00073
00074 } ;
00075
00076 struct Bank_DATA: public data{};
00077
00078
00079 class PMD_Reader{
00080 int ProcessEvent(const Bank_PMDP *PmdPTR);
00081 public:
00082 PMD_Reader(EventReader *er, Bank_PMDP *pPMDP);
00083 ~PMD_Reader() {};
00084 int adcReader(int sec, Bank_PMDADCD *adcd);
00085 int pedReader(int sec, int type, Bank_PMDPEDR *pedr);
00086 int NPMDHits();
00087 int NCPVHits();
00088 Bank_DATA getPMD_ADC();
00089
00090 protected:
00091
00092 EventReader *ercpy;
00093 Bank_PMDP *pBankPMDP;
00094
00095
00096 Bank_PMDADCD mThePmdAdcD;
00097 Bank_PMDPEDR mThePmdPedR;
00098 Bank_PMDRMSR mThePmdRmsR;
00099 Bank_PMDTHRR mThePmdThrR;
00100 Bank_DATA mThePmd;
00101
00102 bool mPmdPresent;
00103 bool mCpvPresent;
00104 };
00105
00106 PMD_Reader *getPMDReader(EventReader *er);
00107
00108
00109 #endif