CheckEFResult Class Reference

#include <CheckEFResult.h>

List of all members.

Public Member Functions

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

Private Attributes

HltStoreSvcm_HltStoreSvc
IDataProviderSvc * m_evtDataSvc
NTuple::Tuple * m_tuple
NTuple::Item< long > m_nevt
NTuple::Item< long > m_alg
NTuple::Item< long > m_nmdc
NTuple::Item< long > m_ntof
NTuple::Item< long > m_nemc
NTuple::Item< long > m_nmuc
NTuple::Item< long > m_nshower
NTuple::Item< long > m_ntrk
NTuple::Item< long > m_nsec
NTuple::Item< float > m_etot
NTuple::Item< float > m_ebarrel
NTuple::Item< float > m_eendcap
NTuple::Item< float > m_acop
NTuple::Item< float > m_ebalance
NTuple::Item< float > m_emax1
NTuple::Item< float > m_emax2
NTuple::Item< float > m_dtof1
NTuple::Item< float > m_dphi1
NTuple::Item< float > m_dtof2
NTuple::Item< float > m_dphi2
NTuple::Item< float > m_acol
NTuple::Item< float > m_pmax1
NTuple::Item< float > m_pmax2
NTuple::Item< float > m_cost1
NTuple::Item< float > m_cost2
NTuple::Item< float > m_mbalance
NTuple::Item< long > m_evttype
std::vector< int > m_notpass
std::string m_outfile


Detailed Description

Definition at line 18 of file CheckEFResult.h.


Constructor & Destructor Documentation

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

Definition at line 16 of file CheckEFResult.cxx.

References m_outfile.

00016                                                                             :
00017   Algorithm(name, pSvcLocator),
00018   m_notpass()
00019 {
00020   declareProperty("FilterOutput",m_outfile="lv2");
00021 }

CheckEFResult::~CheckEFResult (  )  [virtual]

Definition at line 23 of file CheckEFResult.cxx.

00024 {
00025 }


Member Function Documentation

StatusCode CheckEFResult::execute (  ) 

Definition at line 106 of file CheckEFResult.cxx.

References Bes_Common::DEBUG, calibUtil::ERROR, Bes_Common::FATAL, HltStoreSvc::get(), EFResult::getAnswer(), EFResult::getAnswerIndex(), EFResult::getEFVec(), CriteriaItemValue::getValue(), Bes_Common::INFO, m_acol, m_acop, m_alg, m_dphi1, m_dphi2, m_dtof1, m_dtof2, m_ebalance, m_ebarrel, m_eendcap, m_emax1, m_emax2, m_etot, m_evttype, m_HltStoreSvc, m_mbalance, m_nemc, m_nevt, m_nmdc, m_nmuc, m_notpass, m_nsec, m_nshower, m_ntof, m_ntrk, m_pmax1, m_pmax2, m_tuple, msgSvc(), and deljobs::string.

