25 MsgStream log(
msgSvc(), name() );
27 log << MSG::INFO <<
"in initialize()" << endmsg;
30 StatusCode sc = service(
"THistSvc", m_thsvc );
33 log << MSG::ERROR <<
"Couldn't get THistSvc" << endmsg;
34 return StatusCode::FAILURE;
37 h_path =
new TH1F(
"h_path",
"barrel ", 200, 0, 200 );
38 if ( m_thsvc->regHist(
"/DQAHist/TOF/h_path", h_path ).isFailure() )
39 { log << MSG::ERROR <<
"Couldn't register h_path" << endmsg; }
40 h_Bzrhit =
new TH1F(
"h_Bzrhit",
"barrel z hitmap", 240, -120, 120 );
41 m_thsvc->regHist(
"/DQAHist/TOF/h_Bzrhit", h_Bzrhit ).ignore();
42 h_Ezrhit =
new TH1F(
"h_Ezrhit",
"endcap z hitmap", 50, 40, 90 );
43 m_thsvc->regHist(
"/DQAHist/TOF/h_Ezrhit", h_Ezrhit ).ignore();
44 h_ph =
new TH1F(
"h_ph",
"barrel Q", 900, 0, 9000 );
45 m_thsvc->regHist(
"/DQAHist/TOF/h_ph", h_ph ).ignore();
47 W_delT =
new TH2F(
"W_delT",
"barrel west PMT delT", 176, 0, 176, 300, -1.5, 1.5 );
48 m_thsvc->regHist(
"/DQAHist/TOF/W_delT", W_delT ).ignore();
49 E_delT =
new TH2F(
"E_delT",
"barrel east PMT delT", 176, 0, 176, 300, -1.5, 1.5 );
50 m_thsvc->regHist(
"/DQAHist/TOF/E_delT", E_delT ).ignore();
51 counter =
new TH2F(
"counter",
"barrel counter delT", 176, 0, 176, 300, -1.5, 1.5 );
52 m_thsvc->regHist(
"/DQAHist/TOF/counter", counter ).ignore();
53 cluster =
new TH2F(
"cluster",
"barrel cluster delT", 88, 0, 88, 300, -1.5, 1.5 );
54 m_thsvc->regHist(
"/DQAHist/TOF/cluster", cluster ).ignore();
55 EC_delT =
new TH2F(
"EC_delT",
"endcap delT", 96, 0, 96, 300, -1.5, 1.5 );
56 m_thsvc->regHist(
"/DQAHist/TOF/EC_delT", EC_delT ).ignore();
57 Bt_delT =
new TH1F(
"Bt_delT",
"barrel delT", 300, -1.5, 1.5 );
58 m_thsvc->regHist(
"/DQAHist/TOF/Bt_delT", Bt_delT ).ignore();
59 Et_delT =
new TH1F(
"Et_delT",
"endcap delT", 300, -1.5, 1.5 );
60 m_thsvc->regHist(
"/DQAHist/TOF/Et_delT", Et_delT ).ignore();
63 new TH2F(
"B_path",
"barrel flight distance vs z", 240, -120, 120, 200, 0.0, 200.0 );
64 m_thsvc->regHist(
"/DQAHist/TOF/B_path", B_path ).ignore();
65 E_path =
new TH2F(
"E_path",
"endcap path distance vs z", 50, 40, 90, 200, 0.0, 200.0 );
66 m_thsvc->regHist(
"/DQAHist/TOF/E_path", E_path ).ignore();
68 delT_z1 =
new TH2F(
"delT_z1",
"barrel east delT vs Z", 240, -120, 120, 300, -1.5, 1.5 );
69 m_thsvc->regHist(
"/DQAHist/TOF/delT_z1", delT_z1 ).ignore();
70 delT_z2 =
new TH2F(
"delT_z2",
"barrel west delT vs Z", 240, -120, 120, 300, -1.5, 1.5 );
71 m_thsvc->regHist(
"/DQAHist/TOF/delT_z2", delT_z2 ).ignore();
72 delT_z3 =
new TH2F(
"delT_z3",
"barrel counter delT vs Z", 240, -120, 120, 300, -1.5, 1.5 );
73 m_thsvc->regHist(
"/DQAHist/TOF/delT_z3", delT_z3 ).ignore();
74 delT_z4 =
new TH2F(
"delT_z4",
"barrel cluster delT vs Z", 240, -120, 120, 300, -1.5, 1.5 );
75 m_thsvc->regHist(
"/DQAHist/TOF/delT_z4", delT_z4 ).ignore();
77 W_delT_Q =
new TH2F(
"W_delT_Q",
"west barrel delT vs Q", 900, 0, 9000, 300, -1.5, 1.5 );
78 m_thsvc->regHist(
"/DQAHist/TOF/W_delT_Q", W_delT_Q ).ignore();
79 E_delT_Q =
new TH2F(
"E_delT_Q",
"east barrel delT vs Q", 900, 0, 9000, 300, -1.5, 1.5 );
80 m_thsvc->regHist(
"/DQAHist/TOF/E_delT_Q", E_delT_Q ).ignore();
82 delT_pp =
new TH1F(
"delT_pp",
"proton delT", 300, -1.5, 1.5 );
83 m_thsvc->regHist(
"/DQAHist/TOF/delT_pp", delT_pp ).ignore();
84 delT_pm =
new TH1F(
"delT_Pm",
"anti-proton delT", 300, -1.5, 1.5 );
85 m_thsvc->regHist(
"/DQAHist/TOF/delT_pm", delT_pm ).ignore();
86 delT_pi =
new TH1F(
"delT_pi",
"pi delT", 300, -1.5, 1.5 );
87 m_thsvc->regHist(
"/DQAHist/TOF/delT_pi", delT_pi ).ignore();
88 delT_k =
new TH1F(
"delT_k",
"k delT", 300, -1.5, 1.5 );
89 m_thsvc->regHist(
"/DQAHist/TOF/delT_k", delT_k ).ignore();
90 log << MSG::INFO <<
"DQA_TOF successfully return from initialize()" << endmsg;
91 return StatusCode::SUCCESS;
95 MsgStream log(
msgSvc(), name() );
96 log << MSG::INFO <<
"in execute()" << endmsg;
98 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(),
"/Event/EventHeader" );
99 int runNo = eventHeader->runNumber();
100 int event = eventHeader->eventNumber();
101 log << MSG::DEBUG <<
"run,evtnum=" <<
runNo <<
"," <<
event << endmsg;
103 SmartDataPtr<DQAEvent::DQAEvent> dqaevt( eventSvc(),
"/Event/DQATag" );
106 log << MSG::ERROR <<
"Error accessing DQAEvent" << endmsg;
107 return StatusCode::FAILURE;
110 log << MSG::DEBUG <<
"event tag = " << dqaevt->EventTag() << endmsg;
115 if ( dqaevt->Bhabha() )
117 for (
int i = 0; i < evtRecEvent->totalCharged(); i++ )
121 if ( !( *itTrk )->isElectron() )
continue;
122 if ( !( *itTrk )->isTofTrackValid() )
continue;
123 SmartRefVector<RecTofTrack> tofTrkCol = ( *itTrk )->tofTrack();
124 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin();
125 for ( ; iter_tof != tofTrkCol.end(); iter_tof++ )
128 status.
setStatus( ( *iter_tof )->status() );
129 int tofid = ( *iter_tof )->tofID();
130 double tof = ( *iter_tof )->tof();
131 double texpE = ( *iter_tof )->texpElectron();
132 double path = ( *iter_tof )->path();
133 double Q = ( *iter_tof )->ph();
134 double zrhit = ( *iter_tof )->zrhit();
138 h_Bzrhit->Fill( zrhit );
139 h_path->Fill( path );
144 B_path->Fill( zrhit, path );
147 E_delT->Fill( tofid, tof - texpE );
148 delT_z1->Fill( zrhit, tof - texpE );
149 E_delT_Q->Fill( Q, tof - texpE );
153 W_delT->Fill( tofid, tof - texpE );
154 delT_z2->Fill( zrhit, tof - texpE );
155 W_delT_Q->Fill( Q, tof - texpE );
160 counter->Fill( tofid, tof - texpE );
161 delT_z3->Fill( zrhit, tof - texpE );
165 cluster->Fill( tofid, tof - texpE );
166 Bt_delT->Fill( tof - texpE );
167 delT_z4->Fill( zrhit, tof - texpE );
172 E_path->Fill( zrhit, path );
173 h_Ezrhit->Fill( zrhit );
174 EC_delT->Fill( tofid, tof - texpE );
175 Et_delT->Fill( tof - texpE );
182 for (
int i = 0; i < evtRecEvent->totalCharged(); i++ )
186 if ( !( *itTrk )->isTofTrackValid() )
continue;
187 SmartRefVector<RecTofTrack> tofTrkCol = ( *itTrk )->tofTrack();
188 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin();
189 for ( ; iter_tof != tofTrkCol.end(); iter_tof++ )
192 status.
setStatus( ( *iter_tof )->status() );
194 double tof = ( *iter_tof )->tof();
195 double texpPi = ( *iter_tof )->texpPion();
196 double texpK = ( *iter_tof )->texpKaon();
197 double texpP = ( *iter_tof )->texpProton();
199 if ( ( *itTrk )->isPion() )
201 double texpPi = ( *iter_tof )->texpPion();
202 delT_pi->Fill( tof - texpPi );
205 else if ( ( *itTrk )->isKaon() )
207 double texpK = ( *iter_tof )->texpKaon();
208 delT_k->Fill( tof - texpK );
211 else if ( ( *itTrk )->isProton() )
213 double texpP = ( *iter_tof )->texpProton();
214 if ( !( *itTrk )->isMdcTrackValid() )
continue;
216 if ( mdcTrk->
charge() > 0 ) delT_pp->Fill( tof - texpP );
217 else delT_pm->Fill( tof - texpP );
222 return StatusCode::SUCCESS;