67 Int_t iNumUFiberHits = 0;
68 Int_t iNumVFiberHits = 0;
73 std::list<MDHIT>::const_iterator iter;
74 for (iter=ListMDHits.begin(); iter!=ListMDHits.end(); ++iter)
76 if (iRPot == (*iter).iRPot)
81 m_MapLayers.insert(std::pair<int, FIBERS>((*iter).iPlate, structFibers));
82 m_MapLayers[(*iter).iPlate].ListFibers.push_back((*iter).iFiber);
86 m_MapLayers[(*iter).iPlate].ListFibers.push_back((*iter).iFiber);
97 if (fmod(
double(iLayer),
double(2)) == 1) iNumUFiberHits++;
98 else iNumVFiberHits++;
113 return StatusCode::SUCCESS;
134 Float_t fbRef[2] = {-127.0, -127.0};
135 Float_t fXInter, fYInter;
136 Float_t fMinP, fMaxP;
137 Float_t fMinN, fMaxN;
138 Int_t iMinP_tmp, iMaxP_tmp;
139 Int_t iMinN_tmp, iMaxN_tmp;
141 const Int_t NBINTOT = 72000;
142 std::vector<Int_t> Over_p(NBINTOT);
143 std::vector<Int_t> Over_n(NBINTOT);
169 for (Int_t iBin=0;iBin<72000;iBin++)
175 std::list<int>::iterator iter;
186 fFibCen = (fYInter-fXInter)/sqrt(2.0);
190 Over_p[(int)((fFibCen-0.24)*1000)+
bin+36000]++;
197 fFibCen = (fYInter+fXInter)/sqrt(2.0);
201 Over_n[(int)((fFibCen-0.24)*1000)+
bin+36000]++;
211 std::vector<int> *vecMaxP =
new std::vector<int>;
212 std::vector<int> *vecMaxN =
new std::vector<int>;
214 for (Int_t i=0;i<72000;i++)
216 if (Over_p[i]>iNumU) iNumU = Over_p[i];
217 if (Over_n[i]>iNumV) iNumV = Over_n[i];
222 for (Int_t i=0; i<NBINTOT; i++)
224 if (Over_p[i]==iNumU)
226 vecMaxP->push_back(i);
230 fMinP = -36.0 + double(vecMaxP->front())*1e-3;
231 fMaxP = -36.0 + double(vecMaxP->back())*1e-3;
232 iMinP_tmp = vecMaxP->front();
233 iMaxP_tmp = vecMaxP->back();
236 iFullWidth = vecMaxP->size();
238 for (Int_t i=0; i<iFullWidth; i++)
240 if (vecMaxP->at(iFullWidth-i-1)-iMinP_tmp < 500)
242 iMaxP_tmp = vecMaxP->at(iFullWidth-i-1);
243 fMaxP = -36.0 + double(iMaxP_tmp)*1e-3;
250 b_p = fbRef[1]+(fMinP+fMaxP)/sqrt(2.);
251 fOverP = fMaxP-fMinP;
267 for (Int_t i=0; i<NBINTOT; i++)
269 if (Over_n[i]==iNumV)
271 vecMaxN->push_back(i);
275 fMinN = -36.0 + double(vecMaxN->front())*1e-3;
276 fMaxN = -36.0 + double(vecMaxN->back())*1e-3;
277 iMinN_tmp = vecMaxN->front();
278 iMaxN_tmp = vecMaxN->back();
281 iFullWidth = vecMaxN->size();
283 for (Int_t i=0; i<iFullWidth; i++)
285 if (vecMaxN->at(iFullWidth-i-1)-iMinN_tmp < 500)
287 iMaxN_tmp = vecMaxN->at(iFullWidth-i-1);
288 fMaxN = -36.0 + double(iMaxN_tmp)*1e-3;
295 b_n = fbRef[0]+(fMinN+fMaxN)/sqrt(2.);
296 fOverN = fMaxN-fMinN;
329 Float_t fBMeanN = -9999.0;
330 Float_t fBMeanP = -9999.0;
336 HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 0);
339 if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
341 HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
342 if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
344 HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
350 if (fBMeanP!=-9999.0 && fBMeanN==-9999.0)
352 HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 1);
354 if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
357 HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
358 if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
363 if (fBMeanP==-9999.0 && fBMeanN!=-9999.0)
365 HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 2);
367 if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
370 HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
371 if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
HistFill(fBMeanP, fBMeanN, fOverRegP, fOverRegN, iNumU, iNumV, 3);
376 Float_t fxTmp, fyTmp;
378 Float_t fDistX,fDistY;
381 Float_t fOverlapU, fOverlapV;
382 Int_t iFibSelX, iFibSelY;
384 std::list<int>::iterator iter;
385 if (fBMeanP!=-9999.0 && fBMeanN!=-9999.0)
389 fOverlapU = fOverRegP;
390 fOverlapV = fOverRegN;
394 fMinX = 0.24/cos(TMath::Pi()/4.0);
395 fMinY = 0.24/cos(TMath::Pi()/4.0);
397 iFibSelX = -9999, iFibSelY = -9999;
421 if (iFibSelX==iFibSelY)
m_iFibSel[iLayer] = iFibSelX;
434 SetData(iNumU, iNumV, fOverlapU, fOverlapV);