/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Validation/ValidRecMdcTrack/ValidRecMdcTrack-00-00-02/src/ValidRecMdcTrackAlg.cxx

Go to the documentation of this file.
00001 #include "ValidRecMdcTrack/ValidRecMdcTrackAlg.h"
00002 #include "GaudiKernel/MsgStream.h"
00003 #include "GaudiKernel/SmartDataPtr.h"
00004 #include "GaudiKernel/IHistogramSvc.h"
00005 #include "GaudiKernel/NTuple.h"
00006 #include "EventModel/EventHeader.h"
00007 //#include "ReconEvent/ReconEvent.h"
00008 
00009 
00010 #include "MdcRecEvent/RecMdcTrack.h"
00011 #include "Identifier/MdcID.h"
00012 
00013 using namespace Event;
00014 
00015 
00016 ValidRecMdcTrackAlg::ValidRecMdcTrackAlg(const std::string& name, ISvcLocator* pSvcLocator) :
00017    Algorithm(name, pSvcLocator) {
00018    
00019     
00020     
00021    // m_tuple1 = 0;
00022    // m_tuple2 = 0;
00023     
00024 
00025 }
00026 
00027 StatusCode ValidRecMdcTrackAlg::initialize(){
00028    MsgStream log( msgSvc(), name() );
00029    log << MSG::INFO << "Booking Histograms" << endreq;
00030 
00031 
00032    NTuplePtr nt1(ntupleSvc(),"FILE101/mdcTrack");
00033    if( nt1 ) m_tuple1 = nt1;
00034    else{
00035          m_tuple1 = ntupleSvc()->book("FILE101/mdcTrack",CLID_RowWiseTuple,"ValidRecMdcTrackNTuple1");
00036 
00037          if( m_tuple1 ) {
00038              m_tuple1->addItem ("eventNo",g_eventNo);
00039              m_tuple1->addItem ("runNo", g_runNo);
00040              m_tuple1->addItem("nhits",g_hits);
00041              m_tuple1->addItem ("Id",g_track_id);
00042              m_tuple1->addItem ("Phi0",g_phi0);
00043              m_tuple1->addItem ("Cpa",g_kappa);
00044              m_tuple1->addItem ("Tanl",g_tanl);
00045              m_tuple1->addItem ("p",g_p);
00046 
00047              m_tuple1->addItem ("Dr",g_dr);
00048              m_tuple1->addItem ("Dz",g_dz);
00049              m_tuple1->addItem ("Chisq",g_chisq_of_fit);
00050              m_tuple1->addItem ("FiTerm",g_phi_terminal);
00051              m_tuple1->addItem ("Nhits",g_number_of_hits);
00052              m_tuple1->addItem ("Nster",g_number_of_stereo_hits);
00053     
00054              m_tuple1->addItem ("px",g_px);
00055              m_tuple1->addItem ("py",g_py);
00056              m_tuple1->addItem ("pz",g_pz);
00057              m_tuple1->addItem ("pxy",g_pxy);
00058              m_tuple1->addItem ("charge",g_charge);             
00059              m_tuple1->addItem ("stat",g_stat);
00060              m_tuple1->addItem ("x",g_x);
00061              m_tuple1->addItem ("y",g_y);
00062              m_tuple1->addItem ("z",g_z);
00063              m_tuple1->addItem ("r",g_r);
00064              m_tuple1->addItem ("chi2",g_chi2);
00065              m_tuple1->addItem ("ndof",g_ndof);
00066              m_tuple1->addItem ("firstLayer",g_firstLayer);
00067              m_tuple1->addItem ("lastLayer",g_lastLayer);
00068              m_tuple1->addItem ("theta",g_theta);
00069              m_tuple1->addItem ("phi",g_phi);    
00070 
00071          } else { 
00072                  log << MSG::ERROR << "----- Cannot book or register histograms -----" << endreq;
00073                  return StatusCode::FAILURE;
00074          }
00075    }
00076    NTuplePtr nt2(ntupleSvc(),"FILE101/mdcHit");
00077    if( nt2 ) m_tuple2 = nt2;
00078    else{
00079          m_tuple2 = ntupleSvc()->book("FILE101/mdcHit",CLID_RowWiseTuple,"ValidRecMdcHitNTuple1");
00080 
00081          if( m_tuple2 ) {
00082              m_tuple2->addItem ("Hits_id",g_hits_id);
00083              m_tuple2->addItem ("Hits_ddl",g_hits_ddl);
00084              m_tuple2->addItem ("Hits_ddr",g_hits_ddr);
00085 
00086              m_tuple2->addItem ("doca",g_doca);
00087              m_tuple2->addItem ("Hits_mdc_id",g_hits_mdc_id);
00088              m_tuple2->addItem ("layer", g_layer);
00089              m_tuple2->addItem ("wire",  g_wire );
00090 
00091              m_tuple2->addItem ("Hits_tdc",g_hits_tdc);
00092              m_tuple2->addItem ("Hits_adc",g_hits_adc);
00093          } else { 
00094                  log << MSG::ERROR << "----- Cannot book or register histograms -----" << endreq;
00095                  return StatusCode::FAILURE;
00096          }
00097    }
00098   
00099     log << MSG::INFO << "Finished booking Histograms" << endreq;
00100     return StatusCode::SUCCESS;
00101 
00102 /*
00103   
00104    NTuplePtr nt2(ntupleSvc(),"FILE101/mdcHit");
00105    if( nt2 ) m_tuple2 = nt2;
00106    else{
00107          m_tuple2 = ntupleSvc()->book("FILE101/mdcHit",CLID_ColumnWiseTuple,"ValidRecMdcTrackNTuple2");
00108 
00109          if( m_tuple2 ) {
00110              m_tuple1->addItem ("eventNo",g_eventNo);
00111              m_tuple1->addItem ("runNo", g_runNo);
00112              m_tuple1->addItem("nhits",g_hits,0,5000);
00113              m_tuple1->addItem ("Id",g_track_id);
00114              m_tuple1->addItem ("Phi0",g_phi0);
00115              m_tuple1->addItem ("Cpa",g_kappa);
00116              m_tuple1->addItem ("Tanl",g_tanl);
00117              m_tuple1->addItem ("p",g_p);
00118 
00119              m_tuple1->addItem ("Dr",g_dr);
00120              m_tuple1->addItem ("Dz",g_dz);
00121              m_tuple1->addItem ("Chisq",g_chisq_of_fit);
00122              m_tuple1->addItem ("FiTerm",g_phi_terminal);
00123              m_tuple1->addItem ("Nhits",g_number_of_hits);
00124              m_tuple1->addItem ("Nster",g_number_of_stereo_hits);
00125 
00126              m_tuple2->addItem ("Hits_id",g_hits_id);
00127              m_tuple2->addItem ("Hits_ddl",g_hits_ddl);
00128              m_tuple2->addItem ("Hits_ddr",g_hits_ddr);
00129 
00130              m_tuple2->addItem ("doca",g_doca);
00131              m_tuple2->addItem ("Hits_mdc_id",g_hits_mdc_id);
00132              m_tuple2->addItem ("layer",g_layer);
00133              m_tuple2->addItem ("wire",g_wire );
00134 
00135              m_tuple2->addItem ("Hits_tdc",g_hits_tdc);
00136              m_tuple2->addItem ("Hits_adc",g_hits_adc);
00137      }
00138      else { 
00139     log << MSG::ERROR << "----- Cannot book or register histograms -----" << endreq;
00140     return StatusCode::FAILURE;
00141       }
00142 
00143     log << MSG::INFO << "Finished booking Histograms" << endreq;
00144     return StatusCode::SUCCESS;
00145 
00146   }*/
00147 
00148  }
00149 
00150 StatusCode ValidRecMdcTrackAlg::execute() {
00151    MsgStream log(msgSvc(), name());
00152 
00153 
00154    int ntrk=0;
00155   
00156     SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00157     if (!eventHeader) {
00158       log << MSG::FATAL << "Could not find Event Header" << endreq;
00159      return( StatusCode::SUCCESS);
00160       }
00161 
00162     log << MSG::INFO << "retrieved event: " << eventHeader->eventNumber()  << "  run: " <<  eventHeader->runNumber() << endreq;
00163     int eventNo=eventHeader->eventNumber();
00164     int runNo=eventHeader->runNumber();
00165     if(m_tuple1){
00166       g_eventNo = eventNo; 
00167       g_runNo = runNo; 
00168     }
00169 
00170    SmartDataPtr<RecMdcTrackCol> mdcTracks(eventSvc(),"/Event/Recon/RecMdcTrackCol");
00171    if( ! mdcTracks )
00172       {
00173          log << MSG::ERROR << "Unable to retrieve RecMdcTrackCol" << endreq;
00174          return  StatusCode::FAILURE;
00175       } else {
00176          log << MSG::DEBUG << "RecMdcTrackCol retrieved of size "<< mdcTracks->size() << endreq;
00177          for(RecMdcTrackCol::iterator it=mdcTracks->begin(); it!=mdcTracks->end(); it++)
00178             {  
00179 
00180 /*               g_hits=0;
00181 
00182                HitRefVec gothits = (*it)->getVecHits();
00183                HitRefVec::iterator it_gothit = gothits.begin();
00184                for( ; it_gothit != gothits.end(); it_gothit++){
00185                  g_hits_id  = (*it_gothit)->getId();
00186                  g_hits_ddl = (*it_gothit)->getDriftDistLeft();
00187                  g_hits_ddr = (*it_gothit)->getDriftDistRight();
00188                  g_doca        = (*it_gothit)->getDoca();
00189                  g_hits_mdc_id = (*it_gothit)->getMdcId();
00190                  g_layer       = MdcID::layer((*it_gothit)->getMdcId());
00191                  g_wire        = MdcID::wire((*it_gothit)->getMdcId());
00192 
00193 
00194 
00195                  g_hits_tdc    = (*it_gothit)->getTdc();
00196                  g_hits_adc    = (*it_gothit)->getAdc();
00197 
00198                  g_hits++;
00199                  m_tuple2->write();
00200            }*/
00201 
00202                g_track_id       = (*it)->trackId();
00203                g_phi0           = (*it)->helix()[1];
00204                g_kappa          = (*it)->helix()[2];
00205                g_tanl           = (*it)->helix()[4];
00206     
00207                g_dr             = (*it)->helix()[0];
00208                g_dz             = (*it)->helix()[3];
00209                g_chisq_of_fit   = (*it)->chi2();
00210                g_phi_terminal   = (*it)->getFiTerm();
00211                g_number_of_hits = (*it)->getNhits();
00212                g_number_of_stereo_hits=(*it)->nster();
00213                g_p              = (*it)->p();
00214 
00215                g_px             = (*it)->px();
00216                g_py             = (*it)->py();
00217                g_pz             = (*it)->pz();
00218                g_pxy            = (*it)->pxy();
00219                g_charge         = (*it)->charge();
00220                g_stat           = (*it)->stat();
00221                g_x              = (*it)->x();
00222                g_y              = (*it)->y();
00223                g_z              = (*it)->z();
00224                g_r              = (*it)->r();
00225                g_chi2           = (*it)->chi2();
00226                g_ndof           = (*it)->ndof();
00227                g_firstLayer     = (*it)->firstLayer();
00228                g_lastLayer      = (*it)->lastLayer();             
00229                
00230                
00231                g_hits=0;
00232                HitRefVec gothits = (*it)->getVecHits();
00233                HitRefVec::iterator it_gothit = gothits.begin();
00234                for( ; it_gothit != gothits.end(); it_gothit++){
00235                  g_hits_id  = (*it_gothit)->getId();
00236                  
00237                  g_hits_ddl = (*it_gothit)->getDriftDistLeft();
00238                  g_hits_ddr = (*it_gothit)->getDriftDistRight();
00239 
00240                  g_doca        = (*it_gothit)->getDoca();
00241                  g_hits_mdc_id = (*it_gothit)->getMdcId();
00242                  g_layer       = MdcID::layer((*it_gothit)->getMdcId());
00243                  g_wire        = MdcID::wire((*it_gothit)->getMdcId());
00244                
00245                
00246               
00247 
00248                  g_hits_tdc    = (*it_gothit)->getTdc();
00249                  g_hits_adc    = (*it_gothit)->getAdc();
00250 
00251                  g_hits++;
00252                  m_tuple2->write(); 
00253            } 
00254 
00255            m_tuple1->write(); 
00256               
00257 
00258             
00259              
00260               
00261 
00262              
00263 
00264           
00265        
00266             
00267       }
00268      
00269    }
00270    return StatusCode::SUCCESS;
00271 }
00272 
00273 
00274 StatusCode ValidRecMdcTrackAlg::finalize() {
00275 
00276    MsgStream log(msgSvc(), name());
00277    log << MSG::INFO << "Finalizing..." << endreq;
00278    return StatusCode::SUCCESS;
00279 
00280 }
00281 
00282 
00283 

Generated on Tue Nov 29 23:14:46 2016 for BOSS_7.0.2 by  doxygen 1.4.7