MdcPrintSvc Class Reference

#include <MdcPrintSvc.h>

Inheritance diagram for MdcPrintSvc:

IMdcPrintSvc List of all members.

Public Member Functions

 MdcPrintSvc (const std::string &name, ISvcLocator *svcloc)
 ~MdcPrintSvc ()
StatusCode initialize ()
StatusCode finalize ()
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvUnknown)
void printRecMdcTrackCol () const
void printRecMdcTrack (const RecMdcTrack *tk) const
void printDigi (uint32_t getDigiFlag=0) const
void printMdcMcHitCol () const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Private Attributes

IDataProviderSvc * eventSvc
RawDataProviderSvcm_rawDataProviderSvc
bool m_printMcTk
bool m_printHit
bool m_printTrackDetail
bool m_printErrMat
bool m_printTdcAdc

Detailed Description

Definition at line 21 of file MdcPrintSvc.h.


Constructor & Destructor Documentation

MdcPrintSvc::MdcPrintSvc ( const std::string name,
ISvcLocator *  svcloc 
)

MdcPrintSvc::~MdcPrintSvc (  ) 

Definition at line 41 of file MdcPrintSvc.cxx.

00041                          {
00042 }


Member Function Documentation

StatusCode MdcPrintSvc::finalize (  ) 

Definition at line 70 of file MdcPrintSvc.cxx.

References Bes_Common::INFO.

00070                                 {
00071   MsgStream log(messageService(), name());
00072   log << MSG::INFO << "MdcPrintSvc::finalize()" << endreq;
00073 
00074   return StatusCode::SUCCESS;
00075 }

StatusCode MdcPrintSvc::initialize (  ) 

Definition at line 44 of file MdcPrintSvc.cxx.

References eventSvc, Bes_Common::FATAL, Bes_Common::INFO, and m_rawDataProviderSvc.

00044                                   {
00045   MsgStream log(messageService(), name());
00046   log << MSG::INFO << "MdcPrintSvc::initialize()" << endreq;
00047 
00048   StatusCode sc = Service::initialize();
00049   if( sc.isFailure() ) return sc;
00050 
00051   ISvcLocator* svcLocator = Gaudi::svcLocator();
00052   svcLocator->service("EventDataSvc",eventSvc,true);
00053   if (NULL == eventSvc){
00054     std::cout << "ERROR Could not load service DataSvc" << std::endl;
00055     return StatusCode::FAILURE;
00056   }
00057 
00058   IRawDataProviderSvc* irawDataProviderSvc;
00059   sc = service ("RawDataProviderSvc", irawDataProviderSvc);
00060   m_rawDataProviderSvc = dynamic_cast<RawDataProviderSvc*> (irawDataProviderSvc);
00061   if ( sc.isFailure() ){
00062     log << MSG::FATAL << "Could not load RawDataProviderSvc!" << endreq;
00063     return StatusCode::FAILURE;
00064   }
00065 
00066 
00067   return StatusCode::SUCCESS;
00068 }

static const InterfaceID& IMdcPrintSvc::interfaceID (  )  [inline, static, inherited]

Definition at line 18 of file IMdcPrintSvc.h.

References IID_IMdcPrintSvc().

00018 { return IID_IMdcPrintSvc; }

void MdcPrintSvc::printDigi ( uint32_t  getDigiFlag = 0  )  const [virtual]

Implements IMdcPrintSvc.

Definition at line 86 of file MdcPrintSvc.cxx.

References RawDataProviderSvc::getMdcDigiVec(), iter(), MdcID::layer(), m_printMcTk, m_printTdcAdc, m_rawDataProviderSvc, RawDataUtil::MdcCharge(), RawDataUtil::MdcTime(), w, and MdcID::wire().

00086                                                     {
00087   MdcDigiVec mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec(getDigiFlag);
00088   MdcDigiCol::iterator iter = mdcDigiVec.begin();
00089   std::cout<<"//==== "<<name()<<" print MdcDigiVec, nDigi="<<mdcDigiVec.size()<<" :"<<std::endl;
00090   for (int iDigi=0;iter!= mdcDigiVec.end(); iter++,iDigi++ ) {
00091     long l = MdcID::layer((*iter)->identify());
00092     long w = MdcID::wire((*iter)->identify());
00093     cout<<"("<<l<<","<<w;
00094     if(m_printMcTk) {
00095       int tkTruth = (*iter)->getTrackIndex();
00096       cout<<";"<<tkTruth;
00097     }
00098     if(m_printTdcAdc) {
00099       double tdc = RawDataUtil::MdcTime((*iter)->getTimeChannel());
00100       double adc = RawDataUtil::MdcCharge((*iter)->getChargeChannel());
00101       cout<<",t "<<tdc<<",c "<<adc;
00102     }
00103     cout<<")";
00104     if(iDigi%4==0) std::cout<<std::endl;
00105   }
00106   std::cout<<std::endl;
00107 }

void MdcPrintSvc::printMdcMcHitCol (  )  const [virtual]

Implements IMdcPrintSvc.

