00001
00011 #ifndef STAR_StEEmcDb_H
00012 #define STAR_StEEmcDb_H
00013
00014 #include <TObject.h>
00015 #include <TString.h>
00016 #include <TDataSet.h>
00017
00018 class StMaker;
00019
00020
00021 class eemcDbADCconf_st;
00022 class eemcDbPMTcal_st;
00023 class eemcDbPMTname_st;
00024 class eemcDbPIXcal_st;
00025 class eemcDbPMTped_st;
00026 class eemcDbPMTstat_st;
00027 class kretDbBlobS_st;
00028
00029
00030 class EEmcDbItem;
00031 class EEmcDbCrate;
00032 #include "StEEmcUtil/EEfeeRaw/EEdims.h"
00033
00034 class DbFlavor : public TObject {
00035 public:
00036 static const int mx=100;
00037 char flavor[mx];
00038 char nameMask[mx];
00039 DbFlavor(){flavor[0]=0; nameMask[0]=0;}
00040 };
00041
00042 class StEEmcDb : public TDataSet {
00043 private:
00044
00045 int mfirstSecID, mlastSecID;
00046 int mNSector;
00047 void clearItemArray();
00048 void requestDataBase(StMaker *anyMaker);
00049 int optimizeMapping(int isec);
00050 void optimizeOthers(int isec);
00051 void optimizeFibers();
00052
00053
00054 int *mDbsectorID;
00055 eemcDbADCconf_st **mDbADCconf;
00056 eemcDbPMTcal_st **mDbPMTcal ;
00057 eemcDbPMTname_st **mDbPMTname ;
00058 eemcDbPIXcal_st **mDbPIXcal ;
00059 eemcDbPMTped_st **mDbPMTped ;
00060 eemcDbPMTstat_st **mDbPMTstat ;
00061 kretDbBlobS_st *mDbFiberConfBlob;
00062
00063
00064 EEmcDbItem *byIndex;
00065 EEmcDbItem ***byCrate;
00066 const EEmcDbItem *byStrip[MaxSectors][MaxSmdPlains][MaxSmdStrips];
00067
00068 EEmcDbCrate *mDbFiber;
00069 int nFiber;
00070
00071 float KsigOverPed;
00072 int nFound;
00073 TString dbName;
00074 DbFlavor dbFlavor;
00075
00076 template <class St_T, class T_st> void getTable(TDataSet *eedb, int secID, TString tabName, TString mask, T_st **outTab);
00077
00078 const EEmcDbItem* getStrip(int sec, char uv, int strip) const;
00079
00080 TString mAsciiDbase;
00081
00082
00083 TString *chGainL;
00084 int nChGain, mxChGain;
00085 void changeGainsAction(const char *fname);
00086
00087 TString *chMaskL;
00088 int nChMask, mxChMask;
00089 void changeMaskAction(const char *fname);
00090
00091
00092 public:
00093
00094 void setSectors(int ,int);
00095 int getFirstSector() const {return mfirstSecID;}
00096 int getLastSector() const {return mlastSecID;}
00097
00098 void setThreshold(float x);
00099
00100 void setAsciiDatabase ( const Char_t *dbfile );
00101 void changeGains(char *fname);
00102 void changeMask(char *fname);
00103 const EEmcDbCrate * getFiber(int icr) const;
00104 void setFiberOff(int icr);
00105 const int getNFiber() const {return nFiber;}
00106 const EEmcDbItem* getByIndex(int ikey) const;
00107 void exportAscii(const char *fname="eemcDbDump.dat") const;
00108 void print() const {exportAscii();}
00109
00110 const EEmcDbItem* getByCrate(int crateID, int channel) const;
00111
00112 const EEmcDbItem* getByStrip0(int isec, int iuv, int istrip) const;
00113
00114 const EEmcDbItem* getByStrip(int sec, char uv, int strip) const
00115 {return getByStrip0(sec-1,uv-'U',strip-1);}
00116
00117 const EEmcDbItem* getTile(int sec,char sub, int eta, char type) const;
00118
00119 const EEmcDbItem* getT(int sec, char sub, int eta) const {return getTile(sec,sub,eta,'T');}
00120
00121 const EEmcDbItem* getP(int sec, char sub, int eta) const {return getTile(sec,sub,eta,'P');}
00122 const EEmcDbItem* getQ(int sec, char sub, int eta) const {return getTile(sec,sub,eta,'Q');}
00123 const EEmcDbItem* getR(int sec, char sub, int eta) const {return getTile(sec,sub,eta,'R');}
00124 const EEmcDbItem* getU(int sec, int strip) const {return getStrip(sec,'U',strip);}
00125 const EEmcDbItem* getV(int sec, int strip) const {return getStrip(sec,'V',strip);}
00126 const EEmcDbItem* StBarrelIndex2Item(int StDetId , int Bmod, int Beta, int Bsub) const;
00127
00128
00129
00130
00131
00132
00133 void setPreferredFlavor(const char *flavor, const char *tableNameMask);
00134 void setPreferedFlavor(const char *flavor, const char *tableNameMask){
00135 setPreferredFlavor( flavor, tableNameMask);
00136 }
00137
00138 int getFirstSecID() const { return mfirstSecID;}
00139 int getLastSecID() const { return mlastSecID;}
00140 void setDBname(TString name){ dbName=name;}
00141
00142 int valid() const { return nFound;}
00143 float getKsigOverPed() const {return KsigOverPed;}
00144
00145 StEEmcDb(const Char_t *name = "StEEmcDb");
00146 virtual ~StEEmcDb();
00147
00148 void loadTables(StMaker *anyMaker);
00149
00150 ClassDef(StEEmcDb, 1)
00151
00152 };
00153
00154 #endif