/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RootCnvSvc/RootCnvSvc-02-01-12/src/Rec/RecMdcKalHelixSegCnv.cxx

Go to the documentation of this file.
00001 #ifndef RecMdcKalHelixSegCnv_CXX
00002 #define RecMdcKalHelixSegCnv_CXX  1
00003 
00004 #include "GaudiKernel/MsgStream.h"
00005 #include "GaudiKernel/DataObject.h"
00006 #include "GaudiKernel/ObjectVector.h"
00007 
00008 #include "TClonesArray.h"
00009 
00010 #include "EventModel/EventModel.h"
00011 
00012 #include "ReconEvent/ReconEvent.h"
00013 #include "MdcRecEvent/RecMdcKalHelixSeg.h"
00014 #include "Identifier/Identifier.h"
00015 
00016 #include "RootEventData/TRecMdcKalHelixSeg.h" // standard root object
00017 #include "RootEventData/TRecTrackEvent.h"
00018 
00019 #include "RootCnvSvc/Rec/RecTrackCnv.h"
00020 #include "RootCnvSvc/Rec/RecMdcKalHelixSegCnv.h"
00021 #include "RootCnvSvc/RootAddress.h"
00022 
00023 #include <vector>
00024 
00025 using namespace std;
00026 
00027 
00028         RecMdcKalHelixSegCnv::RecMdcKalHelixSegCnv(ISvcLocator* svc)
00029 : RootEventBaseCnv(classID(), svc)
00030 {
00031 
00032         // Here we associate this converter with the /Event path on the TDS.
00033         MsgStream log(msgSvc(), "RecMdcKalHelixSegCnv");
00034         //log << MSG::DEBUG << "Constructor called for " << objType() << endreq;
00035         //m_rootTreename ="Rec";
00036         m_rootBranchname ="m_recMdcKalHelixSegCol";
00037         //declareObject(EventModel::Recon::RecMdcKalHelixSegCol, objType(), m_rootTreename, m_rootBranchname);
00038         m_adresses.push_back(&m_recMdcKalHelixSegCol);
00039         m_recMdcKalHelixSegCol=0;
00040 }
00041 
00042 StatusCode RecMdcKalHelixSegCnv::TObjectToDataObject(DataObject*& refpObject) {
00043         // creation of TDS object from root object
00044         MsgStream log(msgSvc(), "RecMdcKalHelixSegCnv");
00045         log << MSG::DEBUG << "RecMdcKalHelixSegCnv::TObjectToDataObject" << endreq;
00046 
00047         // create the TDS location for the RecMdcKalHelixSeg Collection
00048         RecMdcKalHelixSegCol* recMdcKalHelixSegCol = new RecMdcKalHelixSegCol;
00049         refpObject = recMdcKalHelixSegCol;
00050 
00051         // now convert
00052         if (!m_recMdcKalHelixSegCol) return StatusCode::SUCCESS;
00053         TIter mdcHitIter(m_recMdcKalHelixSegCol);
00054         TRecMdcKalHelixSeg *recMdcKalHelixSegRoot = 0;
00055         int nSeg=0;
00056         while ((recMdcKalHelixSegRoot = (TRecMdcKalHelixSeg*)mdcHitIter.Next())) {
00057                 int      trackId = recMdcKalHelixSegRoot->getTrackId();
00058                 int      flagLR = recMdcKalHelixSegRoot->getFlagLR(); 
00059                 Identifier mdcId(recMdcKalHelixSegRoot->getMdcId()); 
00060                 double   tdc = recMdcKalHelixSegRoot->getTdc();
00061                 double   adc = recMdcKalHelixSegRoot->getAdc();
00062                 double   zhit = recMdcKalHelixSegRoot->getZhit();
00063                 double   tof = recMdcKalHelixSegRoot->getTof();
00064                 double   docaIncl = recMdcKalHelixSegRoot->getDocaIncl();
00065                 double   docaExcl = recMdcKalHelixSegRoot->getDocaExcl();
00066                 double   driftDist= recMdcKalHelixSegRoot->getDD();
00067                 double   entra = recMdcKalHelixSegRoot->getEntra();
00068                 double   driftT = recMdcKalHelixSegRoot->getDT();
00069                 //  int      layerId = recMdcKalHelixSegRoot->getLayerId();
00070                 //  double   drIncl = recMdcKalHelixSegRoot->getDrIncl();
00071                 //  double   phi0Incl = recMdcKalHelixSegRoot->getFi0Incl();
00072                 //  double   kappaIncl = recMdcKalHelixSegRoot->getCpaIncl();
00073                 //  double   dzIncl = recMdcKalHelixSegRoot->getDzIncl();
00074                 //  double   tanlIncl = recMdcKalHelixSegRoot->getTanlIncl();
00075                 //  double   drExcl = recMdcKalHelixSegRoot->getDrExcl();
00076                 //  double   phi0Excl = recMdcKalHelixSegRoot->getFi0Excl();
00077                 //  double   kappaExcl = recMdcKalHelixSegRoot->getCpaExcl();
00078                 //  double   dzExcl = recMdcKalHelixSegRoot->getDzExcl();
00079                 //  double   tanlExcl = recMdcKalHelixSegRoot->getTanlExcl();
00080                 double helixIncl[5]; // errIncl[15]; 
00081                 double helixExcl[5]; // errExcl[15];
00082                 for(int i=0, k=0; i<5; i++){
00083                         helixIncl[i] = recMdcKalHelixSegRoot->getHelixIncl(i);
00084                         helixExcl[i] = recMdcKalHelixSegRoot->getHelixExcl(i);
00085                         // for(int j=0; j<=i; j++){
00086                         //         errIncl[k] = recMdcKalHelixSegRoot->getErrorIncl(i,j);
00087                         //         errExcl[k] = recMdcKalHelixSegRoot->getErrorExcl(i,j);
00088                         // }
00089                 }
00090 
00091                 RecMdcKalHelixSeg *recMdcKalHelixSeg= new RecMdcKalHelixSeg();
00092                 m_common.m_rootRecMdcKalHelixSegMap[recMdcKalHelixSegRoot] = recMdcKalHelixSeg;
00093 
00094                 recMdcKalHelixSeg->setTrackId( trackId );
00095                 recMdcKalHelixSeg->setFlagLR( flagLR );
00096                 recMdcKalHelixSeg->setMdcId( Identifier(mdcId) );
00097                 recMdcKalHelixSeg->setTdc( tdc );
00098                 recMdcKalHelixSeg->setAdc( adc );
00099                 recMdcKalHelixSeg->setZhit( zhit );
00100                 recMdcKalHelixSeg->setTof( tof );
00101                 recMdcKalHelixSeg->setDocaIncl( docaIncl );
00102                 recMdcKalHelixSeg->setDocaExcl( docaExcl );
00103                 recMdcKalHelixSeg->setDD( driftDist );
00104                 recMdcKalHelixSeg->setEntra( entra );
00105                 recMdcKalHelixSeg->setDT( driftT );
00106                 //    recMdcKalHelixSeg->setLayerId( layerId );
00107                 //    recMdcKalHelixSeg->setDrIncl( drIncl );
00108                 //    recMdcKalHelixSeg->setFi0Incl( phi0Incl );
00109                 //    recMdcKalHelixSeg->setCpaIncl( kappaIncl );
00110                 //    recMdcKalHelixSeg->setDzIncl( dzIncl );
00111                 //    recMdcKalHelixSeg->setTanlIncl( tanlIncl );
00112                 //    recMdcKalHelixSeg->setDrExcl( drIncl );
00113                 //    recMdcKalHelixSeg->setFi0Excl( phi0Excl );
00114                 //    recMdcKalHelixSeg->setCpaExcl( kappaExcl );
00115                 //    recMdcKalHelixSeg->setDzExcl( dzExcl );
00116                 //    recMdcKalHelixSeg->setTanlExcl( tanlExcl );
00117                 recMdcKalHelixSeg->setHelixIncl( helixIncl );
00118                 recMdcKalHelixSeg->setHelixExcl( helixExcl );
00119                 //    recMdcKalHelixSeg->setErrorIncl( errIncl );
00120                 //    recMdcKalHelixSeg->setErrorExcl( errExcl );
00121 
00122                 recMdcKalHelixSegCol->push_back(recMdcKalHelixSeg);
00123                 nSeg++;
00124         }
00125         //cout<<"rec -> Tds, nSeg = "<<nSeg<<", recMdcKalHelixSegCol.size="<<recMdcKalHelixSegCol->size()<<endl;
00126         return StatusCode::SUCCESS;
00127 }
00128 
00129 StatusCode RecMdcKalHelixSegCnv::DataObjectToTObject(DataObject* obj,RootAddress* rootaddr) {
00130 
00131         MsgStream log(msgSvc(), "RecMdcKalHelixSegCnv");
00132         log << MSG::DEBUG << "RecMdcKalHelixSegCnv::DataObjectToTObject" << endreq;
00133 
00134         RecMdcKalHelixSegCol * mdcHitColTds=dynamic_cast<RecMdcKalHelixSegCol *> (obj);
00135         if (!mdcHitColTds) {
00136                 log << MSG::ERROR << "Could not downcast to RecMdcKalHelixSegCol" << endreq;
00137                 return StatusCode::FAILURE;
00138         }
00139 
00140         DataObject *evt;
00141         m_eds->findObject(EventModel::Recon::Event,evt);
00142         if (evt==NULL) {
00143                 log << MSG::ERROR << "Could not get ReconEvent in TDS "  << endreq;
00144                 return StatusCode::FAILURE;
00145         }
00146 
00147         ReconEvent * devtTds=dynamic_cast<ReconEvent *> (evt);
00148         if (!devtTds) {
00149                 log << MSG::ERROR << "RecMdcKalHelixSegCnv:Could not downcast to TDS ReconEvent" << endreq;
00150         }
00151 
00152         IOpaqueAddress *addr;
00153 
00154         m_cnvSvc->getRecTrackCnv()->createRep(evt,addr); 
00155         TRecTrackEvent *recEvt=m_cnvSvc->getRecTrackCnv()->getWriteObject();
00156 
00157         const TObjArray *m_recMdcKalHelixSegCol = recEvt->getRecMdcKalHelixSegCol();
00158         if (!m_recMdcKalHelixSegCol) return StatusCode::SUCCESS;
00159         recEvt->clearRecMdcKalHelixSegCol(); //necessary in case there is I/O at the same time since array is static
00160 
00161         RecMdcKalHelixSegCol::const_iterator recMdcKalHelixSeg;
00162         int nSeg=0;
00163         for (recMdcKalHelixSeg = mdcHitColTds->begin(); recMdcKalHelixSeg != mdcHitColTds->end(); recMdcKalHelixSeg++) {
00164                 Int_t      trackId =(*recMdcKalHelixSeg)->getTrackId();
00165                 Int_t      flagLR = (*recMdcKalHelixSeg)->getFlagLR();
00166                 UInt_t     mdcId = (*recMdcKalHelixSeg)->getMdcId().get_value();
00167                 Double_t   tdc = (*recMdcKalHelixSeg)->getTdc();
00168                 Double_t   adc = (*recMdcKalHelixSeg)->getAdc();
00169                 Double_t   zhit = (*recMdcKalHelixSeg)->getZhit();
00170                 Double_t   tof = (*recMdcKalHelixSeg)->getTof();
00171                 Double_t   docaIncl = (*recMdcKalHelixSeg)->getDocaIncl();
00172                 Double_t   docaExcl = (*recMdcKalHelixSeg)->getDocaExcl();
00173                 Double_t   driftDist= (*recMdcKalHelixSeg)->getDD();
00174                 Double_t   entra = (*recMdcKalHelixSeg)->getEntra();
00175                 Double_t   driftT =  (*recMdcKalHelixSeg)->getDT();
00176                 //     Int_t      layerId = (*recMdcKalHelixSeg)->getLayerId();
00177                 //     Double_t   drIncl =  (*recMdcKalHelixSeg)->getDrIncl();
00178                 //     Double_t   phi0Incl =(*recMdcKalHelixSeg)->getFi0Incl();
00179                 //     Double_t   kappaIncl = (*recMdcKalHelixSeg)->getCpaIncl();
00180                 //     Double_t   dzIncl =  (*recMdcKalHelixSeg)->getDzIncl();
00181                 //     Double_t   tanlIncl = (*recMdcKalHelixSeg)->getTanlIncl();
00182                 //     Double_t   drExcl =  (*recMdcKalHelixSeg)->getDrExcl();
00183                 //     Double_t   phi0Excl = (*recMdcKalHelixSeg)->getFi0Excl();
00184                 //     Double_t   kappaExcl = (*recMdcKalHelixSeg)->getCpaExcl();
00185                 //     Double_t   dzExcl =   (*recMdcKalHelixSeg)->getDzExcl();
00186                 //     Double_t   tanlExcl = (*recMdcKalHelixSeg)->getTanlExcl();
00187                 HepVector  helixIncl_vct = (*recMdcKalHelixSeg)->getHelixIncl();
00188                 HepVector  helixExcl_vct = (*recMdcKalHelixSeg)->getHelixExcl();
00189                 //     HepSymMatrix  errIncl_mtx = (*recMdcKalHelixSeg)->getErrorIncl();
00190                 //     HepSymMatrix  errExcl_mtx = (*recMdcKalHelixSeg)->getErrorExcl();
00191 
00192                 Double_t helixIncl[5], helixExcl[5]; //errIncl[5][5], errExcl[5][5];
00193                 for(Int_t i=0; i<5; i++){
00194                         helixIncl[i] = helixIncl_vct[i];
00195                         helixExcl[i] = helixExcl_vct[i];
00196                 }
00197                 //     for (Int_t i=0; i<5; i++){
00198                 //             for(Int_t j=0; j<5; j++){
00199                 //                   errIncl[i][j] = errIncl_mtx[i][j];
00200                 //                   errExcl[i][j] = errExcl_mtx[i][j];
00201                 //             }
00202                 //     }
00203 
00204                 TRecMdcKalHelixSeg *recMdcKalHelixSegRoot = new TRecMdcKalHelixSeg();
00205                 //m_common.m_recMdcKalHelixSegMap[(*recMdcKalHelixSeg)] = recMdcKalHelixSegRoot;
00206 
00207                 recMdcKalHelixSegRoot->setTrackId( trackId );
00208                 recMdcKalHelixSegRoot->setFlagLR( flagLR );
00209                 recMdcKalHelixSegRoot->setMdcId( Identifier(mdcId) );
00210                 recMdcKalHelixSegRoot->setTdc( tdc );
00211                 recMdcKalHelixSegRoot->setAdc( adc );
00212                 recMdcKalHelixSegRoot->setZhit( zhit );
00213                 recMdcKalHelixSegRoot->setTof( tof );
00214                 recMdcKalHelixSegRoot->setDocaIncl( docaIncl );
00215                 recMdcKalHelixSegRoot->setDocaExcl( docaExcl );
00216                 recMdcKalHelixSegRoot->setDD( driftDist );
00217                 recMdcKalHelixSegRoot->setEntra( entra );
00218                 recMdcKalHelixSegRoot->setDT( driftT );
00219                 //     recMdcKalHelixSegRoot->setLayerId( layerId );
00220                 //     recMdcKalHelixSegRoot->setDrIncl( drIncl );
00221                 //     recMdcKalHelixSegRoot->setFi0Incl( phi0Incl );
00222                 //     recMdcKalHelixSegRoot->setCpaIncl( kappaIncl );
00223                 //     recMdcKalHelixSegRoot->setDzIncl( dzIncl );
00224                 //     recMdcKalHelixSegRoot->setTanlIncl( tanlIncl );
00225                 //     recMdcKalHelixSegRoot->setDrExcl( drIncl );
00226                 //     recMdcKalHelixSegRoot->setFi0Excl( phi0Excl );
00227                 //     recMdcKalHelixSegRoot->setCpaExcl( kappaExcl );
00228                 //     recMdcKalHelixSegRoot->setDzExcl( dzExcl );
00229                 //     recMdcKalHelixSegRoot->setTanlExcl( tanlExcl );
00230                 recMdcKalHelixSegRoot->setHelixIncl( helixIncl );
00231                 recMdcKalHelixSegRoot->setHelixExcl( helixExcl );
00232                 //     recMdcKalHelixSegRoot->setErrorIncl( errIncl );
00233                 //     recMdcKalHelixSegRoot->setErrorExcl( errExcl );
00234 
00235                 log<<MSG::INFO<<" recMdcKalHelixSegRoot.dd: "<<recMdcKalHelixSegRoot->getDD()
00236                         <<" recMdcKalHelixSegRoot.entra: "<<recMdcKalHelixSegRoot->getEntra()
00237                         <<endreq;
00238 
00239                 recEvt->addRecMdcKalHelixSeg(recMdcKalHelixSegRoot);
00240                 nSeg++;
00241         }
00242         //cout<<"writing nSeg = "<<nSeg<<endl;
00243         return StatusCode::SUCCESS;
00244 }
00245 #endif

Generated on Tue Nov 29 22:58:53 2016 for BOSS_7.0.2 by  doxygen 1.4.7