00106                                   {
00107 
00108   MsgStream log(msgSvc(), name());
00109   //log << MSG::INFO << "in execute()" << endreq;
00110 
00111   EFResult* efResult;
00112   StatusCode sc = m_HltStoreSvc->get("EFResult", efResult);
00113   if ( sc.isFailure() ) {
00114     log << MSG::ERROR << " Could not find EFResult" << endreq;
00115     return sc;
00116   }
00117 
00118   if (efResult->getAnswerIndex() == -1) {
00119     log << MSG::ERROR << " Unvalid efResult(AnswerIndex==-1)" << endreq;
00120     return StatusCode::FAILURE;
00121   }
00122 
00123   std::string answer = efResult->getAnswer();
00124   // answer should be "Accepted" or "Rejected" (or "Error")
00125   log << MSG::INFO << "this event is " << answer << endreq;
00126 
00127   if (answer == "Accepted") {
00128     EFResult* evtType;
00129     sc = m_HltStoreSvc->get("EventType", evtType);
00130     if ( sc.isFailure() ) {
00131       log << MSG::ERROR << " Could not find EventType" << endreq;
00132       return sc;
00133     }
00134     if (evtType->getAnswerIndex() == -1) {
00135       log << MSG::ERROR << " Unvalid evtType(AnswerIndex==-1)" << endreq;
00136       return StatusCode::FAILURE;
00137     }
00138     std::string typeStr = evtType->getAnswer();
00139     log << MSG::INFO << "   ==> it's marked as " << typeStr << endreq;
00140 
00141     // Event Type
00142     if(typeStr=="Junk") m_evttype=0;
00143     else if(typeStr=="GJunk") m_evttype=1;
00144     else if(typeStr=="Beamgas") m_evttype=2;
00145     else if(typeStr=="GBeamgas") m_evttype=3;
00146     else if(typeStr=="Cosmic") m_evttype=4;
00147     else if(typeStr=="GCosmic") m_evttype=5;
00148     else if(typeStr=="EBhabha") m_evttype=6;
00149     else if(typeStr=="GEBhabha") m_evttype=7;
00150     else if(typeStr=="BBhabha") m_evttype=8;
00151     else if(typeStr=="GBBhabha") m_evttype=9;
00152     else if(typeStr=="Dimuon") m_evttype=10;
00153     else if(typeStr=="GDimuon") m_evttype=11;
00154     else if(typeStr=="Diphoton") m_evttype=12;
00155     else if(typeStr=="GDiphoton") m_evttype=13;
00156     else if(typeStr=="Hadron") m_evttype=14;
00157     else if(typeStr=="GHadron") m_evttype=15;
00158     else if(typeStr=="Twophoton") m_evttype=16;
00159     else if(typeStr=="GTwophoton") m_evttype=17;
00160     else if(typeStr=="RandomTrg") m_evttype=31;
00161     else if(typeStr=="Error") m_evttype=30;
00162     else if(typeStr=="Other") m_evttype=29;
00163     else m_evttype=-1;
00164   }
00165   log << MSG::DEBUG << "get event type info: " << m_evttype << endreq;
00166   //Event No.
00167   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00168   if (!eventHeader) {
00169     log << MSG::FATAL << "Could not find Event Header" << endreq;
00170     return (StatusCode::FAILURE);
00171   }
00172   m_nevt= eventHeader->eventNumber();
00173   log << MSG::INFO << "EventNo: " << m_nevt <<endl;
00174   if(m_evttype==1||m_evttype==3||m_evttype==5) m_notpass.push_back(eventHeader->eventNumber());
00175   
00176   // Run time
00177   //m_timer[1]->stop();
00178   //m_filtertime = m_timer[1]->elapsed();
00179 
00180   //if(pBesTimer){
00181   //  pBesTimer->stop();
00182   //  m_CPUtime =  pBesTimer->elapsed();
00183   //}
00184 
00185   // Detector information
00186   float nmdc,ntof,nemc,nmuc,nshower,ntrk,nsec;
00187   float etot,ebar,eend,ebal,acop,emax1,emax2,dtof1,dphi1,dtof2,dphi2,acol,mbal,pmax1,pmax2;
00188   
00189   CriteriaItemValue* pcri;
00190   
00191   sc = m_HltStoreSvc->get("nmdc", pcri);
00192   if ( sc.isFailure() ) nmdc=-9;
00193   else pcri->getValue(nmdc);
00194   sc = m_HltStoreSvc->get("nmuc", pcri);
00195   if ( sc.isFailure() ) nmuc=-9;
00196   else pcri->getValue(nmuc);
00197   sc = m_HltStoreSvc->get("ntof", pcri);
00198   if ( sc.isFailure() ) ntof=-9;
00199   else pcri->getValue(ntof);
00200   sc = m_HltStoreSvc->get("nemc", pcri);
00201   if ( sc.isFailure() ) nemc=-9;
00202   else pcri->getValue(nemc);
00203 
00204   sc = m_HltStoreSvc->get("nshw", pcri);
00205   if ( sc.isFailure() ) nshower=-9;
00206   else  pcri->getValue(nshower);
00207   sc = m_HltStoreSvc->get("ntrk", pcri);
00208   if ( sc.isFailure() ) ntrk=-9;
00209   else  pcri->getValue(ntrk);
00210   sc = m_HltStoreSvc->get("etot", pcri);
00211   if ( sc.isFailure() ) etot=-9;
00212   else  pcri->getValue(etot);
00213   sc = m_HltStoreSvc->get("ebar", pcri);
00214   if ( sc.isFailure() ) ebar=-9;
00215   else  pcri->getValue(ebar);
00216   sc = m_HltStoreSvc->get("eend", pcri);
00217   if ( sc.isFailure() ) eend=-9;
00218   else  pcri->getValue(eend);
00219   sc = m_HltStoreSvc->get("ebal", pcri);
00220   if ( sc.isFailure() ) ebal=-9;
00221   else  pcri->getValue(ebal);
00222   sc = m_HltStoreSvc->get("acop", pcri);
00223   if ( sc.isFailure() ) acop=-9;
00224   else  pcri->getValue(acop);
00225   sc = m_HltStoreSvc->get("emax1", pcri);
00226   if ( sc.isFailure() ) emax1=-9;
00227   else  pcri->getValue(emax1);
00228   sc = m_HltStoreSvc->get("emax2", pcri);
00229   if ( sc.isFailure() ) emax2=-9;
00230   else  pcri->getValue(emax2);
00231   sc = m_HltStoreSvc->get("dtof1", pcri);
00232   if ( sc.isFailure() ) dtof1=-999;
00233   else  pcri->getValue(dtof1);
00234   sc = m_HltStoreSvc->get("dphi1", pcri);
00235   if ( sc.isFailure() ) dphi1=-9;
00236   else  pcri->getValue(dphi1);
00237   sc = m_HltStoreSvc->get("dtof2", pcri);
00238   if ( sc.isFailure() ) dtof2=-999;
00239   else  pcri->getValue(dtof2);
00240   sc = m_HltStoreSvc->get("dphi2", pcri);
00241   if ( sc.isFailure() ) dphi2=-9;
00242   else  pcri->getValue(dphi2);
00243   sc = m_HltStoreSvc->get("acol", pcri);
00244   if ( sc.isFailure() ) acol=-9;
00245   else  pcri->getValue(acol);
00246   sc = m_HltStoreSvc->get("pmax1", pcri);
00247   if ( sc.isFailure() ) pmax1=-9;
00248   else  pcri->getValue(pmax1);
00249   sc = m_HltStoreSvc->get("pmax2", pcri);
00250   if ( sc.isFailure() ) pmax2=-9;
00251   else  pcri->getValue(pmax2);
00252   sc = m_HltStoreSvc->get("nsec", pcri);
00253   if ( sc.isFailure() ) nsec=-9;
00254   else  pcri->getValue(nsec);
00255   sc = m_HltStoreSvc->get("mbal", pcri);
00256   if ( sc.isFailure() ) mbal=-9;
00257   else  pcri->getValue(mbal);
00258   m_nmdc=long(nmdc);
00259   m_ntof=long(ntof);
00260   m_nemc=long(nemc);
00261   m_nmuc=long(nmuc);
00262   m_nshower=long(nshower);
00263   m_ntrk=long(ntrk);
00264   m_nsec=long(nsec);
00265   m_etot=etot;
00266   m_ebarrel=ebar;
00267   m_eendcap=eend;
00268   m_ebalance=ebal;
00269   m_acop=acop;
00270   m_emax1=emax1;
00271   m_emax2=emax2;
00272   m_dtof1=dtof1;
00273   m_dphi1=dphi1;
00274   m_dtof2=dtof2;
00275   m_dphi2=dphi2;
00276   m_acol=acol;
00277   m_mbalance=mbal;
00278   m_pmax1=pmax1;
00279   m_pmax2=pmax2;
00280 
00281   std::vector<uint32_t> efVec=efResult->getEFVec();
00282   m_alg  =efVec[0];
00283   /*
00284   m_nmuc =efVec[1];
00285   m_etot =efVec[4];
00286   m_emax1=efVec[5];
00287   m_emax2=efVec[6];
00288   m_acop =efVec[7];
00289   m_ebalance=efVec[8];
00290   m_ebarrel=efVec[9];
00291   m_eendcap=efVec[10];
00292   m_ntrk =efVec[11];
00293   m_pmax1=efVec[12];
00294   m_pmax2=efVec[13];
00295   m_acol =efVec[14];
00296   m_cost1=efVec[15];
00297   m_cost2=efVec[16];
00298   m_dtof1 =efVec[19];
00299   m_dphi1 =efVec[20];
00300   m_dtof2 =efVec[19];
00301   m_dphi2 =efVec[20];
00302   */
00303   log<< MSG::INFO<<efVec<<endreq;
00304   log<< MSG::INFO<<acol<<"  "<<etot<<endreq;
00305   if(m_tuple){
00306     StatusCode status = m_tuple->write();
00307     if (!status.isSuccess()) {
00308       log << MSG::ERROR << "Can't fill ntuple!" << endreq;
00309     }
00310   }
00311 
00312   //m_timer[1]->start();
00313 
00314   return StatusCode::SUCCESS;
00315 }

