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

TofRec Class Reference

#include <TofRec.h>

List of all members.

Public Member Functions

StatusCode beginRun ()
StatusCode beginRun ()
void clearTofTrackVec (std::vector< TofTrack * > *&tofTrackVec)
void clearTofTrackVec (std::vector< TofTrack * > *&tofTrackVec)
StatusCode execute ()
StatusCode execute ()
StatusCode finalize ()
StatusCode finalize ()
StatusCode initialize ()
StatusCode initialize ()
 TofRec (const std::string &name, ISvcLocator *pSvcLocator)
 TofRec (const std::string &name, ISvcLocator *pSvcLocator)

Private Attributes

std::string m_acceleratorStatus
std::string m_calibData
TofCheckDatam_checkdata_tuple
TofCheckDatam_checkdata_tuple
bool m_checkDigi
TofCheckDigim_checkdigi_tuple
TofCheckDigim_checkdigi_tuple
bool m_checkDigiExt
bool m_checkDigiRaw
bool m_checkMcTruth
bool m_checkTrigger
std::string m_data
bool m_firstIteration
bool m_forCalibration
bool m_magneticField
TofCountm_printOut
TofCountm_printOut
bool m_printOutInfo
bool m_saveRootFile
NTuple::Tuple * m_tuple_barrel
NTuple::Tuple * m_tuple_barrel
NTuple::Tuple * m_tuple_bb
NTuple::Tuple * m_tuple_bb
NTuple::Tuple * m_tuple_cbtrk
NTuple::Tuple * m_tuple_cbtrk
NTuple::Tuple * m_tuple_cetrk
NTuple::Tuple * m_tuple_cetrk
NTuple::Tuple * m_tuple_digi
NTuple::Tuple * m_tuple_digi
NTuple::Tuple * m_tuple_endcap
NTuple::Tuple * m_tuple_endcap
NTuple::Tuple * m_tuple_ext
NTuple::Tuple * m_tuple_ext
NTuple::Tuple * m_tuple_raw
NTuple::Tuple * m_tuple_raw
NTuple::Tuple * m_tuple_tdiff
NTuple::Tuple * m_tuple_tdiff
NTuple::Tuple * m_tuple_tof
NTuple::Tuple * m_tuple_tof
NTuple::Tuple * m_tuple_trk
NTuple::Tuple * m_tuple_trk


Constructor & Destructor Documentation

TofRec::TofRec const std::string &  name,
ISvcLocator *  pSvcLocator
 

00049                                                               :
00050   Algorithm(name, pSvcLocator)
00051 {   
00052   declareProperty( "AcceleratorStatus", m_acceleratorStatus );
00053   declareProperty( "MagneticField",     m_magneticField     );
00054   declareProperty( "ForCalibration",    m_forCalibration    );
00055   declareProperty( "Data",              m_data              );
00056   declareProperty( "CalibData",         m_calibData         );
00057   declareProperty( "FirstIteration",    m_firstIteration    );
00058   declareProperty( "CheckTrigger",      m_checkTrigger      );
00059   declareProperty( "SaveRootFile4Rec",  m_saveRootFile      );
00060   declareProperty( "PrintOutInfo",      m_printOutInfo      );
00061   declareProperty( "CheckDigi",         m_checkDigi         );
00062   declareProperty( "CheckDigiRaw",      m_checkDigiRaw      );
00063   declareProperty( "CheckDigiExt",      m_checkDigiExt      );
00064   declareProperty( "CheckMcTruth",      m_checkMcTruth      );
00065 }

TofRec::TofRec const std::string &  name,
ISvcLocator *  pSvcLocator
 


Member Function Documentation

StatusCode TofRec::beginRun  ) 
 

StatusCode TofRec::beginRun  ) 
 

00171                            {
00172   MsgStream log(msgSvc(), name());
00173   log << MSG::INFO <<"TofRec begin_run!"<< endreq;
00174   return StatusCode::SUCCESS;
00175 }