Definition at line 200 of file MdcPrintSvc.cxx.

References eventSvc, MdcID::layer(), Bes_Common::WARNING, and MdcID::wire().

00200                                        {
00201   MsgStream log(messageService(), name());
00202 
00203   SmartDataPtr<MdcMcHitCol> mdcMcHitCol(eventSvc,"/Event/MC/MdcMcHitCol");
00204   if (!mdcMcHitCol) {
00205     log << MSG::WARNING << "Could not find MdcMcHitCol" << endreq;
00206     return;
00207   }
00208 
00209   int ihit= 0;
00210   cout<<  "//==== "<<name()<<" print MdcMcHitCol nMcHit="<<mdcMcHitCol->size()<< endl;
00211   if (mdcMcHitCol->size()>0){
00212     cout<<"No. (layer,wire) mcTk  (x,y,z)   lr  driftdist(cm)  energy"<<endl;
00213   }
00214   MdcMcHitCol::iterator iter_mchit = mdcMcHitCol->begin();
00215   for (;iter_mchit != mdcMcHitCol->end(); iter_mchit++,ihit++ ) {
00216     const Identifier id= (*iter_mchit)->identify();
00217     int layer = MdcID::layer(id);
00218     int wire = MdcID::wire(id);
00219     int iMcTk =  (*iter_mchit)->getTrackIndex();
00220     double mcX = (*iter_mchit)->getPositionX()/10.;
00221     double mcY = (*iter_mchit)->getPositionY()/10.;
00222     double mcZ = (*iter_mchit)->getPositionZ()/10.;
00223     double mcLR = (*iter_mchit)->getPositionFlag();
00224     double mcDrift = (*iter_mchit)->getDriftDistance()/10.;
00225     double mcEnergy = (*iter_mchit)->getDepositEnergy()/10.;
00226     if (mcLR == 0) mcLR = -1;
00227     cout<<ihit <<" ("<<layer<<","<<wire<<") "<< iMcTk
00228       <<" ("<< mcX<<"," <<mcY<<","<< mcZ
00229       <<")  " <<mcLR
00230       <<"  " <<mcDrift
00231       <<"  " <<mcEnergy
00232       <<endl;
00233   }
00234 }

void MdcPrintSvc::printRecMdcTrack ( const RecMdcTrack tk  )  const [virtual]

Implements IMdcPrintSvc.

Definition at line 126 of file MdcPrintSvc.cxx.

References DstMdcTrack::charge(), DstMdcTrack::chi2(), DstMdcTrack::err(), RawDataProviderSvc::getMdcDigiVec(), RecMdcTrack::getNhits(), RecMdcTrack::getVecHits(), DstMdcTrack::helix(), genRecEmupikp::i, iter(), MdcID::layer(), m_printErrMat, m_printHit, m_printMcTk, m_printTrackDetail, m_rawDataProviderSvc, DstMdcTrack::ndof(), DstMdcTrack::nster(), DstMdcTrack::p(), DstMdcTrack::phi(), DstMdcTrack::px(), DstMdcTrack::pxy(), DstMdcTrack::py(), DstMdcTrack::pz(), DstMdcTrack::r(), DstMdcTrack::stat(), DstMdcTrack::theta(), DstMdcTrack::trackId(), w, MdcID::wire(), DstMdcTrack::x(), DstMdcTrack::y(), and DstMdcTrack::z().

Referenced by printRecMdcTrackCol().