StatusCode CheckEFResult::finalize (  ) 

Definition at line 317 of file CheckEFResult.cxx.

References genRecEmupikp::i, Bes_Common::INFO, m_notpass, m_outfile, and msgSvc().

00317                                    {
00318   
00319   MsgStream log(msgSvc(), name());
00320   log << MSG::INFO << "in finalize()" << endreq;
00321 
00322   //m_timersvc->print();
00323   if(m_notpass.size()>0&&m_outfile!="lv2"){
00324     ofstream outfile;
00325     outfile.open(m_outfile.c_str(),ios_base::out);
00326     for(unsigned int i=0;i<m_notpass.size();i++){
00327       outfile << m_notpass[i] <<endl;
00328     }
00329     outfile.close();
00330   }
00331 
00332   return StatusCode::SUCCESS;
00333 }

StatusCode CheckEFResult::initialize (  ) 

Definition at line 27 of file CheckEFResult.cxx.

References calibUtil::ERROR, Bes_Common::FATAL, Bes_Common::INFO, m_acol, m_acop, m_alg, m_cost1, m_cost2, m_dphi1, m_dphi2, m_dtof1, m_dtof2, m_ebalance, m_ebarrel, m_eendcap, m_emax1, m_emax2, m_etot, m_evtDataSvc, m_evttype, m_HltStoreSvc, m_mbalance, m_nemc, m_nevt, m_nmdc, m_nmuc, m_nsec, m_nshower, m_ntof, m_ntrk, m_pmax1, m_pmax2, m_tuple, msgSvc(), and ntupleSvc().

