00001
00002
00007 #ifndef STAR_StspinDbMaker
00008 #define STAR_StspinDbMaker
00009
00010 #ifndef StMaker_H
00011 #include "StMaker.h"
00012 #endif
00013
00014 #include "StSpinPool/StSpinDbMaker/cstructs/spinConstDB.hh"
00015
00016
00017 class spinDbV124_st;
00018 class spinDbStar_st;
00019 class spinDbBXmask_st;
00020
00021 class StSpinDbMaker : public StMaker {
00022 private:
00023 spinDbV124_st *mTabSpinV124;
00024 spinDbStar_st *mTabSpinStar;
00025 spinDbBXmask_st *mTabSpinBXmask;
00026
00027
00028
00029 void clearTables();
00030 void requestDataBase();
00031 void optimizeTables();
00032 void auxilairyVariables();
00033
00034 int mNFound;
00035 TString mDbName;
00036 int mDbDate;
00037 int mNfilledBunches[SPINDbMaxRing];
00038 TString mCADpolPattern;
00039
00040 template <class St_T, class T_st> void getTable(TDataSet *mydb, TString tabName, T_st **outTab);
00041
00042 void setDBname(TString name){ mDbName=name;}
00043 int numberOfFilledBunches(enum spinDbEnum);
00044
00045 public:
00046 bool isPolDir(enum spinDbEnum);
00047 int spin8bits[SPINDbMaxBXings];
00048 int spin4bits[SPINDbMaxBXings];
00049
00051 void print(int level=0);
00052
00053 bool isValid(){ return mNFound==3;}
00054 bool isPolDirTrans(){return isPolDir(polDirTrans);}
00055 bool isPolDirLong(){return isPolDir(polDirLong);}
00056
00057 int spin8usingBX48(int bx48);
00058 int spin4usingBX48(int bx48);
00059 int BXyellowUsingBX48(int bx48);
00060
00061 int BX48offset();
00062 bool isBXfilledUsingBX48(int bx48);
00063 bool isMaskedUsingBX48(int bx48);
00064
00065 int spin8usingBX7(int bx7);
00066 int spin4usingBX7(int bx7);
00067 int BXyellowUsingBX7(int bx7);
00068 int BX7offset();
00069 bool isBXfilledUsingBX7(int bx7);
00070
00071 int offsetBX48minusBX7(int bx48, int bx7);
00072 bool isBXfilledUsingBXyellow(int bxStar);
00073 bool isBXmaskedUsingBXyellow(int bxStar);
00074
00075 int numberOfFilledBunchesBlue() { return numberOfFilledBunches(blueRing); }
00076
00077 int numberOfFilledBunchesYellow(){ return numberOfFilledBunches(yellRing);}
00078 TString cadPolPattern() { return mCADpolPattern; }
00079
00080
00081 bool isBXfilledUsingInternalBX(int bx);
00082 const char *getV124comment();
00083 int BXstarUsingBX48(int bx48);
00084 int BXstarUsingBX7(int bx7);
00085
00086
00087 const unsigned char *getRawV124bits();
00088 const int *getBucketOffsets();
00089 const int *getSpin8bits();
00090
00091 StSpinDbMaker(const char *name="SpinDbMaker");
00092
00093 virtual ~StSpinDbMaker();
00094 virtual Int_t Init();
00095 virtual Int_t Make();
00096 virtual Int_t InitRun (int runumber);
00097
00098 virtual const char *GetCVS() const {
00099 static const char cvs[]="Tag $Name: $ $Id: StSpinDbMaker.h,v 1.7 2009/09/26 20:34:50 balewski Exp $ built "__DATE__" "__TIME__ ;
00100 return cvs;
00101 }
00102
00103 ClassDef(StSpinDbMaker,0)
00104
00105 };
00106
00107 #endif
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132