127 {
128 MsgStream log(
msgSvc(),
"EvtRecDTagCnv");
129 log << MSG::DEBUG << "EvtRecDTagCnv::DataObjectToTObject" << endreq;
130
132 if ( ! evtRecDTagCol ) {
133 log << MSG::ERROR << "Could not downcast to EvtRecDTagCol" << endreq;
134 return StatusCode::FAILURE;
135 }
136
137 DataObject* evt;
140 log << MSG::ERROR << "Could not get EvtRecObject in TDS" << endreq;
141 return StatusCode::FAILURE;
142 }
144 if ( ! devtTds ) {
145 log << MSG::ERROR << "EvtRecDTagCnv: Could not downcast to TDS EvtRecObject" << endreq;
146 }
147
148 IOpaqueAddress *addr;
151
153 if ( ! m_evtRecDTagCol ) return StatusCode::SUCCESS;
154
155 IDataProviderSvc* dataSvc = 0;
156 StatusCode sc = serviceLocator()->getService("EventDataSvc",
157 IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc);
158 if ( sc.isFailure() ) {
159 log << MSG::FATAL << "Could not get EventDataSvc in EvtRecDTagCnv" << endreq;
160 return sc;
161 }
162
163 EvtRecTrackCol::iterator evtRecTrackColbegin, evtRecTrackColend;
164
166 if ( ! evtRecTrackCol) {
167 log << MSG::INFO << "Could not find EvtRecTrackCol" << endreq;
168 }
169 else {
170 evtRecTrackColbegin = evtRecTrackCol->begin();
171 evtRecTrackColend = evtRecTrackCol->end();
172 }
173
174
176 EvtRecDTagCol::const_iterator evtRecDTag = evtRecDTagCol->begin();
177
178 for ( ; evtRecDTag != evtRecDTagCol->end(); evtRecDTag++) {
181
182
192
193 HepLorentzVector
p4=ptr->
p4();
198
199
200
201 SmartRefVector<EvtRecTrack> tracks=ptr->
tracks();
202
203 for(unsigned int i=0; i<tracks.size();i++){
204 EvtRecTrackCol::iterator it = find(evtRecTrackColbegin,
205 evtRecTrackColend, tracks[i]);
206
207 evtRecDTagRoot->
addTrack(it - evtRecTrackColbegin );
208 }
209
210
211 SmartRefVector<EvtRecTrack> showers=ptr->
showers();
212
213 for(unsigned int i=0; i<showers.size();i++){
214 EvtRecTrackCol::iterator it = find(evtRecTrackColbegin,
215 evtRecTrackColend, showers[i]);
216
217 evtRecDTagRoot->
addShower(it - evtRecTrackColbegin );
218 }
219
220
221 SmartRefVector<EvtRecTrack> otherTracks=ptr->
otherTracks();
222
223 for(unsigned int i=0; i<otherTracks.size();i++){
224 EvtRecTrackCol::iterator it = find(evtRecTrackColbegin,
225 evtRecTrackColend, otherTracks[i]);
226
228 }
229
230 SmartRefVector<EvtRecTrack> otherShowers=ptr->
otherShowers();
231
232 for(unsigned int i=0; i<otherShowers.size();i++){
233 EvtRecTrackCol::iterator it = find(evtRecTrackColbegin,
234 evtRecTrackColend, otherShowers[i]);
235
237 }
238
239 SmartRefVector<EvtRecTrack> pionId=ptr->
pionId();
240
241 for(unsigned int i=0; i<pionId.size();i++){
242 EvtRecTrackCol::iterator it = find(evtRecTrackColbegin,
243 evtRecTrackColend, pionId[i]);
244
245 evtRecDTagRoot->
addPionId(it - evtRecTrackColbegin );
246 }
247
248 SmartRefVector<EvtRecTrack> kaonId=ptr->
kaonId();
249
250 for(unsigned int i=0; i<kaonId.size();i++){
251 EvtRecTrackCol::iterator it = find(evtRecTrackColbegin,
252 evtRecTrackColend, kaonId[i]);
253
254 evtRecDTagRoot->
addKaonId(it - evtRecTrackColbegin );
255 }
256
257
259 }
260
261 return StatusCode::SUCCESS;
262}
ObjectVector< EvtRecDTag > EvtRecDTagCol
static TEvtRecObject * getWriteObject()
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
EvtRecCnv * getEvtRecCnv()
IDataProviderSvc * m_eds
pointer to eventdataservice
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)
Convert the transient object to the requested representation.
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
double double double * p4