BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
RecExtTrackCnv.cxx
Go to the documentation of this file.
1#ifndef RecExtTrackCnv_CXX
2#define RecExtTrackCnv_CXX 1
3
4#include "GaudiKernel/MsgStream.h"
5#include "GaudiKernel/DataObject.h"
6#include "GaudiKernel/ObjectVector.h"
7
8#include "TClonesArray.h"
9
10#include "EventModel/EventModel.h"
11
12#include "ReconEvent/ReconEvent.h"
13
14#include "ExtEvent/RecExtTrack.h"
15//#include "RootEventData/TMucTrack.h" // standard root object
16#include "RootEventData/TRecMucTrack.h" // standard root object
17//#include "RootEventData/TDstEvent.h"
18#include "RootEventData/TRecTrackEvent.h"
19
20#include "RootCnvSvc/Rec/RecTrackCnv.h"
21#include "RootCnvSvc/Rec/RecExtTrackCnv.h"
22#include "RootCnvSvc/RootAddress.h"
23
24#include <vector>
25
26using namespace std;
27
28// Instantiation of a static factory class used by clients to create
29// instances of this service
30//static CnvFactory<RecExtTrackCnv> s_factory;
31//const ICnvFactory& RecExtTrackCnvFactory = s_factory;
32
34: RootEventBaseCnv(classID(), svc)
35{
36
37 // Here we associate this converter with the /Event path on the TDS.
38 MsgStream log(msgSvc(), "RecExtTrackCnv");
39 //log << MSG::DEBUG << "Constructor called for " << objType() << endreq;
40 //m_rootTreename ="Rec";
41 //m_rootBranchname ="m_RecExtTrackCol";
42 m_rootBranchname ="m_extTrackCol";
43 //declareObject(EventModel::Recon::ExtTrackCol, objType(), m_rootTreename, m_rootBranchname);
44 m_adresses.push_back(&m_extTrackCol);
45 m_extTrackCol=0;
46}
47
48StatusCode RecExtTrackCnv::TObjectToDataObject(DataObject*& refpObject) {
49 // creation of TDS object from root object
50 MsgStream log(msgSvc(), "RecExtTrackCnv");
51 log << MSG::DEBUG << "RecExtTrackCnv::TObjectToDataObject" << endreq;
52 StatusCode sc=StatusCode::SUCCESS;
53
54 // create the TDS location for the ExtTrack Collection
55 RecExtTrackCol* extTrackTdsCol = new RecExtTrackCol;
56 refpObject=extTrackTdsCol;
57
58
59 // now convert
60 if (!m_extTrackCol) return sc;
61 TIter extTrackIter(m_extTrackCol);
62 TRecExtTrack *extTrackRoot = 0;
63 while ((extTrackRoot = (TRecExtTrack*)extTrackIter.Next())) {
64
65 RecExtTrack *extTrackTds = new RecExtTrack();
66 m_common.m_rootExtTrackMap[extTrackRoot] = extTrackTds;
67 int trackId = extTrackRoot->GetTrackId();
68 extTrackTds->SetTrackId(trackId);
69 for(int iPart=0; iPart<5; iPart++) {
70 extTrackTds->SetParType(iPart);
71 //Tof layer1:
72 double p1x = extTrackRoot->GetTof1PositionX(iPart);
73 double p1y = extTrackRoot->GetTof1PositionY(iPart);
74 double p1z = extTrackRoot->GetTof1PositionZ(iPart);
75 double m1x = extTrackRoot->GetTof1MomentumX(iPart);
76 double m1y = extTrackRoot->GetTof1MomentumY(iPart);
77 double m1z = extTrackRoot->GetTof1MomentumZ(iPart);
78 Hep3Vector tof1p(p1x,p1y,p1z);
79 Hep3Vector tof1m(m1x,m1y,m1z);
80
81 // char * pTof1 = extTrackRoot->GetTof1VolumeName().Data();
82 string v1s = extTrackRoot->GetTof1VolumeName(iPart).Data();
83 int v1n = extTrackRoot->GetTof1VolumeNumber(iPart) ;
84 double tof1= extTrackRoot->GetTof1(iPart);
85 double tof1path= extTrackRoot->GetTof1Path(iPart);
86 double z1 = extTrackRoot->GetTof1PosSigmaAlongZ(iPart);
87 double t1 = extTrackRoot->GetTof1PosSigmaAlongT(iPart);
88 double x1 = extTrackRoot->GetTof1PosSigmaAlongX(iPart);
89 double y1 = extTrackRoot->GetTof1PosSigmaAlongY(iPart);
90 HepSymMatrix e1m(6) ;
91 for (int i = 0;i<6 ;i++ )
92 for (int j= 0;j<6 ;j++ )
93 e1m[i][j]= extTrackRoot->GetTof1ErrorMatrix(i , j, iPart) ;
94
95 //Tof layer2:
96 double p2x = extTrackRoot->GetTof2PositionX(iPart) ;
97 double p2y = extTrackRoot->GetTof2PositionY(iPart) ;
98 double p2z = extTrackRoot->GetTof2PositionZ(iPart) ;
99 double m2x = extTrackRoot->GetTof2MomentumX(iPart) ;
100 double m2y = extTrackRoot->GetTof2MomentumY(iPart) ;
101 double m2z = extTrackRoot->GetTof2MomentumZ(iPart);
102 Hep3Vector tof2p(p2x,p2y,p2z);
103 Hep3Vector tof2m(m2x,m2y,m2z);
104
105 string v2s = extTrackRoot->GetTof2VolumeName(iPart).Data();
106 int v2n = extTrackRoot->GetTof2VolumeNumber(iPart) ;
107 double tof2= extTrackRoot->GetTof2(iPart);
108 double tof2path = extTrackRoot->GetTof2Path(iPart);
109 double z2 = extTrackRoot->GetTof2PosSigmaAlongZ(iPart) ;
110 double t2 = extTrackRoot->GetTof2PosSigmaAlongT(iPart);
111 double x2 = extTrackRoot->GetTof2PosSigmaAlongX(iPart);
112 double y2 = extTrackRoot->GetTof2PosSigmaAlongY(iPart);
113 HepSymMatrix e2m(6) ;
114 for (int i = 0;i<6 ;i++ )
115 for (int j= 0;j<6 ;j++ )
116 e2m[i][j]= extTrackRoot->GetTof2ErrorMatrix(i,j,iPart) ;
117
118 //Emc
119 double pEx = extTrackRoot->GetEmcPositionX(iPart);
120 double pEy = extTrackRoot->GetEmcPositionY(iPart);
121 double pEz = extTrackRoot->GetEmcPositionZ(iPart);
122 double mEx = extTrackRoot->GetEmcMomentumX(iPart);
123 double mEy = extTrackRoot->GetEmcMomentumY(iPart);
124 double mEz = extTrackRoot->GetEmcMomentumZ(iPart);
125 Hep3Vector Ep(pEx,pEy,pEz);
126 Hep3Vector Em(mEx,mEy,mEz);
127
128 string vEs = extTrackRoot->GetEmcVolumeName(iPart).Data();
129 int vEn = extTrackRoot->GetEmcVolumeNumber(iPart);
130 double theta = extTrackRoot->GetEmcPosSigmaAlongTheta(iPart);
131 double phi = extTrackRoot->GetEmcPosSigmaAlongPhi(iPart);
132 HepSymMatrix eEm(6) ;
133 for(int i=0;i<6 ;i++ )
134 for(int j= 0;j<6 ;j++ )
135 eEm[i][j]= extTrackRoot->GetEmcErrorMatrix(i,j,iPart);
136 double emcPath=extTrackRoot->emcPath(iPart);
137
138 //Muc
139 double pMx = extTrackRoot->GetMucPositionX(iPart) ;
140 double pMy = extTrackRoot->GetMucPositionY(iPart) ;
141 double pMz = extTrackRoot->GetMucPositionZ(iPart) ;
142 double mMx = extTrackRoot->GetMucMomentumX(iPart) ;
143 double mMy = extTrackRoot->GetMucMomentumY(iPart) ;
144 double mMz = extTrackRoot->GetMucMomentumZ(iPart);
145 Hep3Vector Mp(pMx,pMy,pMz);
146 Hep3Vector Mm(mMx,mMy,mMz);
147
148 string vMs = extTrackRoot->GetMucVolumeName(iPart).Data();
149 int vMn = extTrackRoot->GetMucVolumeNumber(iPart) ;
150
151 double zM = extTrackRoot->GetMucPosSigmaAlongZ(iPart) ;
152 double tM = extTrackRoot->GetMucPosSigmaAlongT(iPart);
153 double xM = extTrackRoot->GetMucPosSigmaAlongX(iPart);
154 double yM = extTrackRoot->GetMucPosSigmaAlongY(iPart);
155 HepSymMatrix eMm(6) ;
156 for (int i = 0;i<6 ;i++ )
157 for (int j= 0;j<6 ;j++ )
158 eMm[i][j]= extTrackRoot->GetMucErrorMatrix(i,j,iPart) ;
159
160
161 //ExtMucHitVec
162 int size = extTrackRoot->GetSize(iPart);
163 ExtMucHit aExtMucHit;
164 // Hep3Vector p(0,0,0);
165 // Hep3Vector m(0,0,0);
166 string vs;
167 int vn;
168 double z;
169 double t;
170 double x;
171 double y;
172 HepSymMatrix matrix(6);
173
174 for(int i =0;i<size;i++){
175 double px = extTrackRoot->GetPositionX(i,iPart) ;
176 double py = extTrackRoot->GetPositionY(i,iPart) ;
177 double pz = extTrackRoot->GetPositionZ(i,iPart) ;
178 Hep3Vector p(px,py,pz);
179 double mx = extTrackRoot->GetMomentumX(i,iPart) ;
180 double my = extTrackRoot->GetMomentumY(i,iPart) ;
181 double mz = extTrackRoot->GetMomentumZ(i,iPart);
182 Hep3Vector m(mx,my,mz);
183 vs = extTrackRoot->GetVolumeName(i,iPart).Data();
184 vn = extTrackRoot->GetVolumeNumber(i,iPart) ;
185 z = extTrackRoot->GetPosSigmaAlongZ(i,iPart) ;
186 t = extTrackRoot->GetPosSigmaAlongT(i,iPart);
187 x = extTrackRoot->GetPosSigmaAlongX(i,iPart);
188 y = extTrackRoot->GetPosSigmaAlongY(i,iPart);
189 std::vector<double> vecError = extTrackRoot->GetErrorMatrix(i,iPart);
190 for(int k =0;k<6;k++){
191 for(int j =0; j<6;j++){
192 matrix[k][j] = vecError[k*6+j];
193 }
194 }
195 aExtMucHit.SetExtMucHit(p,m,vs,vn,matrix,z,t,x,y);
196 extTrackTds->AddExtMucHit(aExtMucHit);
197 }
198
199 // DstExtTrack *extTrackTds = new DstExtTrack();
200 extTrackTds->SetTof1Data( tof1p, tof1m, v1s, v1n , tof1, tof1path, e1m, z1, t1, x1, y1 );
201 extTrackTds->SetTof2Data( tof2p, tof2m, v2s, v2n , tof2, tof2path, e2m, z2, t2, x2, y2 );
202 extTrackTds->SetEmcData( Ep, Em, vEs, vEn , theta, phi , eEm);
203 extTrackTds->SetEmcPath(emcPath);
204 extTrackTds->SetMucData( Mp, Mm, vMs, vMn , eMm, zM, tM, xM, yM );
205
206 extTrackTdsCol->push_back(extTrackTds);
207
208
209 //delete extTrackTds; // wensp add 2005/12/31
210 // extTrackTds = NULL;
211 }
212 extTrackTds->SetParType(2);// default particle: pion
213 }
214 //m_extTrackCol->Delete(); // wensp add 2005/12/30
215 delete m_extTrackCol;
216 m_extTrackCol = 0;
217
218
219 return StatusCode::SUCCESS;
220}
221
222StatusCode RecExtTrackCnv::DataObjectToTObject(DataObject* obj,RootAddress* rootaddr) {
223
224
225
226 MsgStream log(msgSvc(), "RecExtTrackCnv");
227 log << MSG::DEBUG << "RecExtTrackCnv::DataObjectToTObject" << endreq;
228 StatusCode sc=StatusCode::SUCCESS;
229
230 RecExtTrackCol * extTrackColTds=dynamic_cast<RecExtTrackCol *> (obj);
231 if (!extTrackColTds) {
232 log << MSG::ERROR << "Could not downcast to RecExtTrackCol" << endreq;
233 return StatusCode::FAILURE;
234 }
235
236 DataObject *evt;
237 m_eds->findObject(EventModel::Recon::Event,evt);
238 if (evt==NULL) {
239 log << MSG::ERROR << "Could not get ReconEvent in TDS " << endreq;
240 return StatusCode::FAILURE;
241 }
242
243 ReconEvent * devtTds=dynamic_cast<ReconEvent *> (evt);
244 if (!devtTds) {
245 log << MSG::ERROR << "RecExtTrackCnv:Could not downcast to TDS Rec Event" << endreq;
246 }
247 IOpaqueAddress *addr;
248
249 m_cnvSvc->getRecTrackCnv()->createRep(evt,addr);
251
252 const TObjArray *m_extTrackCol = recEvt->getExtTrackCol();
253
254 if (!m_extTrackCol) return sc;
255
256 recEvt->clearExtTrackCol(); //necessary in case there is I/O at the same time since array is static
257 RecExtTrackCol::const_iterator extTrackTds;
258
259 for (extTrackTds = extTrackColTds->begin(); extTrackTds != extTrackColTds->end(); extTrackTds++) {
260 //Get Data from TDS
261 Int_t trackId = (*extTrackTds)->GetTrackId();
262 TRecExtTrack *extTrackRoot = new TRecExtTrack;
263 //Set to Root
264 extTrackRoot->SetTrackId(trackId);
265 for(int iPart=0; iPart<5; iPart++) {
266 //Tof layer1
267 Double_t p1x = (*extTrackTds)->tof1Position(iPart).x();
268 Double_t p1y = (*extTrackTds)->tof1Position(iPart).y();
269 Double_t p1z = (*extTrackTds)->tof1Position(iPart).z();
270 Double_t m1x = (*extTrackTds)->tof1Momentum(iPart).x();
271 Double_t m1y = (*extTrackTds)->tof1Momentum(iPart).y();
272 Double_t m1z = (*extTrackTds)->tof1Momentum(iPart).z();
273
274 TString v1s = (*extTrackTds)->tof1VolumeName(iPart) ;
275 Int_t v1n = (*extTrackTds)->tof1VolumeNumber(iPart) ;
276 Double_t tof1= (*extTrackTds)->tof1(iPart);
277 Double_t tof1p = (*extTrackTds)->tof1Path(iPart);
278 Double_t z1 = (*extTrackTds)->tof1PosSigmaAlongZ(iPart);
279 Double_t t1 = (*extTrackTds)->tof1PosSigmaAlongT(iPart);
280 Double_t x1 = (*extTrackTds)->tof1PosSigmaAlongX(iPart);
281 Double_t y1 = (*extTrackTds)->tof1PosSigmaAlongY(iPart);
282 Double_t e1m[6][6];
283 HepSymMatrix e1mTds = (*extTrackTds)->tof1ErrorMatrix(iPart);
284 for (int i = 0;i<6 ;i++ )
285 for (int j= 0;j<6 ;j++ )
286 e1m[i][j] = e1mTds[i][j];
287
288 //Tof llayer2
289 Double_t p2x = (*extTrackTds)->tof2Position(iPart).x();
290 Double_t p2y = (*extTrackTds)->tof2Position(iPart).y();
291 Double_t p2z = (*extTrackTds)->tof2Position(iPart).z();
292 Double_t m2x = (*extTrackTds)->tof2Momentum(iPart).x();
293 Double_t m2y = (*extTrackTds)->tof2Momentum(iPart).y();
294 Double_t m2z = (*extTrackTds)->tof2Momentum(iPart).z();
295
296 TString v2s = (*extTrackTds)->tof2VolumeName(iPart) ;
297 Int_t v2n = (*extTrackTds)->tof2VolumeNumber(iPart) ;
298 Double_t tof2= (*extTrackTds)->tof2(iPart);
299 Double_t tof2p = (*extTrackTds)->tof2Path(iPart);
300 Double_t z2 = (*extTrackTds)->tof2PosSigmaAlongZ(iPart);
301 Double_t t2 = (*extTrackTds)->tof2PosSigmaAlongT(iPart);
302 Double_t x2 = (*extTrackTds)->tof2PosSigmaAlongX(iPart);
303 Double_t y2 = (*extTrackTds)->tof2PosSigmaAlongY(iPart);
304 Double_t e2m[6][6];
305 HepSymMatrix e2mTds = (*extTrackTds)->tof2ErrorMatrix(iPart);
306 for (int i = 0;i<6 ;i++ )
307 for (int j= 0;j<6 ;j++ )
308 e2m[i][j] = e2mTds[i][j];
309 //Emc
310 Double_t pEx = (*extTrackTds)->emcPosition(iPart).x();
311 Double_t pEy = (*extTrackTds)->emcPosition(iPart).y();
312 Double_t pEz = (*extTrackTds)->emcPosition(iPart).z();
313 Double_t mEx = (*extTrackTds)->emcMomentum(iPart).x();
314 Double_t mEy = (*extTrackTds)->emcMomentum(iPart).y();
315 Double_t mEz = (*extTrackTds)->emcMomentum(iPart).z();
316
317 TString vEs = (*extTrackTds)->emcVolumeName(iPart) ;
318 Int_t vEn = (*extTrackTds)->emcVolumeNumber(iPart) ;
319
320 Double_t theta = (*extTrackTds)->emcPosSigmaAlongTheta(iPart);
321 Double_t phi = (*extTrackTds)->emcPosSigmaAlongPhi(iPart);
322
323 Double_t eEm[6][6];
324 HepSymMatrix eEmTds = (*extTrackTds)->emcErrorMatrix(iPart);
325 for (int i = 0;i<6 ;i++ )
326 for (int j= 0;j<6 ;j++ )
327 eEm[i][j] = eEmTds[i][j];
328 Double_t emcPath=(*extTrackTds)->emcPath(iPart);
329
330 //Muc
331 Double_t pMx = (*extTrackTds)->mucPosition(iPart).x();
332 Double_t pMy = (*extTrackTds)->mucPosition(iPart).y();
333 Double_t pMz = (*extTrackTds)->mucPosition(iPart).z();
334 Double_t mMx = (*extTrackTds)->mucMomentum(iPart).x();
335 Double_t mMy = (*extTrackTds)->mucMomentum(iPart).y();
336 Double_t mMz = (*extTrackTds)->mucMomentum(iPart).z();
337
338 TString vMs = (*extTrackTds)->mucVolumeName(iPart) ;
339 Int_t vMn = (*extTrackTds)->mucVolumeNumber(iPart) ;
340
341 Double_t zM = (*extTrackTds)->mucPosSigmaAlongZ(iPart);
342 Double_t tM = (*extTrackTds)->mucPosSigmaAlongT(iPart);
343 Double_t xM = (*extTrackTds)->mucPosSigmaAlongX(iPart);
344 Double_t yM = (*extTrackTds)->mucPosSigmaAlongY(iPart);
345
346 Double_t eMm[6][6];
347 HepSymMatrix eMmTds = (*extTrackTds)->mucErrorMatrix(iPart);
348 for (int i = 0;i<6 ;i++ )
349 for (int j= 0;j<6 ;j++ )
350 eMm[i][j]= eMmTds[i][j];
351
352 //ExtMucHitVec
353 ExtMucHitVec vecHit = (*extTrackTds)->GetExtMucHitVec(iPart);
354 Int_t size = vecHit.size();
355
356 //m_common.m_extTrackMap[(*extTrackTds)] = extTrackRoot;
357
358 //Set to Root
359
360 //ExtMucHitVec
361 extTrackRoot->SetSize(size,iPart);
362 for(int i=0;i<size;i++){
363 Double_t px = vecHit[i].GetPosition().x();
364 Double_t py = vecHit[i].GetPosition().y();
365 Double_t pz = vecHit[i].GetPosition().z();
366 Double_t mx = vecHit[i].GetMomentum().x();
367 Double_t my = vecHit[i].GetMomentum().y();
368 Double_t mz = vecHit[i].GetMomentum().z();
369 TString vs = vecHit[i].GetVolumeName();
370 Int_t vn = vecHit[i].GetVolumeNumber();
371 Double_t z = vecHit[i].GetPosSigmaAlongZ();
372 Double_t t = vecHit[i].GetPosSigmaAlongT();
373 Double_t x = vecHit[i].GetPosSigmaAlongX();
374 Double_t y = vecHit[i].GetPosSigmaAlongY();
375 Double_t m[6][6];
376 HepSymMatrix mTds = vecHit[i].GetErrorMatrix();
377 for (int j = 0;j<6;j++)
378 for(int k=0;k<6;k++)
379 m[j][k] = mTds[j][k];
380
381 extTrackRoot->SetExtMucHit(px,py,pz,mx,my,mz,vs,vn,z,t,x,y,m,iPart);
382 }
383
384 //Tof layer1
385 extTrackRoot->SetTof1PositionX(p1x,iPart);
386 extTrackRoot->SetTof1PositionY(p1y,iPart);
387 extTrackRoot->SetTof1PositionZ(p1z,iPart);
388 extTrackRoot->SetTof1MomentumX(m1x,iPart);
389 extTrackRoot->SetTof1MomentumY(m1y,iPart);
390 extTrackRoot->SetTof1MomentumZ(m1z,iPart);
391
392 extTrackRoot->SetTof1VolumeName(v1s,iPart);
393 extTrackRoot->SetTof1VolumeNumber(v1n,iPart);
394
395 extTrackRoot->SetTof1(tof1,iPart);
396 extTrackRoot->SetTof1Path(tof1p,iPart);
397
398 extTrackRoot->SetTof1PosSigmaAlongZ(z1,iPart);
399 extTrackRoot->SetTof1PosSigmaAlongT(t1,iPart);
400 extTrackRoot->SetTof1PosSigmaAlongX(x1,iPart);
401 extTrackRoot->SetTof1PosSigmaAlongY(y1,iPart);
402
403 extTrackRoot->SetTof1ErrorMatrix(e1m,iPart);
404 //Tof layer2
405 extTrackRoot->SetTof2PositionX(p2x,iPart);
406 extTrackRoot->SetTof2PositionY(p2y,iPart);
407 extTrackRoot->SetTof2PositionZ(p2z,iPart);
408 extTrackRoot->SetTof2MomentumX(m2x,iPart);
409 extTrackRoot->SetTof2MomentumY(m2y,iPart);
410 extTrackRoot->SetTof2MomentumZ(m2z,iPart);
411
412 extTrackRoot->SetTof2VolumeName(v2s,iPart);
413 extTrackRoot->SetTof2VolumeNumber(v2n,iPart);
414
415 extTrackRoot->SetTof2(tof2,iPart);
416 extTrackRoot->SetTof2Path(tof2p,iPart);
417
418 extTrackRoot->SetTof2PosSigmaAlongZ(z2,iPart);
419 extTrackRoot->SetTof2PosSigmaAlongT(t2,iPart);
420 extTrackRoot->SetTof2PosSigmaAlongX(x2,iPart);
421 extTrackRoot->SetTof2PosSigmaAlongY(y2,iPart);
422
423 extTrackRoot->SetTof2ErrorMatrix(e2m,iPart);
424 //Emc
425 extTrackRoot->SetEmcPositionX(pEx,iPart);
426 extTrackRoot->SetEmcPositionY(pEy,iPart);
427 extTrackRoot->SetEmcPositionZ(pEz,iPart);
428 extTrackRoot->SetEmcMomentumX(mEx,iPart);
429 extTrackRoot->SetEmcMomentumY(mEy,iPart);
430 extTrackRoot->SetEmcMomentumZ(mEz,iPart);
431
432 extTrackRoot->SetEmcVolumeName(vEs,iPart);
433 extTrackRoot->SetEmcVolumeNumber(vEn,iPart);
434
435 extTrackRoot->SetEmcPosSigmaAlongTheta(theta,iPart);
436 extTrackRoot->SetEmcPosSigmaAlongPhi(phi,iPart);
437
438 extTrackRoot->SetEmcErrorMatrix(eEm,iPart);
439 extTrackRoot->SetEmcPath(emcPath,iPart);
440 //Muc
441 extTrackRoot->SetMucPositionX(pMx,iPart);
442 extTrackRoot->SetMucPositionY(pMy,iPart);
443 extTrackRoot->SetMucPositionZ(pMz,iPart);
444 extTrackRoot->SetMucMomentumX(mMx,iPart);
445 extTrackRoot->SetMucMomentumY(mMy,iPart);
446 extTrackRoot->SetMucMomentumZ(mMz,iPart);
447
448 extTrackRoot->SetMucVolumeName(vMs,iPart);
449 extTrackRoot->SetMucVolumeNumber(vMn,iPart);
450
451 extTrackRoot->SetMucPosSigmaAlongZ(zM,iPart);
452 extTrackRoot->SetMucPosSigmaAlongT(tM,iPart);
453 extTrackRoot->SetMucPosSigmaAlongX(xM,iPart);
454 extTrackRoot->SetMucPosSigmaAlongY(yM,iPart);
455
456 extTrackRoot->SetMucErrorMatrix(eMm,iPart);
457
458 }
459 recEvt->addExtTrack(extTrackRoot);
460 }
461
462 return StatusCode::SUCCESS;
463}
464#endif
Double_t x[10]
ObjectVector< RecExtTrack > RecExtTrackCol
void SetTof1Data(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aTof, double aPath, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
void SetEmcData(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aThetaSigma, double aPhiSigma, HepSymMatrix aErrorMatrix)
void SetTof2Data(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aTof, double aPath, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
void SetMucData(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
void SetExtMucHit(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
Definition: ExtMucHit.cxx:26
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
RecExtTrackCnv(ISvcLocator *svc)
static TRecTrackEvent * getWriteObject()
returns object to be written (maintained here for all DIGI-converters)
Definition of a Root address, derived from IOpaqueAddress.
IDataProviderSvc * m_eds
pointer to eventdataservice
std::vector< void * > m_adresses
each converter knows the corresponding adresses
std::string m_rootBranchname
root branchname (may be concatenated of severals)
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)
Convert the transient object to the requested representation.
void SetTof2VolumeName(const TString Tof2VolumeName, const Int_t i=2)
void SetTof1VolumeNumber(const Int_t Tof1VolumeNumber, const Int_t i=2)
void SetTof2PosSigmaAlongZ(const Double_t Tof2PosSigmaAlongZ, const Int_t i=2)
void SetTof1MomentumZ(const Double_t Tof1MomentumZ, const Int_t i=2)
void SetExtMucHit(Double_t PositionX, Double_t PositionY, Double_t PositionZ, Double_t MomentumX, Double_t MomentumY, Double_t MomentumZ, TString VolumeName, Int_t VolumeNumber, Double_t PosSigmaAlongZ, Double_t PosSigmaAlongT, Double_t PosSigmaAlongX, Double_t PosSigmaAlongY, Double_t ErrorMatrix[6][6], const Int_t k=2)
void SetEmcVolumeNumber(const Int_t EmcVolumeNumber, const Int_t i=2)
void SetTof1Path(const Double_t Tof1Path, const Int_t i=2)
void SetTof2PosSigmaAlongX(const Double_t Tof2PosSigmaAlongX, const Int_t i=2)
void SetTof1PosSigmaAlongY(const Double_t Tof1PosSigmaAlongY, const Int_t i=2)
void SetEmcMomentumX(const Double_t EmcMomentumX, const Int_t i=2)
void SetTof2MomentumY(const Double_t Tof2MomentumY, const Int_t i=2)
void SetMucPositionZ(const Double_t MucPositionZ, const Int_t i=2)
void SetTof2MomentumX(const Double_t Tof2MomentumX, const Int_t i=2)
void SetMucPositionX(const Double_t MucPositionX, const Int_t i=2)
void SetMucPosSigmaAlongX(const Double_t MucPosSigmaAlongX, const Int_t i=2)
void SetMucVolumeName(const TString MucVolumeName, const Int_t i=2)
void SetTof2PosSigmaAlongY(const Double_t Tof2PosSigmaAlongY, const Int_t i=2)
void SetTof1MomentumX(const Double_t Tof1MomentumX, const Int_t i=2)
void SetTof1PositionZ(const Double_t Tof1PositionZ, const Int_t i=2)
vector< Double_t > GetErrorMatrix(Int_t i, const Int_t k=2) const
void SetMucPosSigmaAlongY(const Double_t MucPosSigmaAlongY, const Int_t i=2)
void SetEmcMomentumY(const Double_t EmcMomentumY, const Int_t i=2)
void SetTof2ErrorMatrix(const Double_t Tof2ErrorMatrix[6][6], const Int_t k=2)
void SetTof2Path(const Double_t Tof2Path, const Int_t i=2)
Double_t GetTof1ErrorMatrix(Int_t i, Int_t j, const Int_t k=2) const
void SetMucMomentumY(const Double_t MucMomentumY, const Int_t i=2)
void SetMucPosSigmaAlongT(const Double_t MucPosSigmaAlongT, const Int_t i=2)
void SetMucMomentumZ(const Double_t MucMomentumZ, const Int_t i=2)
void SetEmcErrorMatrix(const Double_t EmcErrorMatrix[6][6], const Int_t k=2)
void SetEmcMomentumZ(const Double_t EmcMomentumZ, const Int_t i=2)
void SetTof1ErrorMatrix(const Double_t Tof1ErrorMatrix[6][6], const Int_t k=2)
void SetTof1PosSigmaAlongX(const Double_t Tof1PosSigmaAlongX, const Int_t i=2)
void SetEmcPosSigmaAlongTheta(const Double_t EmcPosSigmaAlongTheta, const Int_t i=2)
Double_t GetEmcErrorMatrix(Int_t i, Int_t j, const Int_t k=2) const
void SetTof2PosSigmaAlongT(const Double_t Tof2PosSigmaAlongT, const Int_t i=2)
void SetTof1PosSigmaAlongT(const Double_t Tof1PosSigmaAlongT, const Int_t i=2)
void SetTof1MomentumY(const Double_t Tof1MomentumY, const Int_t i=2)
void SetEmcPositionX(const Double_t EmcPositionX, const Int_t i=2)
void SetEmcPositionZ(const Double_t EmcPositionZ, const Int_t i=2)
void SetMucPositionY(const Double_t MucPositionY, const Int_t i=2)
Double_t GetTof2ErrorMatrix(Int_t i, Int_t j, const Int_t k=2) const
void SetTof2MomentumZ(const Double_t Tof2MomentumZ, const Int_t i=2)
void SetMucErrorMatrix(const Double_t MucErrorMatrix[6][6], const Int_t k=2)
void SetEmcVolumeName(const TString EmcVolumeName, const Int_t i=2)
void SetTof2PositionY(const Double_t Tof2PositionY, const Int_t i=2)
void SetTof1PosSigmaAlongZ(const Double_t Tof1PosSigmaAlongZ, const Int_t i=2)
void SetMucPosSigmaAlongZ(const Double_t MucPosSigmaAlongZ, const Int_t i=2)
void SetTof1VolumeName(const TString Tof1VolumeName, const Int_t i=2)
void SetMucMomentumX(const Double_t MucMomentumX, const Int_t i=2)
Double_t GetMucErrorMatrix(Int_t i, Int_t j, const Int_t k=2) const
void SetTof1PositionX(const Double_t Tof1PositionX, const Int_t i=2)
void SetTof2PositionZ(const Double_t Tof2PositionZ, const Int_t i=2)
void SetEmcPosSigmaAlongPhi(const Double_t EmcPosSigmaAlongPhi, const Int_t i=2)
void SetTof2PositionX(const Double_t Tof2PositionX, const Int_t i=2)
void SetEmcPositionY(const Double_t EmcPositionY, const Int_t i=2)
void SetTof2VolumeNumber(const Int_t Tof2VolumeNumber, const Int_t i=2)
void SetMucVolumeNumber(const Int_t MucVolumeNumber, const Int_t i=2)
void SetTof1PositionY(const Double_t Tof1PositionY, const Int_t i=2)
void addExtTrack(TRecExtTrack *Track)
Add a ExtTrack into the Ext Data collection.
static std::map< const TObject *, const DstExtTrack * > m_rootExtTrackMap
int t()
Definition: t.c:1