2#include "GaudiKernel/MsgStream.h"
3#include "GaudiKernel/SmartDataPtr.h"
4#include "GaudiKernel/IHistogramSvc.h"
5#include "GaudiKernel/INTupleSvc.h"
12 Algorithm(name, pSvcLocator) {
20 MsgStream log(
msgSvc(), name() );
23 NTuplePtr nt1(
ntupleSvc(),
"DedxTuples/Mdc_dedx");
24 if ( nt1 ) m_tuple1 = nt1;
26 m_tuple1 =
ntupleSvc()->book (
"DedxTuples/Mdc_dedx", CLID_RowWiseTuple,
"Dedx parameter");
28 status = m_tuple1->addItem(
"dedx",m_dedx);
29 status = m_tuple1->addItem(
"parttype",m_parttype);
30 status = m_tuple1->addItem(
"chidedx",m_chidedx);
31 status = m_tuple1->addItem(
"chidedxE",m_chidedxE);
32 status = m_tuple1->addItem(
"chidedxMu",m_chidedxMu);
33 status = m_tuple1->addItem(
"chidedxPi",m_chidedxPi);
34 status = m_tuple1->addItem(
"chidedxK",m_chidedxK);
35 status = m_tuple1->addItem(
"chidedxP",m_chidedxP);
38 log << MSG::ERROR <<
" Cannot book N-tuple:" << long(m_tuple1) << endmsg;
39 return StatusCode::FAILURE;
42 log << MSG::INFO <<
"Finished booking NTuples" << endmsg;
43 return StatusCode::SUCCESS;
50 MsgStream log(
msgSvc(), name());
51 SmartDataPtr<RecMdcDedxCol> mdcDedx(eventSvc(),
"/Event/Recon/RecMdcDedxCol");
54 log << MSG::ERROR <<
"Unable to retrieve RecMdcDedxCol" << endreq;
55 return StatusCode::FAILURE;
57 log << MSG::DEBUG <<
"RecMdcDedxCol retrieved of size "<< mdcDedx->size() << endreq;
59 for(RecMdcDedxCol::iterator it=mdcDedx->begin(); it!=mdcDedx->end(); it++,i++)
60 { m_dedx = (*it)->probPH();
61 pid_dedx m_pid_dedx = (*it)->particleType();
62 m_parttype = (int)m_pid_dedx;
64 if((m_pid_dedx !=
electron) && (m_pid_dedx !=
muon) && (m_pid_dedx !=
pion)&& (m_pid_dedx !=
kaon)&& (m_pid_dedx !=
proton) )
continue;
65 m_chidedx = (*it)->chi(m_parttype);
66 m_chidedxE = (*it)->chiE();
67 m_chidedxMu = (*it)->chiMu();
68 m_chidedxPi = (*it)->chiPi();
69 m_chidedxK = (*it)->chiK();
70 m_chidedxP = (*it)->chiP();
72 log << MSG::INFO <<
"particle chi="<< m_chidedx <<endreq;
73 log << MSG::INFO <<
"m_dedx="<<m_dedx<<endreq;
74 log << MSG::INFO <<
" m_parttype="<< m_parttype<<endreq;
75 StatusCode status1 = m_tuple1->write();
76 if ( status1.isFailure() ) {
77 log << MSG::ERROR <<
"Cannot fill Ntuple1" << endreq;
82 return StatusCode::SUCCESS;
88 MsgStream log(
msgSvc(), name());
89 log << MSG::INFO <<
"Finalizing..." << endreq;
ValidRecMdcDedxAlg(const std::string &name, ISvcLocator *pSvcLocator)