#include <RecMdcKalTrackCnv.h>
Inheritance diagram for RecMdcKalTrackCnv:
Public Types | |
typedef Ty2 | destination |
typedef Ty2 | destination |
typedef Ty1 | source |
typedef Ty1 | source |
Public Member Functions | |
virtual StatusCode | createObj (IOpaqueAddress *addr, DataObject *&dat) |
Convert the persistent object to transient. | |
virtual StatusCode | createObj (IOpaqueAddress *addr, DataObject *&dat) |
Convert the persistent object to transient. | |
virtual StatusCode | createRep (DataObject *pObject, IOpaqueAddress *&refpAddress) |
Convert the transient object to the requested representation. | |
virtual StatusCode | createRep (DataObject *pObject, IOpaqueAddress *&refpAddress) |
Convert the transient object to the requested representation. | |
void | declareObject (const std::string &fullPath, const CLID &clid, const std::string &treename, const std::string &branchname) |
Store TDS path to link a particular converter to an object on the TDS. | |
void | declareObject (const std::string &fullPath, const CLID &clid, const std::string &treename, const std::string &branchname) |
Store TDS path to link a particular converter to an object on the TDS. | |
virtual StatusCode | fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) |
Resolve the references of the converted object. | |
virtual StatusCode | fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) |
Resolve the references of the converted object. | |
virtual StatusCode | fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) |
Resolve the references of the converted object. | |
virtual StatusCode | fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) |
Resolve the references of the converted object. | |
virtual StatusCode | finalize () |
virtual StatusCode | finalize () |
TObject * | getReadObject () const |
get the object to be read | |
TObject * | getReadObject () const |
get the object to be read | |
virtual StatusCode | initialize () |
virtual StatusCode | initialize () |
destination * | operator (const source &) const |
destination * | operator (const source &) const |
virtual long | repSvcType () const |
virtual long | repSvcType () const |
virtual | ~RecMdcKalTrackCnv () |
virtual | ~RecMdcKalTrackCnv () |
Static Public Member Functions | |
const CLID & | classID () |
const CLID & | classID () |
const unsigned char | storageType () |
Storage type and class ID. | |
const unsigned char | storageType () |
Storage type and class ID. | |
Protected Member Functions | |
virtual destination * | convert (const source &) const =0 |
virtual destination * | convert (const source &) const =0 |
virtual StatusCode | DataObjectToTObject (DataObject *obj, RootAddress *addr) |
transformation to root | |
virtual StatusCode | DataObjectToTObject (DataObject *obj, RootAddress *addr) |
transformation to root | |
RecMdcKalTrackCnv (ISvcLocator *svc) | |
RecMdcKalTrackCnv (ISvcLocator *svc) | |
virtual StatusCode | TObjectToDataObject (DataObject *&obj) |
transformation from root | |
virtual StatusCode | TObjectToDataObject (DataObject *&obj) |
transformation from root | |
Protected Attributes | |
CLID | CLID_top |
the CLID of the upper converter if any | |
std::vector< void * > | m_adresses |
each converter knows the corresponding adresses | |
std::vector< void * > | m_adresses |
each converter knows the corresponding adresses | |
int | m_branchNr |
the branchNr of this converter for writing | |
int | m_branchNrDst |
int | m_branchNrEvtHeader |
int | m_branchNrEvtRec |
int | m_branchNrMc |
int | m_branchNrRecon |
TArrayS * | m_branchNumbers |
array with number of branches for reading | |
TArrayS * | m_branchNumbers |
array with number of branches for reading | |
RootCnvSvc * | m_cnvSvc |
RootCnvSvc * | m_cnvSvc |
std::string | m_currentFileName |
IDataProviderSvc * | m_eds |
pointer to eventdataservice | |
IDataProviderSvc * | m_eds |
pointer to eventdataservice | |
RootEvtSelector * | m_evtsel |
RootEvtSelector * | m_evtsel |
std::vector< RootCnvSvc::Leaf > | m_leaves |
std::vector< RootCnvSvc::Leaf > | m_leaves |
TObject * | m_objRead |
the object that was read | |
TObject * | m_objRead |
the object that was read | |
std::string | m_rootBranchname |
root branchname (may be concatenated of severals) | |
RootInterface * | m_rootInterface |
pointer to the RootInterface | |
RootInterface * | m_rootInterface |
pointer to the RootInterface | |
std::string | m_rootTreename |
each converter knows it's treename | |
Private Attributes | |
commonData | m_common |
relational maps | |
TObjArray * | m_recMdcKalTrackCol |
root object to be read | |
TObjArray * | m_recMdcKalTrackCol |
root object to be read | |
Friends | |
class | CnvFactory<RecMdcKalTrackCnv> |
|
|
|
|
|
|
|
|
|
00025 { };
|
|
00034 : RootEventBaseCnv(classID(), svc) 00035 { 00036 00037 // Here we associate this converter with the /Event path on the TDS. 00038 MsgStream log(msgSvc(), "RecMdcKalTrackCnv"); 00039 //log << MSG::DEBUG << "Constructor called for " << objType() << endreq; 00040 //m_rootTreename ="Rec"; 00041 m_rootBranchname ="m_recMdcKalTrackCol"; 00042 // declareObject(EventModel::Recon::MdcKalTrackCol, objType(), m_rootTreename, m_rootBranchname); 00043 m_adresses.push_back(&m_recMdcKalTrackCol); 00044 m_recMdcKalTrackCol = 0; 00045 }
|
|
00025 { };
|
|
|
|
00021 {
00022 return CLID_RecMdcKalTrackCol;
00023 }
|
|
00021 {
00022 return CLID_RecMdcKalTrackCol;
00023 }
|
|
|
|
|
|
Convert the persistent object to transient.
|
|
Convert the persistent object to transient.
Reimplemented in EventCnv, and EventCnv. 00157 { 00158 // transform ROOT object to TDS object 00159 MsgStream log(msgSvc(), "RootEventBaseCnv"); 00160 log << MSG::DEBUG << "RootEventBaseCnv::createObj with clid " <<addr->clID()<< endreq; 00161 StatusCode sc; 00162 00163 // add 2005-11-29 00164 // log<<MSG::INFO<<"######### RootEventBaseCnv ::createObj begin of createObj: m_branchNumbers "<<m_branchNumbers->GetSize()<<"###############"<<endreq; 00165 00166 RootAddress *raddr=dynamic_cast<RootAddress *>(addr); 00167 if (!raddr) { 00168 log << MSG::ERROR << "Could not downcast to Root address" << endreq; 00169 return StatusCode::FAILURE; 00170 } 00171 00172 static int temp =0; //control the begin of each files 2005-12-01 00173 static int entryN =0; //control the event number of each files 2005-21-01 00174 static int brN =0; //control munber of branch of the tree; 00175 int lastBrn = brN; 00176 //lastBrn = brN; 00177 static int branchN=0; 00178 static bool isSet=true; 00179 00180 static int entryBefore = 0; 00181 static bool addEntryEachFile = true; 00182 00183 00184 if(m_rootInterface->getENDFILE() || (temp >0 && temp < branchN)){ // if the file has get the end:y the go to next file to create a new tree 00185 00186 if(m_rootInterface->getENDFILE() ) { 00187 entryN = 0; 00188 } 00189 00190 temp++; 00191 00192 delete m_branchNumbers; 00193 m_branchNumbers = new TArrayS(0); 00194 00195 if(temp == branchN) { 00196 temp =0; 00197 } 00198 } 00199 00200 if(m_rootInterface->getENDFILE()) addEntryEachFile = true; 00201 // the 2nd method 00202 if(m_evtsel->getRecId() - entryBefore == 0) { // first event in this file 00203 delete m_branchNumbers; 00204 m_branchNumbers = new TArrayS(0); 00205 } 00206 00207 //new method to initialize the branchNumber 00208 if(m_currentFileName=="") m_currentFileName = m_rootInterface->getCurrentFileName(); 00209 if(!(m_currentFileName == m_rootInterface->getCurrentFileName())){ 00210 m_currentFileName = m_rootInterface->getCurrentFileName(); 00211 delete m_branchNumbers; 00212 m_branchNumbers = new TArrayS(0); 00213 } 00214 //---------------------------------------- 00215 00216 00217 if (m_branchNumbers->GetSize()<=0) { 00218 if(isSet) brN++; 00219 int branchNumber; 00220 for (int nb=0;nb<raddr->getNrBranches();nb++) { 00221 sc=m_rootInterface->setBranchAddress(raddr->getTreename().c_str(),raddr->getBranchname(nb).c_str(),m_adresses[nb],branchNumber); 00222 if (!sc.isSuccess()) 00223 { 00224 if(isSet) brN--; //liangyt: if fail to retrieve this branch, this will be not a effective branch. 00225 //entryN++; //liangyt: this is the second method 00226 if(temp>0) temp--; //temp > 0 means recording effective branch number. 00227 return sc; 00228 } 00229 m_branchNumbers->Set(nb+1); 00230 m_branchNumbers->AddAt(branchNumber,nb); 00231 00232 } 00233 } 00234 00236 if(addEntryEachFile&&(m_evtsel->getRecId()>entryBefore)){ // for a new file, add entry for ONLY one time. 00237 entryBefore += m_rootInterface->getEntries(); 00238 addEntryEachFile = false; 00239 } 00240 00241 if(lastBrn == brN && isSet ){ 00242 branchN = brN; 00243 isSet=false; 00244 } 00245 00246 if(isSet==false) log << MSG::INFO <<" 1st method set event as : "<<int(entryN/branchN)<<endreq; 00247 if(isSet==false) raddr->setEntryNr(int(entryN/branchN));//former method, keep it to be backup. 00248 if(m_evtsel) log << MSG::INFO <<" event id = "<<m_evtsel->getRecId()<<endreq; 00249 00250 int eventID = 0; 00251 if(entryBefore > m_evtsel->getRecId()) 00252 eventID = m_evtsel->getRecId() + m_rootInterface->getEntries() - entryBefore; 00253 else if(entryBefore == m_evtsel->getRecId()) eventID = 0; 00254 else log << MSG::ERROR <<"eventId error!!!"<<endreq; 00255 00256 log << MSG::INFO <<" 2nd method set event as : "<<eventID<<endreq; 00257 if(m_evtsel) raddr->setEntryNr(eventID); 00258 // read branch 00259 00260 if (m_branchNumbers->GetSize()>0) { 00261 int nbtot=0,nb; 00262 for (int ib=0;ib<m_branchNumbers->GetSize();ib++) { 00263 //sc=m_rootInterface->getBranchEntry(m_branchNumbers->At(ib),raddr->getEntryNr(),nb); 00264 //change to get branch entry with addr(set address for each entry) liangyt 00265 sc=m_rootInterface->getBranchEntry(m_branchNumbers->At(ib),raddr->getEntryNr(),m_adresses[ib],nb); 00266 if (sc.isFailure()) { 00267 log << MSG::ERROR << "Could not read branch " << raddr->getBranchname(nb) << endreq; 00268 return sc; 00269 } 00270 nbtot+=nb; 00271 } 00272 } 00273 00274 else { // get ROOT object 00275 if (CLID_top) { 00276 IConverter *p=conversionSvc()->converter(CLID_top); 00277 RootEventBaseCnv *cnv=dynamic_cast<RootEventBaseCnv *>(p); 00278 if (!cnv) { 00279 log << MSG::ERROR << "Could not downcast to RootEventBaseCnv " << endreq; 00280 return StatusCode::FAILURE; 00281 } 00282 m_objRead=cnv->getReadObject(); 00283 } 00284 } 00285 00286 //do concrete transformation in derived converter 00287 sc = TObjectToDataObject(refpObject); 00288 if (sc.isFailure()) { 00289 log << MSG::ERROR << "Could not transform object" << endreq; 00290 return sc; 00291 } 00292 00293 // verify if we have to register 00294 IRegistry* ent = addr->registry(); 00295 if ( ent == 0) { 00296 sc=m_eds->registerObject(raddr->getPath(),refpObject); 00297 if (sc.isFailure()) { 00298 log << MSG::ERROR << "Could not register object " << raddr->getPath()<<" status "<<sc.getCode()<<endreq; 00299 } 00300 // } 00301 } 00302 00303 entryN++; 00304 return StatusCode::SUCCESS; 00305 }
|
|
Convert the transient object to the requested representation.
|
|
Convert the transient object to the requested representation.
00078 { 00079 // Purpose and Method: Convert the transient object to ROOT 00080 00081 MsgStream log(msgSvc(), "RootEventBaseCnv"); 00082 00083 StatusCode sc= StatusCode::SUCCESS; 00084 // get the corresponding address 00085 RootAddress *rootaddr; 00086 sc=m_cnvSvc->createAddress(obj,addr); 00087 00088 rootaddr = dynamic_cast<RootAddress *>(addr); 00089 00090 if (sc.isFailure() || !rootaddr ) { 00091 log << MSG::ERROR << "Could not create address for clid " <<obj->clID()<<", objname "<<obj->name()<<endreq; 00092 return StatusCode::FAILURE; 00093 } 00094 00095 // do the real conversion in the derived converter 00096 sc = DataObjectToTObject(obj,rootaddr); 00097 00098 delete addr; 00099 addr = NULL; 00100 00101 if (sc.isFailure()) { 00102 log << MSG::ERROR << "Could not transform object" << endreq; 00103 return sc; 00104 } 00105 00106 return StatusCode::SUCCESS; 00107 }
|
|
transformation to root
Implements RootEventBaseCnv. |
|
transformation to root
Implements RootEventBaseCnv. 00456 { 00457 00458 00459 00460 MsgStream log(msgSvc(), "RecMdcKalTrackCnv"); 00461 log << MSG::DEBUG << "RecMdcKalTrackCnv::DataObjectToTObject" << endreq; 00462 StatusCode sc=StatusCode::SUCCESS; 00463 00464 RecMdcKalTrackCol * mdcKalTrackColTds=dynamic_cast<RecMdcKalTrackCol *> (obj); 00465 if (!mdcKalTrackColTds) { 00466 log << MSG::ERROR << "Could not downcast to RecMdcKalTrackCol" << endreq; 00467 return StatusCode::FAILURE; 00468 } 00469 00470 DataObject *evt; 00471 m_eds->findObject(EventModel::Recon::Event,evt); 00472 if (evt==NULL) { 00473 log << MSG::ERROR << "Could not get ReconEvent in TDS " << endreq; 00474 return StatusCode::FAILURE; 00475 } 00476 00477 ReconEvent * devtTds=dynamic_cast<ReconEvent *> (evt); 00478 if (!devtTds) { 00479 log << MSG::ERROR << "MdcKalTrackCnv:Could not downcast to TDS Recon Event" << endreq; 00480 } 00481 IOpaqueAddress *addr; 00482 00483 m_cnvSvc->getRecTrackCnv()->createRep(evt,addr); 00484 TRecTrackEvent *recEvt=m_cnvSvc->getRecTrackCnv()->getWriteObject(); 00485 00486 const TObjArray *m_recMdcKalTrackCol = recEvt->getRecMdcKalTrackCol(); 00487 00488 if (!m_recMdcKalTrackCol) return sc; 00489 00490 recEvt->clearRecMdcKalTrackCol(); //necessary in case there is I/O at the same time since array is static 00491 RecMdcKalTrackCol::const_iterator mdcKalTrackTds; 00492 00493 for (mdcKalTrackTds = mdcKalTrackColTds->begin(); mdcKalTrackTds != mdcKalTrackColTds->end(); mdcKalTrackTds++) { 00494 00495 // Get Data from TDS 00496 // root data 00497 Int_t trackId; 00498 Double_t mass[5]; 00499 Double_t length[5]; 00500 Double_t tof[5]; 00501 Int_t nhits[5]; 00502 Int_t stat[2][5]; 00503 Double_t chisq[2][5]; 00504 Int_t ndf[2][5]; 00505 Double_t fiTerm[5]; 00506 Double_t pathSM[5]; 00507 00508 Double_t poca_e[3]; 00509 Double_t poca_mu[3]; 00510 Double_t poca[3]; 00511 Double_t poca_k[3]; 00512 Double_t poca_p[3]; 00513 00514 Double_t zhelix[5]; 00515 Double_t zerror[5][5]; 00516 Double_t zhelix_e[5]; 00517 Double_t zerror_e[5][5]; 00518 Double_t zhelix_mu[5]; 00519 Double_t zerror_mu[5][5]; 00520 Double_t zhelix_k[5]; 00521 Double_t zerror_k[5][5]; 00522 Double_t zhelix_p[5]; 00523 Double_t zerror_p[5][5]; 00524 00525 Double_t fhelix[5]; 00526 Double_t ferror[5][5]; 00527 Double_t fhelix_e[5]; 00528 Double_t ferror_e[5][5]; 00529 Double_t fhelix_mu[5]; 00530 Double_t ferror_mu[5][5]; 00531 Double_t fhelix_k[5]; 00532 Double_t ferror_k[5][5]; 00533 Double_t fhelix_p[5]; 00534 Double_t ferror_p[5][5]; 00535 00536 Double_t lhelix[5]; 00537 Double_t lerror[5][5]; 00538 Double_t lhelix_e[5]; 00539 Double_t lerror_e[5][5]; 00540 Double_t lhelix_mu[5]; 00541 Double_t lerror_mu[5][5]; 00542 Double_t lhelix_k[5]; 00543 Double_t lerror_k[5][5]; 00544 Double_t lhelix_p[5]; 00545 Double_t lerror_p[5][5]; 00546 00547 Double_t thelix[5]; 00548 Double_t terror[15]; 00549 00550 Double_t lpoint_e[3]; 00551 Double_t lpoint_mu[3]; 00552 Double_t lpoint[3]; 00553 Double_t lpoint_k[3]; 00554 Double_t lpoint_p[3]; 00555 00556 Double_t lpivot_e[3]; 00557 Double_t lpivot_mu[3]; 00558 Double_t lpivot[3]; 00559 Double_t lpivot_k[3]; 00560 Double_t lpivot_p[3]; 00561 00562 TRecMdcKalTrack *mdcKalTrackRoot = new TRecMdcKalTrack(); 00563 00564 trackId = (*mdcKalTrackTds)->getTrackId(); 00565 for (Int_t i = 0 ; i < 5 ; i++){ 00566 mass[i] = (*mdcKalTrackTds)->getMass(i); 00567 length[i] = (*mdcKalTrackTds)->getLength(i); 00568 tof[i] = (*mdcKalTrackTds)->getTof(i); 00569 nhits[i] = (*mdcKalTrackTds)->getNhits(i); 00570 fiTerm[i]=(*mdcKalTrackTds)->getFiTerm(i); 00571 pathSM[i]=(*mdcKalTrackTds)->getPathSM(i); 00572 //stat[i] = (*mdcKalTrackTds)->getStat(i); 00573 for (Int_t j = 0 ; j< 2 ; j++){ 00574 stat[j][i] = (*mdcKalTrackTds)->getStat(j,i); 00575 chisq[j][i] = (*mdcKalTrackTds)->getChisq(j,i); 00576 ndf[j][i] = (*mdcKalTrackTds)->getNdf(j,i); 00577 mdcKalTrackRoot->setStat(stat[j][i],j,i); 00578 mdcKalTrackRoot->setChisq(chisq[j][i],j,i); 00579 mdcKalTrackRoot->setNdf(ndf[j][i],j,i); 00580 } 00581 } 00582 for(Int_t i=0;i<5;i++){ 00583 log<<MSG::INFO<<" recMdcKalTrack.helix("<<i<<"): "<<(*mdcKalTrackTds)->getTHelix(i)<<endreq; 00584 thelix[i] = (*mdcKalTrackTds)->getTHelix(i); 00585 } 00586 for(Int_t i=0; i<15; i++){ 00587 terror[i] = (*mdcKalTrackTds)->getTError(i); 00588 } 00589 HepPoint3D h_poca_e = (*mdcKalTrackTds)->getPocaE(); 00590 HepPoint3D h_poca_mu = (*mdcKalTrackTds)->getPocaMu(); 00591 HepPoint3D h_poca = (*mdcKalTrackTds)->getPoca(); 00592 HepPoint3D h_poca_k = (*mdcKalTrackTds)->getPocaK(); 00593 HepPoint3D h_poca_p = (*mdcKalTrackTds)->getPocaP(); 00594 HepPoint3D h_lpoint_e = (*mdcKalTrackTds)->getLPointE(); 00595 HepPoint3D h_lpoint_mu = (*mdcKalTrackTds)->getLPointMu(); 00596 HepPoint3D h_lpoint = (*mdcKalTrackTds)->getLPoint(); 00597 HepPoint3D h_lpoint_k = (*mdcKalTrackTds)->getLPointK(); 00598 HepPoint3D h_lpoint_p = (*mdcKalTrackTds)->getLPointP(); 00599 HepPoint3D h_lpivot_e = (*mdcKalTrackTds)->getLPivotE(); 00600 HepPoint3D h_lpivot_mu = (*mdcKalTrackTds)->getLPivotMu(); 00601 HepPoint3D h_lpivot = (*mdcKalTrackTds)->getLPivot(); 00602 HepPoint3D h_lpivot_k = (*mdcKalTrackTds)->getLPivotK(); 00603 HepPoint3D h_lpivot_p = (*mdcKalTrackTds)->getLPivotP(); 00604 00605 //std::cout<<" h_poca_mu: "<<h_poca_mu<<std::endl; 00606 //std::cout<<" h_poca: "<<h_poca<<std::endl; 00607 //std::cout<<" h_poca_k: "<<h_poca_k<<std::endl; 00608 //std::cout<<" h_poca_p: "<<h_poca_p<<std::endl; 00609 00610 00611 HepVector h_zhelix = (*mdcKalTrackTds)->getZHelix(); 00612 HepSymMatrix h_zerror = (*mdcKalTrackTds)->getZError(); 00613 HepVector h_zhelix_e = (*mdcKalTrackTds)->getZHelixE(); 00614 HepSymMatrix h_zerror_e = (*mdcKalTrackTds)->getZErrorE(); 00615 HepVector h_zhelix_mu = (*mdcKalTrackTds)->getZHelixMu(); 00616 HepSymMatrix h_zerror_mu= (*mdcKalTrackTds)->getZErrorMu(); 00617 HepVector h_zhelix_k = (*mdcKalTrackTds)->getZHelixK(); 00618 HepSymMatrix h_zerror_k = (*mdcKalTrackTds)->getZErrorK(); 00619 HepVector h_zhelix_p = (*mdcKalTrackTds)->getZHelixP(); 00620 HepSymMatrix h_zerror_p = (*mdcKalTrackTds)->getZErrorP(); 00621 00622 HepVector h_fhelix = (*mdcKalTrackTds)->getFHelix(); 00623 HepSymMatrix h_ferror = (*mdcKalTrackTds)->getFError(); 00624 HepVector h_fhelix_e = (*mdcKalTrackTds)->getFHelixE(); 00625 HepSymMatrix h_ferror_e = (*mdcKalTrackTds)->getFErrorE(); 00626 HepVector h_fhelix_mu = (*mdcKalTrackTds)->getFHelixMu(); 00627 HepSymMatrix h_ferror_mu= (*mdcKalTrackTds)->getFErrorMu(); 00628 HepVector h_fhelix_k = (*mdcKalTrackTds)->getFHelixK(); 00629 HepSymMatrix h_ferror_k = (*mdcKalTrackTds)->getFErrorK(); 00630 HepVector h_fhelix_p = (*mdcKalTrackTds)->getFHelixP(); 00631 HepSymMatrix h_ferror_p = (*mdcKalTrackTds)->getFErrorP(); 00632 00633 HepVector h_lhelix = (*mdcKalTrackTds)->getLHelix(); 00634 HepSymMatrix h_lerror = (*mdcKalTrackTds)->getLError(); 00635 HepVector h_lhelix_e = (*mdcKalTrackTds)->getLHelixE(); 00636 HepSymMatrix h_lerror_e = (*mdcKalTrackTds)->getLErrorE(); 00637 HepVector h_lhelix_mu = (*mdcKalTrackTds)->getLHelixMu(); 00638 HepSymMatrix h_lerror_mu= (*mdcKalTrackTds)->getLErrorMu(); 00639 HepVector h_lhelix_k = (*mdcKalTrackTds)->getLHelixK(); 00640 HepSymMatrix h_lerror_k = (*mdcKalTrackTds)->getLErrorK(); 00641 HepVector h_lhelix_p = (*mdcKalTrackTds)->getLHelixP(); 00642 HepSymMatrix h_lerror_p = (*mdcKalTrackTds)->getLErrorP(); 00643 00644 mdcKalTrackRoot->setTrackId(trackId); 00645 mdcKalTrackRoot->setMass(mass); 00646 mdcKalTrackRoot->setLength(length); 00647 mdcKalTrackRoot->setTof(tof); 00648 mdcKalTrackRoot->setNhits(nhits); 00649 mdcKalTrackRoot->setFiTerm(fiTerm); 00650 mdcKalTrackRoot->setPathSM(pathSM); 00651 // mdcKalTrackRoot->setStat(stat); 00652 00653 for(int s=0; s<3; s++){ 00654 poca_e[s] = h_poca_e[s]; 00655 poca_mu[s] = h_poca_mu[s]; 00656 poca[s] = h_poca[s]; 00657 poca_k[s] = h_poca_k[s]; 00658 poca_p[s] = h_poca_p[s]; 00659 lpoint_e[s] = h_lpoint_e[s]; 00660 lpoint_mu[s] = h_lpoint_mu[s]; 00661 lpoint[s] = h_lpoint[s]; 00662 lpoint_k[s] = h_lpoint_k[s]; 00663 lpoint_p[s] = h_lpoint_p[s]; 00664 lpivot_e[s] = h_lpivot_e[s]; 00665 lpivot_mu[s] = h_lpivot_mu[s]; 00666 lpivot[s] = h_lpivot[s]; 00667 lpivot_k[s] = h_lpivot_k[s]; 00668 lpivot_p[s] = h_lpivot_p[s]; 00669 } 00670 00671 for (int i=0; i<5; i++){ 00672 zhelix[i] = h_zhelix[i]; 00673 zhelix_e[i] = h_zhelix_e[i]; 00674 zhelix_mu[i] = h_zhelix_mu[i]; 00675 zhelix_p[i] = h_zhelix_p[i]; 00676 zhelix_k[i] = h_zhelix_k[i]; 00677 00678 fhelix[i] = h_fhelix[i]; 00679 fhelix_e[i] = h_fhelix_e[i]; 00680 fhelix_mu[i] = h_fhelix_mu[i]; 00681 fhelix_p[i] = h_fhelix_p[i]; 00682 fhelix_k[i] = h_fhelix_k[i]; 00683 00684 lhelix[i] = h_lhelix[i]; 00685 lhelix_e[i] = h_lhelix_e[i]; 00686 lhelix_mu[i] = h_lhelix_mu[i]; 00687 lhelix_p[i] = h_lhelix_p[i]; 00688 lhelix_k[i] = h_lhelix_k[i]; 00689 00690 for (int j=0; j<=i; j++){ 00691 zerror[i][j] = h_zerror[i][j]; 00692 zerror_e[i][j] = h_zerror_e[i][j]; 00693 zerror_mu[i][j] = h_zerror_mu[i][j]; 00694 zerror_p[i][j] = h_zerror_p[i][j]; 00695 zerror_k[i][j] = h_zerror_k[i][j]; 00696 00697 00698 ferror[i][j] = h_ferror[i][j]; 00699 ferror_e[i][j] = h_ferror_e[i][j]; 00700 ferror_mu[i][j] = h_ferror_mu[i][j]; 00701 ferror_p[i][j] = h_ferror_p[i][j]; 00702 ferror_k[i][j] = h_ferror_k[i][j]; 00703 00704 00705 lerror[i][j] = h_lerror[i][j]; 00706 lerror_e[i][j] = h_lerror_e[i][j]; 00707 lerror_mu[i][j] = h_lerror_mu[i][j]; 00708 lerror_p[i][j] = h_lerror_p[i][j]; 00709 lerror_k[i][j] = h_lerror_k[i][j]; 00710 00711 zerror[j][i] = h_zerror[i][j]; 00712 zerror_e[j][i] = h_zerror_e[i][j]; 00713 zerror_mu[j][i] = h_zerror_mu[i][j]; 00714 zerror_p[j][i] = h_zerror_p[i][j]; 00715 zerror_k[j][i] = h_zerror_k[i][j]; 00716 00717 00718 ferror[j][i] = h_ferror[i][j]; 00719 ferror_e[j][i] = h_ferror_e[i][j]; 00720 ferror_mu[j][i] = h_ferror_mu[i][j]; 00721 ferror_p[j][i] = h_ferror_p[i][j]; 00722 ferror_k[j][i] = h_ferror_k[i][j]; 00723 00724 00725 lerror[j][i] = h_lerror[i][j]; 00726 lerror_e[j][i] = h_lerror_e[i][j]; 00727 lerror_mu[j][i] = h_lerror_mu[i][j]; 00728 lerror_p[j][i] = h_lerror_p[i][j]; 00729 lerror_k[j][i] = h_lerror_k[i][j]; 00730 00731 } 00732 } 00733 00734 mdcKalTrackRoot->setZHelix(zhelix); 00735 mdcKalTrackRoot->setZError(zerror); 00736 for(int k=0; k<5; k++){ 00737 log<<MSG::INFO<<" RecMdcKalTrackRoot.ZHelix "<<"["<<k<<"]" 00738 <<mdcKalTrackRoot->getZHelix(k)<<endreq; 00739 } 00740 mdcKalTrackRoot->setZHelixE(zhelix_e); 00741 mdcKalTrackRoot->setZErrorE(zerror_e); 00742 mdcKalTrackRoot->setZHelixMu(zhelix_mu); 00743 mdcKalTrackRoot->setZErrorMu(zerror_mu); 00744 mdcKalTrackRoot->setZHelixK(zhelix_k); 00745 mdcKalTrackRoot->setZErrorK(zerror_k); 00746 mdcKalTrackRoot->setZHelixP(zhelix_p); 00747 mdcKalTrackRoot->setZErrorP(zerror_p); 00748 mdcKalTrackRoot->setFHelix(fhelix); 00749 mdcKalTrackRoot->setFError(ferror); 00750 mdcKalTrackRoot->setFHelixE(fhelix_e); 00751 mdcKalTrackRoot->setFErrorE(ferror_e); 00752 mdcKalTrackRoot->setFHelixMu(fhelix_mu); 00753 mdcKalTrackRoot->setFErrorMu(ferror_mu); 00754 mdcKalTrackRoot->setFHelixK(fhelix_k); 00755 mdcKalTrackRoot->setFErrorK(ferror_k); 00756 mdcKalTrackRoot->setFHelixP(fhelix_p); 00757 mdcKalTrackRoot->setFErrorP(ferror_p); 00758 00759 mdcKalTrackRoot->setLHelix(lhelix); 00760 mdcKalTrackRoot->setLError(lerror); 00761 mdcKalTrackRoot->setLHelixE(lhelix_e); 00762 mdcKalTrackRoot->setLErrorE(lerror_e); 00763 mdcKalTrackRoot->setLHelixMu(lhelix_mu); 00764 mdcKalTrackRoot->setLErrorMu(lerror_mu); 00765 mdcKalTrackRoot->setLHelixK(lhelix_k); 00766 mdcKalTrackRoot->setLErrorK(lerror_k); 00767 mdcKalTrackRoot->setLHelixP(lhelix_p); 00768 mdcKalTrackRoot->setLErrorP(lerror_p); 00769 00770 mdcKalTrackRoot->setTHelix(thelix); 00771 mdcKalTrackRoot->setTError(terror); 00772 00773 mdcKalTrackRoot->setPocaE(poca_e); 00774 mdcKalTrackRoot->setPocaMu(poca_mu); 00775 mdcKalTrackRoot->setPoca(poca); 00776 mdcKalTrackRoot->setPocaK(poca_k); 00777 mdcKalTrackRoot->setPocaP(poca_p); 00778 00779 mdcKalTrackRoot->setLPointE(lpoint_e); 00780 mdcKalTrackRoot->setLPointMu(lpoint_mu); 00781 mdcKalTrackRoot->setLPoint(lpoint); 00782 mdcKalTrackRoot->setLPointK(lpoint_k); 00783 mdcKalTrackRoot->setLPointP(lpoint_p); 00784 00785 mdcKalTrackRoot->setLPivotE(lpivot_e); 00786 mdcKalTrackRoot->setLPivotMu(lpivot_mu); 00787 mdcKalTrackRoot->setLPivot(lpivot); 00788 mdcKalTrackRoot->setLPivotK(lpivot_k); 00789 mdcKalTrackRoot->setLPivotP(lpivot_p); 00790 //std::cout<<" mdcKalTrackRoot->getPivotE(1): "<<mdcKalTrackRoot->getLPivotE(1)<<std::endl; 00791 00792 recEvt->addRecMdcKalTrack(mdcKalTrackRoot); 00793 } 00794 00795 00796 return StatusCode::SUCCESS; 00797 }
|
|
Store TDS path to link a particular converter to an object on the TDS.
|
|
Store TDS path to link a particular converter to an object on the TDS.
00150 { 00151 // Purpose and Method: Save the path on the TDS, treename, pathname in the m_leaves vector, 00152 // corresponding to the DataObject that the converter handles. 00153 m_leaves.push_back(RootCnvSvc::Leaf(path, cl,treename,branchname)); 00154 }
|
|
Resolve the references of the converted object.
|
|
Resolve the references of the converted object.
00117 { 00118 // Purpose and Method: Resolve the references of the converted object. 00119 // It is expected that derived classes will override this method. 00120 MsgStream log(msgSvc(), "RootEventBaseCnv"); 00121 return StatusCode::SUCCESS; 00122 }
|
|
Resolve the references of the converted object.
|
|
Resolve the references of the converted object.
00109 { 00110 // Purpose and Method: Resolve the references of the converted object. 00111 // It is expected that derived classes will override this method. 00112 MsgStream log(msgSvc(), "RootEventBaseCnv"); 00113 return StatusCode::SUCCESS; 00114 }
|
|
|
|
00141 { 00142 if ( m_cnvSvc ) { 00143 m_cnvSvc->release(); 00144 m_cnvSvc=0; 00145 } 00146 return Converter::finalize(); 00147 }
|
|
get the object to be read
00124 { return m_objRead;}
|
|
get the object to be read
00124 { return m_objRead;}
|
|
Reimplemented in DigiCnv, DstCnv, EvtHeaderCnv, EvtRecCnv, HltCnv, McCnv, RecTrackCnv, TrigCnv, DigiCnv, DstCnv, EvtHeaderCnv, EvtRecCnv, HltCnv, McCnv, RecTrackCnv, and TrigCnv. |
|
Reimplemented in DigiCnv, DstCnv, EvtHeaderCnv, EvtRecCnv, HltCnv, McCnv, RecTrackCnv, TrigCnv, DigiCnv, DstCnv, EvtHeaderCnv, EvtRecCnv, HltCnv, McCnv, RecTrackCnv, and TrigCnv. 00125 { 00126 00127 StatusCode status = Converter::initialize(); 00128 00129 if ( status.isSuccess() ) { 00130 IService* isvc = 0; 00131 status = serviceLocator()->service("RootCnvSvc", isvc, false); 00132 if ( !status.isSuccess() ) status = serviceLocator()->service("EventCnvSvc", isvc, true); 00133 if ( status.isSuccess() ) { 00134 status = isvc->queryInterface(IID_IRootCnvSvc, (void**)&m_cnvSvc); 00135 } 00136 } 00137 00138 return status; 00139 }
|
|
|
|
|
|
00087 {
00088 return ROOT_StorageType;
00089 }
|
|
00087 {
00088 return ROOT_StorageType;
00089 }
|
|
Storage type and class ID.
00083 {
00084 return ROOT_StorageType;
00085 }
|
|
Storage type and class ID.
00083 {
00084 return ROOT_StorageType;
00085 }
|
|
transformation from root
Implements RootEventBaseCnv. |
|
transformation from root for zero point first hit point last hit point track finding helix for dE/dx usage the next three function need more consideration, temporarily Implements RootEventBaseCnv. 00047 { 00048 // creation of TDS object from root object 00049 MsgStream log(msgSvc(), "RecMdcKalTrackCnv"); 00050 log << MSG::DEBUG << "RecMdcKalTrackCnv::TObjectToDataObject" << endreq; 00051 StatusCode sc = StatusCode::SUCCESS; 00052 00053 // create the TDS location for the MdcKalTrack Collection 00054 RecMdcKalTrackCol* recMdcKalTrackCol = new RecMdcKalTrackCol; 00055 refpObject = recMdcKalTrackCol; 00056 00057 // now convert 00058 if (!m_recMdcKalTrackCol) return sc; 00059 TIter recMdcKalTrackIter(m_recMdcKalTrackCol); 00060 00061 IDataProviderSvc* dataSvc = 0; 00062 sc = serviceLocator()->getService ("EventDataSvc", 00063 IID_IDataProviderSvc, (IInterface*&)dataSvc); 00064 if (!sc.isSuccess()) { 00065 log << MSG::FATAL << "Could not get EventDataSvc in RecMdcTrackCnv" << endreq; 00066 return( StatusCode::FAILURE); 00067 } 00068 SmartDataPtr<RecMdcKalHelixSegCol> recMdcKalHelixSegCol(dataSvc,"/Event/Recon/RecMdcKalHelixSegCol"); 00069 if (!recMdcKalHelixSegCol) { 00070 log << MSG::FATAL << "Could not find RecMdcKalHelixSegCol" << endreq; 00071 return( StatusCode::FAILURE); 00072 } 00073 00074 TRecMdcKalTrack *recMdcKalTrackRoot = 0; 00075 while ((recMdcKalTrackRoot = (TRecMdcKalTrack*)recMdcKalTrackIter.Next())) { 00076 00077 std::vector<HepVector> zhelixs; 00078 std::vector<HepSymMatrix> zerrors; 00079 std::vector<HepVector> fhelixs; 00080 std::vector<HepSymMatrix> ferrors; 00081 std::vector<HepVector> lhelixs; 00082 std::vector<HepSymMatrix> lerrors; 00083 std::vector<HepPoint3D> pocas; 00084 std::vector<HepPoint3D> lpivots; 00085 std::vector<HepPoint3D> lpoints; 00086 00087 00088 HepVector zhelix(5); 00089 HepSymMatrix zerror(5); 00090 HepVector fhelix(5); 00091 HepSymMatrix ferror(5); 00092 HepVector lhelix(5); 00093 HepSymMatrix lerror(5); 00094 HepVector thelix(5); 00095 HepSymMatrix terror(5); 00096 HepPoint3D poca(0,0,0); 00097 HepPoint3D lpivot(0,0,0); 00098 HepPoint3D lpoint(0,0,0); 00099 00100 00101 HepVector zhelix_e(5); 00102 HepSymMatrix zerror_e(5); 00103 HepVector fhelix_e(5); 00104 HepSymMatrix ferror_e(5); 00105 HepVector lhelix_e(5); 00106 HepSymMatrix lerror_e(5); 00107 HepPoint3D poca_e(0,0,0); 00108 HepPoint3D lpivot_e(0,0,0); 00109 HepPoint3D lpoint_e(0,0,0); 00110 00111 00112 HepVector zhelix_mu(5); 00113 HepSymMatrix zerror_mu(5); 00114 HepVector fhelix_mu(5); 00115 HepSymMatrix ferror_mu(5); 00116 HepVector lhelix_mu(5); 00117 HepSymMatrix lerror_mu(5); 00118 HepPoint3D poca_mu(0,0,0); 00119 HepPoint3D lpivot_mu(0,0,0); 00120 HepPoint3D lpoint_mu(0,0,0); 00121 00122 00123 HepVector zhelix_k(5); 00124 HepSymMatrix zerror_k(5); 00125 HepVector fhelix_k(5); 00126 HepSymMatrix ferror_k(5); 00127 HepVector lhelix_k(5); 00128 HepSymMatrix lerror_k(5); 00129 HepPoint3D poca_k(0,0,0); 00130 HepPoint3D lpivot_k(0,0,0); 00131 HepPoint3D lpoint_k(0,0,0); 00132 00133 00134 HepVector zhelix_p(5); 00135 HepSymMatrix zerror_p(5); 00136 HepVector fhelix_p(5); 00137 HepSymMatrix ferror_p(5); 00138 HepVector lhelix_p(5); 00139 HepSymMatrix lerror_p(5); 00140 HepPoint3D poca_p(0,0,0); 00141 HepPoint3D lpivot_p(0,0,0); 00142 HepPoint3D lpoint_p(0,0,0); 00143 00144 00145 int stat[2][5]; 00146 double chisq[2][5]; 00147 int ndf[2][5]; 00148 00149 double mass[5]; 00150 double length[5]; 00151 double tof[5]; 00152 int nhits[5]; 00153 int trackId; 00154 double pathSM[5]; 00155 double fiTerm[5]; 00156 //std::cout<<" step 0: "<<std::endl; 00157 00158 00159 RecMdcKalTrack *recMdcKalTrackTds = new RecMdcKalTrack(); 00160 00161 //std::cout<<" step 1: "<<std::endl; 00162 00163 trackId = recMdcKalTrackRoot->getTrackId(); 00164 // std::cout<<"track id: "<<trackId<<std::endl; 00165 recMdcKalTrackTds->setTrackId(trackId); 00166 00167 for (int u=0; u<5; u++){ 00168 mass[u] = recMdcKalTrackRoot->getMass(u); 00169 length[u] = recMdcKalTrackRoot->getLength(u); 00170 tof[u] = recMdcKalTrackRoot->getTof(u); 00171 nhits[u] = recMdcKalTrackRoot->getNhits(u); 00172 fiTerm[u]=recMdcKalTrackRoot->getfiTerm(u); 00173 pathSM[u]=recMdcKalTrackRoot->getPathSM(u); 00174 00175 recMdcKalTrackTds->setMass(mass[u],u); 00176 recMdcKalTrackTds->setLength(length[u],u); 00177 recMdcKalTrackTds->setTof(tof[u],u); 00178 recMdcKalTrackTds->setNhits(nhits[u],u); 00179 recMdcKalTrackTds->setFiTerm(fiTerm[u],u); 00180 recMdcKalTrackTds->setPathSM(pathSM[u],u); 00181 } 00182 00183 00184 for(int v=0; v<3; v++){ 00185 poca_e[v] = recMdcKalTrackRoot->getPocaE(v); 00186 poca_mu[v] = recMdcKalTrackRoot->getPocaMu(v); 00187 poca[v] = recMdcKalTrackRoot->getPoca(v); 00188 poca_k[v] = recMdcKalTrackRoot->getPocaK(v); 00189 poca_p[v] = recMdcKalTrackRoot->getPocaP(v); 00190 lpivot_e[v] = recMdcKalTrackRoot->getLPivotE(v); 00191 lpivot_mu[v] = recMdcKalTrackRoot->getLPivotMu(v); 00192 lpivot[v] = recMdcKalTrackRoot->getLPivot(v); 00193 lpivot_k[v] = recMdcKalTrackRoot->getLPivotK(v); 00194 lpivot_p[v] = recMdcKalTrackRoot->getLPivotP(v); 00195 lpoint_e[v] = recMdcKalTrackRoot->getLPointE(v); 00196 lpoint_mu[v] = recMdcKalTrackRoot->getLPointMu(v); 00197 lpoint[v] = recMdcKalTrackRoot->getLPoint(v); 00198 lpoint_k[v] = recMdcKalTrackRoot->getLPointK(v); 00199 lpoint_p[v] = recMdcKalTrackRoot->getLPointP(v); 00200 //std::cout<<"poca_e[v]: "<<setprecision(6)<<poca_e[v]<<std::endl; 00201 //std::cout<<"lpoint_e[v]: "<<setprecision(6)<<lpoint_e[v]<<std::endl; 00202 //std::cout<<"lpivot_e[v]: "<<setprecision(6)<<lpivot_e[v]<<std::endl; 00203 00204 } 00205 00206 for (int i=0, k=0; i<5; i++){ 00207 zhelix[i] = recMdcKalTrackRoot->getZHelix(i); 00208 zhelix_e[i] = recMdcKalTrackRoot->getZHelixE(i); 00209 zhelix_mu[i] = recMdcKalTrackRoot->getZHelixMu(i); 00210 zhelix_k[i] = recMdcKalTrackRoot->getZHelixK(i); 00211 zhelix_p[i] = recMdcKalTrackRoot->getZHelixP(i); 00212 00213 00214 fhelix[i] = recMdcKalTrackRoot->getFHelix(i); 00215 fhelix_e[i] = recMdcKalTrackRoot->getFHelixE(i); 00216 fhelix_mu[i] = recMdcKalTrackRoot->getFHelixMu(i); 00217 fhelix_k[i] = recMdcKalTrackRoot->getFHelixK(i); 00218 fhelix_p[i] = recMdcKalTrackRoot->getFHelixP(i); 00219 00220 lhelix[i] = recMdcKalTrackRoot->getLHelix(i); 00221 lhelix_e[i] = recMdcKalTrackRoot->getLHelixE(i); 00222 lhelix_mu[i] = recMdcKalTrackRoot->getLHelixMu(i); 00223 lhelix_k[i] = recMdcKalTrackRoot->getLHelixK(i); 00224 lhelix_p[i] = recMdcKalTrackRoot->getLHelixP(i); 00225 00226 thelix[i] = recMdcKalTrackRoot->getTHelix(i); 00227 00228 for (int j=0; j<=i; j++){ 00229 00230 zerror[i][j] = recMdcKalTrackRoot->getZError(i,j); 00231 zerror_e[i][j] = recMdcKalTrackRoot->getZErrorE(i,j); 00232 zerror_mu[i][j] = recMdcKalTrackRoot->getZErrorMu(i,j); 00233 zerror_k[i][j] = recMdcKalTrackRoot->getZErrorK(i,j); 00234 zerror_p[i][j] = recMdcKalTrackRoot->getZErrorP(i,j); 00235 zerror[j][i] = zerror[i][j]; 00236 zerror_e[j][i] = zerror_e[i][j]; 00237 zerror_mu[j][i] = zerror_mu[i][j]; 00238 zerror_k[j][i] = zerror_k[i][j]; 00239 zerror_p[j][i] = zerror_p[i][j]; 00240 00241 ferror[i][j] = recMdcKalTrackRoot->getFError(i,j); 00242 ferror_e[i][j] = recMdcKalTrackRoot->getFErrorE(i,j); 00243 ferror_mu[i][j] = recMdcKalTrackRoot->getFErrorMu(i,j); 00244 ferror_k[i][j] = recMdcKalTrackRoot->getFErrorK(i,j); 00245 ferror_p[i][j] = recMdcKalTrackRoot->getFErrorP(i,j); 00246 ferror[j][i] = ferror[i][j]; 00247 ferror_e[j][i] = ferror_e[i][j]; 00248 ferror_mu[j][i] = ferror_mu[i][j]; 00249 ferror_k[j][i] = ferror_k[i][j]; 00250 ferror_p[j][i] = ferror_p[i][j]; 00251 00252 lerror[i][j] = recMdcKalTrackRoot->getLError(i,j); 00253 lerror_e[i][j] = recMdcKalTrackRoot->getLErrorE(i,j); 00254 lerror_mu[i][j] = recMdcKalTrackRoot->getLErrorMu(i,j); 00255 lerror_k[i][j] = recMdcKalTrackRoot->getLErrorK(i,j); 00256 lerror_p[i][j] = recMdcKalTrackRoot->getLErrorP(i,j); 00257 lerror[j][i] = lerror[i][j]; 00258 lerror_e[j][i] = lerror_e[i][j]; 00259 lerror_mu[j][i] = lerror_mu[i][j]; 00260 lerror_k[j][i] = lerror_k[i][j]; 00261 lerror_p[j][i] = lerror_p[i][j]; 00262 00263 terror[i][j] = recMdcKalTrackRoot->getTError(k++); 00264 terror[j][i] = terror[i][j]; 00265 00266 } 00267 } 00268 00269 //std::cout<<" step 2: "<<std::endl; 00270 00271 //std::cout<<"T to rec tds: "<<endl; 00272 //std::cout<<"lpoint_e: "<<lpoint_e<<std::endl; 00273 //std::cout<<"lpivot_e: "<<lpivot_e<<std::endl; 00275 zhelixs.push_back(zhelix_e); 00276 zhelixs.push_back(zhelix_mu); 00277 zhelixs.push_back(zhelix); 00278 zhelixs.push_back(zhelix_k); 00279 zhelixs.push_back(zhelix_p); 00280 zerrors.push_back(zerror_e); 00281 zerrors.push_back(zerror_mu); 00282 zerrors.push_back(zerror); 00283 zerrors.push_back(zerror_k); 00284 zerrors.push_back(zerror_p); 00286 fhelixs.push_back(fhelix_e); 00287 fhelixs.push_back(fhelix_mu); 00288 fhelixs.push_back(fhelix); 00289 fhelixs.push_back(fhelix_k); 00290 fhelixs.push_back(fhelix_p); 00291 ferrors.push_back(ferror_e); 00292 ferrors.push_back(ferror_mu); 00293 ferrors.push_back(ferror); 00294 ferrors.push_back(ferror_k); 00295 ferrors.push_back(ferror_p); 00297 lhelixs.push_back(lhelix_e); 00298 lhelixs.push_back(lhelix_mu); 00299 lhelixs.push_back(lhelix); 00300 lhelixs.push_back(lhelix_k); 00301 lhelixs.push_back(lhelix_p); 00302 lerrors.push_back(lerror_e); 00303 lerrors.push_back(lerror_mu); 00304 lerrors.push_back(lerror); 00305 lerrors.push_back(lerror_k); 00306 lerrors.push_back(lerror_p); 00308 00309 pocas.push_back(poca_e); 00310 pocas.push_back(poca_mu); 00311 pocas.push_back(poca); 00312 pocas.push_back(poca_k); 00313 pocas.push_back(poca_p); 00314 lpivots.push_back(lpivot_e); 00315 lpivots.push_back(lpivot_mu); 00316 lpivots.push_back(lpivot); 00317 lpivots.push_back(lpivot_k); 00318 lpivots.push_back(lpivot_p); 00319 lpoints.push_back(lpoint_e); 00320 lpoints.push_back(lpoint_mu); 00321 lpoints.push_back(lpoint); 00322 lpoints.push_back(lpoint_k); 00323 lpoints.push_back(lpoint_p); 00324 00325 for(int m=0; m<5; m++){ 00326 int charge; 00327 double pxy(0.),px(0.),py(0.),pz(0.),ptot(0.),dr(0.),phi0(0.),kappa(0.),dz(0.),tanl(0.),x(0.),y(0.),z(0.),vx0(0.),vy0(0.),vz0(0.); 00328 dr = zhelixs[m][0]; 00329 phi0 = zhelixs[m][1]; 00330 kappa = zhelixs[m][2]; 00331 dz = zhelixs[m][3]; 00332 tanl = zhelixs[m][4]; 00333 00334 // x = pocas[m][0]; 00335 // y = pocas[m][1]; 00336 // z = pocas[m][2]; 00337 x = dr * cos(phi0); 00338 y = dr * sin(phi0); 00339 z = dz; 00340 // std::cout<<"x: "<<x<<"y: "<<y<<"z: "<<z<<std::endl; 00341 00342 if (kappa > 0.0000000001) 00343 charge = 1; 00344 else if (kappa < -0.0000000001) 00345 charge = -1; 00346 else 00347 charge = 0; 00348 00349 if(kappa!=0) pxy = 1.0/fabs(kappa); 00350 else pxy = 0; 00351 00352 px = pxy * (-sin(phi0)); 00353 py = pxy * cos(phi0); 00354 pz = pxy * tanl; 00355 ptot = sqrt(px*px+py*py+pz*pz); 00356 // cout<<"x, y, z, charge, px, py, pz, ptot: "<<x<<" , "<<y<<" , "<<z<<" , "<<charge<<" , "<<px<<" , "<<py<<" , "<<pz<<" , "<<ptot<<endl; 00357 recMdcKalTrackTds->setCharge(charge,m); 00358 recMdcKalTrackTds->setPxy(pxy,m); 00359 recMdcKalTrackTds->setPx(px,m); 00360 recMdcKalTrackTds->setPy(py,m); 00361 recMdcKalTrackTds->setPz(pz,m); 00362 recMdcKalTrackTds->setP(ptot,m); 00363 recMdcKalTrackTds->setTheta(acos(pz/ptot),m); 00364 recMdcKalTrackTds->setPhi(atan2(py,px),m); 00365 recMdcKalTrackTds->setX(x,m); 00366 recMdcKalTrackTds->setY(y,m); 00367 recMdcKalTrackTds->setZ(z,m); 00368 recMdcKalTrackTds->setR(sqrt(x*x+y*y),m); 00370 00371 for(int n=0; n<2; n++){ 00372 int stat = recMdcKalTrackRoot->getStat(n,m); 00373 int chisq = recMdcKalTrackRoot->getChisq(n,m); 00374 int ndf = recMdcKalTrackRoot->getNdf(n,m); 00375 recMdcKalTrackTds->setStat(stat,n,m); 00376 recMdcKalTrackTds->setChisq(chisq,n,m); 00377 recMdcKalTrackTds->setNdf(ndf,n,m); 00378 } 00379 } 00380 00381 //std::cout<<" step 3: "<<std::endl; 00382 00383 00384 00385 for(int jj=0; jj<5; jj++){ 00386 //std::cout<<" step 3.0: "<<std::endl; 00387 //std::cout<<"zhelixs[jj]: "<<zhelixs[jj]<<std::endl; 00388 00389 recMdcKalTrackTds->setZHelix(zhelixs[jj],jj); 00390 //std::cout<<" step 3.1: "<<std::endl; 00391 00392 recMdcKalTrackTds->setZError(zerrors[jj],jj); 00393 recMdcKalTrackTds->setFHelix(fhelixs[jj],jj); 00394 recMdcKalTrackTds->setFError(ferrors[jj],jj); 00395 //std::cout<<" step 3.5: "<<std::endl; 00396 00397 recMdcKalTrackTds->setLHelix(lhelixs[jj],jj); 00398 recMdcKalTrackTds->setLError(lerrors[jj],jj); 00399 recMdcKalTrackTds->setPoca(pocas[jj],jj); 00400 00401 00402 recMdcKalTrackTds->setLPoint(lpoints[jj],jj); 00403 recMdcKalTrackTds->setLPivot(lpivots[jj],jj); 00404 } 00405 recMdcKalTrackTds->setTHelix(thelix); 00406 recMdcKalTrackTds->setTError(terror); 00407 00408 //std::cout<<" step 4: "<<std::endl; 00409 00410 00411 log<<MSG::DEBUG<<"T to REC TDS, zhelix: "<<zhelix<<endreq; 00412 log<<MSG::DEBUG<<"T to REC TDS, zerror: "<<zerror<<endreq; 00413 00414 m_common.m_rootRecMdcKalTrackMap[recMdcKalTrackRoot] = recMdcKalTrackTds; 00415 00416 HelixSegRefVec theKalHelixSegRefVec; 00417 00418 RecMdcKalHelixSegCol::iterator iter = recMdcKalHelixSegCol->begin(); 00419 for (;iter != recMdcKalHelixSegCol->end(); iter++){ 00420 00421 //cout<<" (*iter)->getTrkId(): "<<(*iter)->getTrkId()<<endl; 00422 if((*iter)->getTrackId() == trackId){ 00423 SmartRef<RecMdcKalHelixSeg> refhit(*iter); 00424 theKalHelixSegRefVec.push_back(refhit); 00425 } 00426 } 00427 00428 recMdcKalTrackTds->setVecHelixSegs(theKalHelixSegRefVec); 00429 00430 int nhelixsegs = recMdcKalTrackTds->getVecHelixSegs().size(); 00431 00432 //std::cout<<" mdc hits: "<<nhelixsegs<< std::endl; 00433 00434 for(int ii=0; ii <nhelixsegs ; ii++){ 00435 00436 //cout<<"ddl: "<<(recMdcTrack->getVecKalHelixSegs()[ii])->getDriftDistLeft()<<endl; 00437 //cout<<"erddl: "<<(recMdcTrack->getVecKalHelixSegs()[ii])->getErrDriftDistLeft()<<endl; 00438 Identifier id(recMdcKalTrackTds->getVecHelixSegs()[ii]->getMdcId()); 00439 int layer = MdcID::layer(id); 00440 int wire = MdcID::wire(id); 00441 //cout<<"layer: "<<layer<<" wire: "<<wire<<endl; 00442 } 00443 00444 recMdcKalTrackCol->push_back(recMdcKalTrackTds); 00445 00446 } 00447 00448 delete m_recMdcKalTrackCol; 00449 00450 m_recMdcKalTrackCol = 0; 00451 00452 return StatusCode::SUCCESS; 00453 }
|
|
|
|
the CLID of the upper converter if any
|
|
each converter knows the corresponding adresses
|
|
each converter knows the corresponding adresses
|
|
the branchNr of this converter for writing
|
|
|
|
|
|
|
|
|
|
|
|
array with number of branches for reading
|
|
array with number of branches for reading
|
|
|
|
|
|
relational maps
|
|
|
|
pointer to eventdataservice
|
|
pointer to eventdataservice
|
|
|
|
|
|
|
|
|
|
the object that was read
|
|
the object that was read
|
|
root object to be read
|
|
root object to be read
|
|
root branchname (may be concatenated of severals)
|
|
pointer to the RootInterface
|
|
pointer to the RootInterface
|
|
each converter knows it's treename
|