27 MsgStream log(
msgSvc(), name() );
29 log << MSG::INFO <<
"in initialize()" << endmsg;
36 NTuplePtr nt(
ntupleSvc(),
"DQAFILE/EMC" );
37 if ( nt ) m_tuple = nt;
40 m_tuple =
ntupleSvc()->book(
"DQAFILE/EMC", CLID_ColumnWiseTuple,
"EMC ntuple" );
43 status = m_tuple->addItem(
"ixtal", m_ixtal );
44 status = m_tuple->addItem(
"npart", m_npart );
45 status = m_tuple->addItem(
"ntheta", m_ntheta );
46 status = m_tuple->addItem(
"nphi", m_nphi );
47 status = m_tuple->addItem(
"theta", m_theta );
48 status = m_tuple->addItem(
"phi", m_phi );
49 status = m_tuple->addItem(
"emcX", m_emcX );
50 status = m_tuple->addItem(
"emcY", m_emcY );
51 status = m_tuple->addItem(
"eSeed", m_eSeed );
52 status = m_tuple->addItem(
"e5x5", m_e5x5 );
53 status = m_tuple->addItem(
"energy", m_energy );
54 status = m_tuple->addItem(
"time", m_time );
56 else { log << MSG::ERROR <<
"Can not book N-tuple:" << long( m_tuple ) << endmsg; }
59 if ( service(
"THistSvc", m_thistsvc ).isFailure() )
61 log << MSG::ERROR <<
"Couldn't get THistSvc" << endmsg;
62 return StatusCode::FAILURE;
68 std::string HistName0, HistName;
69 HistName0 =
"/DQAHist/EMC/";
71 sprintf( name,
"EMC_Bhabha_ShowerEneBarrelVsEvent" );
74 m_HistEnergyB =
new TH1F( name,
title, 200, 0., 2.0 );
75 m_HistEnergyB->GetXaxis()->SetTitle(
"shower energy(GeV)" );
76 m_HistEnergyB->GetXaxis()->CenterTitle();
77 m_HistEnergyB->GetYaxis()->SetTitle(
"Number of event" );
78 m_HistEnergyB->GetYaxis()->CenterTitle();
80 HistName = HistName0 + name;
81 if ( m_thistsvc->regHist( HistName, m_HistEnergyB ).isFailure() )
82 { log << MSG::ERROR <<
"Couldn't register " << name << endmsg; }
84 sprintf( name,
"EMC_Bhabha_ShowerEneEastVsEvent" );
86 m_HistEnergyEast =
new TH1F( name,
title, 200, 0., 2.0 );
87 m_HistEnergyEast->GetXaxis()->SetTitle(
"shower energy(GeV)" );
88 m_HistEnergyEast->GetXaxis()->CenterTitle();
89 m_HistEnergyEast->GetYaxis()->SetTitle(
"Number of event" );
90 m_HistEnergyEast->GetYaxis()->CenterTitle();
92 HistName = HistName0 + name;
93 if ( m_thistsvc->regHist( HistName, m_HistEnergyEast ).isFailure() )
94 { log << MSG::ERROR <<
"Couldn't register " << name << endmsg; }
96 sprintf( name,
"EMC_Bhabha_ShowerEneWestVsEvent" );
98 m_HistEnergyWest =
new TH1F( name,
title, 200, 0., 2.0 );
99 m_HistEnergyWest->GetXaxis()->SetTitle(
"shower energy(GeV)" );
100 m_HistEnergyWest->GetXaxis()->CenterTitle();
101 m_HistEnergyWest->GetYaxis()->SetTitle(
"Number of event" );
102 m_HistEnergyWest->GetYaxis()->CenterTitle();
104 HistName = HistName0 + name;
105 if ( m_thistsvc->regHist( HistName, m_HistEnergyWest ).isFailure() )
106 { log << MSG::ERROR <<
"Couldn't register " << name << endmsg; }
108 sprintf( name,
"EMC_Bhabha_ShowerThetaVsvent" );
110 m_HistTheta =
new TH1F( name,
title, 56, 0, 56 );
111 m_HistTheta->GetXaxis()->SetTitle(
"shower ID(theta)" );
112 m_HistTheta->GetXaxis()->CenterTitle();
113 m_HistTheta->GetYaxis()->SetTitle(
"Number of event" );
114 m_HistTheta->GetYaxis()->CenterTitle();
116 HistName = HistName0 + name;
117 if ( m_thistsvc->regHist( HistName, m_HistTheta ).isFailure() )
118 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
120 sprintf( name,
"EMC_Bhabha_ShowerCosTheta" );
122 m_HistCosTheta =
new TH1F( name,
title, 200, -1.0, 1.0 );
123 m_HistCosTheta->GetXaxis()->SetTitle(
"shower cos(theta)" );
124 m_HistCosTheta->GetXaxis()->CenterTitle();
125 m_HistCosTheta->GetYaxis()->SetTitle(
"Number of event" );
126 m_HistCosTheta->GetYaxis()->CenterTitle();
128 HistName = HistName0 + name;
129 if ( m_thistsvc->regHist( HistName, m_HistCosTheta ).isFailure() )
130 { log << MSG::ERROR <<
"Couldn't register " << name << endmsg; }
132 sprintf( name,
"EMC_Bhabha_ShowerPhiBarrelVsEvent" );
133 sprintf(
title,
"EMC Bhabha ShowerPhiBarrel vs event" );
134 m_HistPhiB =
new TH1F( name,
title, 120, 0, 120 );
135 m_HistPhiB->GetXaxis()->SetTitle(
"shower ID(phi)" );
136 m_HistPhiB->GetXaxis()->CenterTitle();
137 m_HistPhiB->GetYaxis()->SetTitle(
"Number of event" );
138 m_HistPhiB->GetYaxis()->CenterTitle();
140 HistName = HistName0 + name;
141 if ( m_thistsvc->regHist( HistName, m_HistPhiB ).isFailure() )
142 { log << MSG::ERROR <<
"Couldn't register " << name << endmsg; }
144 sprintf( name,
"EMC_Bhabha_ShowerPhiEastVsEvent" );
146 m_HistPhiEast =
new TH1F( name,
title, 256, -3.14, 3.14 );
147 m_HistPhiEast->GetXaxis()->SetTitle(
"shower phi(radian)" );
148 m_HistPhiEast->GetXaxis()->CenterTitle();
149 m_HistPhiEast->GetYaxis()->SetTitle(
"Number of event" );
150 m_HistPhiEast->GetYaxis()->CenterTitle();
152 HistName = HistName0 + name;
153 if ( m_thistsvc->regHist( HistName, m_HistPhiEast ).isFailure() )
154 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
156 sprintf( name,
"EMC_Bhabha_ShowerPhiWestVsEvent" );
158 m_HistPhiWest =
new TH1F( name,
title, 256, -3.14, 3.14 );
159 m_HistPhiWest->GetXaxis()->SetTitle(
"shower phi(radian)" );
160 m_HistPhiWest->GetXaxis()->CenterTitle();
161 m_HistPhiWest->GetYaxis()->SetTitle(
"Number of event" );
162 m_HistPhiWest->GetYaxis()->CenterTitle();
164 HistName = HistName0 + name;
165 if ( m_thistsvc->regHist( HistName, m_HistPhiWest ).isFailure() )
166 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
168 sprintf( name,
"EMC_Bhabha_ShowerThetaPhi" );
170 m_ThetaPhi =
new TH2F( name,
"Theta versus Phi", 2000, -3.15, 3.15, 2000, 0.1, 3.0 );
171 m_ThetaPhi->GetXaxis()->SetTitle(
"shower phi(radian)" );
172 m_ThetaPhi->GetXaxis()->CenterTitle();
173 m_ThetaPhi->GetYaxis()->SetTitle(
"shower theta(radian)" );
174 m_ThetaPhi->GetYaxis()->CenterTitle();
176 HistName = HistName0 + name;
177 if ( m_thistsvc->regHist( HistName, m_ThetaPhi ).isFailure() )
178 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
181 sprintf( name,
"EMC_Bhabha_Time-T0" );
183 m_HistTime =
new TH1F( name,
title, 100, -40, 60 );
184 m_HistTime->GetXaxis()->SetTitle(
"EmcTime-T0 (50ns)" );
185 m_HistTime->GetXaxis()->CenterTitle();
186 m_HistTime->GetYaxis()->SetTitle(
"Number of event" );
187 m_HistTime->GetYaxis()->CenterTitle();
189 HistName = HistName0 + name;
190 if ( m_thistsvc->regHist( HistName, m_HistTime ).isFailure() )
191 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
193 sprintf( name,
"EMC_Bhabha_ixtal" );
195 m_HistHitMap =
new TH1F( name,
title, 6240, 0, 6240 );
196 m_HistHitMap->GetXaxis()->SetTitle(
"ixtalNumber" );
197 m_HistHitMap->GetXaxis()->CenterTitle();
198 m_HistHitMap->GetYaxis()->SetTitle(
"Number of event" );
199 m_HistHitMap->GetYaxis()->CenterTitle();
201 HistName = HistName0 + name;
202 if ( m_thistsvc->regHist( HistName, m_HistHitMap ).isFailure() )
203 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
205 sprintf( name,
"EMC_Bhabha_eSeedvsIxtal " );
207 m_eSeedIxtal =
new TH2F( name,
"eSeed:Ixtal", 6240, 0, 6240, 2000, 0, 1.8 );
208 m_eSeedIxtal->GetXaxis()->SetTitle(
"Ixtal)" );
209 m_eSeedIxtal->GetXaxis()->CenterTitle();
210 m_eSeedIxtal->GetYaxis()->SetTitle(
"eSeed(GeV)" );
211 m_eSeedIxtal->GetYaxis()->CenterTitle();
213 HistName = HistName0 + name;
214 if ( m_thistsvc->regHist( HistName, m_eSeedIxtal ).isFailure() )
215 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
217 sprintf( name,
"EMC_Bhabha_emcX:emcYeast " );
218 sprintf(
title,
"EMC Bhabha emcX vs emcY of east endcap" );
219 m_XYeast =
new TH2F( name,
"emcX:emcY", 2000, -100, 100, 2000, -100, 100 );
220 m_XYeast->GetXaxis()->SetTitle(
"emcX" );
221 m_XYeast->GetXaxis()->CenterTitle();
222 m_XYeast->GetYaxis()->SetTitle(
"emcY" );
223 m_XYeast->GetYaxis()->CenterTitle();
225 HistName = HistName0 + name;
226 if ( m_thistsvc->regHist( HistName, m_XYeast ).isFailure() )
227 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
229 sprintf( name,
"EMC_Bhabha_emcX:emcYwest " );
230 sprintf(
title,
"EMC Bhabha emcX vs emcY of west endcap" );
231 m_XYwest =
new TH2F( name,
"emcX:emcY", 2000, -100, 100, 2000, -100, 100 );
232 m_XYwest->GetXaxis()->SetTitle(
"emcX" );
233 m_XYwest->GetXaxis()->CenterTitle();
234 m_XYwest->GetYaxis()->SetTitle(
"emcY" );
235 m_XYwest->GetYaxis()->CenterTitle();
237 HistName = HistName0 + name;
238 if ( m_thistsvc->regHist( HistName, m_XYwest ).isFailure() )
239 { log << MSG::ERROR <<
"Couldn't register" << name << endmsg; }
243 scCalib = Gaudi::svcLocator()->service(
"EmcCalibConstSvc", m_emcCalibConstSvc );
244 if ( scCalib != StatusCode::SUCCESS )
245 { log << MSG::ERROR <<
"can not use EmcCalibConstSvc" << endmsg; }
247 log << MSG::INFO <<
"successfully return from initialize()" << endmsg;
248 return StatusCode::SUCCESS;
254 MsgStream log(
msgSvc(), name() );
255 log << MSG::INFO <<
"in execute()" << endmsg;
257 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(),
"/Event/EventHeader" );
258 m_runNo = eventHeader->runNumber();
259 m_event = eventHeader->eventNumber();
260 log << MSG::DEBUG <<
"run, evtnum = " << m_runNo <<
" , " << m_event << endmsg;
264 SmartDataPtr<DQAEvent::DQAEvent> dqaevt( eventSvc(),
"/Event/DQATag" );
265 if ( dqaevt ) { log << MSG::INFO <<
"success get DQAEvent" << endmsg; }
268 log << MSG::ERROR <<
"Error accessing DQAEvent" << endmsg;
269 return StatusCode::FAILURE;
272 log << MSG::DEBUG <<
"event tag = " << dqaevt->EventTag() << endmsg;
275 if ( dqaevt->Bhabha() )
277 log << MSG::INFO <<
"Bhabha event" << endmsg;
278 SmartDataPtr<EvtRecTrackCol> evtRecTrkCol( eventSvc(),
281 double eneShower, theta, phi, costheta;
286 std::string HistName;
288 for (
int i = 0; i < evtRecEvent->totalCharged(); i++ )
292 log << MSG::DEBUG << i <<
" " << ( *itTrk )->partId() <<
" " << ( *itTrk )->quality()
297 if ( !( *itTrk )->isElectron() )
continue;
309 if ( mdcTrk->
charge() > 0 ) { log << MSG::DEBUG <<
"is electron" << endmsg; }
310 else { log << MSG::DEBUG <<
"is positron" << endmsg; }
312 if ( ( *itTrk )->isEmcShowerValid() )
316 eneShower = theShower->
energy();
317 theta = theShower->
theta();
318 phi = theShower->
phi();
319 costheta =
cos( theta );
331 log << MSG::DEBUG <<
"test program " << npart <<
" " << ntheta <<
" " << nphi
337 m_ixtal = m_emcCalibConstSvc->getIndex( npart, ntheta, nphi );
340 m_emcX = theShower->
x();
341 m_emcY = theShower->
y();
342 m_eSeed = theShower->
eSeed();
343 m_e5x5 = theShower->
e5x5();
344 m_energy = theShower->
energy();
345 m_time = theShower->
time();
349 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_Time-T0" );
351 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( m_time ); }
352 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
356 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( m_ixtal ); }
357 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
359 m_eSeedIxtal->Fill( m_ixtal, m_eSeed );
364 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_ShowerEneBarrelVsEvent" );
366 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( eneShower ); }
367 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
369 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_ShowerPhiBarrelVsEvent" );
371 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( nphi ); }
372 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
378 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_ShowerEneEastVsEvent" );
380 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( eneShower ); }
381 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
383 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_ShowerPhiEastVsEvent" );
385 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( phi ); }
386 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
388 m_XYeast->Fill( m_emcX, m_emcY );
393 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_ShowerEneWestVsEvent" );
395 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( eneShower ); }
396 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
398 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_ShowerPhiWestVsEvent" );
400 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( phi ); }
401 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
403 m_XYwest->Fill( m_emcX, m_emcY );
407 if ( npart == 0 ) { m_nthe = ntheta; }
408 if ( npart == 2 ) { m_nthe = 55 - ntheta; }
409 if ( npart == 1 ) { m_nthe = ntheta + 6; }
411 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_ShowerThetaVsvent" );
413 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( m_nthe ); }
414 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
416 sprintf(
Name,
"/DQAHist/EMC/EMC_Bhabha_ShowerCosTheta" );
418 if ( m_thistsvc->getHist( HistName, hmom ).isSuccess() ) { hmom->Fill( costheta ); }
419 else { log << MSG::ERROR <<
"Couldn't retrieve" << HistName << endmsg; }
429 m_ThetaPhi->Fill( phi, theta );
431 if ( m_NtupleOutput == 1 ) m_tuple->write().ignore();
436 return StatusCode::SUCCESS;