void TofRec::clearTofTrackVec std::vector< TofTrack * > *&  tofTrackVec  ) 
 

void TofRec::clearTofTrackVec std::vector< TofTrack * > *&  tofTrackVec  ) 
 

00495                                                                  {
00496   if( tofTrackVec ) {
00497     std::vector<TofTrack*>::iterator iter = tofTrackVec->begin();
00498     for( ; iter < tofTrackVec->end(); iter++ ) {
00499       delete (*iter);
00500     }
00501     tofTrackVec->clear();
00502     delete tofTrackVec;
00503   }
00504   return;
00505 }

StatusCode TofRec::execute  ) 
 

StatusCode TofRec::execute  ) 
 

00179                            {
00180 
00181   MsgStream log(msgSvc(), name());
00182   log << MSG::INFO << "TofRec in execute()!" << endreq;
00183 
00184   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00185   if( !eventHeader ) {
00186     log << MSG::FATAL << "TofRec could not find Event Header!" << endreq;
00187     return StatusCode::FAILURE;
00188   }
00189   int run = eventHeader->runNumber();
00190   int event = eventHeader->eventNumber();
00191   if( ( event % 1000 == 0 ) && m_printOutInfo ) {
00192     std::cout << "run:" << run << "  event: " << event << std::endl;
00193   }
00194   log << MSG::INFO << "run= " << run << "  event= " << event << endreq;
00195 
00196   TofRecTDS tds;
00197   tds.RegisterNullRecTofTrackCol();
00198 
00199   // Magnetic Field: Colliding data and Cosmic Ray
00200   if( m_acceleratorStatus == "Colliding" ) {
00201     // Retrieve Event Start Time
00202     SmartDataPtr<RecEsTimeCol> estimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
00203     if( !estimeCol || ( estimeCol->size() == 0 ) ) { 
00204       log << MSG::WARNING << "TofRec Could not find RecEsTimeCol!   Run = " << run << " Event = " << event << endreq;
00205       return StatusCode::SUCCESS;
00206     } 
00207     RecEsTimeCol::iterator iter_ESTime=estimeCol->begin();
00208     double t0  = (*iter_ESTime)->getTest();
00209     int t0Stat = (*iter_ESTime)->getStat();
00210     log << MSG::INFO << "t0= " << t0 << "  t0Stat= " << t0Stat << endreq;
00211 
00212     // Kalman Filter Track
00213     SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol(eventSvc(),"/Event/Recon/RecMdcKalTrackCol");
00214     if( !mdcKalTrackCol ) {
00215       log << MSG::WARNING << "No MdcKalTrackCol in TDS!   Run = " << run << "  Event = " << event << endreq;
00216       return StatusCode::SUCCESS;
00217     }
00218 
00219     // Tof Get Extrapolated Track
00220     SmartDataPtr<RecExtTrackCol> extTrackCol(eventSvc(),"/Event/Recon/RecExtTrackCol");
00221     if( !extTrackCol ) {
00222       log << MSG::WARNING << "No ExtTrackCol in TDS!   Run = " << run << "  Event = " << event << endreq;
00223       return StatusCode::SUCCESS;
00224     }
00225     else {
00226       if( m_printOutInfo ) { m_printOut->setExtTrackNum( extTrackCol->size() ); }
00227       if( m_checkDigi && m_checkDigiExt ) { m_checkdigi_tuple->FillCol( *eventHeader, mdcKalTrackCol, extTrackCol ); }
00228     }
00229 
00230     //sunss add 08/9/17
00231     if( m_forCalibration ) {            // Bhabha Events Selection
00232       //      if( t0Stat != 111 && t0Stat != 121 ) return StatusCode::SUCCESS;
00233       if( t0Stat%10 != 1 ) return StatusCode::SUCCESS;
00234 
00235       if( extTrackCol->size() != 2 ) return StatusCode::SUCCESS;
00236 
00237       SmartDataPtr<RecMdcTrackCol> mdcTrackCol(eventSvc(),"/Event/Recon/RecMdcTrackCol");
00238       if( !mdcTrackCol ) {
00239         log << MSG::FATAL << "Could NOT find RecMdcTrackCol in TDS!   Run = " << run << "  Event = " << event << endreq;
00240         return StatusCode::SUCCESS;
00241       }
00242       if( mdcTrackCol->size() != 2 ) return StatusCode::SUCCESS;
00243 
00244       SmartDataPtr<RecEmcShowerCol> emcShowerCol(eventSvc(),"/Event/Recon/RecEmcShowerCol");
00245       if( !emcShowerCol ) { 
00246         log << MSG::FATAL << "Could NOT find EmcRecShowerCol in TDS!   Run = " << run << "  Event = " << event << endreq;
00247         return StatusCode::SUCCESS;
00248       }
00249 
00250       if( emcShowerCol->size() < 2 ) return StatusCode::SUCCESS;
00251 
00252       RecMdcTrackCol::iterator iter_mdc1 = mdcTrackCol->begin();
00253       RecMdcTrackCol::iterator iter_mdc2 = mdcTrackCol->begin() + 1;
00254 
00255       RecMdcKalTrackCol::iterator iter_kal1 = mdcKalTrackCol->begin();
00256       RecMdcKalTrackCol::iterator iter_kal2 = mdcKalTrackCol->begin() + 1;
00257 
00258       RecExtTrackCol::iterator iter_ext1 = extTrackCol->begin();
00259       RecExtTrackCol::iterator iter_ext2 = extTrackCol->begin() + 1;
00260       Hep3Vector extPos1 = (*iter_ext1)->emcPosition();
00261       Hep3Vector extPos2 = (*iter_ext2)->emcPosition();
00262 
00263       RecEmcShowerCol::iterator iter_emc1 = emcShowerCol->begin();
00264       RecEmcShowerCol::iterator iter_emc2 = emcShowerCol->begin() + 1;
00265       Hep3Vector emcPos1((*iter_emc1)->x(),(*iter_emc1)->y(),(*iter_emc1)->z());
00266       Hep3Vector emcPos2((*iter_emc2)->x(),(*iter_emc2)->y(),(*iter_emc2)->z());
00267 
00268       Hep3Vector pep = (*iter_mdc1)->p3();
00269       Hep3Vector pem = (*iter_mdc2)->p3();
00270       double delta_angle = 180.0 - pep.angle( pem.unit() )*180.0/pi;
00271       double delta_phi = abs( (*iter_mdc1)->phi() - (*iter_mdc2)->phi() )*180.0/pi;
00272 
00273       Hep3Vector distant1 = extPos1 - emcPos1;
00274       Hep3Vector distant2 = extPos2 - emcPos1;
00275       if( distant1.r() > distant2.r() ) {
00276         RecEmcShowerCol::iterator iter_tmp = iter_emc1;
00277         iter_emc1 = iter_emc2;
00278         iter_emc2 = iter_tmp;
00279         Hep3Vector emc_tmp = emcPos1;
00280         emcPos1 = emcPos2;
00281         emcPos2 = emc_tmp;
00282       }
00283       distant1 = extPos1 - emcPos1;
00284       distant2 = extPos2 - emcPos2;
00285 
00286       double e1 = (*iter_emc1)->energy();
00287       double e2 = (*iter_emc2)->energy();
00288       double etot = 0.0;
00289       RecEmcShowerCol::iterator iter_emc = emcShowerCol->begin();
00290       for( ; iter_emc != emcShowerCol->end(); iter_emc++ ) {
00291         etot += (*iter_emc)->energy();
00292       }
00293 
00294       if( m_checkDigi ) { m_checkdigi_tuple->FillCol( *eventHeader, extTrackCol, mdcTrackCol, emcShowerCol, mdcKalTrackCol ); }
00295 
00296       if( ( (*iter_mdc1)->charge() + (*iter_mdc2)->charge() )!= 0 ) return StatusCode::SUCCESS;
00297       //      if( (*iter_mdc1)->ndof()<23.0 || (*iter_mdc2)->ndof()<23.0 ) return StatusCode::SUCCESS;
00298       //      if( ((*iter_mdc1)->chi2()/(*iter_mdc1)->ndof())>2.5 || ((*iter_mdc2)->chi2()/(*iter_mdc2)->ndof())>2.5 ) return StatusCode::SUCCESS;
00299       if( delta_angle > 10.0 ) return StatusCode::SUCCESS;
00300       if( distant1.r()>6.0 || distant2.r()>6.0 ) return StatusCode::SUCCESS;
00301       if( m_calibData == "Bhabha" ) {
00302         if( (*iter_kal1)->getStat(1,0)!=0 || (*iter_kal2)->getStat(1,0)!=0 ) return StatusCode::SUCCESS; 
00303         if( m_data == "jpsi" ) {
00304           if( (*iter_mdc1)->x()<-0.2 || (*iter_mdc1)->x()>0.4 || (*iter_mdc1)->y()<-0.5 || (*iter_mdc1)->y()>0.1 || abs((*iter_mdc1)->z())>4.0 ) return StatusCode::SUCCESS;
00305           if( (*iter_mdc2)->x()<-0.2 || (*iter_mdc2)->x()>0.4 || (*iter_mdc2)->y()<-0.5 || (*iter_mdc2)->y()>0.1 || abs((*iter_mdc2)->z())>4.0 ) return StatusCode::SUCCESS;
00306           if( delta_phi<174.0 || delta_phi>183.0 ) return StatusCode::SUCCESS;
00307           if( e1 < 1.1 || e2 < 1.1 ) return StatusCode::SUCCESS;
00308         }
00309         else if( m_data == "psip" ) {
00310           if( (*iter_mdc1)->x()<-0.2 || (*iter_mdc1)->x()>0.4 || (*iter_mdc1)->y()<-0.5 || (*iter_mdc1)->y()>0.1 || abs((*iter_mdc1)->z())>4.0 ) return StatusCode::SUCCESS;
00311           if( (*iter_mdc2)->x()<-0.2 || (*iter_mdc2)->x()>0.4 || (*iter_mdc2)->y()<-0.5 || (*iter_mdc2)->y()>0.1 || abs((*iter_mdc2)->z())>4.0 ) return StatusCode::SUCCESS;
00312           if( delta_phi<174.0 || delta_phi>183.0 ) return StatusCode::SUCCESS;
00313           if( e1 < 1.4 || e2 < 1.4 ) return StatusCode::SUCCESS;
00314         }
00315         else if( m_data == "psipp" ) {
00316           if( (*iter_mdc1)->x()<-0.2 || (*iter_mdc1)->x()>1.2 || (*iter_mdc1)->y()<-0.9 || (*iter_mdc1)->y()>0.5 || abs((*iter_mdc1)->z())>6.0 ) return StatusCode::SUCCESS;
00317           if( (*iter_mdc2)->x()<-0.2 || (*iter_mdc2)->x()>1.2 || (*iter_mdc2)->y()<-0.9 || (*iter_mdc2)->y()>0.5 || abs((*iter_mdc2)->z())>6.0 ) return StatusCode::SUCCESS;
00318           if( delta_phi<174.0 || delta_phi>186.0 ) return StatusCode::SUCCESS;
00319           if( e1 < 1.4 || e2 < 1.4 ) return StatusCode::SUCCESS;
00320         }
00321         if( ( etot - e1 - e2 ) > 0.3 ) return StatusCode::SUCCESS;
00322       }
00323       else if( m_calibData == "Dimu" ) {
00324         if( (*iter_kal1)->getStat(1,1)!=0 || (*iter_kal2)->getStat(1,1)!=0 ) return StatusCode::SUCCESS; 
00325         if( e1 > 0.5 || e2 > 0.5 )return StatusCode::SUCCESS;   
00326       }
00327 
00328     }
00329     //sunss add 08/9/17
00330 
00331     TofTrackVec* tofTrackVec = new TofTrackVec;
00332     RecExtTrackCol::iterator iter_track = extTrackCol->begin();
00333     for( ; iter_track < extTrackCol->end(); iter_track++ ) {
00334       RecMdcKalTrackCol::iterator iter_kal = mdcKalTrackCol->begin();
00335       for( ; iter_kal != mdcKalTrackCol->end(); iter_kal++ ) {
00336         if( (*iter_kal)->trackId() == (*iter_track)->trackId() ) break;
00337       }
00338       int kal[5] = {-1};
00339       if( iter_kal != mdcKalTrackCol->end() ) {
00340         for( unsigned int i=0; i<5; i++ ) {
00341           kal[i] = (*iter_kal)->getStat( 1, i );
00342         }
00343       }
00344       TofTrack* tof = new TofTrack;
00345       tof->setExtTrack( (*iter_track), kal );
00346       tofTrackVec->push_back( tof );
00347     }
00348 
00349     if( m_printOutInfo ) {
00350       m_printOut->setTrack1Col( tofTrackVec );
00351     }
00352 
00353     // Retrieve Tof Digi Data
00354     TofDataMap tofDataMap = tofDigiSvc->tofDataMapTof( t0 );
00355     if( tofDataMap.empty() ) {
00356       log << MSG::WARNING << "No Tof Data Map in RawDataProviderSvc!   Run=" << run << " Event=" << event << endreq;
00357     }
00358 
00359     if( m_checkDigi && m_checkDigiRaw ) {
00360       SmartDataPtr<TofDigiCol> tofDigiCol(eventSvc(),"/Event/Digi/TofDigiCol");
00361       if( !tofDigiCol ) {
00362         log << MSG::ERROR << "TofRec could not find Tof digi! Event = " << event << endreq;
00363       }
00364       else { m_checkdigi_tuple->FillCol( *eventHeader, tofDigiCol, t0, t0Stat ); }
00365 
00366       m_checkdigi_tuple->FillCol( *eventHeader, tofDataMap, t0, t0Stat );
00367     }
00368 
00369     std::vector<int> deadId;
00370     if( m_forCalibration ) {
00371       for( unsigned int i=0; i<5; i++ ) {
00372         int identmp = tofCaliSvc->BrEast(i);
00373         if( identmp != 0x2fffffff ) {
00374           deadId.push_back( identmp );
00375         }
00376         identmp = tofCaliSvc->BrWest(i);
00377         if( identmp != 0x2fffffff ) {
00378           deadId.push_back( identmp );
00379         }
00380         identmp = tofCaliSvc->Endcap(i);
00381         if( identmp != 0x2fffffff ) {
00382           deadId.push_back( identmp );
00383         }
00384       }
00385     }
00386 
00387     std::vector<TofTrack*>::iterator iter = tofTrackVec->begin();
00388     for( ; iter < tofTrackVec->end(); iter++ ) {
00389       if( (*iter)->isNoHit() ) continue;
00390       (*iter)->setTofData( tofDataMap );
00391       if( m_printOutInfo ) { m_printOut->setTrack2( (*iter) ); }
00392       if( (*iter)->isNoHit() ) continue;
00393       (*iter)->match( m_forCalibration, deadId );
00394       if( m_printOutInfo ) { m_printOut->setTrack3( (*iter) ); }
00395     }
00396 
00397     iter = tofTrackVec->begin();
00398     for( ; iter < tofTrackVec->end(); iter++ ) {
00399 
00400       (*iter)->setCalibration( t0, t0Stat );
00401 
00402       if( m_checkDigi ) {
00403         if( m_checkTrigger ) {
00404           // retrieve trigger data for physics analysis
00405           SmartDataPtr<TrigData> trigData(eventSvc(), "/Event/Trig/TrigData");
00406           if (!trigData) {
00407             log << MSG::FATAL << "Could not find Trigger Data for physics analysis" << endreq;
00408             m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat );
00409           }
00410           else {
00411             m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat, trigData );
00412           }
00413         }
00414         else {
00415           if( ( run < 0 ) && m_checkMcTruth ) {
00416             SmartDataPtr<TofMcHitCol> tofMcCol(eventSvc(),"/Event/MC/TofMcHitCol");
00417             SmartDataPtr<McParticleCol> mcParticleCol(eventSvc(),"/Event/MC/McParticleCol");
00418             if ( !tofMcCol || !mcParticleCol ) {
00419               m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat, mdcKalTrackCol );
00420             }
00421             else {
00422               m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat, mdcKalTrackCol, tofMcCol, mcParticleCol, m_calibData );
00423             }
00424           }
00425           else {
00426             m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat, mdcKalTrackCol );
00427           }
00428         }
00429       }
00430     }
00431 
00432     tds.RegisterTDS( eventHeader->runNumber(), eventHeader->eventNumber(), tofTrackVec, m_forCalibration, m_calibData );
00433 
00434     clearTofTrackVec( tofTrackVec );
00435 
00436 // Check RecTofTrackCol Registered
00437     SmartDataPtr<RecTofTrackCol> tofTrackCol(eventSvc(),"/Event/Recon/RecTofTrackCol");  
00438     if (!tofTrackCol) { 
00439       log << MSG::FATAL << "TofRec could not find RecTofTrackCol!" << endreq;
00440       return StatusCode::FAILURE;
00441     }
00442     else{
00443       if( m_saveRootFile ) {
00444         m_checkdata_tuple->FillCol( *eventHeader, tofTrackCol, mdcKalTrackCol );
00445       }
00446     }
00447 
00448     if( m_forCalibration ) {
00449       SmartDataPtr<RecBTofCalHitCol> bhitCol(eventSvc(),"/Event/Recon/RecBTofCalHitCol");
00450       if (!bhitCol) { 
00451         log << MSG::WARNING << "TofRec could not find RecBTofCalHitCol!" << endreq;
00452       }
00453       else {
00454         if( m_saveRootFile ) {
00455           m_checkdata_tuple->FillCol( *eventHeader, bhitCol );
00456         }
00457       }
00458 
00459       SmartDataPtr<RecETofCalHitCol> ehitCol(eventSvc(),"/Event/Recon/RecETofCalHitCol");
00460       if (!ehitCol) { 
00461         log << MSG::WARNING << "TofRec could not find RecETofCalHitCol!" << endreq;
00462       }
00463       else {
00464         if( m_saveRootFile ) {
00465           m_checkdata_tuple->FillCol( *eventHeader, ehitCol );
00466         }
00467       }
00468     }
00469 
00470   }
00471   else {
00472     log << MSG::FATAL << "In TofRec: AcceleratorStatus is NOT correct! m_acceleratorStatus = " << m_acceleratorStatus << endreq;
00473     return StatusCode::FAILURE;
00474   }
00475 
00476   return StatusCode::SUCCESS;
00477 
00478 }