00027                                     {
00028   
00029   MsgStream log(msgSvc(), name());
00030   log << MSG::INFO << "in initialize()" << endreq;
00031   
00032   StatusCode sc = service( "HltStoreSvc", m_HltStoreSvc);
00033   if( sc.isFailure() ) {
00034     log << MSG::FATAL << name() << ": Unable to locate Service HltStoreSvc" << endreq;
00035     return sc;
00036   }
00037 
00038   sc = serviceLocator()->service("EventDataSvc", m_evtDataSvc, true);
00039   if (!sc.isSuccess()) {
00040     log << MSG::FATAL << "Error retrieving EventDataSvc interface IDataProviderSvc." << endreq;
00041     return sc;
00042   }
00043   
00044   NTuplePtr nt(ntupleSvc(),"FILE123/EventFilter");
00045   if ( nt ) m_tuple = nt;
00046   else {
00047     m_tuple=ntupleSvc()->book("FILE123/EventFilter",CLID_ColumnWiseTuple,"EventFilter");
00048     if( m_tuple ) {
00049       m_tuple->addItem ("alg", m_alg);
00050       m_tuple->addItem ("nevt",  m_nevt);
00051 
00052       m_tuple->addItem ("ntof", m_ntof);
00053       m_tuple->addItem ("nemc", m_nemc);
00054       m_tuple->addItem ("nmdc", m_nmdc);
00055       m_tuple->addItem ("nshw", m_nshower);
00056       m_tuple->addItem ("nsec", m_nsec);
00057       m_tuple->addItem ("mbal", m_mbalance);
00058       m_tuple->addItem ("type", m_evttype);
00059       //m_tuple->addItem ("time", m_filtertime);
00060       //m_tuple->addItem ("CPUt", m_CPUtime);
00061 
00062       m_tuple->addItem ("nmuc", m_nmuc);
00063       m_tuple->addItem ("etot", m_etot);
00064       m_tuple->addItem ("emax1", m_emax1);
00065       m_tuple->addItem ("emax2", m_emax2);
00066       m_tuple->addItem ("acop", m_acop);
00067       m_tuple->addItem ("ebal", m_ebalance);
00068       m_tuple->addItem ("ebar", m_ebarrel);
00069       m_tuple->addItem ("eend", m_eendcap);
00070       m_tuple->addItem ("ntrk", m_ntrk);
00071       m_tuple->addItem ("pmax1", m_pmax1);
00072       m_tuple->addItem ("pmax2", m_pmax2);
00073       m_tuple->addItem ("acol", m_acol);
00074       m_tuple->addItem ("cost1", m_cost1);
00075       m_tuple->addItem ("cost2", m_cost2);
00076       m_tuple->addItem ("dtof1", m_dtof1);
00077       m_tuple->addItem ("dphi1", m_dphi1);
00078       m_tuple->addItem ("dtof2", m_dtof2);
00079       m_tuple->addItem ("dphi2", m_dphi2);
00080     }
00081     else    {   // did not manage to book the N tuple....
00082       log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple) << endmsg;
00083       return StatusCode::FAILURE;
00084     }
00085   }
00086 
00087   /*
00088   sc = service( "BesTimerSvc", m_timersvc);
00089   if( sc.isFailure() ) {
00090     log << MSG::WARNING << name() << ": Unable to locate BesTimer Service" << endreq;
00091     return StatusCode::FAILURE;
00092   }
00093 
00094   m_timer[0] = m_timersvc->addItem("PrueHandler");
00095   m_timer[0]->propName("nPrueHandler");
00096   pBesTimer=m_timer[0];
00097   m_timer[1] = m_timersvc->addItem("WholePro");
00098   m_timer[1]->propName("nWholePro");
00099   m_timer[1]->start();
00100   
00101   log << MSG::INFO << pBesTimer<<endreq;
00102   */
00103   return StatusCode::SUCCESS;
00104 }


