119 {
120
121 MsgStream log(
msgSvc(), name() );
122 log << MSG::INFO << "in execute()" << endmsg;
123
124 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
125 m_run = eventHeader->runNumber();
126 m_event = eventHeader->eventNumber();
127 log << MSG::DEBUG << "Run " << m_run << "\tEvent " << m_event << endmsg;
128
129 SmartDataPtr<DQAEvent::DQAEvent> dqaevt( eventSvc(), "/Event/DQATag" );
130 if ( dqaevt ) { log << MSG::INFO << "success get DQAEvent" << endmsg; }
131 else
132 {
133 log << MSG::ERROR << "Error accessing DQAEvent" << endmsg;
134 return StatusCode::FAILURE;
135 }
136 log << MSG::DEBUG << "DQA event tag = " << dqaevt->EventTag() << endmsg;
137
138 double p;
140 bool isDimu = false;
141 if ( dqaevt->Dimu() ) isDimu = true;
142 log << MSG::INFO << "DQADimuTag:\t" << dqaevt->Dimu() << endmsg;
143
144
145 bool isBb = false;
146 if ( dqaevt->Bhabha() ) isBb = true;
147 log << MSG::INFO << "DQABbTag:\t" << dqaevt->Bhabha() << endmsg;
148
149
150 SmartDataPtr<RecMdcKalTrackCol> kaltrkCol( eventSvc(), "/Event/Recon/RecMdcKalTrackCol" );
151 if ( !kaltrkCol )
152 {
153 log << MSG::FATAL << "Could not find RecMdcKalTrackCol" << endmsg;
154 return StatusCode::FAILURE;
155 }
156 RecMdcKalTrackCol::iterator iter_trk = kaltrkCol->begin();
157 for ( ; iter_trk != kaltrkCol->end(); iter_trk++ )
158 {
161
162
163 double dr = ( *iter_trk )->dr();
164 double phi0 = ( *iter_trk )->fi0();
165 double kappa = ( *iter_trk )->kappa();
166 double dz = ( *iter_trk )->dz();
167 double tanl = ( *iter_trk )->tanl();
168 double pt = 1.0 / kappa;
169 HepLorentzVector p4;
170 p4.setPx( -
sin( phi0 ) / fabs( kappa ) );
171 p4.setPy(
cos( phi0 ) / fabs( kappa ) );
172 p4.setPz( tanl / fabs( kappa ) );
173
174 double p3 = p4.mag();
176 if ( isBb )
mass = 0.000511;
177 else if ( isDimu )
mass = 0.105658;
178
179 p4.setE( sqrt( p3 * p3 +
mass *
mass ) );
180 p = p4.rho();
181
182 double ecm = 3.68632;
183 HepLorentzVector psip( 0.011 * ecm, 0, 0.0075, ecm );
184 Hep3Vector boostv = psip.boostVector();
185 p4.boost( -boostv );
187 TH1* hmom( 0 );
188 if ( isBb )
189 {
190 if ( m_thsvc->getHist( "/DQAHist/MDC/hpTotLabBb", hmom ).isSuccess() )
191 { hmom->Fill( p ); }
192 else { log << MSG::ERROR << "Couldn't retrieve hpTotLabBb" << endmsg; }
193 if ( m_thsvc->getHist( "/DQAHist/MDC/hpTotCmsBb", hmom ).isSuccess() )
194 { hmom->Fill(
p_cms ); }
195 else { log << MSG::ERROR << "Couldn't retrieve hpTotCmsBb" << endmsg; }
196 if ( pt > 0 )
197 {
198 if ( m_thsvc->getHist( "/DQAHist/MDC/hppLabBb", hmom ).isSuccess() )
199 { hmom->Fill( p ); }
200 else { log << MSG::ERROR << "Couldn't retrieve hppLabBb" << endmsg; }
201 if ( m_thsvc->getHist( "/DQAHist/MDC/hppCmsBb", hmom ).isSuccess() )
202 { hmom->Fill( p ); }
203 else { log << MSG::ERROR << "Couldn't retrieve hppCmsBb" << endmsg; }
204 }
205 else if ( pt < 0 )
206 {
207 if ( m_thsvc->getHist( "/DQAHist/MDC/hpmLabBb", hmom ).isSuccess() )
208 { hmom->Fill( p ); }
209 else { log << MSG::ERROR << "Couldn't retrieve hpmLabBb" << endmsg; }
210 if ( m_thsvc->getHist( "/DQAHist/MDC/hpmCmsBb", hmom ).isSuccess() )
211 { hmom->Fill( p ); }
212 else { log << MSG::ERROR << "Couldn't retrieve hpmCmsBb" << endmsg; }
213 }
214 }
215 else if ( isDimu )
216 {
217 if ( m_thsvc->getHist( "/DQAHist/MDC/hpTotLabDimu", hmom ).isSuccess() )
218 { hmom->Fill( p ); }
219 else { log << MSG::ERROR << "Couldn't retrieve hpTotLabDimu" << endmsg; }
220 if ( m_thsvc->getHist( "/DQAHist/MDC/hpTotCmsDimu", hmom ).isSuccess() )
221 { hmom->Fill(
p_cms ); }
222 else { log << MSG::ERROR << "Couldn't retrieve hpTotCmsDimu" << endmsg; }
223 if ( pt > 0 )
224 {
225 if ( m_thsvc->getHist( "/DQAHist/MDC/hppLabDimu", hmom ).isSuccess() )
226 { hmom->Fill( p ); }
227 else { log << MSG::ERROR << "Couldn't retrieve hppLabDimu" << endmsg; }
228 if ( m_thsvc->getHist( "/DQAHist/MDC/hppCmsDimu", hmom ).isSuccess() )
229 { hmom->Fill( p ); }
230 else { log << MSG::ERROR << "Couldn't retrieve hppCmsDimu" << endmsg; }
231 }
232 else if ( pt < 0 )
233 {
234 if ( m_thsvc->getHist( "/DQAHist/MDC/hpmLabDimu", hmom ).isSuccess() )
235 { hmom->Fill( p ); }
236 else { log << MSG::ERROR << "Couldn't retrieve hpmLabDimu" << endmsg; }
237 if ( m_thsvc->getHist( "/DQAHist/MDC/hpmCmsDimu", hmom ).isSuccess() )
238 { hmom->Fill( p ); }
239 else { log << MSG::ERROR << "Couldn't retrieve hpmCmsDimu" << endmsg; }
240 }
241 }
242 }
243
244 SmartDataPtr<RecMdcTrackCol> newtrkCol( eventSvc(), "/Event/Recon/RecMdcTrackCol" );
245 if ( !newtrkCol )
246 {
247 log << MSG::ERROR << "Could not find RecMdcTrackCol" << endmsg;
248 return ( StatusCode::FAILURE );
249 }
250
251 RecMdcTrackCol::iterator it_trk = newtrkCol->begin();
252 for ( ; it_trk != newtrkCol->end(); it_trk++ )
253 {
254 HitRefVec gothits = ( *it_trk )->getVecHits();
255 HitRefVec::iterator it_hit = gothits.begin();
256 for ( ; it_hit != gothits.end(); it_hit++ )
257 {
258
259
260
261 double lr = ( *it_hit )->getFlagLR();
262 if ( -1 == lr ) lr = 0;
263 double resilrInc;
264 double resilrExc;
265
266 double docaInc = ( *it_hit )->getDoca();
267 double docaExc = docaInc;
268
269
270
271 double dmeas;
272 if ( 0 == lr ) { dmeas = ( *it_hit )->getDriftDistLeft(); }
273 else { dmeas = ( *it_hit )->getDriftDistRight(); }
274
275 double df = 10.0;
276 docaInc *= df;
277 docaExc *= df;
278 dmeas *= df;
279 double resiInc = fabs( dmeas ) - fabs( docaInc );
280 if ( 0 == lr ) resilrInc = -1.0 * resiInc;
281 else resilrInc = resiInc;
282
283 double resiExc = fabs( dmeas ) - fabs( docaExc );
284 if ( 0 == lr ) resilrExc = -1.0 * resiExc;
285 else resilrExc = resiExc;
286
287 double resilrEva = 0.5 * ( resilrInc + resilrExc );
288
289
290 TH1* htmp( 0 );
291 if ( isBb )
292 {
293 if ( m_thsvc->getHist( "/DQAHist/MDC/hresAllIncBb", htmp ).isSuccess() )
294 { htmp->Fill( resilrInc ); }
295 else { log << MSG::ERROR << "Couldn't retrieve hresAllIncBb" << endmsg; }
296 if ( m_thsvc->getHist( "/DQAHist/MDC/hresAllExcBb", htmp ).isSuccess() )
297 { htmp->Fill( resilrExc ); }
298 else { log << MSG::ERROR << "Couldn't retrieve hresAllExcBb" << endmsg; }
299 if ( m_thsvc->getHist( "/DQAHist/MDC/hresAllEvaBb", htmp ).isSuccess() )
300 { htmp->Fill( resilrEva ); }
301 else { log << MSG::ERROR << "Couldn't retrieve hresAllEvaBb" << endmsg; }
302 }
303 else if ( isDimu )
304 {
305 if ( m_thsvc->getHist( "/DQAHist/MDC/hresAllIncDimu", htmp ).isSuccess() )
306 { htmp->Fill( resilrInc ); }
307 else { log << MSG::ERROR << "Couldn't retrieve hresAllIncDimu" << endmsg; }
308 if ( m_thsvc->getHist( "/DQAHist/MDC/hresAllExcDimu", htmp ).isSuccess() )
309 { htmp->Fill( resilrExc ); }
310 else { log << MSG::ERROR << "Couldn't retrieve hresAllExcDimu" << endmsg; }
311 if ( m_thsvc->getHist( "/DQAHist/MDC/hresAllEvaDimu", htmp ).isSuccess() )
312 { htmp->Fill( resilrEva ); }
313 else { log << MSG::ERROR << "Couldn't retrieve hresAllEvaDimu" << endmsg; }
314 }
315 }
316 }
317
318 return StatusCode::SUCCESS;
319}
const HepLorentzVector p_cms(0.034067, 0.0, 0.0, 3.097)
double sin(const BesAngle a)
double cos(const BesAngle a)
SmartRefVector< RecMdcHit > HitRefVec
static void setPidType(PidType pidType)