29 MsgStream log(
msgSvc(),
"EvtRecVeeVertexCnv" );
30 log << MSG::DEBUG <<
"EvtRecVeeVertexCnv::TObjectToDataObject" << endmsg;
34 refpObject = evtRecVeeVertexCol;
36 if ( !m_evtRecVeeVertexCol )
return StatusCode::SUCCESS;
38 IDataProviderSvc* dataSvc = 0;
39 StatusCode sc = serviceLocator()->getService(
40 "EventDataSvc", IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc );
43 log << MSG::FATAL <<
"Could not get EventDataSvc in EvtRecVeeVertexCnv" << endmsg;
48 if ( !evtRecTrackCol ) { log << MSG::INFO <<
"Could not find EvtRecTrackCol" << endmsg; }
51 TIter evtRecVeeVertexIter( m_evtRecVeeVertexCol );
53 while ( ( evtRecVeeVertexRoot = (
TEvtRecVeeVertex*)evtRecVeeVertexIter.Next() ) )
56 m_common.m_rootEvtRecVeeVertexMap[evtRecVeeVertexRoot] = evtRecVeeVertex;
60 evtRecVeeVertex->
setChi2( evtRecVeeVertexRoot->
chi2() );
61 evtRecVeeVertex->
setNdof( evtRecVeeVertexRoot->
ndof() );
62 evtRecVeeVertex->
setMass( evtRecVeeVertexRoot->
mass() );
64 HepVector wTrackParameter( 7, 0 );
65 for (
int i = 0; i < 7; i++ ) { wTrackParameter[i] = evtRecVeeVertexRoot->
w( i ); }
66 evtRecVeeVertex->
setW( wTrackParameter );
68 HepSymMatrix EwTrackParameter( 7, 0 );
70 for (
int j = 0; j < 7; j++ )
72 for (
int k = j; k < 7; k++ )
74 EwTrackParameter[j][k] = EwTrackParameter[k][j] = evtRecVeeVertexRoot->
Ew( i );
78 evtRecVeeVertex->
setEw( EwTrackParameter );
80 std::pair<int, int> pairId;
81 pairId.first = evtRecVeeVertexRoot->
pair( 0 );
82 pairId.second = evtRecVeeVertexRoot->
pair( 1 );
83 evtRecVeeVertex->
setPair( pairId );
86 int evtRecTrackId0 = evtRecVeeVertexRoot->
daughter( 0 );
87 if ( evtRecTrackId0 >= 0 )
90 dynamic_cast<EvtRecTrack*
>( evtRecTrackCol->containedObject( evtRecTrackId0 ) ), 0 );
92 int evtRecTrackId1 = evtRecVeeVertexRoot->
daughter( 1 );
93 if ( evtRecTrackId1 >= 0 )
96 dynamic_cast<EvtRecTrack*
>( evtRecTrackCol->containedObject( evtRecTrackId1 ) ), 1 );
99 evtRecVeeVertexCol->push_back( evtRecVeeVertex );
102 delete m_evtRecVeeVertexCol;
103 m_evtRecVeeVertexCol = 0;
104 return StatusCode::SUCCESS;
108 MsgStream log(
msgSvc(),
"EvtRecVeeVertexCnv" );
109 log << MSG::DEBUG <<
"EvtRecVeeVertexCnv::DataObjectToTObject" << endmsg;
112 if ( !evtRecVeeVertexCol )
114 log << MSG::ERROR <<
"Could not downcast to EvtRecVeeVertexCol" << endmsg;
115 return StatusCode::FAILURE;
122 log << MSG::ERROR <<
"Could not get EvtRecObject in TDS" << endmsg;
123 return StatusCode::FAILURE;
128 log << MSG::ERROR <<
"EvtRecVeeVertexCnv: Could not downcast to TDS EvtRecObject"
132 IOpaqueAddress* addr;
133 m_cnvSvc->getEvtRecCnv()->createRep( evt, addr );
137 if ( !m_evtRecVeeVertexCol )
return StatusCode::SUCCESS;
139 IDataProviderSvc* dataSvc = 0;
140 StatusCode sc = serviceLocator()->getService(
141 "EventDataSvc", IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc );
142 if ( sc.isFailure() )
144 log << MSG::FATAL <<
"Could not get EventDataSvc in EvtRecVeeVertexCnv" << endmsg;
148 EvtRecTrackCol::iterator evtRecTrackColbegin, evtRecTrackColend;
151 if ( !evtRecTrackCol ) { log << MSG::INFO <<
"Could not find EvtRecTrackCol" << endmsg; }
154 evtRecTrackColbegin = evtRecTrackCol->begin();
155 evtRecTrackColend = evtRecTrackCol->end();
160 EvtRecVeeVertexCol::const_iterator evtRecVeeVertex = evtRecVeeVertexCol->begin();
162 for ( ; evtRecVeeVertex != evtRecVeeVertexCol->end(); evtRecVeeVertex++ )
173 double wTrackParameter[7];
174 for (
int i = 0; i < 7; i++ ) { wTrackParameter[i] = ptr->
w()[i]; }
175 evtRecVeeVertexRoot->
setW( wTrackParameter );
176 double EwTrackParameter[28];
178 for (
int j = 0; j < 7; j++ )
180 for (
int k = j; k < 7; k++ )
182 EwTrackParameter[i] = ptr->
Ew()[j][k];
187 evtRecVeeVertexRoot->
setEw( EwTrackParameter );
189 pairId[0] = ptr->
pair( 0 );
190 pairId[1] = ptr->
pair( 1 );
191 evtRecVeeVertexRoot->
setPair( pairId );
196 if ( ptr->
daughter( 0 ).target() != NULL && ptr->
daughter( 1 ).target() != NULL )
198 assert( evtRecTrackColbegin != evtRecTrackColend );
199 EvtRecTrackCol::iterator it0 =
200 find( evtRecTrackColbegin, evtRecTrackColend, ptr->
daughter( 0 ).target() );
201 EvtRecTrackCol::iterator it1 =
202 find( evtRecTrackColbegin, evtRecTrackColend, ptr->
daughter( 1 ).target() );
203 assert( it0 != evtRecTrackColend );
204 assert( it1 != evtRecTrackColend );
205 daughterId[0] = it0 - evtRecTrackColbegin;
206 daughterId[1] = it1 - evtRecTrackColbegin;
212 return StatusCode::SUCCESS;