Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

RecMdcKalTrackCnv Class Reference

#include <RecMdcKalTrackCnv.h>

Inheritance diagram for RecMdcKalTrackCnv:

RootEventBaseCnv RootEventBaseCnv Converter< Ty1, Ty2 > Converter< Ty1, Ty2 > Converter< Ty1, Ty2 > Converter< Ty1, Ty2 > List of all members.

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 ()
destinationoperator (const source &) const
destinationoperator (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 destinationconvert (const source &) const =0
virtual destinationconvert (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
RootCnvSvcm_cnvSvc
RootCnvSvcm_cnvSvc
std::string m_currentFileName
IDataProviderSvc * m_eds
 pointer to eventdataservice
IDataProviderSvc * m_eds
 pointer to eventdataservice
RootEvtSelectorm_evtsel
RootEvtSelectorm_evtsel
std::vector< RootCnvSvc::Leafm_leaves
std::vector< RootCnvSvc::Leafm_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)
RootInterfacem_rootInterface
 pointer to the RootInterface
RootInterfacem_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>

Member Typedef Documentation

template<class Ty1, class Ty2>
typedef Ty2 Converter< Ty1, Ty2 >::destination [inherited]
 

template<class Ty1, class Ty2>
typedef Ty2 Converter< Ty1, Ty2 >::destination [inherited]
 

template<class Ty1, class Ty2>
typedef Ty1 Converter< Ty1, Ty2 >::source [inherited]
 

template<class Ty1, class Ty2>
typedef Ty1 Converter< Ty1, Ty2 >::source [inherited]
 


Constructor & Destructor Documentation

virtual RecMdcKalTrackCnv::~RecMdcKalTrackCnv  )  [inline, virtual]
 

00025 { };

RecMdcKalTrackCnv::RecMdcKalTrackCnv ISvcLocator *  svc  )  [protected]
 

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 }

virtual RecMdcKalTrackCnv::~RecMdcKalTrackCnv  )  [inline, virtual]
 

00025 { };

RecMdcKalTrackCnv::RecMdcKalTrackCnv ISvcLocator *  svc  )  [protected]
 


Member Function Documentation

const CLID& RecMdcKalTrackCnv::classID  )  [inline, static]
 

00021   {
00022        return CLID_RecMdcKalTrackCol; 
00023   }

const CLID& RecMdcKalTrackCnv::classID  )  [inline, static]
 

00021   {
00022        return CLID_RecMdcKalTrackCol; 
00023   }

template<class Ty1, class Ty2>
virtual destination* Converter< Ty1, Ty2 >::convert const source  )  const [protected, pure virtual, inherited]
 

template<class Ty1, class Ty2>
virtual destination* Converter< Ty1, Ty2 >::convert const source  )  const [protected, pure virtual, inherited]
 

virtual StatusCode RootEventBaseCnv::createObj IOpaqueAddress *  addr,
DataObject *&  dat
[virtual, inherited]
 

Convert the persistent object to transient.

Reimplemented in EventCnv, and EventCnv.

StatusCode RootEventBaseCnv::createObj IOpaqueAddress *  addr,
DataObject *&  dat
[virtual, inherited]
 

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 }

virtual StatusCode RootEventBaseCnv::createRep DataObject *  pObject,
IOpaqueAddress *&  refpAddress
[virtual, inherited]
 

Convert the transient object to the requested representation.

StatusCode RootEventBaseCnv::createRep DataObject *  pObject,
IOpaqueAddress *&  refpAddress
[virtual, inherited]
 

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 }

virtual StatusCode RecMdcKalTrackCnv::DataObjectToTObject DataObject *  obj,
RootAddress addr
[protected, virtual]
 

transformation to root

Implements RootEventBaseCnv.

StatusCode RecMdcKalTrackCnv::DataObjectToTObject DataObject *  obj,
RootAddress addr
[protected, virtual]
 

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 }

void RootEventBaseCnv::declareObject const std::string &  fullPath,
const CLID &  clid,
const std::string &  treename,
const std::string &  branchname
[inherited]
 

Store TDS path to link a particular converter to an object on the TDS.

void RootEventBaseCnv::declareObject const std::string &  fullPath,
const CLID &  clid,
const std::string &  treename,
const std::string &  branchname
[inherited]
 

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 }

virtual StatusCode RootEventBaseCnv::fillObjRefs IOpaqueAddress *  pAddress,
DataObject *  pObject
[virtual, inherited]
 

Resolve the references of the converted object.

StatusCode RootEventBaseCnv::fillObjRefs IOpaqueAddress *  pAddress,
DataObject *  pObject
[virtual, inherited]
 

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 }

virtual StatusCode RootEventBaseCnv::fillRepRefs IOpaqueAddress *  pAddress,
DataObject *  pObject
[virtual, inherited]
 

Resolve the references of the converted object.

StatusCode RootEventBaseCnv::fillRepRefs IOpaqueAddress *  pAddress,
DataObject *  pObject
[virtual, inherited]
 

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 }

virtual StatusCode RootEventBaseCnv::finalize  )  [virtual, inherited]
 

StatusCode RootEventBaseCnv::finalize  )  [virtual, inherited]
 

00141                                         {
00142     if ( m_cnvSvc )     {
00143         m_cnvSvc->release();
00144         m_cnvSvc=0;
00145     }
00146     return Converter::finalize();
00147 }