StatusCode TofRec::finalize  ) 
 

StatusCode TofRec::finalize  ) 
 

00482                             {
00483   if( m_printOutInfo ) {
00484     m_printOut->final();
00485     delete m_printOut;
00486   }
00487   if( m_checkDigi ) delete m_checkdigi_tuple;
00488   if( m_saveRootFile ) delete m_checkdata_tuple;
00489   return StatusCode::SUCCESS;
00490 }

StatusCode TofRec::initialize  ) 
 

StatusCode TofRec::initialize  ) 
 

00069                              {
00070 
00071   MsgStream log(msgSvc(), name());
00072   log << MSG::INFO << "TofRec in initialize()" << endreq;   
00073 
00074   //Get TOF Geomertry Service
00075   StatusCode scg = service("TofGeomSvc", tofGeomSvc);
00076   if (scg==  StatusCode::SUCCESS) {
00077     log << MSG::INFO << "TofRec Get Geometry Service Sucessfully!" << endreq;
00078   }else {
00079     log << MSG::ERROR << "TofRec Get Geometry Service Failed !" << endreq;
00080     return StatusCode::FAILURE;
00081   }
00082 
00083   //Get TOF Calibtration Service
00084   StatusCode scc = service("TofCaliSvc", tofCaliSvc);
00085   if (scc ==  StatusCode::SUCCESS) { 
00086     log << MSG::INFO << "TofRec Get Calibration Service Sucessfully!" << endreq;
00087   } else {
00088     log << MSG::ERROR << "TofRec Get Calibration Service Failed !" << endreq;
00089     return StatusCode::FAILURE;
00090   }
00091 
00092   //Get TOF Raw Data Provider Service
00093   StatusCode scd = service("RawDataProviderSvc", tofDigiSvc);
00094   if (scd ==  StatusCode::SUCCESS) { 
00095     log << MSG::INFO << "TofRec Get Tof Raw Data Service Sucessfully!" << endreq;
00096   } else {
00097     log << MSG::ERROR << "TofRec Get Tof Raw Data Service Failed !" << endreq;
00098     return StatusCode::FAILURE;
00099   }
00100 
00101   if( m_checkDigi ) {
00102     NTuplePtr nt11(ntupleSvc(),"FILE203/digi");
00103     NTuplePtr nt12(ntupleSvc(),"FILE203/barrel");
00104     NTuplePtr nt13(ntupleSvc(),"FILE203/endcap");
00105     NTuplePtr nt14(ntupleSvc(),"FILE203/ext");
00106     NTuplePtr nt15(ntupleSvc(),"FILE203/tof");
00107     NTuplePtr nt16(ntupleSvc(),"FILE203/bb");
00108 
00109     if( nt11 || nt12 || nt13 || nt14 || nt15 || nt16 ) {
00110       m_tuple_digi   = nt11;
00111       m_tuple_barrel = nt12;
00112       m_tuple_endcap = nt13;
00113       m_tuple_ext    = nt14;
00114       m_tuple_tof    = nt15;
00115       m_tuple_bb     = nt16;
00116     }
00117     else {
00118       m_tuple_digi   = ntupleSvc()->book("FILE203/digi",CLID_ColumnWiseTuple,"TofRec");
00119       m_tuple_barrel = ntupleSvc()->book("FILE203/barrel",CLID_ColumnWiseTuple,"TofRec");
00120       m_tuple_endcap = ntupleSvc()->book("FILE203/endcap",CLID_ColumnWiseTuple,"TofRec");
00121       m_tuple_ext    = ntupleSvc()->book("FILE203/ext",CLID_ColumnWiseTuple,"TofRec");
00122       m_tuple_tof    = ntupleSvc()->book("FILE203/tof",CLID_ColumnWiseTuple,"TofRec");
00123       m_tuple_bb     = ntupleSvc()->book("FILE203/bb",CLID_ColumnWiseTuple,"TofRec");
00124 
00125       if( m_tuple_digi || m_tuple_barrel || m_tuple_endcap || m_tuple_ext || m_tuple_tof || m_tuple_bb ) {
00126         m_checkdigi_tuple = new TofCheckDigi( m_tuple_digi, m_tuple_barrel, m_tuple_endcap, m_tuple_ext, m_tuple_tof, m_tuple_bb );
00127       }
00128       else {
00129         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_digi) <<endmsg;
00130         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_barrel) <<endmsg;
00131         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_endcap) <<endmsg;
00132         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_ext) <<endmsg;
00133         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_tof) <<endmsg;
00134         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_bb) <<endmsg;
00135         return StatusCode::FAILURE;
00136       }
00137     }
00138   }
00139 
00140   if( m_saveRootFile ) {
00141     NTuplePtr nt21(ntupleSvc(),"FILE201/trk");
00142     NTuplePtr nt22(ntupleSvc(),"FILE201/cbtrk");
00143     NTuplePtr nt23(ntupleSvc(),"FILE201/cetrk");
00144 
00145     if( nt21 || nt22 || nt23 ) {
00146       m_tuple_trk   = nt21;
00147       m_tuple_cbtrk = nt22;
00148       m_tuple_cetrk = nt23;
00149     }
00150     else {
00151       m_tuple_trk   = ntupleSvc()->book("FILE201/trk",CLID_ColumnWiseTuple,"TofRec");
00152       m_tuple_cbtrk = ntupleSvc()->book("FILE201/cbtrk",CLID_ColumnWiseTuple,"TofRec");
00153       m_tuple_cetrk = ntupleSvc()->book("FILE201/cetrk",CLID_ColumnWiseTuple,"TofRec");
00154       if( m_tuple_trk || m_tuple_cbtrk || m_tuple_cetrk ) {
00155         m_checkdata_tuple = new TofCheckData( m_tuple_trk, m_tuple_cbtrk, m_tuple_cetrk );
00156       }
00157       else {
00158         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_trk) <<endmsg;
00159         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_cbtrk) <<endmsg;
00160         log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_cetrk) <<endmsg;
00161         return StatusCode::FAILURE;
00162       }
00163     }
00164   }
00165 
00166   if( m_printOutInfo ) { m_printOut = new TofCount; }
00167 
00168   return StatusCode::SUCCESS;
00169 }


