#include <IniCalib.h>
Inheritance diagram for IniCalib:
Public Member Functions | |
void | calib (MdcCalibConst *calconst) |
IniCalib () | |
void | init (TObjArray *hlist, MdcCosGeom *pGeom) |
void | mergeHist (TFile *fhist) |
~IniCalib () | |
Private Member Functions | |
void | renameHist () |
Static Private Member Functions | |
Double_t | funTmax (Double_t *x, Double_t *par) |
Double_t | funTmin (Double_t *x, Double_t *par) |
Private Attributes | |
TFolder * | m_fdcom |
TFolder * | m_fdQmap |
TFolder * | m_fdQraw |
TFolder * | m_fdQrawCel |
TFolder * | m_fdTmap |
TFolder * | m_fdTraw |
TFolder * | m_fdTrawCel |
TFolder * | m_fdTrawTes |
TH1F * | m_hLayerHitmapQ |
TH1F * | m_hLayerHitmapT |
TH1F * | m_hlaymapQ [NLAYER] |
TH1F * | m_hlaymapT [NLAYER] |
TH1F * | m_hqraw [NLAYER] |
TH1F * | m_hqrawCel [NWIRE] |
TH1F * | m_htdc [NLAYER] |
TH1F * | m_hTesAll |
TH1F * | m_hTesCal |
TH1F * | m_hTesFlag |
TH1F * | m_htraw [NLAYER] |
TH1F * | m_htrawCel [NWIRE] |
TH1F * | m_hWireHitMapQ |
TH1F * | m_hWireHitMapT |
MdcCosGeom * | m_pGeom |
|
00007 {
00008 cout << "Calibration type: IniCalib" << endl;
00009 }
|
|
00011 { 00012 }
|
|
Implements CalibBase. 00165 { 00166 int lay; 00167 int wir; 00168 double t0Fit[NLAYER]; 00169 double t0Cal[NLAYER]; 00170 double tmax[NLAYER]; 00171 double initT0 = gInitT0; 00172 00173 int fitTminFg[NLAYER]; 00174 int fitTmaxFg[NLAYER]; 00175 double chisq; 00176 double ndf; 00177 double chindfTmin[NLAYER]; 00178 double chindfTmax[NLAYER]; 00179 char funname[200]; 00180 00181 // fit Tmin 00182 TF1* ftmin[NLAYER]; 00183 for(lay=0; lay<NLAYER; lay++){ 00184 fitTminFg[lay] = 0; 00185 chindfTmin[lay] = -1; 00186 sprintf(funname, "ftmin%02d", lay); 00187 ftmin[lay] = new TF1(funname, funTmin, 0, 150, 6); 00188 00189 if(1 == gFgCalib[lay]){ 00190 ftmin[lay] -> SetParameter(0, 0); 00191 ftmin[lay] -> SetParameter(4, initT0); 00192 ftmin[lay] -> SetParameter(5, 1); 00193 00194 m_htraw[lay] -> Fit(funname, "Q", "", gTminFitRange[lay][0], gTminFitRange[lay][1]); 00195 gStyle -> SetOptFit(11); 00196 chisq = ftmin[lay]->GetChisquare(); 00197 ndf = ftmin[lay]->GetNDF(); 00198 chindfTmin[lay] = chisq / ndf; 00199 if(chindfTmin[lay] < gTminFitChindf){ 00200 fitTminFg[lay] = 1; 00201 t0Fit[lay] = ftmin[lay]->GetParameter(4); 00202 t0Fit[lay] += gT0Shift; 00203 t0Cal[lay] = t0Fit[lay] - gTimeShift; 00204 } 00205 } 00206 00207 if(0 == fitTminFg[lay]){ 00208 wir = m_pGeom->getWire(lay, 0)->getWireId(); 00209 t0Cal[lay] = calconst->getT0(wir); 00210 t0Fit[lay] = t0Cal[lay] + gTimeShift; 00211 } 00212 } 00213 00214 // fit Tmax 00215 TF1* ftmax[NLAYER]; 00216 for(lay=0; lay<NLAYER; lay++){ 00217 fitTmaxFg[lay] = 0; 00218 chindfTmax[lay] = -1; 00219 sprintf(funname, "ftmax%02d", lay); 00220 ftmax[lay] = new TF1(funname, funTmax, 250, 500, 4); 00221 00222 if(1 == gFgCalib[lay]){ 00223 ftmax[lay] -> SetParameter(2, gInitTm[lay]); 00224 ftmax[lay] -> SetParameter(3, 10); 00225 00226 m_htraw[lay] -> Fit(funname, "Q+", "", gTmaxFitRange[lay][0], gTmaxFitRange[lay][1]); 00227 gStyle -> SetOptFit(11); 00228 chisq = ftmax[lay]->GetChisquare(); 00229 ndf = ftmax[lay]->GetNDF(); 00230 chindfTmax[lay] = chisq / ndf; 00231 if(chindfTmax[lay] < gTmaxFitChindf){ 00232 fitTmaxFg[lay] = 1; 00233 tmax[lay] = ftmax[lay]->GetParameter(2); 00234 } 00235 } 00236 00237 if(0 == fitTmaxFg[lay]){ 00238 tmax[lay] = (calconst->getXtpar(lay, 0, 0, 6)) + t0Fit[lay]; 00239 } 00240 } 00241 00242 // output for check 00243 ofstream ft0("iniT0.dat"); 00244 for(lay=0; lay<NLAYER; lay++){ 00245 ft0 << setw(5) << lay << setw(3) << fitTminFg[lay] 00246 << setw(12) << t0Cal[lay] << setw(12) << t0Fit[lay] 00247 << setw(12) << chindfTmin[lay] << setw(5) << fitTmaxFg[lay] 00248 << setw(12) << tmax[lay] << setw(12) << tmax[lay] - t0Fit[lay] 00249 << setw(12) << chindfTmax[lay] << endl; 00250 } 00251 ft0.close(); 00252 cout << "iniT0.dat was written." << endl; 00253 00254 // set T0 00255 int i; 00256 int nwire = m_pGeom -> getWireSize(); 00257 for(i=0; i<nwire; i++){ 00258 lay = m_pGeom -> getWire(i) -> getLayerId(); 00259 if(1 == gFgCalib[lay]){ 00260 calconst -> resetT0(i, t0Cal[lay]); 00261 calconst -> resetDelT0(i, 0.0); 00262 } 00263 } 00264 00265 if(0 == gFgIniCalConst){ 00266 // set X-T 00267 int lr; 00268 int iEntr; 00269 int ord; 00270 double xtpar; 00271 double xtini[8] = {0, 0.03, 0, 0, 0, 0, 999.9, 0}; 00272 for(lay=0; lay<NLAYER; lay++){ 00273 if(1 != gFgCalib[lay]) continue; 00274 00275 for(iEntr=0; iEntr<NENTRXT; iEntr++){ 00276 for(lr=0; lr<NLR; lr++){ 00277 for(ord=0; ord<NXTPAR; ord++){ 00278 if(6 == ord){ 00279 xtpar = tmax[lay] - t0Fit[lay]; 00280 } else{ 00281 xtpar = xtini[ord]; 00282 } 00283 calconst -> resetXtpar(lay, iEntr, lr, ord, xtpar); 00284 } 00285 } 00286 } 00287 } 00288 00289 // set Q-T 00290 for(lay=0; lay<NLAYER; lay++){ 00291 calconst -> resetQtpar0(lay, 0.0); 00292 calconst -> resetQtpar1(lay, 0.0); 00293 } 00294 00295 // set S-D 00296 int bin; 00297 double sdpar = 0.18; // mm 00298 for(lay=0; lay<NLAYER; lay++){ 00299 for(iEntr=0; iEntr<NENTRSD; iEntr++){ 00300 for(lr=0; lr<2; lr++){ 00301 for(bin=0; bin<NSDBIN; bin++){ 00302 calconst -> resetSdpar(lay, iEntr, lr, bin, sdpar); 00303 } 00304 } 00305 } 00306 } 00307 } else if(2 == gFgIniCalConst){ 00308 int lr; 00309 int iEntr; 00310 double xtpar; 00311 for(lay=0; lay<NLAYER; lay++){ 00312 for(iEntr=0; iEntr<NENTRXT; iEntr++){ 00313 for(lr=0; lr<NLR; lr++){ 00314 xtpar = tmax[lay] - t0Fit[lay]; 00315 calconst -> resetXtpar(lay, iEntr, lr, 6, xtpar); 00316 } 00317 } 00318 } 00319 } 00320 00321 renameHist(); 00322 for(lay=0; lay<NLAYER; lay++){ 00323 delete ftmin[lay]; 00324 delete ftmax[lay]; 00325 } 00326 }
|
|
00335 { 00336 Double_t fitval; 00337 fitval = par[0] + par[1] / (1 + exp((x[0]-par[2])/par[3])); 00338 return fitval; 00339 }
|
|
00328 { 00329 Double_t fitval; 00330 fitval = par[0] + par[1]*exp( -par[2]*(x[0]-par[3]) ) / 00331 ( 1 + exp( -(x[0]-par[4])/par[5] )); 00332 return fitval; 00333 }
|
|
Implements CalibBase. 00014 { 00015 m_pGeom = pGeom; 00016 char hname[200]; 00017 m_fdcom = new TFolder("mCommon", "mCommon"); 00018 hlist->Add(m_fdcom); 00019 00020 m_fdTmap = new TFolder("mThitmap", "mThitmap"); 00021 hlist->Add(m_fdTmap); 00022 00023 m_fdTraw = new TFolder("mTraw", "mTraw"); 00024 hlist->Add(m_fdTraw); 00025 00026 m_fdTrawCel = new TFolder("mTrawCell", "mTrawCell"); 00027 hlist->Add(m_fdTrawCel); 00028 00029 m_fdQmap = new TFolder("mQhitmap", "mQhitmap"); 00030 hlist->Add(m_fdQmap); 00031 00032 m_fdQraw = new TFolder("mQraw", "mQraw"); 00033 hlist->Add(m_fdQraw); 00034 00035 m_fdQrawCel = new TFolder("mQrawCell", "mQrawCell"); 00036 hlist->Add(m_fdQrawCel); 00037 00038 m_hLayerHitmapT = new TH1F("mT_Hitmap_Layer", "", 43, -0.5, 42.5); 00039 m_fdcom->Add(m_hLayerHitmapT); 00040 00041 m_hWireHitMapT = new TH1F("mT_Hitmap_Wire", "", 6796, -0.5, 6795.5); 00042 m_fdcom->Add(m_hWireHitMapT); 00043 00044 m_hLayerHitmapQ = new TH1F("mQ_Hitmap_Layer", "", 43, -0.5, 42.5); 00045 m_fdcom->Add(m_hLayerHitmapQ); 00046 00047 m_hWireHitMapQ = new TH1F("mQ_Hitmap_Wire", "", 6796, -0.5, 6795.5); 00048 m_fdcom->Add(m_hWireHitMapQ); 00049 00050 m_hTesAll = new TH1F("mTesAll", "", 750, 0, 1500); 00051 m_fdcom->Add(m_hTesAll); 00052 00053 m_hTesCal = new TH1F("mTesCal", "", 750, 0, 1500); 00054 m_fdcom->Add(m_hTesCal); 00055 00056 m_hTesFlag = new TH1F("mTes_Flag", "", 300, -0.5, 299.5); 00057 m_fdcom->Add(m_hTesFlag); 00058 00059 for(int lay=0; lay<NLAYER; lay++){ 00060 int ncel = pGeom->getLayer(lay)->getNcell(); 00061 00062 sprintf(hname, "mT_hitmap_Lay%02d", lay); 00063 m_hlaymapT[lay] = new TH1F(hname, "", ncel, -0.5, (float)ncel-0.5); 00064 m_fdTmap -> Add(m_hlaymapT[lay]); 00065 00066 sprintf(hname, "mTDC_Lay%02d", lay); 00067 m_htdc[lay] = new TH1F(hname, "", 800, 0, 20000); 00068 m_fdTraw -> Add(m_htdc[lay]); 00069 00070 sprintf(hname, "mTraw_Lay%02d", lay); 00071 m_htraw[lay] = new TH1F(hname, "", 300, 0, 600); 00072 m_fdTraw -> Add(m_htraw[lay]); 00073 00074 sprintf(hname, "mQ_hitmap_Lay%02d", lay); 00075 m_hlaymapQ[lay] = new TH1F(hname, "", ncel, -0.5, (float)ncel-0.5); 00076 m_fdQmap -> Add(m_hlaymapQ[lay]); 00077 00078 sprintf(hname, "mQraw_Lay%02d", lay); 00079 m_hqraw[lay] = new TH1F(hname, "", 2000, 0, 4000); 00080 m_fdQraw -> Add(m_hqraw[lay]); 00081 } 00082 00083 for(int wir=0; wir<NWIRE; wir++){ 00084 int lay = m_pGeom -> getWire(wir) -> getLayerId(); 00085 int cel = m_pGeom -> getWire(wir) -> getCellId(); 00086 00087 sprintf(hname, "mTraw_%02d_%03d_%04d", lay, cel, wir); 00088 m_htrawCel[wir] = new TH1F(hname, "", 300, 0, 600); 00089 m_fdTrawCel -> Add(m_htrawCel[wir]); 00090 00091 sprintf(hname, "mQraw_%02d_%03d_%04d", lay, cel, wir); 00092 m_hqrawCel[wir] = new TH1F(hname, "", 2000, 0, 4000); 00093 m_fdQrawCel -> Add(m_hqrawCel[wir]); 00094 } 00095 }
|
|
Implements CalibBase. 00097 { 00098 TFolder* fdcom = (TFolder*)fhist->Get("Common"); 00099 TFolder* fdTmap = (TFolder*)fhist->Get("Thitmap"); 00100 TFolder* fdTraw = (TFolder*)fhist->Get("Traw"); 00101 TFolder* fdTrawCel = (TFolder*)fhist->Get("TrawCell"); 00102 TFolder* fdQmap = (TFolder*)fhist->Get("Qhitmap"); 00103 TFolder* fdQraw = (TFolder*)fhist->Get("Qraw"); 00104 TFolder* fdQrawCel = (TFolder*)fhist->Get("QrawCell"); 00105 00106 char hname[200]; 00107 TH1F* hist; 00108 hist = (TH1F*)fdcom->FindObjectAny("T_Hitmap_Layer"); 00109 m_hLayerHitmapT->Add(hist); 00110 00111 hist = (TH1F*)fdcom->FindObjectAny("T_Hitmap_Wire"); 00112 m_hWireHitMapT->Add(hist); 00113 00114 hist = (TH1F*)fdcom->FindObjectAny("Q_Hitmap_Layer"); 00115 m_hLayerHitmapQ->Add(hist); 00116 00117 hist = (TH1F*)fdcom->FindObjectAny("Q_Hitmap_Wire"); 00118 m_hWireHitMapQ->Add(hist); 00119 00120 hist = (TH1F*)fdcom->FindObjectAny("TesAll"); 00121 m_hTesAll->Add(hist); 00122 00123 hist = (TH1F*)fdcom->FindObjectAny("TesCal"); 00124 m_hTesCal->Add(hist); 00125 00126 hist = (TH1F*)fdcom->FindObjectAny("Tes_Flag"); 00127 m_hTesFlag->Add(hist); 00128 00129 for(int lay=0; lay<NLAYER; lay++){ 00130 sprintf(hname, "T_hitmap_Lay%02d", lay); 00131 hist = (TH1F*)fdTmap->FindObjectAny(hname); 00132 m_hlaymapT[lay]->Add(hist); 00133 00134 sprintf(hname, "TDC_Lay%02d", lay); 00135 hist = (TH1F*)fdTraw->FindObjectAny(hname); 00136 m_htdc[lay]->Add(hist); 00137 00138 sprintf(hname, "Traw_Lay%02d", lay); 00139 hist = (TH1F*)fdTraw->FindObjectAny(hname); 00140 m_htraw[lay]->Add(hist); 00141 00142 sprintf(hname, "Q_hitmap_Lay%02d", lay); 00143 hist = (TH1F*)fdQmap->FindObjectAny(hname); 00144 m_hlaymapQ[lay]->Add(hist); 00145 00146 sprintf(hname, "Qraw_Lay%02d", lay); 00147 hist = (TH1F*)fdQraw->FindObjectAny(hname); 00148 m_hqraw[lay]->Add(hist); 00149 } 00150 00151 for(int wir=0; wir<NWIRE; wir++){ 00152 int lay = m_pGeom -> getWire(wir) -> getLayerId(); 00153 int cel = m_pGeom -> getWire(wir) -> getCellId(); 00154 00155 sprintf(hname, "Traw_%02d_%03d_%04d", lay, cel, wir); 00156 hist = (TH1F*)fdTrawCel->FindObjectAny(hname); 00157 m_htrawCel[wir]->Add(hist); 00158 00159 sprintf(hname, "Qraw_%02d_%03d_%04d", lay, cel, wir); 00160 hist = (TH1F*)fdQrawCel->FindObjectAny(hname); 00161 m_hqrawCel[wir]->Add(hist); 00162 } 00163 }
|
|
Reimplemented from CalibBase. 00341 { 00342 char hname[200]; 00343 m_fdcom->SetName("Common"); 00344 m_fdTmap->SetName("Thitmap"); 00345 m_fdTraw->SetName("Traw"); 00346 m_fdTrawCel->SetName("TrawCell"); 00347 m_fdQmap->SetName("Qhitmap"); 00348 m_fdQraw->SetName("Qraw"); 00349 m_fdQrawCel->SetName("QrawCell"); 00350 00351 m_hLayerHitmapT->SetName("T_Hitmap_Layer"); 00352 m_hWireHitMapT->SetName("T_Hitmap_Wire"); 00353 m_hLayerHitmapQ->SetName("Q_Hitmap_Layer"); 00354 m_hWireHitMapQ->SetName("Q_Hitmap_Wire"); 00355 m_hTesAll->SetName("TesAll"); 00356 m_hTesCal->SetName("TesCal"); 00357 m_hTesFlag->SetName("Tes_Flag"); 00358 00359 for(int lay=0; lay<NLAYER; lay++){ 00360 sprintf(hname, "T_hitmap_Lay%02d", lay); 00361 m_hlaymapT[lay]->SetName(hname); 00362 00363 sprintf(hname, "TDC_Lay%02d", lay); 00364 m_htdc[lay]->SetName(hname); 00365 00366 sprintf(hname, "Traw_Lay%02d", lay); 00367 m_htraw[lay]->SetName(hname); 00368 00369 sprintf(hname, "Q_hitmap_Lay%02d", lay); 00370 m_hlaymapQ[lay]->SetName(hname); 00371 00372 sprintf(hname, "Qraw_Lay%02d", lay); 00373 m_hqraw[lay]->SetName(hname); 00374 } 00375 for(int wir=0; wir<NWIRE; wir++){ 00376 int lay = m_pGeom -> getWire(wir) -> getLayerId(); 00377 int cel = m_pGeom -> getWire(wir) -> getCellId(); 00378 00379 sprintf(hname, "Traw_%02d_%03d_%04d", lay, cel, wir); 00380 m_htrawCel[wir]->SetName(hname); 00381 00382 sprintf(hname, "Qraw_%02d_%03d_%04d", lay, cel, wir); 00383 m_hqrawCel[wir]->SetName(hname); 00384 } 00385 }
|
|
Reimplemented from CalibBase. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Reimplemented from CalibBase. |
|
|
|
|
|
Reimplemented from CalibBase. |
|
|
|
|
|
|
|
|