00001 #ifndef STAR_StEmcMappingDb
00002 #define STAR_StEmcMappingDb
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "TObject.h"
00016 #include "TDatime.h"
00017
00018 #include "StEvent/StEnumerations.h"
00019
00020 #include "bemcMap.h"
00021 #include "bprsMap.h"
00022 #include "bsmdeMap.h"
00023 #include "bsmdpMap.h"
00024
00025 class St_bemcMap;
00026 class St_bsmdeMap;
00027 class St_bsmdpMap;
00028 class St_bprsMap;
00029
00030 class StDbTable;
00031 class StMaker;
00032
00033 class StEmcMappingDb : public TObject
00034 {
00035 public:
00036 StEmcMappingDb(int date=20330101, int time=0);
00037 virtual ~StEmcMappingDb();
00038
00039 static StEmcMappingDb* instance();
00040
00042 void SetDateTime(int date, int time);
00043 void SetFlavor(const char *flavor, const char *tablename=NULL);
00044 void SetMaxEntryTime(int date, int time);
00045
00046 const bemcMap_st* bemc() const;
00047 const bemcMap_st& bemc(int softId) const;
00048
00049 const bprsMap_st* bprs() const;
00050 const bprsMap_st& bprs(int softId) const;
00051
00052 const bsmdeMap_st* bsmde() const;
00053 const bsmdeMap_st& bsmde(int softId) const;
00054
00055 const bsmdpMap_st* bsmdp() const;
00056 const bsmdpMap_st& bsmdp(int softId) const;
00057
00058 int softIdFromMES(StDetectorId det, int m, int e, int s) const;
00059
00060
00061 int softIdFromCrate(StDetectorId det, int crate, int channel) const;
00062 int softIdFromDaqId(StDetectorId det, int daqId) const;
00063 int softIdFromTDC(StDetectorId det, int TDC, int channel) const;
00064
00065
00066 int softIdFromRDO(StDetectorId det, int rdo, int channel) const;
00067
00068 private:
00069 static StEmcMappingDb* mInstance;
00070
00071
00072 mutable St_bemcMap *mBemcTTable;
00073 mutable St_bprsMap *mBprsTTable;
00074 mutable St_bsmdeMap *mSmdeTTable;
00075 mutable St_bsmdpMap *mSmdpTTable;
00076
00077
00078 mutable Int_t mBemcValidity;
00079 mutable Int_t mBprsValidity;
00080 mutable Int_t mSmdeValidity;
00081 mutable Int_t mSmdpValidity;
00082
00083
00084 StDbTable *mBemcTable;
00085 StDbTable *mBprsTable;
00086 StDbTable *mSmdeTable;
00087 StDbTable *mSmdpTable;
00088
00089
00090 mutable bool mBemcDirty;
00091 mutable bool mBprsDirty;
00092 mutable bool mSmdeDirty;
00093 mutable bool mSmdpDirty;
00094
00095 StMaker *mChain;
00096
00097 TDatime mBeginTime;
00098 void maybe_reload(StDetectorId) const;
00099 void reload_dbtable(StDbTable*) const;
00100
00101 bool maybe_reset_cache(StDetectorId det) const;
00102 void reset_bemc_cache() const;
00103 void reset_bprs_cache() const;
00104 void reset_smde_cache() const;
00105 void reset_smdp_cache() const;
00106
00107 mutable short mCacheCrate[30][160];
00108 mutable short mCacheDaqId[4800];
00109 mutable short mCacheTDC[30][160];
00110 mutable short mCacheBprsRdo[4][4800];
00111 mutable short mCacheSmdRdo[8][4800];
00112
00113 ClassDef(StEmcMappingDb, 2)
00114 };
00115
00116 inline const bemcMap_st&
00117 StEmcMappingDb::bemc(int softId) const { return bemc()[softId-1]; }
00118
00119 inline const bprsMap_st&
00120 StEmcMappingDb::bprs(int softId) const { return bprs()[softId-1]; }
00121
00122 inline const bsmdeMap_st&
00123 StEmcMappingDb::bsmde(int softId) const { return bsmde()[softId-1]; }
00124
00125 inline const bsmdpMap_st&
00126 StEmcMappingDb::bsmdp(int softId) const { return bsmdp()[softId-1]; }
00127
00128 #endif
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147