114 {
115 MsgStream log(
msgSvc(),
"EvtRecDTagCnv" );
116 log << MSG::DEBUG << "EvtRecDTagCnv::DataObjectToTObject" << endmsg;
117
119 if ( !evtRecDTagCol )
120 {
121 log << MSG::ERROR << "Could not downcast to EvtRecDTagCol" << endmsg;
122 return StatusCode::FAILURE;
123 }
124
125 DataObject* evt;
127 if ( evt == NULL )
128 {
129 log << MSG::ERROR << "Could not get EvtRecObject in TDS" << endmsg;
130 return StatusCode::FAILURE;
131 }
132 EvtRecObject* devtTds = dynamic_cast<EvtRecObject*>( evt );
133 if ( !devtTds )
134 { log << MSG::ERROR << "EvtRecDTagCnv: Could not downcast to TDS EvtRecObject" << endmsg; }
135
136 IOpaqueAddress* addr;
137 m_cnvSvc->getEvtRecCnv()->createRep( evt, addr );
138 TEvtRecObject* recEvt =
m_cnvSvc->getEvtRecCnv()->getWriteObject();
139
141 if ( !m_evtRecDTagCol ) return StatusCode::SUCCESS;
142
143 IDataProviderSvc* dataSvc = 0;
144 StatusCode sc = serviceLocator()->getService(
145 "EventDataSvc", IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc );
146 if ( sc.isFailure() )
147 {
148 log << MSG::FATAL << "Could not get EventDataSvc in EvtRecDTagCnv" << endmsg;
149 return sc;
150 }
151
152 EvtRecTrackCol::iterator evtRecTrackColbegin, evtRecTrackColend;
153
155 if ( !evtRecTrackCol ) { log << MSG::INFO << "Could not find EvtRecTrackCol" << endmsg; }
156 else
157 {
158 evtRecTrackColbegin = evtRecTrackCol->begin();
159 evtRecTrackColend = evtRecTrackCol->end();
160 }
161
162
164 EvtRecDTagCol::const_iterator evtRecDTag = evtRecDTagCol->begin();
165
166 for ( ; evtRecDTag != evtRecDTagCol->end(); evtRecDTag++ )
167 {
168 EvtRecDTag* ptr = *evtRecDTag;
169 TEvtRecDTag* evtRecDTagRoot = new TEvtRecDTag();
170
171
181
182 HepLorentzVector p4 = ptr->
p4();
183 evtRecDTagRoot->
setpx( p4.x() );
184 evtRecDTagRoot->
setpy( p4.y() );
185 evtRecDTagRoot->
setpz( p4.z() );
186 evtRecDTagRoot->
setpe( p4.t() );
187
188 SmartRefVector<EvtRecTrack> tracks = ptr->
tracks();
189
190 for ( unsigned int i = 0; i < tracks.size(); i++ )
191 {
192 EvtRecTrackCol::iterator it = find( evtRecTrackColbegin, evtRecTrackColend, tracks[i] );
193
194 evtRecDTagRoot->
addTrack( it - evtRecTrackColbegin );
195 }
196
197 SmartRefVector<EvtRecTrack> showers = ptr->
showers();
198
199 for ( unsigned int i = 0; i < showers.size(); i++ )
200 {
201 EvtRecTrackCol::iterator it = find( evtRecTrackColbegin, evtRecTrackColend, showers[i] );
202
203 evtRecDTagRoot->
addShower( it - evtRecTrackColbegin );
204 }
205
206 SmartRefVector<EvtRecTrack> otherTracks = ptr->
otherTracks();
207
208 for ( unsigned int i = 0; i < otherTracks.size(); i++ )
209 {
210 EvtRecTrackCol::iterator it =
211 find( evtRecTrackColbegin, evtRecTrackColend, otherTracks[i] );
212
214 }
215
216 SmartRefVector<EvtRecTrack> otherShowers = ptr->
otherShowers();
217
218 for ( unsigned int i = 0; i < otherShowers.size(); i++ )
219 {
220 EvtRecTrackCol::iterator it =
221 find( evtRecTrackColbegin, evtRecTrackColend, otherShowers[i] );
222
224 }
225
226 SmartRefVector<EvtRecTrack> pionId = ptr->
pionId();
227
228 for ( unsigned int i = 0; i < pionId.size(); i++ )
229 {
230 EvtRecTrackCol::iterator it = find( evtRecTrackColbegin, evtRecTrackColend, pionId[i] );
231
232 evtRecDTagRoot->
addPionId( it - evtRecTrackColbegin );
233 }
234
235 SmartRefVector<EvtRecTrack> kaonId = ptr->
kaonId();
236
237 for ( unsigned int i = 0; i < kaonId.size(); i++ )
238 {
239 EvtRecTrackCol::iterator it = find( evtRecTrackColbegin, evtRecTrackColend, kaonId[i] );
240
241 evtRecDTagRoot->
addKaonId( it - evtRecTrackColbegin );
242 }
243
245 }
246
247 return StatusCode::SUCCESS;
248}
ObjectVector< EvtRecDTag > EvtRecDTagCol
SmartRefVector< EvtRecTrack > tracks()
SmartRefVector< EvtRecTrack > showers()
SmartRefVector< EvtRecTrack > otherShowers()
SmartRefVector< EvtRecTrack > kaonId()
HepLorentzVector p4() const
SmartRefVector< EvtRecTrack > otherTracks()
SmartRefVector< EvtRecTrack > pionId()
int numOfChildren() const
DecayMode decayMode() const
IDataProviderSvc * m_eds
pointer to eventdataservice
void setnumOfChildren(Int_t numOfChildren)
void addTrack(Int_t track)
void setbeamE(Double_t beamE)
void addOtherTrack(Int_t track)
void addOtherShower(Int_t shower)
void setmass(Double_t mass)
void addPionId(Int_t pionId)
void setcharge(Int_t charge)
void addShower(Int_t shower)
void setdeltaE(Double_t deltaE)
void setcharm(Int_t charm)
void addKaonId(Int_t kaonId)
void setmBC(Double_t mBC)
void setdecayMode(Int_t decayMode)
void clearEvtRecDTagCol()
const TObjArray * getEvtRecDTagCol() const
void addEvtRecDTag(TEvtRecDTag *dtag)
_EXTERN_ std::string Event
_EXTERN_ std::string EvtRecTrackCol