Member Data Documentation

std::string TofRec::m_acceleratorStatus [private]
 

std::string TofRec::m_calibData [private]
 

TofCheckData* TofRec::m_checkdata_tuple [private]
 

TofCheckData* TofRec::m_checkdata_tuple [private]
 

bool TofRec::m_checkDigi [private]
 

TofCheckDigi* TofRec::m_checkdigi_tuple [private]
 

TofCheckDigi* TofRec::m_checkdigi_tuple [private]
 

bool TofRec::m_checkDigiExt [private]
 

bool TofRec::m_checkDigiRaw [private]
 

bool TofRec::m_checkMcTruth [private]
 

bool TofRec::m_checkTrigger [private]
 

std::string TofRec::m_data [private]
 

bool TofRec::m_firstIteration [private]
 

bool TofRec::m_forCalibration [private]
 

bool TofRec::m_magneticField [private]
 

TofCount* TofRec::m_printOut [private]
 

TofCount* TofRec::m_printOut [private]
 

bool TofRec::m_printOutInfo [private]
 

bool TofRec::m_saveRootFile [private]
 

NTuple::Tuple* TofRec::m_tuple_barrel [private]
 

NTuple::Tuple* TofRec::m_tuple_barrel [private]
 

NTuple::Tuple* TofRec::m_tuple_bb [private]
 

