24 m_tbinWid[lay][0] = 5.0;
25 m_tbinWid[lay][1] = 10.0;
26 m_tbinWid[lay][2] = 20.0;
28 m_tbinLim[lay][0] = -10.0;
29 m_tbinLim[lay][1] = 30.0;
30 if ( lay < 8 ) m_tbinLim[lay][2] = 210.0;
31 else m_tbinLim[lay][2] = 350.0;
32 m_tbinLim[lay][3] = 990.0;
59 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc );
60 MsgStream log(
msgSvc,
"XtInteMdcCalib" );
61 log << MSG::INFO <<
"XtInteMdcCalib::initialize()" << endmsg;
64 m_mdcGeomSvc = mdcGeomSvc;
65 m_mdcFunSvc = mdcFunSvc;
66 m_mdcUtilitySvc = mdcUtilitySvc;
70 m_fdPf =
new TFolder(
"fdProfile",
"fdProfile" );
71 m_hlist->Add( m_fdPf );
76 for (
int iEntr = 0; iEntr < NENTR; iEntr++ )
78 for (
int lr = 0; lr < 2; lr++ )
80 sprintf( hname,
"xt%02d_%02d_%d_gr", lay, iEntr, lr );
81 m_grXt[lay][iEntr][lr] =
new TGraph();
82 m_grXt[lay][iEntr][lr]->SetName( hname );
83 m_fdPf->Add( m_grXt[lay][iEntr][lr] );
86 (int)( ( m_tbinLim[lay][1] - m_tbinLim[lay][0] ) / m_tbinWid[lay][0] + 0.5 );
87 sprintf( hname,
"xt%02d_%02d_%d_near", lay, iEntr, lr );
88 m_pfNear[lay][iEntr][lr] =
89 new TProfile( hname, hname, xbinN, m_tbinLim[lay][0], m_tbinLim[lay][1] );
90 m_fdPf->Add( m_pfNear[lay][iEntr][lr] );
93 (int)( ( m_tbinLim[lay][2] - m_tbinLim[lay][1] ) / m_tbinWid[lay][1] + 0.5 );
94 sprintf( hname,
"xt%02d_%02d_%d_mid", lay, iEntr, lr );
95 m_pfMid[lay][iEntr][lr] =
96 new TProfile( hname, hname, xbinM, m_tbinLim[lay][1], m_tbinLim[lay][2] );
97 m_fdPf->Add( m_pfMid[lay][iEntr][lr] );
100 (int)( ( m_tbinLim[lay][3] - m_tbinLim[lay][2] ) / m_tbinWid[lay][2] + 0.5 );
101 sprintf( hname,
"xt%02d_%02d_%d_far", lay, iEntr, lr );
102 m_pfFar[lay][iEntr][lr] =
103 new TProfile( hname, hname, xbinF, m_tbinLim[lay][2], m_tbinLim[lay][3] );
104 m_fdPf->Add( m_pfFar[lay][iEntr][lr] );
121 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc );
122 MsgStream log(
msgSvc,
"XtInteMdcCalib" );
123 log << MSG::DEBUG <<
"XtInteMdcCalib::fillHist()" << endmsg;
128 bool esCutFg =
event->getEsCutFlag();
129 if ( !esCutFg )
return -1;
152 if ( lay < 8 ) m_docaMax[lay] = m_param.maxDocaInner;
153 else m_docaMax[lay] = m_param.maxDocaOuter;
162 int ntrk =
event->getNTrk();
163 for ( i = 0; i < ntrk; i++ )
166 rectrk =
event->getRecTrk( i );
170 dr = rectrk->
getDr();
171 if ( fabs( dr ) > m_param.drCut )
continue;
174 dz = rectrk->
getDz();
175 if ( fabs( dz ) > m_param.dzCut )
continue;
178 double p = rectrk->
getP();
179 if ( ( fabs( p ) < m_param.pCut[0] ) || ( fabs( p ) > m_param.pCut[1] ) )
continue;
182 double phi0 = rectrk->
getPhi0();
183 double phiTrk = phi0 + CLHEP::halfpi;
184 if ( phiTrk > CLHEP::twopi ) phiTrk -= CLHEP::twopi;
185 if ( m_param.cosmicDwTrk && ( phiTrk < CLHEP::pi ) )
continue;
189 for ( lay = 0; lay <
MdcCalNLayer; lay++ ) { fgHitLay[lay] =
false; }
191 for ( k = 0; k < nhit; k++ )
197 fgHitLay[lay] =
true;
204 if ( !fgTrk )
continue;
209 if ( fgHitLay[lay] ) nhitlay++;
211 if ( nhitlay < m_param.nHitLayCut )
continue;
213 for ( k = 0; k < nhit; k++ )
219 iLR = rechit->
getLR();
223 if ( ( fabs( doca ) > m_docaMax[lay] ) || ( fabs( resi ) > m_param.resiCut[lay] ) )
228 if ( !fgHitLay[1] )
continue;
230 else if ( 42 == lay )
232 if ( !fgHitLay[41] )
continue;
236 if ( ( !fgHitLay[lay - 1] ) && ( !fgHitLay[lay + 1] ) )
continue;
240 if ( m_param.fgCombinePlusMinue ) nPM = 2;
241 for (
int iPM = 0; iPM < nPM; iPM++ )
243 if ( 0 == iPM ) iEntr = m_mdcFunSvc->getXtEntrIndex( entrance );
244 else iEntr = m_mdcFunSvc->getXtEntrIndex( -1.0 * entrance );
246 int npoint = m_grXt[lay][iEntr][iLR]->GetN();
247 if ( npoint < m_nMaxGrPoint )
248 m_grXt[lay][iEntr][iLR]->SetPoint( npoint, tdr, fabs( doca ) );
250 if ( tdr < m_tbinLim[lay][0] )
continue;
251 else if ( tdr < m_tbinLim[lay][1] )
252 m_pfNear[lay][iEntr][iLR]->Fill( tdr, fabs( doca ) );
253 else if ( tdr < m_tbinLim[lay][2] )
254 m_pfMid[lay][iEntr][iLR]->Fill( tdr, fabs( doca ) );
255 else if ( tdr < m_tbinLim[lay][3] )
256 m_pfFar[lay][iEntr][iLR]->Fill( tdr, fabs( doca ) );
sprintf(cut, "kal_costheta0_em>-0.93&&kal_costheta0_em<0.93&&kal_pxy0_em>=0.05+%d*0.1&&kal_" "pxy0_em<0.15+%d*0.1&&NGch>=2", j, j)