Member Data Documentation

NTuple::Item<float> CheckEFResult::m_acol [private]

Definition at line 54 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_acop [private]

Definition at line 46 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<long> CheckEFResult::m_alg [private]

Definition at line 35 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_cost1 [private]

Definition at line 57 of file CheckEFResult.h.

Referenced by initialize().

NTuple::Item<float> CheckEFResult::m_cost2 [private]

Definition at line 58 of file CheckEFResult.h.

Referenced by initialize().

NTuple::Item<float> CheckEFResult::m_dphi1 [private]

Definition at line 51 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_dphi2 [private]

Definition at line 53 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_dtof1 [private]

Definition at line 50 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_dtof2 [private]

Definition at line 52 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_ebalance [private]

Definition at line 47 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_ebarrel [private]

Definition at line 44 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_eendcap [private]

Definition at line 45 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_emax1 [private]

Definition at line 48 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_emax2 [private]

Definition at line 49 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_etot [private]

Definition at line 43 of file CheckEFResult.h.

Referenced by execute(), and initialize().

IDataProviderSvc* CheckEFResult::m_evtDataSvc [private]

Definition at line 31 of file CheckEFResult.h.

Referenced by initialize().

NTuple::Item<long> CheckEFResult::m_evttype [private]

Definition at line 60 of file CheckEFResult.h.

Referenced by execute(), and initialize().

HltStoreSvc* CheckEFResult::m_HltStoreSvc [private]

Definition at line 30 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_mbalance [private]

Definition at line 59 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<long> CheckEFResult::m_nemc [private]

Definition at line 38 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<long> CheckEFResult::m_nevt [private]

Definition at line 34 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<long> CheckEFResult::m_nmdc [private]

Definition at line 36 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<long> CheckEFResult::m_nmuc [private]

Definition at line 39 of file CheckEFResult.h.

Referenced by execute(), and initialize().

std::vector<int> CheckEFResult::m_notpass [private]

Definition at line 70 of file CheckEFResult.h.

Referenced by execute(), and finalize().

NTuple::Item<long> CheckEFResult::m_nsec [private]

Definition at line 42 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<long> CheckEFResult::m_nshower [private]

Definition at line 40 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<long> CheckEFResult::m_ntof [private]

Definition at line 37 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<long> CheckEFResult::m_ntrk [private]

Definition at line 41 of file CheckEFResult.h.

Referenced by execute(), and initialize().

std::string CheckEFResult::m_outfile [private]

Definition at line 71 of file CheckEFResult.h.

Referenced by CheckEFResult(), and finalize().

NTuple::Item<float> CheckEFResult::m_pmax1 [private]

Definition at line 55 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Item<float> CheckEFResult::m_pmax2 [private]

Definition at line 56 of file CheckEFResult.h.

Referenced by execute(), and initialize().

NTuple::Tuple* CheckEFResult::m_tuple [private]

Definition at line 33 of file CheckEFResult.h.

Referenced by execute(), and initialize().


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