TObject* RootEventBaseCnv::getReadObject  )  const [inline, inherited]
 

get the object to be read

00124 { return m_objRead;} 

TObject* RootEventBaseCnv::getReadObject  )  const [inline, inherited]
 

get the object to be read

00124 { return m_objRead;} 

virtual StatusCode RootEventBaseCnv::initialize  )  [virtual, inherited]
 

Reimplemented in DigiCnv, DstCnv, EvtHeaderCnv, EvtRecCnv, HltCnv, McCnv, RecTrackCnv, TrigCnv, DigiCnv, DstCnv, EvtHeaderCnv, EvtRecCnv, HltCnv, McCnv, RecTrackCnv, and TrigCnv.

StatusCode RootEventBaseCnv::initialize  )  [virtual, inherited]
 

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 }

template<class Ty1, class Ty2>
destination* Converter< Ty1, Ty2 >::operator const source  )  const [inline, inherited]
 

template<class Ty1, class Ty2>
destination* Converter< Ty1, Ty2 >::operator const source  )  const [inline, inherited]
 

virtual long RootEventBaseCnv::repSvcType  )  const [inline, virtual, inherited]
 

00087                                     { 
00088       return ROOT_StorageType; 
00089     } 

virtual long RootEventBaseCnv::repSvcType  )  const [inline, virtual, inherited]
 

00087                                     { 
00088       return ROOT_StorageType; 
00089     } 

const unsigned char RootEventBaseCnv::storageType  )  [inline, static, inherited]
 

Storage type and class ID.

00083                                                   {
00084       return ROOT_StorageType;
00085     }

const unsigned char RootEventBaseCnv::storageType  )  [inline, static, inherited]
 

Storage type and class ID.

00083                                                   {
00084       return ROOT_StorageType;
00085     }

virtual StatusCode RecMdcKalTrackCnv::TObjectToDataObject DataObject *&  obj  )  [protected, virtual]
 

transformation from root

Implements RootEventBaseCnv.

StatusCode RecMdcKalTrackCnv::TObjectToDataObject DataObject *&  refpObject  )  [protected, virtual]
 

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 }


Friends And Related Function Documentation

CnvFactory<RecMdcKalTrackCnv> [friend]
 


Member Data Documentation

CLID RootEventBaseCnv::CLID_top [protected, inherited]
 

the CLID of the upper converter if any

std::vector<void *> RootEventBaseCnv::m_adresses [protected, inherited]
 

each converter knows the corresponding adresses

std::vector<void *> RootEventBaseCnv::m_adresses [protected, inherited]
 

each converter knows the corresponding adresses

int RootEventBaseCnv::m_branchNr [protected, inherited]
 

the branchNr of this converter for writing

int RootEventBaseCnv::m_branchNrDst [protected, inherited]
 

int RootEventBaseCnv::m_branchNrEvtHeader [protected, inherited]
 

int RootEventBaseCnv::m_branchNrEvtRec [protected, inherited]
 

int RootEventBaseCnv::m_branchNrMc [protected, inherited]
 

int RootEventBaseCnv::m_branchNrRecon [protected, inherited]
 

TArrayS* RootEventBaseCnv::m_branchNumbers [protected, inherited]
 

array with number of branches for reading

TArrayS* RootEventBaseCnv::m_branchNumbers [protected, inherited]
 

array with number of branches for reading

RootCnvSvc* RootEventBaseCnv::m_cnvSvc [protected, inherited]
 

RootCnvSvc* RootEventBaseCnv::m_cnvSvc [protected, inherited]
 

commonData RecMdcKalTrackCnv::m_common [private]
 

relational maps

std::string RootEventBaseCnv::m_currentFileName [protected, inherited]
 

IDataProviderSvc* RootEventBaseCnv::m_eds [protected, inherited]
 

pointer to eventdataservice

IDataProviderSvc* RootEventBaseCnv::m_eds [protected, inherited]
 

pointer to eventdataservice

RootEvtSelector* RootEventBaseCnv::m_evtsel [protected, inherited]
 

RootEvtSelector* RootEventBaseCnv::m_evtsel [protected, inherited]
 

std::vector<RootCnvSvc::Leaf> RootEventBaseCnv::m_leaves [protected, inherited]
 

std::vector<RootCnvSvc::Leaf> RootEventBaseCnv::m_leaves [protected, inherited]
 

TObject* RootEventBaseCnv::m_objRead [protected, inherited]
 

the object that was read

TObject* RootEventBaseCnv::m_objRead [protected, inherited]
 

the object that was read

TObjArray* RecMdcKalTrackCnv::m_recMdcKalTrackCol [private]
 

root object to be read

TObjArray* RecMdcKalTrackCnv::m_recMdcKalTrackCol [private]
 

root object to be read

std::string RootEventBaseCnv::m_rootBranchname [protected, inherited]
 

root branchname (may be concatenated of severals)

RootInterface* RootEventBaseCnv::m_rootInterface [protected, inherited]
 

pointer to the RootInterface

RootInterface* RootEventBaseCnv::m_rootInterface [protected, inherited]
 

pointer to the RootInterface

std::string RootEventBaseCnv::m_rootTreename [protected, inherited]
 

each converter knows it's treename


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:46:55 2011 for BOSS6.5.5 by  doxygen 1.3.9.1