00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00017 #ifndef EMC_READER_HH
00018 #define EMC_READER_HH
00019 #include "StDaqLib/GENERIC/EventReader.hh"
00020 #include "StDaqLib/GENERIC/RecHeaderFormats.hh"
00021 #include "StDaqLib/GENERIC/swaps.hh"
00022 #include "StDaqLib/TRG/TRG_Reader.hh"
00023
00024 struct Bank_EMCP: public Bank
00025 {
00026 struct Pointer EMCSecPointer[6] ;
00027 };
00028
00029 struct Bank_EMCSECP: public Bank
00030 {
00031 struct Pointer FiberPointer[12] ;
00032 };
00033
00034 struct Bank_EMCRBP: public Bank
00035 {
00036 struct Pointer EMCADCR;
00037 struct Pointer EMCADCD ;
00038 struct Pointer EMCPEDR;
00039 struct Pointer EMCRMSR ;
00040 };
00041
00047 struct Bank_TOWERADCR: public Bank
00048 {
00049 int dummy ;
00050 short fiberHeader[64] ;
00051 short TDCHeader[120] ;
00052 short fiberData[4800] ;
00053 };
00054
00060 struct BTOWERDATA
00061 {
00062 char * BankType;
00063 unsigned int DetFlag;
00064 unsigned int EventNumber;
00065 unsigned int PedFlag;
00066 unsigned int ReceivedByteCount;
00067 unsigned int NTowerHits;
00068 unsigned int TDCErrorFlag;
00069 unsigned int NTDCChannels;
00070
00071 unsigned short TDCData[30][160];
00072 unsigned short TDCError[30];
00073 unsigned short TDCToken[30];
00074 unsigned short TDCTrigger[30];
00075 unsigned short TDCCrateId[30];
00076 unsigned short TDCCount[30];
00077
00078 unsigned short TowerMatrix[120][20][2];
00079 unsigned short TowerADCArray[4800];
00080 unsigned short TDCHeader[120];
00081 };
00082
00083
00084
00085 struct Bank_BTOWERADCR: public BTOWERDATA{};
00086 struct Bank_BTOWERADCD: public BTOWERDATA{};
00087 struct Bank_BTOWERPEDR: public BTOWERDATA{};
00088 struct Bank_BTOWERRMSR: public BTOWERDATA{};
00089
00095 struct Bank_SMDADCR: public Bank
00096 {
00097 int dummy ;
00098 short fiberHeader[128] ;
00099 short fiberData[4800] ;
00100 };
00101
00107 struct BSMDDATA
00108 {
00109 char *BankType;
00110 unsigned int DetFlag;
00111 unsigned int EventNumber;
00112 unsigned int PedFlag;
00113 unsigned int SMDErrorFlag;
00114 unsigned int ReceivedByteCount;
00115 unsigned int NSmdHits;
00116 unsigned int TimeBin[12];
00117 unsigned short SMDADCArray[12][4800] ;
00118 unsigned short SmdE_ADCMatrix[120][150] ;
00119 unsigned short SmdP_ADCMatrix[120][10][15] ;
00120 unsigned short SmdHeader[12][128];
00121 unsigned short HasData[12];
00122 };
00123
00124
00125 struct Bank_BSMDADCR: public BSMDDATA{};
00126 struct Bank_BSMDADCD: public BSMDDATA{};
00127 struct Bank_BSMDPEDR: public BSMDDATA{};
00128 struct Bank_BSMDRMSR: public BSMDDATA{};
00129
00130
00131
00132 class EMC_Reader
00133 {
00134 void ProcessEvent(const Bank_EMCP *EmcPTR, const Bank_TRGP *TrgPTR);
00135
00136 public:
00137 EMC_Reader(EventReader *er, Bank_EMCP *pEMCP, Bank_TRGP *pTRGP);
00138 ~EMC_Reader() {};
00139
00140 Bank_BTOWERADCR& getBTOWERADCR();
00141 bool isTowerPresent();
00142 int getTowerADC(int,int,int,unsigned short&);
00143 int getTowerADC(int,unsigned short&);
00144 int NTowerHits();
00145
00146 Bank_BSMDADCR& getSMD_ADCR();
00147 bool isSmdPresent();
00148 int getSMD_ADC(int,int,unsigned short&);
00149 int getSMDE_ADC(int,int,unsigned short&);
00150 int getSMDP_ADC(int,int,int,unsigned short&);
00151 int getSMD_TIMEBIN(int,unsigned int&);
00152 int NSmdHits();
00153
00154 protected:
00155
00156
00157 EventReader *ercpy;
00158 Bank_EMCP *pBankEMCP;
00159
00160
00161 Bank_BTOWERADCR mTheTowerAdcR;
00162 Bank_BTOWERADCD mTheTowerAdcD;
00163 Bank_BTOWERPEDR mTheTowerPedR;
00164 Bank_BTOWERRMSR mTheTowerRMSR;
00165
00166 Bank_BSMDADCR mTheSmdAdcR;
00167 Bank_BSMDADCD mTheSmdAdcD;
00168 Bank_BSMDPEDR mTheSmdPedR;
00169 Bank_BSMDRMSR mTheSmdRMSR;
00170 bool mTowerPresent;
00171 bool mSmdPresent;
00172 };
00173
00174 EMC_Reader *getEMCReader(EventReader *er);
00175
00176
00177 #endif