59 MsgStream log(
msgSvc(), name() );
61 log << MSG::INFO <<
"in initialize()" << endmsg;
67 NTuplePtr nt(
ntupleSvc(),
"DQAFILE/JsiLL" );
68 if ( nt ) m_tuple = nt;
71 m_tuple =
ntupleSvc()->book(
"DQAFILE/JsiLL", CLID_ColumnWiseTuple,
"JsiLL ntuple" );
74 status = m_tuple->addItem(
"runNo", m_runNo );
75 status = m_tuple->addItem(
"event", m_event );
76 status = m_tuple->addItem(
"chisq", m_chisq );
77 status = m_tuple->addItem(
"mLambda", m_mLambda );
78 status = m_tuple->addItem(
"mLambdabar", m_mLambdabar );
79 status = m_tuple->addItem(
"pLambda", m_pLambda );
80 status = m_tuple->addItem(
"pLambdabar", m_pLambdabar );
82 else { log << MSG::ERROR <<
"Can not book N-tuple:" << long( m_tuple ) << endmsg; }
85 if ( service(
"THistSvc", m_thsvc ).isFailure() )
87 log << MSG::ERROR <<
"Couldn't get THistSvc" << endmsg;
88 return StatusCode::FAILURE;
93 TH1F* hrxy =
new TH1F(
"Rxy",
"Rxy distribution", 110, -1., 10. );
94 if ( m_thsvc->regHist(
"/DQAHist/JsiLL/hrxy", hrxy ).isFailure() )
95 { log << MSG::ERROR <<
"Couldn't register Rxy" << endmsg; }
96 TH1F* hz =
new TH1F(
"z",
"z distribution", 200, -100., 100. );
97 if ( m_thsvc->regHist(
"/DQAHist/JsiLL/hz", hz ).isFailure() )
98 { log << MSG::ERROR <<
"Couldn't register z" << endmsg; }
100 log << MSG::INFO <<
"successfully return from initialize()" << endmsg;
101 return StatusCode::SUCCESS;
107 MsgStream log(
msgSvc(), name() );
108 log << MSG::INFO <<
"in execute()" << endmsg;
113 setFilterPassed(
false );
115 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(),
"/Event/EventHeader" );
116 m_runNo = eventHeader->runNumber();
117 m_event = eventHeader->eventNumber();
118 log << MSG::DEBUG <<
"run, evtnum = " << m_runNo <<
" , " << m_event << endmsg;
121 log << MSG::DEBUG <<
"ncharg, nneu, tottks = " << evtRecEvent->totalCharged() <<
" , "
122 << evtRecEvent->totalNeutral() <<
" , " << evtRecEvent->totalTracks() << endmsg;
126 if ( evtRecEvent->totalNeutral() > 100 ) {
return StatusCode::SUCCESS; }
128 Vint iGood, iplus, iminus;
136 Hep3Vector xorigin( 0, 0, 0 );
139 Gaudi::svcLocator()->service(
"VertexDbSvc", vtxsvc ).ignore();
144 xorigin.setX( dbv[0] );
145 xorigin.setY( dbv[1] );
146 xorigin.setZ( dbv[2] );
150 for (
int i = 0; i < evtRecEvent->totalCharged(); i++ )
153 if ( !( *itTrk )->isMdcTrackValid() )
continue;
154 if ( !( *itTrk )->isMdcKalTrackValid() )
continue;
157 double pch = mdcTrk->
p();
158 double x0 = mdcTrk->
x();
159 double y0 = mdcTrk->
y();
160 double z0 = mdcTrk->
z();
161 double phi0 = mdcTrk->
helix( 1 );
162 double xv = xorigin.x();
163 double yv = xorigin.y();
164 double Rxy = fabs( ( x0 - xv ) *
cos( phi0 ) + ( y0 - yv ) *
sin( phi0 ) );
166 if ( fabs( z0 ) >= m_vz0cut )
continue;
167 if ( Rxy >= m_vr0cut )
continue;
172 if ( m_thsvc->getHist(
"/DQAHist/JsiLL/hrxy", h ).isSuccess() ) { h->Fill( Rxy ); }
173 else { log << MSG::ERROR <<
"Couldn't retrieve hrxy" << endmsg; }
174 if ( m_thsvc->getHist(
"/DQAHist/JsiLL/hz", h ).isSuccess() ) { h->Fill( z0 ); }
175 else { log << MSG::ERROR <<
"Couldn't retrieve hz" << endmsg; }
178 iGood.push_back( i );
179 nCharge += mdcTrk->
charge();
180 if ( mdcTrk->
charge() > 0 ) { iplus.push_back( i ); }
181 else { iminus.push_back( i ); }
187 int nGood = iGood.size();
188 log << MSG::DEBUG <<
"ngood, totcharge = " << nGood <<
" , " << nCharge << endmsg;
189 if ( ( nGood != 4 ) || ( nCharge != 0 ) ) {
return StatusCode::SUCCESS; }
197 int pidp0 = 5, pidp1 = 3, pidm0 = 5, pidm1 = 3;
199 RecMdcKalTrack* itTrkp = ( *( evtRecTrkCol->begin() + iplus[0] ) )->mdcKalTrack();
200 RecMdcKalTrack* itTrkpip = ( *( evtRecTrkCol->begin() + iplus[1] ) )->mdcKalTrack();
201 RecMdcKalTrack* itTrkpb = ( *( evtRecTrkCol->begin() + iminus[0] ) )->mdcKalTrack();
202 RecMdcKalTrack* itTrkpim = ( *( evtRecTrkCol->begin() + iminus[1] ) )->mdcKalTrack();
205 double tmppp, tmpppb, tmpppip, tmpppim;
206 tmppp = sqrt( itTrkp->
px() * itTrkp->
px() + itTrkp->
py() * itTrkp->
py() +
207 itTrkp->
pz() * itTrkp->
pz() );
208 tmpppb = sqrt( itTrkpb->
px() * itTrkpb->
px() + itTrkpb->
py() * itTrkpb->
py() +
209 itTrkpb->
pz() * itTrkpb->
pz() );
210 tmpppip = sqrt( itTrkpip->
px() * itTrkpip->
px() + itTrkpip->
py() * itTrkpip->
py() +
211 itTrkpip->
pz() * itTrkpip->
pz() );
212 tmpppim = sqrt( itTrkpim->
px() * itTrkpim->
px() + itTrkpim->
py() * itTrkpim->
py() +
213 itTrkpim->
pz() * itTrkpim->
pz() );
215 if ( tmppp < tmpppip )
217 itTrkp = ( *( evtRecTrkCol->begin() + iplus[1] ) )->mdcKalTrack();
218 itTrkpip = ( *( evtRecTrkCol->begin() + iplus[0] ) )->mdcKalTrack();
226 if ( tmpppb < tmpppim )
228 itTrkpb = ( *( evtRecTrkCol->begin() + iminus[1] ) )->mdcKalTrack();
229 itTrkpim = ( *( evtRecTrkCol->begin() + iminus[0] ) )->mdcKalTrack();
238 if ( tmppp < 0.7 || tmppp > 1.1 )
return StatusCode::SUCCESS;
239 if ( tmpppb < 0.7 || tmpppb > 1.1 )
return StatusCode::SUCCESS;
240 if ( tmpppip > 0.35 )
return StatusCode::SUCCESS;
241 if ( tmpppim > 0.35 )
return StatusCode::SUCCESS;
251 HepSymMatrix Evx( 3, 0 );
279 if ( !vtxfita0->
Fit( 0 ) )
return StatusCode::SUCCESS;
285 if ( !vtxfita->
Fit() )
return StatusCode::SUCCESS;
293 if ( !vtxfitb0->
Fit( 0 ) )
return StatusCode::SUCCESS;
300 if ( !vtxfitb->
Fit() )
return StatusCode::SUCCESS;
308 if ( !vtxfit->
Fit( 0 ) )
return StatusCode::SUCCESS;
317 HepLorentzVector
ecms( 0.034065, 0.0, 0.0, 3.0969 );
318 const Hep3Vector
u_cms = -
ecms.boostVector();
325 if ( !kmfit->
Fit() )
return StatusCode::SUCCESS;
326 m_chisq = kmfit->
chisq();
327 if ( m_chisq > 50 )
return StatusCode::SUCCESS;
328 HepLorentzVector kmf_pLambda = kmfit->
pfit( 0 );
329 HepLorentzVector kmf_pLambdabar = kmfit->
pfit( 1 );
331 kmf_pLambda.boost(
u_cms );
332 kmf_pLambdabar.boost(
u_cms );
333 m_mLambda = kmf_pLambda.m();
334 m_mLambdabar = kmf_pLambdabar.m();
335 m_pLambda = kmf_pLambda.rho();
336 m_pLambdabar = kmf_pLambdabar.rho();
338 if ( fabs( m_mLambda - 1.1157 ) > 0.003 || fabs( m_mLambdabar - 1.1157 ) > 0.003 )
339 return StatusCode::SUCCESS;
342 m_tuple->write().ignore();
350 ( *( evtRecTrkCol->begin() + iplus[0] ) )->setPartId( pidp0 );
351 ( *( evtRecTrkCol->begin() + iplus[1] ) )->setPartId( pidp1 );
352 ( *( evtRecTrkCol->begin() + iminus[0] ) )->setPartId( pidm0 );
353 ( *( evtRecTrkCol->begin() + iminus[1] ) )->setPartId( pidm1 );
359 ( *( evtRecTrkCol->begin() + iplus[0] ) )->setQuality( 0 );
360 ( *( evtRecTrkCol->begin() + iplus[1] ) )->setQuality( 0 );
361 ( *( evtRecTrkCol->begin() + iminus[0] ) )->setQuality( 0 );
362 ( *( evtRecTrkCol->begin() + iminus[1] ) )->setQuality( 0 );
367 setFilterPassed(
true );
370 return StatusCode::SUCCESS;