NTuple::Tuple* TofRec::m_tuple_bb [private]
 

NTuple::Tuple* TofRec::m_tuple_cbtrk [private]
 

NTuple::Tuple* TofRec::m_tuple_cbtrk [private]
 

NTuple::Tuple* TofRec::m_tuple_cetrk [private]
 

NTuple::Tuple* TofRec::m_tuple_cetrk [private]
 

NTuple::Tuple* TofRec::m_tuple_digi [private]
 

NTuple::Tuple* TofRec::m_tuple_digi [private]
 

NTuple::Tuple* TofRec::m_tuple_endcap [private]
 

NTuple::Tuple* TofRec::m_tuple_endcap [private]
 

NTuple::Tuple* TofRec::m_tuple_ext [private]
 

NTuple::Tuple* TofRec::m_tuple_ext [private]
 

NTuple::Tuple* TofRec::m_tuple_raw [private]
 

NTuple::Tuple* TofRec::m_tuple_raw [private]
 

NTuple::Tuple* TofRec::m_tuple_tdiff [private]
 

NTuple::Tuple* TofRec::m_tuple_tdiff [private]
 

NTuple::Tuple* TofRec::m_tuple_tof [private]
 

NTuple::Tuple* TofRec::m_tuple_tof [private]
 

NTuple::Tuple* TofRec::m_tuple_trk [private]
 

NTuple::Tuple* TofRec::m_tuple_trk [private]
 


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