00001
00002
00003 #ifndef EEsmdCal_h
00004 #define EEsmdCal_h
00005
00006
00007
00008
00009
00010
00011
00012 class EEmcGeomSimple;
00013 class TVector3;
00014 class TH1F ;
00015 class EEmcDbItem;
00016 class EEsmdPlain;
00017 class EEmcSmdGeom;
00018 class EEmcSmdMap;
00019
00021 #include "StEEmcUtil/EEfeeRaw/EEdims.h"
00022 #include "TString.h"
00024 #ifdef StRootFREE
00025 class EEmcDb;
00026 typedef EEmcDb EEDB;
00027 #else
00028 class StEEmcDb;
00029 typedef StEEmcDb EEDB;
00030 #endif
00031
00032 class EEsmdCal {
00033 protected:
00034 enum {mxTile=4,kT=0, kP=1, kQ=2, kR=3, kU=0, kV=1};
00035 int thrMipPresAdc;
00036
00037 private:
00038 float thrMipSmdE;
00039 float twMipRelEneLow, twMipRelEneHigh;
00040
00041 float offCenter;
00042
00043 int emptyStripCount;
00044 float towerMipE [MaxEtaBins];
00045 float presMipE [MaxEtaBins];
00046 float smdAvrMipE ;
00047 float twTghEta[MaxEtaBins];
00048
00049 int dbMapped;
00050 const EEmcDbItem *dbT[mxTile][MaxEtaBins][MaxPhiBins];
00051 const EEmcDbItem *dbS[MaxSmdPlains][MaxSmdStrips];
00052
00053
00054 EEmcSmdMap *mapSmd;
00055 EEmcGeomSimple *geoTw;
00056 EEmcSmdGeom *geoSmd;
00057
00058
00059 enum {kCut='h'-'a'};
00060
00061 TH1F *hA[32];
00062
00063
00064 TH1F *hT[kCut][mxTile][MaxEtaBins][MaxPhiBins];
00065 TH1F *hSs[kCut][MaxSmdPlains][MaxSmdStrips];
00066 #if 0 //smdMap verification
00067 TH1F *hM[12];
00068 void scanSpike(float adc1, TH1F *h);
00069 #endif
00070
00071 void initTileHistoAdc(char cut, const char * title, int col=1);
00072 void initTileHistoEne(char cut, const char * title, int col=1);
00073 void initSmdHist(char cut, const char * title, int col=1);
00074 void initSmdEneHist(char cut, const char * title, int col=1);
00075 void initAuxHisto();
00076 void mapTileDb();
00077 void histoGains();
00078 void addTwMipEbarsToHisto (int col, char mxC);
00079 void addPresMipEbarsToHisto (int col, char cT);
00080 void addSmdMipEbarsToHisto (int col, char cT);
00081
00082 void fillSmdHisto_a();
00083 void fillOneTailHisto(char cut, int iEta, int iPhi);
00084
00085 int getUxVmip();
00086
00087
00088 EEsmdPlain *smdHitPl;
00089
00090 protected:
00091
00092 int nInpEve;
00093 int sectID;
00094 int iSect;
00095 void setSector(int x){sectID=x; iSect=x-1;}
00096
00100 float tileAdc[mxTile][MaxEtaBins][MaxPhiBins];
00101 float tileEne[mxTile][MaxEtaBins][MaxPhiBins];
00102 bool tileThr[mxTile][MaxEtaBins][MaxPhiBins];
00103
00105 float smdAdc[MaxSmdPlains][MaxSmdStrips];
00106 float smdEne[MaxSmdPlains][MaxSmdStrips];
00107 bool killT[mxTile][MaxEtaBins][MaxPhiBins];
00108
00109 void clear();
00110 void findSectorMip();
00111 void calibAllwithMip(int iStrU, int iStrV);
00112 EEDB *eeDb;
00113 unsigned short killStat;
00114 float maxStripAdc;
00115
00116 TObjArray *HList;
00117
00118 public:
00119
00120 EEsmdCal();
00121 virtual ~EEsmdCal();
00122 void finish(int k=0);
00123
00124 void init();
00125 void initRun(int runID);
00126 void setSmdCuts(float xs, int n1){ thrMipSmdE=xs; emptyStripCount=n1;}
00127 void setPreCuts(int n1){ thrMipPresAdc=n1;}
00128 void setTwCuts( float e1, float e2 ,float r){
00129 twMipRelEneLow=e1; twMipRelEneHigh=e2; offCenter=r;
00130 }
00131
00132 void saveHisto(TString fname="fixMe3");
00133
00134 ClassDef(EEsmdCal,1)
00135 };
00136 #endif
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192