48 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc );
49 MsgStream log(
msgSvc,
"T0MdcCalib" );
50 log << MSG::INFO <<
"T0MdcCalib::initialize()" << endmsg;
53 m_mdcGeomSvc = mdcGeomSvc;
54 m_mdcFunSvc = mdcFunSvc;
55 m_mdcUtilitySvc = mdcUtilitySvc;
67 m_fdT0 =
new TFolder(
"fdT0",
"fdT0" );
68 m_hlist->Add( m_fdT0 );
70 m_fdResiWire =
new TFolder(
"ResiWire",
"ResiWire" );
71 m_hlist->Add( m_fdResiWire );
73 nwire = m_mdcGeomSvc->getWireSize();
74 for ( i = 0; i < nwire; i++ )
76 lay = m_mdcGeomSvc->Wire( i )->Layer();
77 cel = m_mdcGeomSvc->Wire( i )->Cell();
79 sprintf( hname,
"Resi%04d_Lay%02d_Cell%03d_L", i, lay, cel );
80 m_hleft[i] =
new TH1F( hname,
"", 400, -2.0, 2.0 );
81 m_fdT0->Add( m_hleft[i] );
83 sprintf( hname,
"Resi%04d_Lay%02d_Cell%03d_R", i, lay, cel );
84 m_hright[i] =
new TH1F( hname,
"", 400, -2.0, 2.0 );
85 m_fdT0->Add( m_hright[i] );
88 m_hLrResiSum =
new TH1F(
"LrResiSum",
"", 200, -0.5, 0.5 );
89 m_fdResiWire->Add( m_hLrResiSum );
91 m_hLrResiSub =
new TH1F(
"LrResiSub",
"", 200, -0.5, 0.5 );
92 m_fdResiWire->Add( m_hLrResiSub );
97 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc );
98 MsgStream log(
msgSvc,
"T0MdcCalib" );
99 log << MSG::DEBUG <<
"T0MdcCalib::fillHist()" << endmsg;
104 bool esCutFg =
event->getEsCutFlag();
105 if ( !esCutFg )
return -1;
126 ntrk =
event->getNTrk();
127 if ( ( ntrk < m_param.nTrkCut[0] ) || ( ntrk > m_param.nTrkCut[1] ) )
return -1;
129 for ( i = 0; i < ntrk; i++ )
131 rectrk =
event->getRecTrk( i );
135 double dr = rectrk->
getDr();
136 if ( fabs( dr ) > m_param.drCut )
continue;
139 double dz = rectrk->
getDz();
140 if ( fabs( dz ) > m_param.dzCut )
continue;
143 double p = rectrk->
getP();
144 if ( ( fabs( p ) < m_param.pCut[0] ) || ( fabs( p ) > m_param.pCut[1] ) )
continue;
146 for ( lay = 0; lay <
MdcCalNLayer; lay++ ) fgHitLay[lay] =
false;
147 for ( k = 0; k < nhit; k++ )
151 fgHitLay[lay] =
true;
156 if ( fgHitLay[lay] ) nhitlay++;
157 if ( nhitlay < m_param.nHitLayCut )
continue;
160 if ( m_param.noiseCut && ( !fgNoise ) )
continue;
163 for ( k = 0; k < nhit; k++ )
168 wir = m_mdcGeomSvc->Wire( lay, cel )->Id();
169 lr = rechit->
getLR();
175 if ( 1 != stat )
continue;
177 if ( ( fabs( doca ) < m_docaMin[lay] ) || ( fabs( doca ) > m_docaMax[lay] ) ||
178 ( fabs( resi ) > m_param.resiCut[lay] ) )
183 if ( !fgHitLay[1] )
continue;
185 else if ( 42 == lay )
187 if ( !fgHitLay[41] )
continue;
191 if ( ( !fgHitLay[lay - 1] ) && ( !fgHitLay[lay + 1] ) )
continue;
194 if ( wir < ( m_mdcGeomSvc->getWireSize() ) )
196 if ( 0 == lr ) { m_hleft[wir]->Fill( resi ); }
197 else if ( 1 == lr ) { m_hright[wir]->Fill( resi ); }
199 else { std::cout <<
"wireid: " << wir << std::endl; }
209 Gaudi::svcLocator()->service(
"MessageSvc",
msgSvc );
210 MsgStream log(
msgSvc,
"T0MdcCalib" );
211 log << MSG::INFO <<
"T0MdcCalib::updateConst()" << endmsg;
235 nwire = m_mdcGeomSvc->getWireSize();
236 std::cout <<
"totwire: " << nwire << std::endl;
237 for ( i = 0; i < nwire; i++ )
239 lay = m_mdcGeomSvc->Wire( i )->Layer();
241 if ( 1 == m_param.fgCalib[lay] )
243 entry_l = m_hleft[i]->GetEntries();
244 mean_l = m_hleft[i]->GetMean();
248 entry_r = m_hright[i]->GetEntries();
249 mean_r = m_hright[i]->GetMean();
253 delt0 = 0.5 * ( mean_l + mean_r ) / m_vdr;
255 else { delt0 = 0.0; }
256 if ( 0 == m_param.fgWireCal[i] ) delt0 = 0.0;
258 resiLrSum = 0.5 * ( mean_l + mean_r );
259 resiLrSub = 0.5 * ( mean_l - mean_r );
260 m_hLrResiSum->Fill( resiLrSum );
261 m_hLrResiSub->Fill( resiLrSub );
263 t0 = calconst->
getT0( i );
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)