00126                                                             {
00127   std::cout<< "//==== "<<name()<<" print RecMdcTrack No."<<tk->trackId()<<" :"<< std::endl;
00128   cout <<" dr "<<tk->helix(0)
00129     <<" phi0 "<<tk->helix(1)
00130     <<" cpa "<<tk->helix(2)
00131     <<" z0 "<<tk->helix(3)
00132     <<" tanl "<<tk->helix(4)
00133     <<endl;
00134   if(m_printTrackDetail){
00135     std::cout<<" q "<<tk->charge() 
00136       <<" theta "<<tk->theta()
00137       <<" phi "<<tk->phi()
00138       <<" x0 "<<tk->x()
00139       <<" y0 "<<tk->y()
00140       <<" z0 "<<tk->z()
00141       <<" r0 "<<tk->r()
00142       <<endl;
00143     std::cout <<" p "<<tk->p()
00144       <<" pt "<<tk->pxy()
00145       <<" pxyz("<<tk->px()
00146       <<","<<tk->py()
00147       <<","<<tk->pz()
00148       <<")"<<endl;
00149     std::cout<<" tkStat "<<tk->stat()
00150       <<" chi2 "<<tk->chi2()
00151       <<" ndof "<<tk->ndof()
00152       <<" nhit "<<tk->getNhits()
00153       <<" nst "<<tk->nster()
00154       <<endl;
00155     if(m_printErrMat){
00156       std::cout<< "errmat   " << std::endl;
00157       for (int i=0; i<15; i++){ std::cout<< " "<<tk->err(i); }
00158       std::cout<< "   " << std::endl;
00159     }
00160   }
00161 
00162   if(m_printHit){
00163     int haveDigi[43][288];
00164     if(m_printMcTk) {
00165       for(int ii=0;ii<43;ii++){
00166         for(int jj=0;jj<43;jj++){
00167           haveDigi[ii][jj]=-9999;
00168         }
00169       }
00170       MdcDigiVec mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec();
00171       MdcDigiCol::iterator iter = mdcDigiVec.begin();
00172       std::cout<<name()<<"//==== "<<name()<<" print MdcDigiVec, nDigi="<<mdcDigiVec.size()<<" :"<<std::endl;
00173       for (int iDigi=0;iter!= mdcDigiVec.end(); iter++,iDigi++ ) {
00174         long l = MdcID::layer((*iter)->identify());
00175         long w = MdcID::wire((*iter)->identify());
00176         haveDigi[l][w]=(*iter)->getTrackIndex();
00177       }
00178     }
00179 
00180     int nhits = tk->getVecHits().size();
00181     std::cout<<"nHits=" <<nhits<< std::endl;
00182     cout<<"No. ";
00183     if(m_printMcTk) cout<<"mcTkId ";
00184     cout<<"(layer,wire,lr) stat z"<<endl;
00185     for(int ii=0; ii <nhits ; ii++){
00186       Identifier id(tk->getVecHits()[ii]->getMdcId());
00187       int layer = MdcID::layer(id);
00188       int wire = MdcID::wire(id);
00189       cout<<ii<<":";
00190       if(m_printMcTk) { cout<<haveDigi[layer][wire]; }
00191       cout<<" ("<<layer<<","<<wire
00192         <<","<<tk->getVecHits()[ii]->getFlagLR()
00193         <<")  "<<tk->getVecHits()[ii]->getStat()
00194         <<"  "<<tk->getVecHits()[ii]->getZhit()<< " "<<std::endl;
00195     }//end of hit list
00196     std::cout << "  "<< std::endl;
00197   }
00198 }

void MdcPrintSvc::printRecMdcTrackCol (  )  const

Definition at line 109 of file MdcPrintSvc.cxx.

References eventSvc, printRecMdcTrack(), and Bes_Common::WARNING.

Referenced by MdcxCosmicSewer::execute(), MdcTrkRecon::execute(), and HoughValidUpdate::execute().

00109                                           {
00110   MsgStream log(messageService(), name());
00111 
00112   SmartDataPtr<RecMdcTrackCol> recMdcTrackCol(eventSvc,"/Event/Recon/RecMdcTrackCol");
00113   if (!recMdcTrackCol) {
00114     log << MSG::WARNING << "Could not find RecMdcTrackCol" << endreq;
00115     return;
00116   }    
00117 
00118   std::cout<< "//======= "<<name()<<" RecMdcTrackCol size = "<<recMdcTrackCol->size() << std::endl;
00119   RecMdcTrackCol::iterator it = recMdcTrackCol->begin();
00120   for (;it!= recMdcTrackCol->end();it++){
00121     printRecMdcTrack(*it);
00122   }
00123 
00124 }

StatusCode MdcPrintSvc::queryInterface ( const InterfaceID &  riid,
void **  ppvUnknown 
) [virtual]

Definition at line 77 of file MdcPrintSvc.cxx.

References IID_IMdcPrintSvc().

00077                                                                                   {
00078   if( IID_IMdcPrintSvc.versionMatch(riid) ){
00079     *ppvInterface = static_cast<IMdcPrintSvc*> (this);
00080   } else{
00081     return Service::queryInterface(riid, ppvInterface);
00082   }
00083   return StatusCode::SUCCESS;
00084 }


Member Data Documentation

IDataProviderSvc* MdcPrintSvc::eventSvc [private]

Definition at line 37 of file MdcPrintSvc.h.

Referenced by initialize(), printMdcMcHitCol(), and printRecMdcTrackCol().

bool MdcPrintSvc::m_printErrMat [private]

Definition at line 42 of file MdcPrintSvc.h.

Referenced by printRecMdcTrack().

bool MdcPrintSvc::m_printHit [private]

Definition at line 40 of file MdcPrintSvc.h.

Referenced by printRecMdcTrack().

bool MdcPrintSvc::m_printMcTk [private]

Definition at line 39 of file MdcPrintSvc.h.

Referenced by printDigi(), and printRecMdcTrack().

bool MdcPrintSvc::m_printTdcAdc [private]

Definition at line 43 of file MdcPrintSvc.h.

Referenced by printDigi().

bool MdcPrintSvc::m_printTrackDetail [private]

Definition at line 41 of file MdcPrintSvc.h.

Referenced by printRecMdcTrack().

RawDataProviderSvc* MdcPrintSvc::m_rawDataProviderSvc [private]

Definition at line 38 of file MdcPrintSvc.h.

Referenced by initialize(), printDigi(), and printRecMdcTrack().


Generated on Tue Nov 29 23:20:15 2016 for BOSS_7.0.2 by  doxygen 1.4.7