00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00070 #ifndef STAR_StBemcRaw
00071 #define STAR_StBemcRaw
00072
00073 #include "TObject.h"
00074 #include "TDataSet.h"
00075 #include "StEmcUtil/database/StBemcTables.h"
00076
00077 #include "tables/St_controlADCtoE_Table.h"
00078 #include "defines.h"
00079 #include "TH2.h"
00080 #include "StChain/StRTSBaseMaker.h"
00081 class StEvent;
00082 class StEmcRawData;
00083 class StEmcCollection;
00084 class StEmcRawMaker;
00085 class StEmcDecoder;
00086
00087 class StBemcRaw : public TObject
00088 {
00089 protected:
00090 enum {kZero, kCrate, kStatus, kRms, kPed, kEn, kCalib, kOK};
00091
00092
00093 TH2F* mBarrelNHitHist;
00094 TH2F* mBarrelEtotHist;
00095 TH2F* mBarrelAdcSumHist;
00096 TH2F* mBarrelNCratesHist;
00097 TH2F* mBarrelCrateStatusHist;
00098 TH2F* mBarrelQAHisto[MAXDETBARREL];
00099
00100 StEmcDecoder* mDecoder;
00101 StBemcTables* mTables;
00102 controlADCtoE_st* mControlADCtoE;
00103
00104 Bool_t mSaveAllStEvent;
00105 Bool_t mPsdMapBug;
00106 Bool_t mPsdMapBug2;
00107 Bool_t mTowerMapBug;
00108 Bool_t mSmdMapBug;
00109 string mProdVer;
00110
00111 Int_t mDate;
00112 Int_t mTime;
00113 Int_t mNZ[MAXDETBARREL];
00114 Int_t mNCRATE[MAXDETBARREL];
00115 Int_t mNSTATUS[MAXDETBARREL];
00116 Int_t mNRMS[MAXDETBARREL];
00117 Int_t mNPED[MAXDETBARREL];
00118 Int_t mNOK[MAXDETBARREL];
00119 Int_t mNTOTAL[MAXDETBARREL];
00120 Int_t mADCSUM[MAXDETBARREL];
00121 Int_t mNCRATESOK[MAXDETBARREL];
00122 Float_t mTOTALE[MAXDETBARREL];
00123 Int_t mCrateStatus[MAXDETBARREL][MAXCRATES];
00124 Bool_t mIsCorrupted[MAXDETBARREL];
00125 Int_t mCheckStatus[MAXDETBARREL][4];
00126 Int_t mCrateVeto;
00127 Bool_t mAnyCorrupted;
00128 public:
00129
00130 StBemcRaw();
00131 virtual ~StBemcRaw();
00132
00133 void initHisto();
00134 void initQAHisto();
00135 void fillHisto();
00136
00137 Bool_t make(StEmcRawMaker * TheData, StEvent* event);
00138 Bool_t convertFromDaq(StEmcRawMaker * DAQ, StEmcRawData* RAW);
00139
00140 Bool_t make(TDataSet*,StEvent*);
00141 Bool_t make(StEmcRawData*,StEvent*);
00142
00143 Bool_t convertFromDaq(TDataSet*, StEmcRawData*);
00144 Int_t getBemcADCRaw(Int_t, Int_t, StEmcRawData*, Int_t&, Int_t&);
00145 void checkHeaders(StEmcRawData*,StEvent*);
00146 void checkBtowCrates(StEmcRawData*,StEvent*);
00147 void emptyEmcCollection(StEmcCollection*);
00148 Int_t makeHit(StEmcCollection*, Int_t, Int_t, Int_t, Int_t, Int_t, Float_t&);
00149 void createDecoder(Int_t,Int_t);
00150 Bool_t isCorrupted(Int_t det)
00151 {
00152 return mIsCorrupted[det-1];
00153 }
00154
00158 void setCheckStatus(Int_t det, Int_t flag, const char* option = "");
00159 void setCrateVeto(Int_t flag);
00160 void clearStats(Int_t);
00161 void updateStats(Int_t,Int_t,Int_t, Float_t);
00162 void printStats(Int_t);
00163 void printConf();
00164
00165 void setDate(Int_t d)
00166 {
00167 mDate = d;
00168 }
00169 void setTime(Int_t t)
00170 {
00171 mTime = t;
00172 }
00173 void setProdVer(string prodVer)
00174 {
00175 mProdVer = prodVer;
00176 }
00177 void saveAllStEvent(Bool_t a)
00178 {
00179 mSaveAllStEvent = a;
00180 }
00181 void psdMapBug(Bool_t a)
00182 {
00183 mPsdMapBug = a;
00184 }
00185 void psdMapBug2(Bool_t a)
00186 {
00187 mPsdMapBug2 = a;
00188 delete mTables;
00189 mTables = new StBemcTables(mTowerMapBug, mPsdMapBug2);
00190 }
00191 void towerMapBug(Bool_t a)
00192 {
00193 mTowerMapBug = a;
00194 delete mTables;
00195 mTables = new StBemcTables(mTowerMapBug, mPsdMapBug2);
00196 }
00197 void smdMapBug(Bool_t a)
00198 {
00199 mSmdMapBug = a;
00200 }
00201
00202 StBemcTables* getTables()
00203 {
00204 return mTables;
00205 }
00206 StEmcDecoder* getDecoder()
00207 {
00208 return mDecoder;
00209 }
00210 controlADCtoE_st* getControlTable()
00211 {
00212 return mControlADCtoE;
00213 }
00214
00215 Int_t getCrateStatus(Int_t det,Int_t c)
00216 {
00217 return mCrateStatus[det-1][c-1];
00218 }
00219 Int_t getTotalHits(Int_t det)
00220 {
00221 return mNTOTAL[det-1];
00222 }
00223 Int_t getTotalSaved(Int_t det)
00224 {
00225 return mNOK[det-1];
00226 }
00227 Int_t getTotalADC(Int_t det)
00228 {
00229 return mADCSUM[det-1];
00230 }
00231 Float_t getTotalE(Int_t det)
00232 {
00233 return mTOTALE[det-1];
00234 }
00235 Int_t getRejectPed(Int_t det)
00236 {
00237 return mNRMS[det-1]+mNPED[det-1];
00238 }
00239 Int_t getRejectZero(Int_t det)
00240 {
00241 return mNZ[det-1];
00242 }
00243 Int_t getRejectStatus(Int_t det)
00244 {
00245 return mNSTATUS[det-1];
00246 }
00247 Int_t getRejectCrate(Int_t det)
00248 {
00249 return mNCRATE[det-1];
00250 }
00251 Int_t getNCratesOK(Int_t det)
00252 {
00253 return mNCRATESOK[det-1];
00254 }
00255 ClassDef(StBemcRaw, 1)
00256 };
00257
00258 #endif