DstEventMaker Class Reference

#include <DstEventMaker.h>

List of all members.

Public Member Functions

 DstEventMaker (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()


Detailed Description

Definition at line 4 of file DstEventMaker.h.


Constructor & Destructor Documentation

DstEventMaker::DstEventMaker ( const std::string name,
ISvcLocator *  pSvcLocator 
)

Definition at line 55 of file DstEventMaker.cxx.

00055                                                                             :
00056   Algorithm(name, pSvcLocator)
00057 {
00058   // Declare the properties  
00059  // declareProperty("FittingMethod", m_fittingMethod = 2);
00060  // declareProperty("ConfigFile",  m_configFile = "MDCConfig.xml");
00061 }


Member Function Documentation

StatusCode DstEventMaker::execute (  ) 

Definition at line 73 of file DstEventMaker.cxx.

References EventModel::Dst::DstEmcShowerCol, EventModel::Dst::DstExtTrackCol, EventModel::Dst::DstMdcDedxCol, EventModel::Dst::DstMdcKalTrackCol, EventModel::Dst::DstMdcTrackCol, EventModel::Dst::DstMucTrackCol, EventModel::Dst::DstTofTrackCol, EventModel::Dst::Event, Bes_Common::FATAL, genRecEmupikp::i, Bes_Common::INFO, and msgSvc().

00073                                   {
00074 
00075   MsgStream log(msgSvc(), name());
00076   log << MSG::INFO << "in execute()" << endreq;
00077 
00078   // Part 1: Get the event header, print out event and run number
00079   
00080   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00081   if (!eventHeader) {
00082     log << MSG::FATAL << "Could not find Event Header" << endreq;
00083     return( StatusCode::FAILURE);
00084   }
00085  
00086 
00087   int eventId = eventHeader->eventNumber() ;
00088   int runId = eventHeader->runNumber();
00089   log << MSG::INFO << "DstEventMaker: retrieved event: " <<"  Event Number  "<< eventId << "  run: " <<runId  << endreq;
00090   
00091   StatusCode sc = StatusCode::SUCCESS ;
00092   int trackID;
00093 
00094   // register ReconEvent Data Object to TDS; 2005/09/14
00095   DstEvent* dstEvt = new DstEvent();
00096   //dstEvt->setEventId(eventId);
00097   //dstEvt->setRunId(runId);
00098   sc = eventSvc()->registerObject(EventModel::Dst::Event, dstEvt);  
00099  
00100 
00101   //Part 2: Retrieve Mdc Track 
00102   SmartDataPtr<RecMdcTrackCol> recMdcTrackCol(eventSvc(),"/Event/Recon/RecMdcTrackCol");
00103   if (!recMdcTrackCol) {
00104     log << MSG::INFO << "Could not find RecMdcTrackCol" << endreq;
00105   } else {
00106     DstMdcTrackCol* dstMdcTrackCol = new DstMdcTrackCol();
00107     RecMdcTrackCol::iterator iter_mdc = recMdcTrackCol->begin();
00108     trackID = 0;
00109     for (;iter_mdc != recMdcTrackCol->end(); iter_mdc++, trackID++) {
00110       DstMdcTrack* dstMdcTrack = new DstMdcTrack(); 
00111       *dstMdcTrack = **iter_mdc;
00112       (*dstMdcTrackCol).push_back(dstMdcTrack);
00113 
00114       log << MSG::INFO 
00115         << " Mdc Track ID = " << trackID
00116         << " Mdc Track Nster = " << (*iter_mdc)->nster()
00117         << endreq; 
00118     } 
00119     sc = eventSvc()->registerObject(EventModel::Dst::DstMdcTrackCol,dstMdcTrackCol);
00120   }
00121 
00122   //Part 3: Retrieve Tof Track 
00123   SmartDataPtr<RecTofTrackCol> tofTrackCol(eventSvc(),"/Event/Recon/RecTofTrackCol");
00124   if ( !tofTrackCol ) {
00125     log << MSG::INFO << "Could not find TofTrackCol" << endreq;
00126   }
00127   else {
00128     DstTofTrackCol* dstTofTrackCol = new DstTofTrackCol();
00129     RecTofTrackCol::iterator iter_tof = tofTrackCol->begin();
00130     for( ; iter_tof != tofTrackCol->end(); iter_tof++ ) {
00131       DstTofTrack* dstTofTrack = new DstTofTrack();
00132       *dstTofTrack = **iter_tof;
00133       (*dstTofTrackCol).push_back(dstTofTrack);
00134       
00135       log << MSG::INFO
00136           << "Tof Track ID = " << (*iter_tof)->tofTrackID()
00137           << " Track ID = " << (*iter_tof)->trackID()
00138           << " Tof Counter ID = "<<(*iter_tof)->tofID()
00139           << " Quality = "<< (*iter_tof)->quality()
00140           << endreq;    
00141     }
00142     sc = eventSvc()->registerObject(EventModel::Dst::DstTofTrackCol,dstTofTrackCol);
00143   }
00144 
00145 
00146   //Part 4: Retrieve Muc Track 
00147   SmartDataPtr<RecMucTrackCol> mucTrackCol(eventSvc(),"/Event/Recon/RecMucTrackCol");
00148   if (!mucTrackCol) {
00149     log <<MSG::INFO << "Could not find RecMucTrackCol" << endreq;
00150   } else {
00151     DstMucTrackCol* dstMucTrackCol = new DstMucTrackCol();
00152     RecMucTrackCol::iterator iter_muc = mucTrackCol->begin();
00153     trackID = 0;
00154     for (;iter_muc != mucTrackCol->end(); iter_muc++, trackID++) {
00155       DstMucTrack* dstMucTrack = new DstMucTrack();
00156       *dstMucTrack = **iter_muc;
00157       (*dstMucTrackCol).push_back(dstMucTrack);
00158       log<< MSG::INFO 
00159         << "Muc Track ID = " << trackID
00160         << " Muc NumHits  = " << (*iter_muc)->GetTotalHits()
00161         <<  " Muc Pos x = " <<  (*iter_muc)->getMucPos().x()
00162         <<  " Muc Pos y = " <<  (*iter_muc)->getMucPos().y()
00163         <<  " Muc Pos z = " <<  (*iter_muc)->getMucPos().z()
00164         << endreq;
00165     } 
00166     sc = eventSvc()->registerObject(EventModel::Dst::DstMucTrackCol,dstMucTrackCol);
00167   }
00168  
00169 
00170   //Part 5: Retrieve MdcDedx Track 
00171         
00172   SmartDataPtr<RecMdcDedxCol> mdcDedxCol(eventSvc(),"/Event/Recon/RecMdcDedxCol");
00173   if (!mdcDedxCol) {
00174     log <<MSG::INFO << "Could not find RecMdcDedxCol" << endreq;
00175   } else {
00176   trackID = 0;
00177   DstMdcDedxCol* dstMdcDedxCol = new DstMdcDedxCol();
00178   RecMdcDedxCol::iterator iter_dedx = mdcDedxCol->begin();
00179   for (;iter_dedx != mdcDedxCol->end(); iter_dedx++, trackID++) {
00180      DstMdcDedx* dstMdcDedx = new DstMdcDedx();
00181      *dstMdcDedx = **iter_dedx;
00182      (*dstMdcDedxCol).push_back(dstMdcDedx);
00183         log << MSG::INFO 
00184             << " Dedx TrackID = "<< trackID
00185       //      << " Num Sigma E = " << (*iter_dedx)->getSigmaDedx(1)
00186       //     << " Num Sigma Mu = " << (*iter_dedx)->getSigmaDedx(2)
00187             << endreq;    
00188   }
00189   sc = eventSvc()->registerObject(EventModel::Dst::DstMdcDedxCol,dstMdcDedxCol);
00190   }
00191 
00192 
00193 
00194   //Part 6: Retrieve Emc shower 
00195         
00196   SmartDataPtr<RecEmcShowerCol> emcRecShowerCol(eventSvc(),"/Event/Recon/RecEmcShowerCol");
00197   if (!emcRecShowerCol) {
00198     log <</* MSG::FATAL*/MSG::INFO << "Could not find RecEmcShowerCol" << endreq;
00199    // return( StatusCode::FAILURE);
00200   }
00201   else {
00202   trackID = 0;
00203   DstEmcShowerCol* dstEmcTrackCol = new DstEmcShowerCol();
00204   RecEmcShowerCol::iterator iter_emc = emcRecShowerCol->begin();
00205   for (;iter_emc != emcRecShowerCol->end(); iter_emc++, trackID++) {
00206     DstEmcShower* dstEmcTrack = new DstEmcShower(*(*iter_emc));
00207     (*dstEmcTrackCol).push_back(dstEmcTrack);
00208     log << MSG::INFO 
00209       << " Emc Track Id =  " << trackID
00210       //<< " Emc Shower Cell Id = " << (*iter_emc)->ShowerId()
00211       << endreq;
00212   }
00213   sc = eventSvc()->registerObject(EventModel::Dst::DstEmcShowerCol,dstEmcTrackCol);
00214  }
00215 
00216  //Part 7: Retrieve Ext shower 
00217         
00218   SmartDataPtr<RecExtTrackCol> extTrackCol(eventSvc(),"/Event/Recon/RecExtTrackCol");
00219   if (!extTrackCol) {
00220     log <</* MSG::FATAL*/MSG::INFO << "Could not find RecExtTrackCol" << endreq;
00221     //return( StatusCode::FAILURE);
00222   }
00223   else {
00224   trackID = 0;
00225   DstExtTrackCol* dstExtTrackCol = new DstExtTrackCol();
00226   RecExtTrackCol::iterator iter_ext = extTrackCol->begin();
00227   for (;iter_ext != extTrackCol->end(); iter_ext++, trackID++) {
00228     DstExtTrack* dstExtTrack = new DstExtTrack();
00229     *dstExtTrack = **iter_ext;
00230     (*dstExtTrackCol).push_back(dstExtTrack);
00231           log << MSG::INFO 
00232               << " Ext Track Id =  " << trackID
00233               << "volume name of Tof1 : " << (*iter_ext)->tof1VolumeName()
00234               <<" Ext Tof1 Error Z = " <<  (*iter_ext)->tof1PosSigmaAlongZ()
00235             <<" Ext Tof2 Error Z = " <<  (*iter_ext)->tof2PosSigmaAlongZ()
00236               <<" Ext Emc Error theta = " <<  (*iter_ext)->emcPosSigmaAlongTheta()
00237               <<" Ext Muc Error Z = " <<  (*iter_ext)->mucPosSigmaAlongZ()
00238         << endreq;    
00239   }
00240 
00241   sc = eventSvc()->registerObject(EventModel::Dst::DstExtTrackCol,dstExtTrackCol);
00242   }
00243   //Part 8: Retrieve MdcKal track 
00244         
00245   SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol(eventSvc(),"/Event/Recon/RecMdcKalTrackCol");
00246   if (!mdcKalTrackCol) {
00247     log <</* MSG::FATAL*/  MSG::INFO<< "Could not find MdcKalTrackCol" << endreq;
00248     //return( StatusCode::FAILURE);
00249   }
00250  else {
00251    trackID = 0;
00252    int   nhits[5];
00253    int   stat[2][5];
00254    float chisq[2][5];
00255    int   ndf[2][5];
00256    int   nster[2][5];
00257    int   fL[2][5];
00258    int   lL[2][5];
00259 
00260    DstMdcKalTrackCol* dstMdcKalTrackCol = new DstMdcKalTrackCol();
00261    RecMdcKalTrackCol::iterator iter_kal = mdcKalTrackCol->begin();
00262    for (;iter_kal != mdcKalTrackCol->end(); iter_kal++, trackID++) {
00263      DstMdcKalTrack* dstMdcKalTrack = new DstMdcKalTrack();
00264      *dstMdcKalTrack = **iter_kal;
00265 
00266      /*
00267      for (int i=0; i<5; i++){
00268        nhits[i] = (*iter_kal)->getNhits(i);
00269        stat[i]  =  (*iter_kal)->getStat(0,i);
00270        chisq[i] = (*iter_kal)->getChisq(0,i);
00271        ndf[i]   = (*iter_kal)->getNdf(0,i);
00272        nster[i]   = (*iter_kal)->getNster(0,i);
00273        fL[i]  = (*iter_kal)->getFirstLayer(0,i);
00274        lL[i]  = (*iter_kal)->getLastLayer(0,i);
00275   
00276        dstMdcKalTrack->setNhits(nhits[i],i);
00277        dstMdcKalTrack->setStat(stat[i],i);
00278        dstMdcKalTrack->setChisq(chisq[i],i);
00279        dstMdcKalTrack->setNdf(ndf[i],i);
00280        dstMdcKalTrack->setNster(nster[i],i);
00281        dstMdcKalTrack->setFirstLayer(fL[i],i);
00282        dstMdcKalTrack->setLastLayer(lL[i],i);
00283      }
00284      dstMdcKalTrack->setTrackId((*iter_kal)->getTrackId());
00285      
00286      for(int j=0; j<5; j++){
00287        dstMdcKalTrack->setPoca((*iter_kal)->getPoca(j),j);
00288        dstMdcKalTrack->setZHelix((*iter_kal)->getZHelix(j),j);
00289        dstMdcKalTrack->setZError((*iter_kal)->getZError(j),j);
00290      }
00291 
00292      */
00293      
00294      (*dstMdcKalTrackCol).push_back(dstMdcKalTrack);
00295  
00296      log<<MSG::INFO<<" * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endreq;
00297      for(int i =0 ; i < 5; i++){
00298        log << MSG::INFO<<"dstMdcKalTrack ZHelix["<<i<<"] = " <<dstMdcKalTrack->getZHelix(i) <<endreq;
00299        log << MSG::INFO << "number of total hits contained ["<<i<<"]"<<nhits[i]<<endreq;
00300        log << MSG::INFO<< "status flag ["<<i<<"]"<<stat[i]<<endreq;
00301        log << MSG::INFO<< "dstMdcKalTrack ZError ["<<i<<"]"<<dstMdcKalTrack->getZError(i)<<endreq;
00302        log << MSG::INFO<< "dstMdcKalTrack Poca ["<<i<<"]"<<dstMdcKalTrack->getPoca(i)<<endreq;
00303      } 
00304    } 
00305      sc = eventSvc()->registerObject(EventModel::Dst::DstMdcKalTrackCol, dstMdcKalTrackCol);    
00306   }
00307 
00308   return sc;
00309 }

StatusCode DstEventMaker::finalize (  ) 

Definition at line 312 of file DstEventMaker.cxx.

References Bes_Common::INFO, and msgSvc().

00312                                    {
00313 
00314   MsgStream log(msgSvc(), name());
00315   log << MSG::INFO << "in finalize()" << endreq;
00316 
00317   return StatusCode::SUCCESS;
00318 }

StatusCode DstEventMaker::initialize (  ) 

Definition at line 64 of file DstEventMaker.cxx.

References Bes_Common::INFO, and msgSvc().

00064                                     {
00065 
00066   MsgStream log(msgSvc(), name());
00067   log << MSG::INFO << "in initialize()" << endreq;
00068 
00069   return StatusCode::SUCCESS;
00070 }


Generated on Tue Nov 29 23:18:31 2016 for BOSS_7.0.2 by  doxygen 1.4.7