81 {
82
83 MsgStream log(
msgSvc(), name() );
84 log << MSG::INFO << "in execute()" << endmsg;
85
86 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
87 m_runNo = eventHeader->runNumber();
88 m_event = eventHeader->eventNumber();
89 log << MSG::DEBUG << "run, evtnum = " << m_runNo << " , " << m_event << endmsg;
90
92
93 SmartDataPtr<DQAEvent::DQAEvent> dqaevt( eventSvc(), "/Event/DQATag" );
94 if ( dqaevt ) { log << MSG::INFO << "success get DQAEvent" << endmsg; }
95 else
96 {
97 log << MSG::ERROR << "Error accessing DQAEvent" << endmsg;
98 return StatusCode::FAILURE;
99 }
100
101 log << MSG::DEBUG << "event tag = " << dqaevt->EventTag() << endmsg;
102
103
104 if ( dqaevt->Bhabha() )
105 {
106 log << MSG::INFO << "Bhabha event" << endmsg;
107 SmartDataPtr<EvtRecTrackCol> evtRecTrkCol( eventSvc(),
109 for ( int i = 0; i < evtRecEvent->totalCharged(); i++ )
110 {
112 log << MSG::DEBUG << i << " " << ( *itTrk )->partId() << " " << ( *itTrk )->quality()
113 << endmsg;
114
115
116
117
118 if ( !( *itTrk )->isElectron() ) continue;
119
120
121
122
123
124
125 int qual = ( *itTrk )->quality();
126 if ( qual != 0 && qual != 2 ) continue;
127
128 RecMdcTrack* mdcTrk = ( *itTrk )->mdcTrack();
129 if ( mdcTrk->
charge() > 0 ) { log << MSG::DEBUG <<
"is electron" << endmsg; }
130 else { log << MSG::DEBUG << "is positron" << endmsg; }
131 double x0 = mdcTrk->
x();
132 double y0 = mdcTrk->
y();
133 double z0 = mdcTrk->
z();
134 double Rxy = sqrt( x0 * x0 + y0 * y0 );
135
136 TH1* h( 0 );
137 if ( m_thsvc->getHist( "/DQAHist/MDC/hrxy", h ).isSuccess() ) { h->Fill( Rxy ); }
138 else { log << MSG::ERROR << "Couldn't retrieve hrxy" << endmsg; }
139 if ( m_thsvc->getHist( "/DQAHist/MDC/hz", h ).isSuccess() ) { h->Fill( z0 ); }
140 else { log << MSG::ERROR << "Couldn't retrieve hz" << endmsg; }
141 }
142 }
143
144 m_tuple->write().ignore();
145
146 return StatusCode::SUCCESS;
147}
EvtRecTrackCol::iterator EvtRecTrackIterator
_EXTERN_ std::string EvtRecEvent
_EXTERN_ std::string EvtRecTrackCol