BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TofCheckDigi.cxx
Go to the documentation of this file.
1#include "TofCheckDigi.h"
2#include "TofCaliSvc/ITofCaliSvc.h"
3#include "TofConstants.h"
4// #include "TofQElecSvc/ITofQElecSvc.h"
5#include "Identifier/Identifier.h"
6#include "Identifier/TofID.h"
7#include "McTruth/McParticle.h"
8#include "McTruth/TofMcHit.h"
9#include <iostream>
10
12// extern ITofQElecSvc* tofQElecSvc;
13
14TofCheckDigi::TofCheckDigi( NTuple::Tuple*& digi, NTuple::Tuple*& barrel,
15 NTuple::Tuple*& endcap, NTuple::Tuple*& mrpc, NTuple::Tuple*& ext,
16 NTuple::Tuple*& tof, NTuple::Tuple*& bhabha )
17 : digi_tuple( digi )
18 , barrel_tuple( barrel )
19 , endcap_tuple( endcap )
20 , mrpc_tuple( mrpc )
21 , ext_tuple( ext )
22 , tof_tuple( tof )
23 , bb_tuple( bhabha ) {
24 if ( !digi_tuple )
25 {
26 std::cerr << " Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for digi_tuple "
27 << std::endl;
28 }
29 else
30 {
31 digi_tuple->addItem( "run", digi_run );
32 digi_tuple->addItem( "event", digi_event );
33 digi_tuple->addItem( "barrel", digi_barrel );
34 digi_tuple->addItem( "endcap", digi_endcap );
35 digi_tuple->addItem( "layer", digi_layer );
36 digi_tuple->addItem( "tofid", digi_tofId );
37 digi_tuple->addItem( "strip", digi_strip );
38 digi_tuple->addItem( "end", digi_end );
39 digi_tuple->addItem( "adc", digi_adc );
40 digi_tuple->addItem( "tdc", digi_tdc );
41 digi_tuple->addItem( "qclock", digi_qclock );
42 digi_tuple->addItem( "tclock", digi_tclock );
43 digi_tuple->addItem( "over", digi_overflow );
44 digi_tuple->addItem( "noq", digi_noq );
45 digi_tuple->addItem( "not", digi_not );
46 digi_tuple->addItem( "multiq", digi_multiq );
47 digi_tuple->addItem( "multit", digi_multit );
48 digi_tuple->addItem( "overq", digi_overq );
49 digi_tuple->addItem( "overt", digi_overt );
50 digi_tuple->addItem( "t0", digi_t0 );
51 digi_tuple->addItem( "t0stat", digi_t0stat );
52 digi_tuple->addItem( "crate", digi_crate );
53 digi_tuple->addItem( "geo", digi_geo );
54 digi_tuple->addItem( "tdcnum", digi_tdcnum );
55 digi_tuple->addItem( "err", digi_err );
56 }
57
58 if ( !barrel_tuple )
59 {
60 std::cerr << " Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for barrel_tuple "
61 << std::endl;
62 }
63 else
64 {
65 barrel_tuple->addItem( "run", barrel_run );
66 barrel_tuple->addItem( "event", barrel_event );
67 barrel_tuple->addItem( "tofid", barrel_tofId );
68 barrel_tuple->addItem( "icluster", barrel_tofTrackId );
69 barrel_tuple->addItem( "layer", barrel_layer );
70 barrel_tuple->addItem( "qch1", barrel_qchannel1 );
71 barrel_tuple->addItem( "tch1", barrel_tchannel1 );
72 barrel_tuple->addItem( "qch2", barrel_qchannel2 );
73 barrel_tuple->addItem( "tch2", barrel_tchannel2 );
74 barrel_tuple->addItem( "qtc1", barrel_qtc1 );
75 barrel_tuple->addItem( "adc1", barrel_adc1 );
76 barrel_tuple->addItem( "tdc1", barrel_tdc1 );
77 barrel_tuple->addItem( "qtc2", barrel_qtc2 );
78 barrel_tuple->addItem( "adc2", barrel_adc2 );
79 barrel_tuple->addItem( "tdc2", barrel_tdc2 );
80 barrel_tuple->addItem( "qclock1", barrel_qclock1 );
81 barrel_tuple->addItem( "tclock1", barrel_tclock1 );
82 barrel_tuple->addItem( "qclock2", barrel_qclock2 );
83 barrel_tuple->addItem( "tclock2", barrel_tclock2 );
84 barrel_tuple->addItem( "qual", barrel_quality );
85 barrel_tuple->addItem( "tmatched", barrel_tmatched );
86 barrel_tuple->addItem( "qtimes1", barrel_qtimes1 );
87 barrel_tuple->addItem( "ttimes1", barrel_ttimes1 );
88 barrel_tuple->addItem( "qtimes2", barrel_qtimes2 );
89 barrel_tuple->addItem( "ttimes2", barrel_ttimes2 );
90 barrel_tuple->addItem( "times1", barrel_times1 );
91 barrel_tuple->addItem( "times2", barrel_times2 );
92 barrel_tuple->addItem( "times", barrel_times );
93 barrel_tuple->addItem( "qnum1", barrel_qnum1 );
94 barrel_tuple->addItem( "tnum1", barrel_tnum1 );
95 barrel_tuple->addItem( "qnum2", barrel_qnum2 );
96 barrel_tuple->addItem( "tnum2", barrel_tnum2 );
97 barrel_tuple->addItem( "tsum", barrel_tsum );
98 barrel_tuple->addItem( "tsub", barrel_tsub );
99 barrel_tuple->addItem( "ztdc", barrel_ztdc );
100 barrel_tuple->addItem( "zadc", barrel_zadc );
101 barrel_tuple->addItem( "t0", barrel_t0 );
102 barrel_tuple->addItem( "t0stat", barrel_t0stat );
103 }
104
105 if ( !endcap_tuple )
106 {
107 std::cerr << " Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for endcap_tuple "
108 << std::endl;
109 }
110 else
111 {
112 endcap_tuple->addItem( "run", endcap_run );
113 endcap_tuple->addItem( "event", endcap_event );
114 endcap_tuple->addItem( "tofid", endcap_tofId );
115 endcap_tuple->addItem( "icluster", endcap_tofTrackId );
116 endcap_tuple->addItem( "qch", endcap_qchannel );
117 endcap_tuple->addItem( "tch", endcap_tchannel );
118 endcap_tuple->addItem( "qtc", endcap_qtc );
119 endcap_tuple->addItem( "adc", endcap_adc );
120 endcap_tuple->addItem( "tdc", endcap_tdc );
121 endcap_tuple->addItem( "qual", endcap_quality );
122 endcap_tuple->addItem( "qclock", endcap_qclock );
123 endcap_tuple->addItem( "tclock", endcap_tclock );
124 endcap_tuple->addItem( "qtimes", endcap_qtimes );
125 endcap_tuple->addItem( "ttimes", endcap_ttimes );
126 endcap_tuple->addItem( "times", endcap_times );
127 endcap_tuple->addItem( "qnum", endcap_qnum );
128 endcap_tuple->addItem( "tnum", endcap_tnum );
129 endcap_tuple->addItem( "t0", endcap_t0 );
130 endcap_tuple->addItem( "t0stat", endcap_t0stat );
131 }
132
133 if ( !mrpc_tuple )
134 {
135 std::cerr << " Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for mrpc_tuple "
136 << std::endl;
137 }
138 else
139 {
140 mrpc_tuple->addItem( "run", mrpc_run );
141 mrpc_tuple->addItem( "event", mrpc_event );
142 mrpc_tuple->addItem( "tofid", mrpc_tofId );
143 mrpc_tuple->addItem( "strip", mrpc_strip );
144 mrpc_tuple->addItem( "icluster", mrpc_tofTrackId );
145 mrpc_tuple->addItem( "ttch1", mrpc_ttch1 );
146 mrpc_tuple->addItem( "tlch1", mrpc_tlch1 );
147 mrpc_tuple->addItem( "ttch2", mrpc_ttch2 );
148 mrpc_tuple->addItem( "tlch2", mrpc_tlch2 );
149 mrpc_tuple->addItem( "tt1", mrpc_tt1 );
150 mrpc_tuple->addItem( "tl1", mrpc_tl1 );
151 mrpc_tuple->addItem( "tt2", mrpc_tt2 );
152 mrpc_tuple->addItem( "tl2", mrpc_tl2 );
153 mrpc_tuple->addItem( "tot1", mrpc_tot1 );
154 mrpc_tuple->addItem( "tot2", mrpc_tot2 );
155 mrpc_tuple->addItem( "qual", mrpc_quality );
156 mrpc_tuple->addItem( "tmatched", mrpc_tmatched );
157 mrpc_tuple->addItem( "tttimes1", mrpc_tttimes1 );
158 mrpc_tuple->addItem( "tltimes1", mrpc_tltimes1 );
159 mrpc_tuple->addItem( "tttimes2", mrpc_tttimes2 );
160 mrpc_tuple->addItem( "tltimes2", mrpc_tltimes2 );
161 mrpc_tuple->addItem( "times1", mrpc_times1 );
162 mrpc_tuple->addItem( "times2", mrpc_times2 );
163 mrpc_tuple->addItem( "times", mrpc_times );
164 mrpc_tuple->addItem( "ttnum1", mrpc_ttnum1 );
165 mrpc_tuple->addItem( "tlnum1", mrpc_tlnum1 );
166 mrpc_tuple->addItem( "ttnum2", mrpc_ttnum2 );
167 mrpc_tuple->addItem( "tlnum2", mrpc_tlnum2 );
168 mrpc_tuple->addItem( "tsum", mrpc_tsum );
169 mrpc_tuple->addItem( "tsub", mrpc_tsub );
170 mrpc_tuple->addItem( "ztdc", mrpc_ztdc );
171 mrpc_tuple->addItem( "zadc", mrpc_zadc );
172 mrpc_tuple->addItem( "t0", mrpc_t0 );
173 mrpc_tuple->addItem( "t0stat", mrpc_t0stat );
174 }
175
176 if ( !ext_tuple )
177 {
178 std::cerr << " Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for ext_tple"
179 << std::endl;
180 }
181 else
182 {
183 ext_tuple->addItem( "run", ext_run );
184 ext_tuple->addItem( "event", ext_event );
185 ext_tuple->addItem( "track", ext_trackid );
186 ext_tuple->addItem( "costheta", ext_costheta );
187 ext_tuple->addItem( "kal", 5, ext_kalman );
188 ext_tuple->addItem( "x1", 5, ext_x1 );
189 ext_tuple->addItem( "x2", 5, ext_x2 );
190 ext_tuple->addItem( "y1", 5, ext_y1 );
191 ext_tuple->addItem( "y2", 5, ext_y2 );
192 ext_tuple->addItem( "z1", 5, ext_z1 );
193 ext_tuple->addItem( "z2", 5, ext_z2 );
194 ext_tuple->addItem( "tofid1", 5, ext_tofid1 );
195 ext_tuple->addItem( "tofid2", 5, ext_tofid2 );
196 ext_tuple->addItem( "strip1", 5, ext_strip1 );
197 ext_tuple->addItem( "strip2", 5, ext_strip2 );
198 ext_tuple->addItem( "texp1", 5, ext_texp1 );
199 ext_tuple->addItem( "texp2", 5, ext_texp2 );
200 ext_tuple->addItem( "p", ext_p );
201 ext_tuple->addItem( "path1", 5, ext_path1 );
202 ext_tuple->addItem( "path2", 5, ext_path2 );
203 ext_tuple->addItem( "zrhit1", 5, ext_zrhit1 );
204 ext_tuple->addItem( "zrhit2", 5, ext_zrhit2 );
205 ext_tuple->addItem( "errzr1", 5, ext_errzr1 );
206 ext_tuple->addItem( "errzr2", 5, ext_errzr2 );
207 ext_tuple->addItem( "cost1", 5, ext_theta1 );
208 ext_tuple->addItem( "cost2", 5, ext_theta2 );
209 ext_tuple->addItem( "phi1", 5, ext_phi1 );
210 ext_tuple->addItem( "phi2", 5, ext_phi2 );
211 ext_tuple->addItem( "hitcase1", 5, ext_hitcase1 );
212 ext_tuple->addItem( "hitcase2", 5, ext_hitcase2 );
213 ext_tuple->addItem( "hitcase", 5, ext_hitcase );
214 ext_tuple->addItem( "qual", 5, ext_quality );
215 }
216
217 if ( !tof_tuple )
218 {
219 std::cerr << " Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for tof_tple"
220 << std::endl;
221 }
222 else
223 {
224 tof_tuple->addItem( "run", tof_run );
225 tof_tuple->addItem( "event", tof_event );
226 tof_tuple->addItem( "toftrack", tof_toftrackid );
227 tof_tuple->addItem( "track", tof_trackid );
228 tof_tuple->addItem( "charge", tof_charge );
229 tof_tuple->addItem( "pt", 5, tof_pt );
230 tof_tuple->addItem( "p", 5, tof_p );
231 tof_tuple->addItem( "id1", tof_id1 );
232 tof_tuple->addItem( "id2", tof_id2 );
233 tof_tuple->addItem( "istrip1", tof_istrip1 );
234 tof_tuple->addItem( "istrip2", tof_istrip2 );
235 tof_tuple->addItem( "dstrip1", tof_dstrip1 );
236 tof_tuple->addItem( "dstrip2", tof_dstrip2 );
237 tof_tuple->addItem( "barrel", tof_barrel );
238 tof_tuple->addItem( "hitcase", tof_hitcase );
239 tof_tuple->addItem( "mom", tof_momentum );
240 tof_tuple->addItem( "path1", tof_path1 );
241 tof_tuple->addItem( "path2", tof_path2 );
242 tof_tuple->addItem( "zrhit1", tof_zrhit1 );
243 tof_tuple->addItem( "zrhit2", tof_zrhit2 );
244 tof_tuple->addItem( "errzr1", tof_errzr1 );
245 tof_tuple->addItem( "errzr2", tof_errzr2 );
246 tof_tuple->addItem( "xhit1", tof_xhit1 );
247 tof_tuple->addItem( "yhit1", tof_yhit1 );
248 tof_tuple->addItem( "xhit2", tof_xhit2 );
249 tof_tuple->addItem( "yhit2", tof_yhit2 );
250 tof_tuple->addItem( "kal", 5, tof_kal );
251 tof_tuple->addItem( "zr1", 5, tof_zr1 );
252 tof_tuple->addItem( "zr2", 5, tof_zr2 );
253 tof_tuple->addItem( "ztdc1", tof_ztdc1 );
254 tof_tuple->addItem( "ztdc2", tof_ztdc2 );
255 tof_tuple->addItem( "zadc1", tof_zadc1 );
256 tof_tuple->addItem( "zadc2", tof_zadc2 );
257 tof_tuple->addItem( "zt1", tof_zt1 );
258 tof_tuple->addItem( "zt2", tof_zt2 );
259 tof_tuple->addItem( "zt3", tof_zt3 );
260 tof_tuple->addItem( "zt4", tof_zt4 );
261 tof_tuple->addItem( "zq1", tof_zq1 );
262 tof_tuple->addItem( "zq2", tof_zq2 );
263 tof_tuple->addItem( "zq3", tof_zq3 );
264 tof_tuple->addItem( "zq4", tof_zq4 );
265 tof_tuple->addItem( "size1", tof_size1 );
266 tof_tuple->addItem( "size2", tof_size2 );
267 tof_tuple->addItem( "size3", tof_size3 );
268 tof_tuple->addItem( "size4", tof_size4 );
269 tof_tuple->addItem( "theta1", tof_theta1 );
270 tof_tuple->addItem( "theta2", tof_theta2 );
271 tof_tuple->addItem( "phi1", tof_phi1 );
272 tof_tuple->addItem( "phi2", tof_phi2 );
273 tof_tuple->addItem( "qual1", tof_quality1 );
274 tof_tuple->addItem( "qual2", tof_quality2 );
275 tof_tuple->addItem( "qual", tof_quality );
276 tof_tuple->addItem( "change", tof_changed );
277 tof_tuple->addItem( "tofid1", tof_tofid1 );
278 tof_tuple->addItem( "tofid2", tof_tofid2 );
279 tof_tuple->addItem( "strip1", tof_strip1 );
280 tof_tuple->addItem( "strip2", tof_strip2 );
281 tof_tuple->addItem( "board1", tof_board1 );
282 tof_tuple->addItem( "board2", tof_board2 );
283 tof_tuple->addItem( "crate1", tof_crate1 );
284 tof_tuple->addItem( "crate2", tof_crate2 );
285 tof_tuple->addItem( "fee1", tof_fee1 );
286 tof_tuple->addItem( "fee2", tof_fee2 );
287 tof_tuple->addItem( "channel1", tof_channel1 );
288 tof_tuple->addItem( "channel2", tof_channel2 );
289 tof_tuple->addItem( "channel3", tof_channel3 );
290 tof_tuple->addItem( "channel4", tof_channel4 );
291 tof_tuple->addItem( "ph11", tof_ph11 );
292 tof_tuple->addItem( "ph12", tof_ph12 );
293 tof_tuple->addItem( "ph21", tof_ph21 );
294 tof_tuple->addItem( "ph22", tof_ph22 );
295 tof_tuple->addItem( "ph1", tof_ph1 );
296 tof_tuple->addItem( "ph2", tof_ph2 );
297 tof_tuple->addItem( "ph", tof_ph );
298 tof_tuple->addItem( "tofe11", tof_tofe11 );
299 tof_tuple->addItem( "tofe12", tof_tofe12 );
300 tof_tuple->addItem( "tofe21", tof_tofe21 );
301 tof_tuple->addItem( "tofe22", tof_tofe22 );
302 tof_tuple->addItem( "tofe1", tof_tofe1 );
303 tof_tuple->addItem( "tofe2", tof_tofe2 );
304 tof_tuple->addItem( "tofe", tof_tofe );
305 tof_tuple->addItem( "tofmu11", tof_tofmu11 );
306 tof_tuple->addItem( "tofmu12", tof_tofmu12 );
307 tof_tuple->addItem( "tofmu21", tof_tofmu21 );
308 tof_tuple->addItem( "tofmu22", tof_tofmu22 );
309 tof_tuple->addItem( "tofmu1", tof_tofmu1 );
310 tof_tuple->addItem( "tofmu2", tof_tofmu2 );
311 tof_tuple->addItem( "tofmu", tof_tofmu );
312 tof_tuple->addItem( "tofpi11", tof_tofpi11 );
313 tof_tuple->addItem( "tofpi12", tof_tofpi12 );
314 tof_tuple->addItem( "tofpi21", tof_tofpi21 );
315 tof_tuple->addItem( "tofpi22", tof_tofpi22 );
316 tof_tuple->addItem( "tofpi1", tof_tofpi1 );
317 tof_tuple->addItem( "tofpi2", tof_tofpi2 );
318 tof_tuple->addItem( "tofpi", tof_tofpi );
319 tof_tuple->addItem( "tofk11", tof_tofk11 );
320 tof_tuple->addItem( "tofk12", tof_tofk12 );
321 tof_tuple->addItem( "tofk21", tof_tofk21 );
322 tof_tuple->addItem( "tofk22", tof_tofk22 );
323 tof_tuple->addItem( "tofk1", tof_tofk1 );
324 tof_tuple->addItem( "tofk2", tof_tofk2 );
325 tof_tuple->addItem( "tofk", tof_tofk );
326 tof_tuple->addItem( "tofp11", tof_tofp11 );
327 tof_tuple->addItem( "tofp12", tof_tofp12 );
328 tof_tuple->addItem( "tofp21", tof_tofp21 );
329 tof_tuple->addItem( "tofp22", tof_tofp22 );
330 tof_tuple->addItem( "tofp1", tof_tofp1 );
331 tof_tuple->addItem( "tofp2", tof_tofp2 );
332 tof_tuple->addItem( "tofp", tof_tofp );
333 tof_tuple->addItem( "qch1", tof_qch1 );
334 tof_tuple->addItem( "qch2", tof_qch2 );
335 tof_tuple->addItem( "qch3", tof_qch3 );
336 tof_tuple->addItem( "qch4", tof_qch4 );
337 tof_tuple->addItem( "adc1", tof_adc1 );
338 tof_tuple->addItem( "adc2", tof_adc2 );
339 tof_tuple->addItem( "adc3", tof_adc3 );
340 tof_tuple->addItem( "adc4", tof_adc4 );
341 tof_tuple->addItem( "tdc1", tof_tdc1 );
342 tof_tuple->addItem( "tdc2", tof_tdc2 );
343 tof_tuple->addItem( "tdc3", tof_tdc3 );
344 tof_tuple->addItem( "tdc4", tof_tdc4 );
345 tof_tuple->addItem( "texpe1", tof_texpe1 );
346 tof_tuple->addItem( "texpmu1", tof_texpmu1 );
347 tof_tuple->addItem( "texppi1", tof_texppi1 );
348 tof_tuple->addItem( "texpk1", tof_texpk1 );
349 tof_tuple->addItem( "texpp1", tof_texpp1 );
350 tof_tuple->addItem( "texpe2", tof_texpe2 );
351 tof_tuple->addItem( "texpmu2", tof_texpmu2 );
352 tof_tuple->addItem( "texppi2", tof_texppi2 );
353 tof_tuple->addItem( "texpk2", tof_texpk2 );
354 tof_tuple->addItem( "texpp2", tof_texpp2 );
355 tof_tuple->addItem( "texpe", tof_texpe );
356 tof_tuple->addItem( "texpmu", tof_texpmu );
357 tof_tuple->addItem( "texppi", tof_texppi );
358 tof_tuple->addItem( "texpk", tof_texpk );
359 tof_tuple->addItem( "texpp", tof_texpp );
360 tof_tuple->addItem( "tdiff1", tof_tdiff1 );
361 tof_tuple->addItem( "tdiff2", tof_tdiff2 );
362 tof_tuple->addItem( "trigcond", tof_trigcond );
363 tof_tuple->addItem( "trigchan", tof_trigchan );
364 tof_tuple->addItem( "trigwindow", tof_trigwindow );
365 tof_tuple->addItem( "trigtype", tof_trigtype );
366 tof_tuple->addItem( "t0", tof_estime );
367 tof_tuple->addItem( "t0stat", tof_t0stat );
368 tof_tuple->addItem( "mctrkid", tof_mctrkid );
369 tof_tuple->addItem( "mcp", tof_mcp );
370 tof_tuple->addItem( "mctofp", tof_mctofp );
371 tof_tuple->addItem( "mczrhit", tof_mczrhit );
372 tof_tuple->addItem( "mcpath", tof_mcpath );
373 tof_tuple->addItem( "mctexp", tof_mctexp );
374 }
375
376 if ( !bb_tuple )
377 {
378 std::cerr << " Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for bb_tple"
379 << std::endl;
380 }
381 else
382 {
383 bb_tuple->addItem( "run", bb_run );
384 bb_tuple->addItem( "event", bb_event );
385 bb_tuple->addItem( "trksize", bb_trksize );
386 bb_tuple->addItem( "mdcsize", bb_mdcsize );
387 bb_tuple->addItem( "emcsize", bb_emcsize );
388 bb_tuple->addItem( "trk1", bb_trk1 );
389 bb_tuple->addItem( "pmdc1", bb_pmdc1 );
390 bb_tuple->addItem( "ptmdc1", bb_ptmdc1 );
391 bb_tuple->addItem( "theta1", bb_theta1 );
392 bb_tuple->addItem( "phi1", bb_phi1 );
393 bb_tuple->addItem( "x1", bb_x1 );
394 bb_tuple->addItem( "y1", bb_y1 );
395 bb_tuple->addItem( "z1", bb_z1 );
396 bb_tuple->addItem( "r1", bb_r1 );
397 bb_tuple->addItem( "charge1", bb_charge1 );
398 bb_tuple->addItem( "chi1", bb_chi1 );
399 bb_tuple->addItem( "ndof1", bb_ndof1 );
400 bb_tuple->addItem( "layer1", bb_layer1 );
401 bb_tuple->addItem( "trk2", bb_trk2 );
402 bb_tuple->addItem( "pmdc2", bb_pmdc2 );
403 bb_tuple->addItem( "ptmdc2", bb_ptmdc2 );
404 bb_tuple->addItem( "theta2", bb_theta2 );
405 bb_tuple->addItem( "phi2", bb_phi2 );
406 bb_tuple->addItem( "x2", bb_x2 );
407 bb_tuple->addItem( "y2", bb_y2 );
408 bb_tuple->addItem( "z2", bb_z2 );
409 bb_tuple->addItem( "r2", bb_r2 );
410 bb_tuple->addItem( "charge2", bb_charge2 );
411 bb_tuple->addItem( "chi2", bb_chi2 );
412 bb_tuple->addItem( "ndof2", bb_ndof2 );
413 bb_tuple->addItem( "layer2", bb_layer2 );
414 bb_tuple->addItem( "dang", bb_dang );
415 bb_tuple->addItem( "dphi", bb_dphi );
416 bb_tuple->addItem( "pe1", bb_pe1 );
417 bb_tuple->addItem( "pte1", bb_pte1 );
418 bb_tuple->addItem( "pe2", bb_pe2 );
419 bb_tuple->addItem( "pte2", bb_pte2 );
420 bb_tuple->addItem( "pmu1", bb_pmu1 );
421 bb_tuple->addItem( "ptmu1", bb_ptmu1 );
422 bb_tuple->addItem( "pmu2", bb_pmu2 );
423 bb_tuple->addItem( "ptmu2", bb_ptmu2 );
424 bb_tuple->addItem( "extx1", bb_extx1 );
425 bb_tuple->addItem( "exty1", bb_exty1 );
426 bb_tuple->addItem( "extz1", bb_extz1 );
427 bb_tuple->addItem( "extx2", bb_extx2 );
428 bb_tuple->addItem( "exty2", bb_exty2 );
429 bb_tuple->addItem( "extz2", bb_extz2 );
430 bb_tuple->addItem( "emctrk1", bb_emctrk1 );
431 bb_tuple->addItem( "emcx1", bb_emcx1 );
432 bb_tuple->addItem( "emcy1", bb_emcy1 );
433 bb_tuple->addItem( "emcz1", bb_emcz1 );
434 bb_tuple->addItem( "ep1", bb_ep1 );
435 bb_tuple->addItem( "th1", bb_th1 );
436 bb_tuple->addItem( "ph1", bb_ph1 );
437 bb_tuple->addItem( "emctrk2", bb_emctrk2 );
438 bb_tuple->addItem( "emcx2", bb_emcx2 );
439 bb_tuple->addItem( "emcy2", bb_emcy2 );
440 bb_tuple->addItem( "emcz2", bb_emcz2 );
441 bb_tuple->addItem( "ep2", bb_ep2 );
442 bb_tuple->addItem( "th2", bb_th2 );
443 bb_tuple->addItem( "ph2", bb_ph2 );
444 bb_tuple->addItem( "dr1", bb_dr1 );
445 bb_tuple->addItem( "drxy1", bb_drxy1 );
446 bb_tuple->addItem( "dz1", bb_dz1 );
447 bb_tuple->addItem( "dr2", bb_dr2 );
448 bb_tuple->addItem( "drxy2", bb_drxy2 );
449 bb_tuple->addItem( "dz2", bb_dz2 );
450 bb_tuple->addItem( "etot", bb_etot );
451 }
452
453 return;
454}
455
457 double estime, int t0stat ) {
458 if ( tofDigiCol.size() <= 0 ) return;
459 TofDigiCol::iterator iter_digi = tofDigiCol.begin();
460 for ( ; iter_digi != tofDigiCol.end(); iter_digi++ )
461 {
462 unsigned int overflow = ( *iter_digi )->getOverflow();
463 if ( ( overflow & 0xfe000000 ) == 0xfe000000 )
464 {
465 if ( digi_tuple )
466 {
467 digi_run = eventHeader.runNumber();
468 digi_event = eventHeader.eventNumber();
469 digi_barrel = -1;
470 digi_endcap = -1;
471 digi_layer = -1;
472 digi_tofId = -1;
473 digi_strip = -1;
474 digi_end = -1;
475 digi_adc = 0x7fffffff; // adc 13bits
476 digi_tdc = 0x7fffffff;
477 digi_qclock = 1000.0;
478 digi_tclock = 1000.0;
479 digi_overflow = overflow;
480 digi_noq = -1;
481 digi_not = -1;
482 digi_multiq = -1;
483 digi_multit = -1;
484 digi_overq = -1;
485 digi_overt = -1;
486 digi_t0 = -1;
487 digi_t0stat = -1;
488 digi_crate = ( ( overflow & 0x1000000 ) >> 24 );
489 digi_geo = ( ( overflow & 0x0f80000 ) >> 19 );
490 digi_tdcnum = ( ( overflow & 0x0078000 ) >> 15 );
491 digi_err = ( overflow & 0x0007fff );
492 digi_tuple->write();
493 }
494 }
495 else
496 {
497 Identifier iden = ( *iter_digi )->identify();
498 unsigned int adc = ( *iter_digi )->getChargeChannel();
499 unsigned int tdc = ( *iter_digi )->getTimeChannel();
500 if ( digi_tuple )
501 {
502 digi_run = eventHeader.runNumber();
503 digi_event = eventHeader.eventNumber();
504 digi_barrel = TofID::barrel_ec( iden );
505 digi_endcap = TofID::endcap( iden );
506 digi_layer = TofID::layer( iden );
507 digi_strip = TofID::strip( iden );
508 digi_end = TofID::end( iden );
509 if ( TofID::is_scin( iden ) )
510 {
511 digi_tofId = TofID::phi_module( iden );
512 digi_adc = ( adc & 0x1fff ); // adc 13bits
513 }
514 if ( TofID::is_mrpc( iden ) )
515 {
516 digi_tofId = TofID::module( iden );
517 digi_adc = adc;
518 }
519 if ( adc == 0x7fffffff ) digi_adc = adc;
520 digi_tdc = tdc;
521 digi_qclock = ( ( adc & 0x7e000 ) >> 13 ); // adc high 6 bits, time clock
522 if ( adc == 0x7fffffff ) digi_qclock = 1000.;
523 digi_tclock = ( ( tdc & 0x7e000 ) >> 13 ); // tdc high 6 bits, time clock
524 if ( tdc == 0x7fffffff ) digi_tclock = 1000.;
525 digi_overflow = overflow;
526 digi_noq = ( ( overflow & 0x20 ) >> 5 );
527 digi_not = ( ( overflow & 0x10 ) >> 4 );
528 digi_multiq = ( ( overflow & 0x08 ) >> 3 );
529 digi_multit = ( ( overflow & 0x04 ) >> 2 );
530 digi_overq = ( ( overflow & 0x02 ) >> 1 );
531 digi_overt = ( overflow & 0x01 );
532 digi_t0 = estime;
533 digi_t0stat = t0stat;
534 digi_crate = -1;
535 digi_geo = -1;
536 digi_tdcnum = -1;
537 digi_tdcnum = -1;
538 digi_err = -1;
539 digi_tuple->write();
540 }
541 }
542 }
543
544 return;
545}
546
547void TofCheckDigi::Fill_Barrel( Event::EventHeader& eventHeader, TofData*& bTof, double estime,
548 int t0stat ) {
549 barrel_run = eventHeader.runNumber();
550 barrel_event = eventHeader.eventNumber();
551 barrel_tofId = bTof->tofId();
552 barrel_tofTrackId = bTof->tofTrackId();
553 barrel_layer = bTof->layer();
554 barrel_qchannel1 = bTof->adcChannelEast();
555 barrel_tchannel1 = bTof->tdcChannelEast();
556 barrel_qchannel2 = bTof->adcChannelWest();
557 barrel_tchannel2 = bTof->tdcChannelWest();
558 barrel_qtc1 = bTof->qtc1();
559 barrel_adc1 = bTof->adc1();
560 barrel_tdc1 = bTof->tdc1();
561 barrel_qtc2 = bTof->qtc2();
562 barrel_adc2 = bTof->adc2();
563 barrel_tdc2 = bTof->tdc2();
564 barrel_qclock1 = bTof->qclock1();
565 barrel_tclock1 = bTof->tclock1();
566 barrel_qclock2 = bTof->qclock2();
567 barrel_tclock2 = bTof->tclock2();
568 barrel_quality = bTof->quality();
569 barrel_tmatched = bTof->tmatched();
570 barrel_qtimes1 = bTof->qtimes1();
571 barrel_ttimes1 = bTof->ttimes1();
572 barrel_qtimes2 = bTof->qtimes2();
573 barrel_ttimes2 = bTof->ttimes2();
574 barrel_times1 = bTof->eastTimes();
575 barrel_times2 = bTof->westTimes();
576 barrel_times = bTof->times();
577 barrel_qnum1 = bTof->qnumber1();
578 barrel_tnum1 = bTof->tnumber1();
579 barrel_qnum2 = bTof->qnumber2();
580 barrel_tnum2 = bTof->tnumber2();
581 barrel_tsum = ( bTof->tdc1() + bTof->tdc2() ) / 2.0;
582 barrel_tsub = ( bTof->tdc1() - bTof->tdc2() ) / 2.0;
583 barrel_ztdc = tofCaliSvc->ZTDC( bTof->tdc1(), bTof->tdc2(), bTof->tofId() );
584 barrel_zadc = tofCaliSvc->ZADC( bTof->adc1(), bTof->adc2(), bTof->tofId() );
585 barrel_t0 = estime;
586 barrel_t0stat = t0stat;
587 barrel_tuple->write();
588 return;
589}
590
591void TofCheckDigi::Fill_Endcap( Event::EventHeader& eventHeader, TofData*& eTof, double estime,
592 int t0stat ) {
593 endcap_run = eventHeader.runNumber();
594 endcap_event = eventHeader.eventNumber();
595 endcap_tofId = eTof->tofId();
596 endcap_tofTrackId = eTof->tofTrackId();
597 endcap_qchannel = eTof->adcChannel();
598 endcap_tchannel = eTof->tdcChannel();
599 endcap_qtc = eTof->qtc();
600 endcap_adc = eTof->adc();
601 endcap_tdc = eTof->tdc();
602 endcap_quality = eTof->quality();
603 endcap_qclock = eTof->qclock();
604 endcap_tclock = eTof->tclock();
605 endcap_qtimes = eTof->qtimes1();
606 endcap_ttimes = eTof->ttimes1();
607 endcap_times = eTof->times();
608 endcap_qnum = eTof->qnumber1();
609 endcap_tnum = eTof->tnumber1();
610 endcap_t0 = estime;
611 endcap_t0stat = t0stat;
612 endcap_tuple->write();
613 return;
614}
615
617 double estime, int t0stat ) {
618 mrpc_run = eventHeader.runNumber();
619 mrpc_event = eventHeader.eventNumber();
620 mrpc_tofId = mrpcTof->tofId();
621 mrpc_strip = mrpcTof->strip();
622 mrpc_tofTrackId = mrpcTof->tofTrackId();
623 mrpc_ttch1 = mrpcTof->adcChannelEast();
624 mrpc_tlch1 = mrpcTof->tdcChannelEast();
625 mrpc_ttch2 = mrpcTof->adcChannelWest();
626 mrpc_tlch2 = mrpcTof->tdcChannelWest();
627 mrpc_tt1 = mrpcTof->qtc1();
628 mrpc_tl1 = mrpcTof->tdc1();
629 mrpc_tt2 = mrpcTof->qtc2();
630 mrpc_tl2 = mrpcTof->tdc2();
631 mrpc_tot1 = mrpcTof->adc1();
632 mrpc_tot2 = mrpcTof->adc2();
633 mrpc_quality = mrpcTof->quality();
634 mrpc_tmatched = mrpcTof->tmatched();
635 mrpc_tttimes1 = mrpcTof->qtimes1();
636 mrpc_tltimes1 = mrpcTof->ttimes1();
637 mrpc_tttimes2 = mrpcTof->qtimes2();
638 mrpc_tltimes2 = mrpcTof->ttimes2();
639 mrpc_times1 = mrpcTof->eastTimes();
640 mrpc_times2 = mrpcTof->westTimes();
641 mrpc_times = mrpcTof->times();
642 mrpc_ttnum1 = mrpcTof->qnumber1();
643 mrpc_tlnum1 = mrpcTof->tnumber1();
644 mrpc_ttnum2 = mrpcTof->qnumber2();
645 mrpc_tlnum2 = mrpcTof->tnumber2();
646 mrpc_tsum = ( mrpcTof->tdc1() + mrpcTof->tdc2() ) / 2.0;
647 mrpc_tsub = ( mrpcTof->tdc1() - mrpcTof->tdc2() ) / 2.0;
648 mrpc_ztdc = tofCaliSvc->ZTDC( mrpcTof->tdc1(), mrpcTof->tdc2(), mrpcTof->tofId() );
649 mrpc_zadc = tofCaliSvc->ZADC( mrpcTof->adc1(), mrpcTof->adc2(), mrpcTof->tofId() );
650 mrpc_t0 = estime;
651 mrpc_t0stat = t0stat;
652 mrpc_tuple->write();
653 return;
654}
655
657 double estime, int t0stat ) {
658 if ( tofDataMap.empty() ) return;
659 IterTofDataMap iter = tofDataMap.begin();
660 for ( ; iter != tofDataMap.end(); iter++ )
661 {
662 Identifier iden = TofID::cell_id( ( *iter ).first );
663 if ( TofID::is_scin( iden ) )
664 {
665 if ( TofID::is_barrel( iden ) )
666 { Fill_Barrel( eventHeader, ( *iter ).second, estime, t0stat ); }
667 else { Fill_Endcap( eventHeader, ( *iter ).second, estime, t0stat ); }
668 }
669 if ( TofID::is_mrpc( iden ) )
670 { Fill_MRPC( eventHeader, ( *iter ).second, estime, t0stat ); }
671 }
672 return;
673}
674
675void TofCheckDigi::FillCol( Event::EventHeader& eventHeader, std::vector<TofData*>& tofDataVec,
676 double estime, int t0stat ) {
677 if ( tofDataVec.size() <= 0 ) return;
678 std::vector<TofData*>::iterator iter = tofDataVec.begin();
679 for ( ; iter != tofDataVec.end(); iter++ )
680 {
681 if ( ( *iter )->barrel() ) { Fill_Barrel( eventHeader, ( *iter ), estime, t0stat ); }
682 else { Fill_Endcap( eventHeader, ( *iter ), estime, t0stat ); }
683 }
684 return;
685}
686
687void TofCheckDigi::Fill( Event::EventHeader& eventHeader, RecMdcTrack*& mdcTrack,
688 RecMdcKalTrack*& mdcKalTrack, RecExtTrack*& extTrack ) {
689
690 ext_run = eventHeader.runNumber();
691 ext_event = eventHeader.eventNumber();
692 ext_trackid = extTrack->trackId();
693 ext_p = mdcTrack->p();
694 ext_costheta = cos( mdcTrack->theta() );
695
696 int hitcase1[5], hitcase2[5], hitcase[5];
697 int tofId1[5], tofId2[5];
698
699 for ( unsigned int i = 0; i < 5; i++ )
700 {
701
702 ext_tofid1[i] = -9;
703 ext_tofid2[i] = -9;
704 ext_strip1[i] = -9;
705 ext_strip2[i] = -9;
706 ext_zrhit1[i] = -99.;
707 ext_zrhit2[i] = -99.;
708 ext_x1[i] = -999.;
709 ext_x2[i] = -999.;
710 ext_y1[i] = -999.;
711 ext_y2[i] = -999.;
712 ext_z1[i] = -999.;
713 ext_z2[i] = -999.;
714
715 hitcase1[i] = 7;
716 hitcase2[i] = 7;
717 hitcase[i] = 7;
718
719 ext_kalman[i] = mdcKalTrack->getStat( 1, i );
720 ext_x1[i] = ( extTrack->tof1Position( i ) ).x();
721 ext_x2[i] = ( extTrack->tof2Position( i ) ).x();
722 ext_y1[i] = ( extTrack->tof1Position( i ) ).y();
723 ext_y2[i] = ( extTrack->tof2Position( i ) ).y();
724 ext_z1[i] = ( extTrack->tof1Position( i ) ).z();
725 ext_z2[i] = ( extTrack->tof2Position( i ) ).z();
726
727 tofId1[i] = extTrack->tof1VolumeNumber( i );
728 tofId2[i] = extTrack->tof2VolumeNumber( i );
729
730 if ( tofId1[i] >= 0 && tofId1[i] <= 87 )
731 {
732 ext_tofid1[i] = tofId1[i];
733 hitcase1[i] = 0;
734 }
735 else if ( tofId1[i] >= 176 && tofId1[i] <= 223 )
736 {
737 ext_tofid1[i] = tofId1[i] - 176 + 48;
738 hitcase1[i] = 4;
739 }
740 else if ( tofId1[i] >= 224 && tofId1[i] <= 271 )
741 {
742 ext_tofid1[i] = tofId1[i] - 176 - 48;
743 hitcase1[i] = 3;
744 }
745 else if ( tofId1[i] >= 272 && tofId1[i] <= 1135 )
746 {
747 int module = tofId1[i] - 176 - 96;
748 ext_strip1[i] = module % 12;
749 ext_tofid1[i] = module / 12;
750 if ( tofId1[i] >= 272 && tofId1[i] <= 703 ) { hitcase1[i] = 5; }
751 else if ( tofId1[i] >= 704 && tofId1[i] <= 1135 ) { hitcase1[i] = 6; }
752 }
753
754 if ( tofId2[i] >= 88 && tofId2[i] <= 175 )
755 {
756 ext_tofid2[i] = tofId2[i];
757 hitcase2[i] = 1;
758 }
759 else if ( tofId2[i] >= 272 && tofId2[i] <= 1135 )
760 {
761 int module = tofId2[i] - 176 - 96;
762 ext_strip2[i] = module % 12;
763 ext_tofid2[i] = module / 12;
764 if ( tofId2[i] >= 272 && tofId2[i] <= 703 ) { hitcase2[i] = 5; }
765 else if ( tofId2[i] >= 704 && tofId2[i] <= 1135 ) { hitcase2[i] = 6; }
766 }
767
768 /*
769 ext_p[i] = extTrack->tof1Momentum( i ).r();
770 if( tofId1[i]<0 ) {
771 ext_p[i] = extTrack->tof2Momentum( i ).r();
772 }
773 */
774
775 if ( ( hitcase1[i] == 0 ) || ( hitcase1[i] == 2 ) )
776 {
777 ext_texp1[i] = extTrack->tof1( i );
778 ext_path1[i] = extTrack->tof1Path( i );
779 ext_zrhit1[i] = extTrack->tof1Position( i ).z();
780 ext_errzr1[i] = extTrack->tof1PosSigmaAlongZ( i );
781 ext_theta1[i] = extTrack->tof1Momentum( i ).rho() / extTrack->tof1Momentum( i ).r();
782 ext_phi1[i] = extTrack->tof1Position( i ).phi();
783 }
784 else if ( ( hitcase1[i] == 3 ) || ( hitcase1[i] == 4 ) )
785 {
786 ext_texp1[i] = extTrack->tof1( i );
787 ext_path1[i] = extTrack->tof1Path( i );
788 ext_zrhit1[i] = extTrack->tof1Position( i ).rho();
789 ext_errzr1[i] =
790 sqrt( extTrack->tof1PosSigmaAlongX( i ) * extTrack->tof1PosSigmaAlongX( i ) +
791 extTrack->tof1PosSigmaAlongY( i ) * extTrack->tof1PosSigmaAlongY( i ) );
792 ext_theta1[i] = extTrack->tof1Momentum( i ).z() / extTrack->tof1Momentum( i ).r();
793 ext_phi1[i] = extTrack->tof1Position( i ).phi();
794 }
795 else if ( ( hitcase1[i] == 5 ) || ( hitcase1[i] == 6 ) )
796 {
797 ext_texp1[i] = extTrack->tof1( i );
798 ext_path1[i] = extTrack->tof1Path( i );
799 ext_zrhit1[i] = extTrack->tof1Position( i ).x();
800 ext_errzr1[i] = extTrack->tof1PosSigmaAlongX( i );
801 ext_theta1[i] = extTrack->tof1Momentum( i ).z() / extTrack->tof1Momentum( i ).r();
802 ext_phi1[i] = extTrack->tof1Position( i ).phi();
803 }
804
805 if ( ( hitcase2[i] == 5 ) || ( hitcase2[i] == 6 ) )
806 {
807 ext_texp2[i] = extTrack->tof2( i );
808 ext_path2[i] = extTrack->tof2Path( i );
809 ext_zrhit2[i] = extTrack->tof2Position( i ).x();
810 ext_errzr2[i] = extTrack->tof2PosSigmaAlongX( i );
811 ext_theta1[i] = extTrack->tof2Momentum( i ).z() / extTrack->tof1Momentum( i ).r();
812 ext_phi2[i] = extTrack->tof2Position( i ).phi();
813 }
814 else if ( hitcase2[i] == 1 )
815 {
816 ext_texp2[i] = extTrack->tof2( i );
817 ext_path2[i] = extTrack->tof2Path( i );
818 ext_zrhit2[i] = extTrack->tof2Position( i ).z();
819 ext_errzr2[i] = extTrack->tof2PosSigmaAlongZ( i );
820 ext_theta2[i] = extTrack->tof2Momentum( i ).rho() / extTrack->tof2Momentum( i ).r();
821 ext_phi2[i] = extTrack->tof2Position( i ).phi();
822 }
823
824 if ( ( hitcase1[i] == 7 ) && ( hitcase2[i] == 7 ) ) { ext_quality[i] = 3; }
825 else { ext_quality[i] = 0; }
826
827 if ( hitcase1[i] == 0 )
828 {
829 if ( hitcase2[i] == 1 ) { hitcase[i] = 2; }
830 else if ( hitcase2[i] == 7 ) { hitcase[i] = 0; }
831 }
832 else if ( ( hitcase1[i] == 3 ) || ( hitcase1[i] == 4 ) )
833 {
834 if ( hitcase2[i] == 7 ) { hitcase[i] == hitcase1[i]; }
835 }
836 else if ( ( hitcase1[i] == 5 ) || ( hitcase1[i] == 6 ) )
837 {
838 if ( hitcase2[i] == 7 ) { hitcase[i] == hitcase1[i]; }
839 }
840
841 if ( hitcase2[i] == 1 )
842 {
843 if ( hitcase1[i] == 7 ) { hitcase[i] = 1; }
844 }
845 else if ( ( hitcase2[i] == 5 ) || ( hitcase2[i] == 6 ) )
846 {
847 if ( hitcase1[i] == 7 ) { hitcase[i] == hitcase2[i]; }
848 else if ( hitcase1[i] == hitcase2[i] ) { hitcase[i] == hitcase2[i]; }
849 }
850
851 ext_hitcase1[i] = hitcase1[i];
852 ext_hitcase2[i] = hitcase2[i];
853 ext_hitcase[i] = hitcase[i];
854 }
855
856 ext_tuple->write();
857
858 return;
859}
860
862 double estime, int t0stat ) {
863
864 tof_run = eventHeader.runNumber();
865 tof_event = eventHeader.eventNumber();
866 tof_toftrackid = tof->tofTrackId();
867 tof_trackid = tof->trackId();
868 tof_id1 = tof->id1();
869 tof_id2 = tof->id2();
870 tof_istrip1 = tof->istrip1();
871 tof_istrip2 = tof->istrip2();
872 tof_barrel = tof->barrel();
873 tof_hitcase = tof->hitCase();
874 tof_momentum = tof->p();
875 tof_path1 = tof->path1();
876 tof_path2 = tof->path2();
877 tof_zrhit1 = tof->zrhit1();
878 tof_zrhit2 = tof->zrhit2();
879 tof_errzr1 = tof->errzrhit1();
880 tof_errzr2 = tof->errzrhit2();
881 tof_xhit1 = tof->xhit1();
882 tof_yhit1 = tof->yhit1();
883 tof_xhit2 = tof->xhit2();
884 tof_yhit2 = tof->yhit2();
885 for ( unsigned int i = 0; i < 5; i++ )
886 {
887 tof_kal[i] = tof->kal( i );
888 tof_zr1[i] = tof->zr1( i );
889 tof_zr2[i] = tof->zr2( i );
890 }
891 tof_ztdc1 = tof->ztdc1();
892 tof_ztdc2 = tof->ztdc2();
893 tof_zadc1 = tof->zadc1();
894 tof_zadc2 = tof->zadc2();
895 tof_zt1 = -999.0;
896 tof_zt2 = -999.0;
897 tof_zt3 = -999.0;
898 tof_zt4 = -999.0;
899 tof_zq1 = -999.0;
900 tof_zq2 = -999.0;
901 tof_zq3 = -999.0;
902 tof_zq4 = -999.0;
903 if ( tof->hitCase() == 0 || tof->hitCase() == 2 )
904 {
905 tof_zt1 = tofCaliSvc->ZTDC1( tof->tdc2(), tof->tofId1(), tof->zrhit1() );
906 tof_zt2 = tofCaliSvc->ZTDC2( tof->tdc1(), tof->tofId1(), tof->zrhit1() );
907 tof_zq1 = tofCaliSvc->ZADC1( tof->adc2(), tof->tofId1(), tof->zrhit1() );
908 tof_zq2 = tofCaliSvc->ZADC2( tof->adc1(), tof->tofId1(), tof->zrhit1() );
909 }
910 if ( tof->hitCase() == 1 || tof->hitCase() == 2 )
911 {
912 tof_zt3 = tofCaliSvc->ZTDC1( tof->tdc4(), tof->tofId2(), tof->zrhit2() );
913 tof_zt4 = tofCaliSvc->ZTDC2( tof->tdc3(), tof->tofId2(), tof->zrhit2() );
914 tof_zq3 = tofCaliSvc->ZADC1( tof->adc4(), tof->tofId2(), tof->zrhit2() );
915 tof_zq4 = tofCaliSvc->ZADC2( tof->adc3(), tof->tofId2(), tof->zrhit2() );
916 }
917 tof_size1 = tof->size1();
918 tof_size2 = tof->size2();
919 tof_size3 = tof->size3();
920 tof_size4 = tof->size4();
921 tof_theta1 = tof->theta1();
922 tof_theta2 = tof->theta2();
923 tof_phi1 = tof->phi1();
924 tof_phi2 = tof->phi2();
925 tof_quality1 = tof->quality1();
926 tof_quality2 = tof->quality2();
927 tof_quality = tof->quality();
928 tof_tofid1 = tof->tofId1();
929 tof_tofid2 = tof->tofId2();
930 tof_strip1 = tof->strip1();
931 tof_strip2 = tof->strip2();
932 /*
933 tof_board1 = tofQElecSvc->Board( tof->hitCase()<3, tof->tofId1(), true );
934 tof_board2 = tofQElecSvc->Board( tof->hitCase()<3, tof->tofId2(), true );
935 tof_crate1 = tofQElecSvc->Crate( tof->hitCase()<3, tof->tofId1(), true );
936 tof_crate2 = tofQElecSvc->Crate( tof->hitCase()<3, tof->tofId2(), true );
937 tof_fee1 = tofQElecSvc->Fee( tof->hitCase()<3, tof->tofId1(), true );
938 tof_fee2 = tofQElecSvc->Fee( tof->hitCase()<3, tof->tofId2(), true );
939 tof_channel1 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId1(),true );
940 tof_channel2 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId1(),false );
941 tof_channel3 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId2(),true );
942 tof_channel4 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId2(),false );
943 */
944 tof_ph11 = tof->ph11();
945 tof_ph12 = tof->ph12();
946 tof_ph21 = tof->ph21();
947 tof_ph22 = tof->ph22();
948 tof_ph1 = tof->ph1();
949 tof_ph2 = tof->ph2();
950 tof_ph = tof->ph();
951 tof_tofe11 = tof->tof11( 0 );
952 tof_tofe12 = tof->tof12( 0 );
953 tof_tofe21 = tof->tof21( 0 );
954 tof_tofe22 = tof->tof22( 0 );
955 tof_tofe1 = tof->tof1( 0 );
956 tof_tofe2 = tof->tof2( 0 );
957 tof_tofe = tof->tof( 0 );
958 tof_tofmu11 = tof->tof11( 1 );
959 tof_tofmu12 = tof->tof12( 1 );
960 tof_tofmu21 = tof->tof21( 1 );
961 tof_tofmu22 = tof->tof22( 1 );
962 tof_tofmu1 = tof->tof1( 1 );
963 tof_tofmu2 = tof->tof2( 1 );
964 tof_tofmu = tof->tof( 1 );
965 tof_tofpi11 = tof->tof11( 2 );
966 tof_tofpi12 = tof->tof12( 2 );
967 tof_tofpi21 = tof->tof21( 2 );
968 tof_tofpi22 = tof->tof22( 2 );
969 tof_tofpi1 = tof->tof1( 2 );
970 tof_tofpi2 = tof->tof2( 2 );
971 tof_tofpi = tof->tof( 2 );
972 tof_tofk11 = tof->tof11( 3 );
973 tof_tofk12 = tof->tof12( 3 );
974 tof_tofk21 = tof->tof21( 3 );
975 tof_tofk22 = tof->tof22( 3 );
976 tof_tofk1 = tof->tof1( 3 );
977 tof_tofk2 = tof->tof2( 3 );
978 tof_tofk = tof->tof( 3 );
979 tof_tofp11 = tof->tof11( 4 );
980 tof_tofp12 = tof->tof12( 4 );
981 tof_tofp21 = tof->tof21( 4 );
982 tof_tofp22 = tof->tof22( 4 );
983 tof_tofp1 = tof->tof1( 4 );
984 tof_tofp2 = tof->tof2( 4 );
985 tof_tofp = tof->tof( 4 );
986 tof_qch1 = tof->qch1();
987 tof_qch2 = tof->qch2();
988 tof_qch3 = tof->qch3();
989 tof_qch4 = tof->qch4();
990 tof_adc1 = tof->adc1();
991 tof_adc2 = tof->adc2();
992 tof_adc3 = tof->adc3();
993 tof_adc4 = tof->adc4();
994 tof_tdc1 = tof->tdc1();
995 tof_tdc2 = tof->tdc2();
996 tof_tdc3 = tof->tdc3();
997 tof_tdc4 = tof->tdc4();
998 tof_texpe1 = tof->texpInner( 0 );
999 tof_texpmu1 = tof->texpInner( 1 );
1000 tof_texppi1 = tof->texpInner( 2 );
1001 tof_texpk1 = tof->texpInner( 3 );
1002 tof_texpp1 = tof->texpInner( 4 );
1003 tof_texpe2 = tof->texpOuter( 0 );
1004 tof_texpmu2 = tof->texpOuter( 1 );
1005 tof_texppi2 = tof->texpOuter( 2 );
1006 tof_texpk2 = tof->texpOuter( 3 );
1007 tof_texpp2 = tof->texpOuter( 4 );
1008 tof_texpe = tof->texp( 0 );
1009 tof_texpmu = tof->texp( 1 );
1010 tof_texppi = tof->texp( 2 );
1011 tof_texpk = tof->texp( 3 );
1012 tof_texpp = tof->texp( 4 );
1013 tof_tdiff1 = tof->tdiff1();
1014 tof_tdiff2 = tof->tdiff2();
1015 tof_estime = estime;
1016 tof_t0stat = t0stat;
1017 tof_tuple->write();
1018
1019 return;
1020}
1021
1023 double estime, int t0stat, TrigData& trigData ) {
1024
1025 tof_run = eventHeader.runNumber();
1026 tof_event = eventHeader.eventNumber();
1027 tof_toftrackid = tof->tofTrackId();
1028 tof_trackid = tof->trackId();
1029 tof_id1 = tof->id1();
1030 tof_id2 = tof->id2();
1031 tof_istrip1 = tof->istrip1();
1032 tof_istrip2 = tof->istrip2();
1033 tof_barrel = tof->barrel();
1034 tof_hitcase = tof->hitCase();
1035 tof_momentum = tof->p();
1036 tof_path1 = tof->path1();
1037 tof_path2 = tof->path2();
1038 tof_zrhit1 = tof->zrhit1();
1039 tof_zrhit2 = tof->zrhit2();
1040 tof_errzr1 = tof->errzrhit1();
1041 tof_errzr2 = tof->errzrhit2();
1042 tof_xhit1 = tof->xhit1();
1043 tof_yhit1 = tof->yhit1();
1044 tof_xhit2 = tof->xhit2();
1045 tof_yhit2 = tof->yhit2();
1046 for ( unsigned int i = 0; i < 5; i++ )
1047 {
1048 tof_kal[i] = tof->kal( i );
1049 tof_zr1[i] = tof->zr1( i );
1050 tof_zr2[i] = tof->zr2( i );
1051 }
1052 tof_ztdc1 = tof->ztdc1();
1053 tof_ztdc2 = tof->ztdc2();
1054 tof_zadc1 = tof->zadc1();
1055 tof_zadc2 = tof->zadc2();
1056 tof_zt1 = -999.0;
1057 tof_zt2 = -999.0;
1058 tof_zt3 = -999.0;
1059 tof_zt4 = -999.0;
1060 tof_zq1 = -999.0;
1061 tof_zq2 = -999.0;
1062 tof_zq3 = -999.0;
1063 tof_zq4 = -999.0;
1064 if ( tof->hitCase() == 0 || tof->hitCase() == 2 )
1065 {
1066 tof_zt1 = tofCaliSvc->ZTDC1( tof->tdc2(), tof->tofId1(), tof->zrhit1() );
1067 tof_zt2 = tofCaliSvc->ZTDC2( tof->tdc1(), tof->tofId1(), tof->zrhit1() );
1068 tof_zq1 = tofCaliSvc->ZADC1( tof->adc2(), tof->tofId1(), tof->zrhit1() );
1069 tof_zq2 = tofCaliSvc->ZADC2( tof->adc1(), tof->tofId1(), tof->zrhit1() );
1070 }
1071 if ( tof->hitCase() == 1 || tof->hitCase() == 2 )
1072 {
1073 tof_zt3 = tofCaliSvc->ZTDC1( tof->tdc4(), tof->tofId2(), tof->zrhit2() );
1074 tof_zt4 = tofCaliSvc->ZTDC2( tof->tdc3(), tof->tofId2(), tof->zrhit2() );
1075 tof_zq3 = tofCaliSvc->ZADC1( tof->adc4(), tof->tofId2(), tof->zrhit2() );
1076 tof_zq4 = tofCaliSvc->ZADC2( tof->adc3(), tof->tofId2(), tof->zrhit2() );
1077 }
1078 tof_size1 = tof->size1();
1079 tof_size2 = tof->size2();
1080 tof_size3 = tof->size3();
1081 tof_size4 = tof->size4();
1082 tof_theta1 = tof->theta1();
1083 tof_theta2 = tof->theta2();
1084 tof_phi1 = tof->phi1();
1085 tof_phi2 = tof->phi2();
1086 tof_quality1 = tof->quality1();
1087 tof_quality2 = tof->quality2();
1088 tof_quality = tof->quality();
1089 tof_tofid1 = tof->tofId1();
1090 tof_tofid2 = tof->tofId2();
1091 tof_strip1 = tof->strip1();
1092 tof_strip2 = tof->strip2();
1093 /*
1094 tof_board1 = tofQElecSvc->Board( tof->hitCase()<3, tof->tofId1(), true );
1095 tof_board2 = tofQElecSvc->Board( tof->hitCase()<3, tof->tofId2(), true );
1096 tof_crate1 = tofQElecSvc->Crate( tof->hitCase()<3, tof->tofId1(), true );
1097 tof_crate2 = tofQElecSvc->Crate( tof->hitCase()<3, tof->tofId2(), true );
1098 tof_fee1 = tofQElecSvc->Fee( tof->hitCase()<3, tof->tofId1(), true );
1099 tof_fee2 = tofQElecSvc->Fee( tof->hitCase()<3, tof->tofId2(), true );
1100 tof_channel1 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId1(),true );
1101 tof_channel2 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId1(),false );
1102 tof_channel3 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId2(),true );
1103 tof_channel4 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId2(),false );
1104 */
1105 tof_ph11 = tof->ph11();
1106 tof_ph12 = tof->ph12();
1107 tof_ph21 = tof->ph21();
1108 tof_ph22 = tof->ph22();
1109 tof_ph1 = tof->ph1();
1110 tof_ph2 = tof->ph2();
1111 tof_ph = tof->ph();
1112 tof_tofe11 = tof->tof11( 0 );
1113 tof_tofe12 = tof->tof12( 0 );
1114 tof_tofe21 = tof->tof21( 0 );
1115 tof_tofe22 = tof->tof22( 0 );
1116 tof_tofe1 = tof->tof1( 0 );
1117 tof_tofe2 = tof->tof2( 0 );
1118 tof_tofe = tof->tof( 0 );
1119 tof_tofmu11 = tof->tof11( 1 );
1120 tof_tofmu12 = tof->tof12( 1 );
1121 tof_tofmu21 = tof->tof21( 1 );
1122 tof_tofmu22 = tof->tof22( 1 );
1123 tof_tofmu1 = tof->tof1( 1 );
1124 tof_tofmu2 = tof->tof2( 1 );
1125 tof_tofmu = tof->tof( 1 );
1126 tof_tofpi11 = tof->tof11( 2 );
1127 tof_tofpi12 = tof->tof12( 2 );
1128 tof_tofpi21 = tof->tof21( 2 );
1129 tof_tofpi22 = tof->tof22( 2 );
1130 tof_tofpi1 = tof->tof1( 2 );
1131 tof_tofpi2 = tof->tof2( 2 );
1132 tof_tofpi = tof->tof( 2 );
1133 tof_tofk11 = tof->tof11( 3 );
1134 tof_tofk12 = tof->tof12( 3 );
1135 tof_tofk21 = tof->tof21( 3 );
1136 tof_tofk22 = tof->tof22( 3 );
1137 tof_tofk1 = tof->tof1( 3 );
1138 tof_tofk2 = tof->tof2( 3 );
1139 tof_tofk = tof->tof( 3 );
1140 tof_tofp11 = tof->tof11( 4 );
1141 tof_tofp12 = tof->tof12( 4 );
1142 tof_tofp21 = tof->tof21( 4 );
1143 tof_tofp22 = tof->tof22( 4 );
1144 tof_tofp1 = tof->tof1( 4 );
1145 tof_tofp2 = tof->tof2( 4 );
1146 tof_tofp = tof->tof( 4 );
1147 tof_qch1 = tof->qch1();
1148 tof_qch2 = tof->qch2();
1149 tof_qch3 = tof->qch3();
1150 tof_qch4 = tof->qch4();
1151 tof_adc1 = tof->adc1();
1152 tof_adc2 = tof->adc2();
1153 tof_adc3 = tof->adc3();
1154 tof_adc4 = tof->adc4();
1155 tof_tdc1 = tof->tdc1();
1156 tof_tdc2 = tof->tdc2();
1157 tof_tdc3 = tof->tdc3();
1158 tof_tdc4 = tof->tdc4();
1159 tof_texpe1 = tof->texpInner( 0 );
1160 tof_texpmu1 = tof->texpInner( 1 );
1161 tof_texppi1 = tof->texpInner( 2 );
1162 tof_texpk1 = tof->texpInner( 3 );
1163 tof_texpp1 = tof->texpInner( 4 );
1164 tof_texpe2 = tof->texpOuter( 0 );
1165 tof_texpmu2 = tof->texpOuter( 1 );
1166 tof_texppi2 = tof->texpOuter( 2 );
1167 tof_texpk2 = tof->texpOuter( 3 );
1168 tof_texpp2 = tof->texpOuter( 4 );
1169 tof_texpe = tof->texp( 0 );
1170 tof_texpmu = tof->texp( 1 );
1171 tof_texppi = tof->texp( 2 );
1172 tof_texpk = tof->texp( 3 );
1173 tof_texpp = tof->texp( 4 );
1174 tof_tdiff1 = tof->tdiff1();
1175 tof_tdiff2 = tof->tdiff2();
1176 unsigned int trigCondition = 0;
1177 for ( int i = 0; i < 48; i++ )
1178 { trigCondition = ( trigCondition | ( ( trigData.getTrigCondition( i ) ) << i ) ); }
1179 tof_trigcond = trigCondition;
1180 unsigned int trigChannel = 0;
1181 for ( int i = 0; i < 16; i++ )
1182 { trigChannel = ( trigChannel | ( ( trigData.getTrigChannel( i ) ) << i ) ); }
1183 tof_trigchan = trigChannel;
1184 tof_trigwindow = trigData.getTimeWindow();
1185 tof_trigtype = trigData.getTimingType();
1186 tof_estime = estime;
1187 tof_t0stat = t0stat;
1188 tof_tuple->write();
1189
1190 return;
1191}
1192
1194 double estime, int t0stat,
1195 RecMdcKalTrackCol& mdcKalTrackCol ) {
1196
1197 tof_run = eventHeader.runNumber();
1198 tof_event = eventHeader.eventNumber();
1199 tof_toftrackid = tof->tofTrackId();
1200 tof_trackid = tof->trackId();
1201 RecMdcKalTrackCol::iterator iter = mdcKalTrackCol.begin();
1202 for ( ; iter != mdcKalTrackCol.end(); iter++ )
1203 {
1204 if ( ( *iter )->trackId() == tof->trackId() )
1205 {
1206 double kappa = 10000.0;
1207 double tanl = -10000.0;
1208
1209 ( *iter )->setPidType( RecMdcKalTrack::electron );
1210 kappa = ( *iter )->kappa();
1211 tanl = ( *iter )->tanl();
1212 if ( kappa > 0 ) { tof_charge = 1; }
1213 else { tof_charge = -1; }
1214 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1215 tof_pt[0] = 1.0 / kappa;
1216 tof_p[0] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[0] );
1217
1218 ( *iter )->setPidType( RecMdcKalTrack::muon );
1219 kappa = ( *iter )->kappa();
1220 tanl = ( *iter )->tanl();
1221 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1222 tof_pt[1] = 1.0 / kappa;
1223 tof_p[1] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[1] );
1224
1225 ( *iter )->setPidType( RecMdcKalTrack::pion );
1226 kappa = ( *iter )->kappa();
1227 tanl = ( *iter )->tanl();
1228 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1229 tof_pt[2] = 1.0 / kappa;
1230 tof_p[2] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[2] );
1231
1232 ( *iter )->setPidType( RecMdcKalTrack::kaon );
1233 kappa = ( *iter )->kappa();
1234 tanl = ( *iter )->tanl();
1235 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1236 tof_pt[3] = 1.0 / kappa;
1237 tof_p[3] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[3] );
1238
1239 ( *iter )->setPidType( RecMdcKalTrack::proton );
1240 kappa = ( *iter )->kappa();
1241 tanl = ( *iter )->tanl();
1242 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1243 tof_pt[4] = 1.0 / kappa;
1244 tof_p[4] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[4] );
1245
1246 break;
1247 }
1248 }
1249 tof_id1 = tof->id1();
1250 tof_id2 = tof->id2();
1251 tof_istrip1 = tof->istrip1();
1252 tof_istrip2 = tof->istrip2();
1253 tof_dstrip1 = tof->dstrip1();
1254 tof_dstrip2 = tof->dstrip2();
1255 tof_barrel = tof->barrel();
1256 tof_hitcase = tof->hitCase();
1257 tof_momentum = tof->p();
1258 tof_path1 = tof->path1();
1259 tof_path2 = tof->path2();
1260 tof_zrhit1 = tof->zrhit1();
1261 tof_zrhit2 = tof->zrhit2();
1262 tof_errzr1 = tof->errzrhit1();
1263 tof_errzr2 = tof->errzrhit2();
1264 tof_xhit1 = tof->xhit1();
1265 tof_yhit1 = tof->yhit1();
1266 tof_xhit2 = tof->xhit2();
1267 tof_yhit2 = tof->yhit2();
1268 for ( unsigned int i = 0; i < 5; i++ )
1269 {
1270 tof_kal[i] = tof->kal( i );
1271 tof_zr1[i] = tof->zr1( i );
1272 tof_zr2[i] = tof->zr2( i );
1273 }
1274 tof_ztdc1 = tof->ztdc1();
1275 tof_ztdc2 = tof->ztdc2();
1276 tof_zadc1 = tof->zadc1();
1277 tof_zadc2 = tof->zadc2();
1278 tof_zt1 = -999.0;
1279 tof_zt2 = -999.0;
1280 tof_zt3 = -999.0;
1281 tof_zt4 = -999.0;
1282 tof_zq1 = -999.0;
1283 tof_zq2 = -999.0;
1284 tof_zq3 = -999.0;
1285 tof_zq4 = -999.0;
1286 if ( tof->hitCase() == 0 || tof->hitCase() == 2 )
1287 {
1288 tof_zt1 = tofCaliSvc->ZTDC1( tof->tdc2(), tof->tofId1(), tof->zrhit1() );
1289 tof_zt2 = tofCaliSvc->ZTDC2( tof->tdc1(), tof->tofId1(), tof->zrhit1() );
1290 tof_zq1 = tofCaliSvc->ZADC1( tof->adc2(), tof->tofId1(), tof->zrhit1() );
1291 tof_zq2 = tofCaliSvc->ZADC2( tof->adc1(), tof->tofId1(), tof->zrhit1() );
1292 }
1293 if ( tof->hitCase() == 1 || tof->hitCase() == 2 )
1294 {
1295 tof_zt3 = tofCaliSvc->ZTDC1( tof->tdc4(), tof->tofId2(), tof->zrhit2() );
1296 tof_zt4 = tofCaliSvc->ZTDC2( tof->tdc3(), tof->tofId2(), tof->zrhit2() );
1297 tof_zq3 = tofCaliSvc->ZADC1( tof->adc4(), tof->tofId2(), tof->zrhit2() );
1298 tof_zq4 = tofCaliSvc->ZADC2( tof->adc3(), tof->tofId2(), tof->zrhit2() );
1299 }
1300 tof_size1 = tof->size1();
1301 tof_size2 = tof->size2();
1302 tof_size3 = tof->size3();
1303 tof_size4 = tof->size4();
1304 tof_theta1 = tof->theta1();
1305 tof_theta2 = tof->theta2();
1306 tof_phi1 = tof->phi1();
1307 tof_phi2 = tof->phi2();
1308 tof_quality1 = tof->quality1();
1309 tof_quality2 = tof->quality2();
1310 tof_quality = tof->quality();
1311 tof_tofid1 = tof->tofId1();
1312 tof_tofid2 = tof->tofId2();
1313 tof_strip1 = tof->strip1();
1314 tof_strip2 = tof->strip2();
1315 /*
1316 tof_board1 = tofQElecSvc->Board( tof->hitCase()<3, tof->tofId1(), true );
1317 tof_board2 = tofQElecSvc->Board( tof->hitCase()<3, tof->tofId2(), true );
1318 tof_crate1 = tofQElecSvc->Crate( tof->hitCase()<3, tof->tofId1(), true );
1319 tof_crate2 = tofQElecSvc->Crate( tof->hitCase()<3, tof->tofId2(), true );
1320 tof_fee1 = tofQElecSvc->Fee( tof->hitCase()<3, tof->tofId1(), true );
1321 tof_fee2 = tofQElecSvc->Fee( tof->hitCase()<3, tof->tofId2(), true );
1322 tof_channel1 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId1(),true );
1323 tof_channel2 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId1(),false );
1324 tof_channel3 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId2(),true );
1325 tof_channel4 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId2(),false );
1326 */
1327 tof_ph11 = tof->ph11();
1328 tof_ph12 = tof->ph12();
1329 tof_ph21 = tof->ph21();
1330 tof_ph22 = tof->ph22();
1331 tof_ph1 = tof->ph1();
1332 tof_ph2 = tof->ph2();
1333 tof_ph = tof->ph();
1334 tof_tofe11 = tof->tof11( 0 );
1335 tof_tofe12 = tof->tof12( 0 );
1336 tof_tofe21 = tof->tof21( 0 );
1337 tof_tofe22 = tof->tof22( 0 );
1338 tof_tofe1 = tof->tof1( 0 );
1339 tof_tofe2 = tof->tof2( 0 );
1340 tof_tofe = tof->tof( 0 );
1341 tof_tofmu11 = tof->tof11( 1 );
1342 tof_tofmu12 = tof->tof12( 1 );
1343 tof_tofmu21 = tof->tof21( 1 );
1344 tof_tofmu22 = tof->tof22( 1 );
1345 tof_tofmu1 = tof->tof1( 1 );
1346 tof_tofmu2 = tof->tof2( 1 );
1347 tof_tofmu = tof->tof( 1 );
1348 tof_tofpi11 = tof->tof11( 2 );
1349 tof_tofpi12 = tof->tof12( 2 );
1350 tof_tofpi21 = tof->tof21( 2 );
1351 tof_tofpi22 = tof->tof22( 2 );
1352 tof_tofpi1 = tof->tof1( 2 );
1353 tof_tofpi2 = tof->tof2( 2 );
1354 tof_tofpi = tof->tof( 2 );
1355 tof_tofk11 = tof->tof11( 3 );
1356 tof_tofk12 = tof->tof12( 3 );
1357 tof_tofk21 = tof->tof21( 3 );
1358 tof_tofk22 = tof->tof22( 3 );
1359 tof_tofk1 = tof->tof1( 3 );
1360 tof_tofk2 = tof->tof2( 3 );
1361 tof_tofk = tof->tof( 3 );
1362 tof_tofp11 = tof->tof11( 4 );
1363 tof_tofp12 = tof->tof12( 4 );
1364 tof_tofp21 = tof->tof21( 4 );
1365 tof_tofp22 = tof->tof22( 4 );
1366 tof_tofp1 = tof->tof1( 4 );
1367 tof_tofp2 = tof->tof2( 4 );
1368 tof_tofp = tof->tof( 4 );
1369 tof_qch1 = tof->qch1();
1370 tof_qch2 = tof->qch2();
1371 tof_qch3 = tof->qch3();
1372 tof_qch4 = tof->qch4();
1373 tof_adc1 = tof->adc1();
1374 tof_adc2 = tof->adc2();
1375 tof_adc3 = tof->adc3();
1376 tof_adc4 = tof->adc4();
1377 tof_tdc1 = tof->tdc1();
1378 tof_tdc2 = tof->tdc2();
1379 tof_tdc3 = tof->tdc3();
1380 tof_tdc4 = tof->tdc4();
1381 tof_texpe1 = tof->texpInner( 0 );
1382 tof_texpmu1 = tof->texpInner( 1 );
1383 tof_texppi1 = tof->texpInner( 2 );
1384 tof_texpk1 = tof->texpInner( 3 );
1385 tof_texpp1 = tof->texpInner( 4 );
1386 tof_texpe2 = tof->texpOuter( 0 );
1387 tof_texpmu2 = tof->texpOuter( 1 );
1388 tof_texppi2 = tof->texpOuter( 2 );
1389 tof_texpk2 = tof->texpOuter( 3 );
1390 tof_texpp2 = tof->texpOuter( 4 );
1391 tof_texpe = tof->texp( 0 );
1392 tof_texpmu = tof->texp( 1 );
1393 tof_texppi = tof->texp( 2 );
1394 tof_texpk = tof->texp( 3 );
1395 tof_texpp = tof->texp( 4 );
1396 tof_tdiff1 = tof->tdiff1();
1397 tof_tdiff2 = tof->tdiff2();
1398 tof_estime = estime;
1399 tof_t0stat = t0stat;
1400 tof_tuple->write();
1401
1402 return;
1403}
1404
1406 double estime, int t0stat, RecMdcKalTrackCol& mdcKalTrackCol,
1407 TofMcHitCol& tofMcCol, McParticleCol& mcParticleCol,
1408 std::string calibData ) {
1409
1410 tof_run = eventHeader.runNumber();
1411 tof_event = eventHeader.eventNumber();
1412 tof_toftrackid = tof->tofTrackId();
1413 tof_trackid = tof->trackId();
1414 RecMdcKalTrackCol::iterator iter = mdcKalTrackCol.begin();
1415 for ( ; iter != mdcKalTrackCol.end(); iter++ )
1416 {
1417 if ( ( *iter )->trackId() == tof->trackId() )
1418 {
1419 double kappa = 10000.0;
1420 double tanl = -10000.0;
1421
1422 ( *iter )->setPidType( RecMdcKalTrack::electron );
1423 kappa = ( *iter )->kappa();
1424 tanl = ( *iter )->tanl();
1425 if ( kappa > 0 ) { tof_charge = 1; }
1426 else { tof_charge = -1; }
1427 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1428 tof_pt[0] = 1.0 / kappa;
1429 tof_p[0] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[0] );
1430
1431 ( *iter )->setPidType( RecMdcKalTrack::muon );
1432 kappa = ( *iter )->kappa();
1433 tanl = ( *iter )->tanl();
1434 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1435 tof_pt[1] = 1.0 / kappa;
1436 tof_p[1] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[1] );
1437
1438 ( *iter )->setPidType( RecMdcKalTrack::pion );
1439 kappa = ( *iter )->kappa();
1440 tanl = ( *iter )->tanl();
1441 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1442 tof_pt[2] = 1.0 / kappa;
1443 tof_p[2] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[2] );
1444
1445 ( *iter )->setPidType( RecMdcKalTrack::kaon );
1446 kappa = ( *iter )->kappa();
1447 tanl = ( *iter )->tanl();
1448 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1449 tof_pt[3] = 1.0 / kappa;
1450 tof_p[3] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[3] );
1451
1452 ( *iter )->setPidType( RecMdcKalTrack::proton );
1453 kappa = ( *iter )->kappa();
1454 tanl = ( *iter )->tanl();
1455 if ( abs( kappa ) < 1.0e-6 ) { kappa = 1.0e-6; }
1456 tof_pt[4] = 1.0 / kappa;
1457 tof_p[4] = abs( sqrt( 1.0 + tanl * tanl ) * tof_pt[4] );
1458
1459 break;
1460 }
1461 }
1462 tof_id1 = tof->id1();
1463 tof_id2 = tof->id2();
1464 tof_istrip1 = tof->istrip1();
1465 tof_istrip2 = tof->istrip2();
1466 tof_barrel = tof->barrel();
1467 tof_hitcase = tof->hitCase();
1468 tof_momentum = tof->p();
1469 tof_path1 = tof->path1();
1470 tof_path2 = tof->path2();
1471 tof_zrhit1 = tof->zrhit1();
1472 tof_zrhit2 = tof->zrhit2();
1473 tof_errzr1 = tof->errzrhit1();
1474 tof_errzr2 = tof->errzrhit2();
1475 tof_xhit1 = tof->xhit1();
1476 tof_yhit1 = tof->yhit1();
1477 tof_xhit2 = tof->xhit2();
1478 tof_yhit2 = tof->yhit2();
1479 for ( unsigned int i = 0; i < 5; i++ )
1480 {
1481 tof_kal[i] = tof->kal( i );
1482 tof_zr1[i] = tof->zr1( i );
1483 tof_zr2[i] = tof->zr2( i );
1484 }
1485 tof_ztdc1 = tof->ztdc1();
1486 tof_ztdc2 = tof->ztdc2();
1487 tof_zadc1 = tof->zadc1();
1488 tof_zadc2 = tof->zadc2();
1489 tof_zt1 = -999.0;
1490 tof_zt2 = -999.0;
1491 tof_zt3 = -999.0;
1492 tof_zt4 = -999.0;
1493 tof_zq1 = -999.0;
1494 tof_zq2 = -999.0;
1495 tof_zq3 = -999.0;
1496 tof_zq4 = -999.0;
1497 if ( tof->hitCase() == 0 || tof->hitCase() == 2 )
1498 {
1499 tof_zt1 = tofCaliSvc->ZTDC1( tof->tdc2(), tof->tofId1(), tof->zrhit1() );
1500 tof_zt2 = tofCaliSvc->ZTDC2( tof->tdc1(), tof->tofId1(), tof->zrhit1() );
1501 tof_zq1 = tofCaliSvc->ZADC1( tof->adc2(), tof->tofId1(), tof->zrhit1() );
1502 tof_zq2 = tofCaliSvc->ZADC2( tof->adc1(), tof->tofId1(), tof->zrhit1() );
1503 }
1504 if ( tof->hitCase() == 1 || tof->hitCase() == 2 )
1505 {
1506 tof_zt3 = tofCaliSvc->ZTDC1( tof->tdc4(), tof->tofId2(), tof->zrhit2() );
1507 tof_zt4 = tofCaliSvc->ZTDC2( tof->tdc3(), tof->tofId2(), tof->zrhit2() );
1508 tof_zq3 = tofCaliSvc->ZADC1( tof->adc4(), tof->tofId2(), tof->zrhit2() );
1509 tof_zq4 = tofCaliSvc->ZADC2( tof->adc3(), tof->tofId2(), tof->zrhit2() );
1510 }
1511 tof_size1 = tof->size1();
1512 tof_size2 = tof->size2();
1513 tof_size3 = tof->size3();
1514 tof_size4 = tof->size4();
1515 tof_theta1 = tof->theta1();
1516 tof_theta2 = tof->theta2();
1517 tof_phi1 = tof->phi1();
1518 tof_phi2 = tof->phi2();
1519 tof_quality1 = tof->quality1();
1520 tof_quality2 = tof->quality2();
1521 tof_quality = tof->quality();
1522 tof_tofid1 = tof->tofId1();
1523 tof_tofid2 = tof->tofId2();
1524 tof_strip1 = tof->strip1();
1525 tof_strip2 = tof->strip2();
1526 /*
1527 tof_board1 = tofQElecSvc->Board( tof->hitCase()<3, tof->tofId1(), true );
1528 tof_board2 = tofQElecSvc->Board( tof->hitCase()<3, tof->tofId2(), true );
1529 tof_crate1 = tofQElecSvc->Crate( tof->hitCase()<3, tof->tofId1(), true );
1530 tof_crate2 = tofQElecSvc->Crate( tof->hitCase()<3, tof->tofId2(), true );
1531 tof_fee1 = tofQElecSvc->Fee( tof->hitCase()<3, tof->tofId1(), true );
1532 tof_fee2 = tofQElecSvc->Fee( tof->hitCase()<3, tof->tofId2(), true );
1533 tof_channel1 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId1(),true );
1534 tof_channel2 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId1(),false );
1535 tof_channel3 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId2(),true );
1536 tof_channel4 = tofQElecSvc->Channel(tof->hitCase()<3,tof->tofId2(),false );
1537 */
1538 tof_ph11 = tof->ph11();
1539 tof_ph12 = tof->ph12();
1540 tof_ph21 = tof->ph21();
1541 tof_ph22 = tof->ph22();
1542 tof_ph1 = tof->ph1();
1543 tof_ph2 = tof->ph2();
1544 tof_ph = tof->ph();
1545 tof_tofe11 = tof->tof11( 0 );
1546 tof_tofe12 = tof->tof12( 0 );
1547 tof_tofe21 = tof->tof21( 0 );
1548 tof_tofe22 = tof->tof22( 0 );
1549 tof_tofe1 = tof->tof1( 0 );
1550 tof_tofe2 = tof->tof2( 0 );
1551 tof_tofe = tof->tof( 0 );
1552 tof_tofmu11 = tof->tof11( 1 );
1553 tof_tofmu12 = tof->tof12( 1 );
1554 tof_tofmu21 = tof->tof21( 1 );
1555 tof_tofmu22 = tof->tof22( 1 );
1556 tof_tofmu1 = tof->tof1( 1 );
1557 tof_tofmu2 = tof->tof2( 1 );
1558 tof_tofmu = tof->tof( 1 );
1559 tof_tofpi11 = tof->tof11( 2 );
1560 tof_tofpi12 = tof->tof12( 2 );
1561 tof_tofpi21 = tof->tof21( 2 );
1562 tof_tofpi22 = tof->tof22( 2 );
1563 tof_tofpi1 = tof->tof1( 2 );
1564 tof_tofpi2 = tof->tof2( 2 );
1565 tof_tofpi = tof->tof( 2 );
1566 tof_tofk11 = tof->tof11( 3 );
1567 tof_tofk12 = tof->tof12( 3 );
1568 tof_tofk21 = tof->tof21( 3 );
1569 tof_tofk22 = tof->tof22( 3 );
1570 tof_tofk1 = tof->tof1( 3 );
1571 tof_tofk2 = tof->tof2( 3 );
1572 tof_tofk = tof->tof( 3 );
1573 tof_tofp11 = tof->tof11( 4 );
1574 tof_tofp12 = tof->tof12( 4 );
1575 tof_tofp21 = tof->tof21( 4 );
1576 tof_tofp22 = tof->tof22( 4 );
1577 tof_tofp1 = tof->tof1( 4 );
1578 tof_tofp2 = tof->tof2( 4 );
1579 tof_tofp = tof->tof( 4 );
1580 tof_qch1 = tof->qch1();
1581 tof_qch2 = tof->qch2();
1582 tof_qch3 = tof->qch3();
1583 tof_qch4 = tof->qch4();
1584 tof_adc1 = tof->adc1();
1585 tof_adc2 = tof->adc2();
1586 tof_adc3 = tof->adc3();
1587 tof_adc4 = tof->adc4();
1588 tof_tdc1 = tof->tdc1();
1589 tof_tdc2 = tof->tdc2();
1590 tof_tdc3 = tof->tdc3();
1591 tof_tdc4 = tof->tdc4();
1592 tof_texpe1 = tof->texpInner( 0 );
1593 tof_texpmu1 = tof->texpInner( 1 );
1594 tof_texppi1 = tof->texpInner( 2 );
1595 tof_texpk1 = tof->texpInner( 3 );
1596 tof_texpp1 = tof->texpInner( 4 );
1597 tof_texpe2 = tof->texpOuter( 0 );
1598 tof_texpmu2 = tof->texpOuter( 1 );
1599 tof_texppi2 = tof->texpOuter( 2 );
1600 tof_texpk2 = tof->texpOuter( 3 );
1601 tof_texpp2 = tof->texpOuter( 4 );
1602 tof_texpe = tof->texp( 0 );
1603 tof_texpmu = tof->texp( 1 );
1604 tof_texppi = tof->texp( 2 );
1605 tof_texpk = tof->texp( 3 );
1606 tof_texpp = tof->texp( 4 );
1607 tof_tdiff1 = tof->tdiff1();
1608 tof_tdiff2 = tof->tdiff2();
1609 tof_estime = estime;
1610 tof_t0stat = t0stat;
1611
1612 int particleId = 0;
1613 if ( calibData == "Bhabha" ) { particleId = 11; }
1614 else if ( calibData == "Dimu" ) { particleId = 13; }
1615 else if ( calibData == "pion" ) { particleId = 211; }
1616 else if ( calibData == "kaon" ) { particleId = 321; }
1617 else if ( calibData == "proton" ) { particleId = 2212; }
1618 else
1619 {
1620 cout << "Reconstruction::TofRec::TofCheckDigi::Fill_TofTrack: For MC, Wrong Input "
1621 "Particle ID!"
1622 << endl;
1623 }
1624
1625 tof_mcp = -100.0;
1626 tof_mctofp = -100.0;
1627 tof_mctrkid = -100.0;
1628 tof_mcpath = -100.0;
1629 tof_mctexp = -100.0;
1630 tof_mczrhit = -1000.0;
1631
1632 McParticleCol::iterator iter_mc = mcParticleCol.begin();
1633 for ( ; iter_mc != mcParticleCol.end(); iter_mc++ )
1634 {
1635 int pid = ( *iter_mc )->particleProperty();
1636 if ( abs( pid ) != particleId ) continue;
1637 if ( ( particleId == 11 || particleId == 13 ) &&
1638 ( ( pid > 0 && tof_charge > 0 ) || ( pid < 0 && tof_charge < 0 ) ) )
1639 continue;
1640 if ( ( particleId != 11 && particleId != 13 ) &&
1641 ( ( pid > 0 && tof_charge < 0 ) || ( pid < 0 && tof_charge > 0 ) ) )
1642 continue;
1643
1644 int trkIndex = ( *iter_mc )->trackIndex();
1645 tof_mcp = ( *iter_mc )->initialFourMomentum().rho();
1646
1647 TofMcHitCol::iterator iter_mc_tof = tofMcCol.begin();
1648 for ( ; iter_mc_tof != tofMcCol.end(); iter_mc_tof++ )
1649 {
1650 if ( trkIndex != ( *iter_mc_tof )->getTrackIndex() ) continue;
1651 double mcposx = ( *iter_mc_tof )->getPositionX();
1652 double mcposy = ( *iter_mc_tof )->getPositionY();
1653 double mcposr = 0.1 * sqrt( mcposx * mcposx + mcposy * mcposy );
1654 double mcposz = 0.1 * ( *iter_mc_tof )->getPositionZ();
1655 double mcpx = ( *iter_mc_tof )->getPx();
1656 double mcpy = ( *iter_mc_tof )->getPy();
1657 double mcpz = ( *iter_mc_tof )->getPz();
1658 double mctofp = 0.001 * sqrt( mcpx * mcpx + mcpy * mcpy + mcpz * mcpz );
1659 tof_mctofp = mctofp;
1660 tof_mctrkid = ( *iter_mc_tof )->getTrackIndex();
1661 tof_mcpath = 0.1 * ( *iter_mc_tof )->getTrackLength();
1662 tof_mctexp = ( *iter_mc_tof )->getFlightTime();
1663 if ( tof->hitCase() == 0 || tof->hitCase() == 1 || tof->hitCase() == 2 )
1664 { tof_mczrhit = mcposz; }
1665 else if ( tof->hitCase() == 3 || tof->hitCase() == 4 ) { tof_mczrhit = mcposr; }
1666 }
1667 }
1668
1669 tof_tuple->write();
1670
1671 return;
1672}
1673
1675 RecMdcKalTrackCol& mdcKalTrackCol,
1676 RecExtTrackCol& recExtTrackCol ) {
1677 if ( mdcTrackCol.size() <= 0 || mdcKalTrackCol.size() <= 0 || recExtTrackCol.size() <= 0 )
1678 return;
1679 RecExtTrackCol::iterator iter_ext = recExtTrackCol.begin();
1680 for ( ; iter_ext != recExtTrackCol.end(); iter_ext++ )
1681 {
1682 RecMdcKalTrackCol::iterator iter_kal = mdcKalTrackCol.begin();
1683 for ( ; iter_kal != mdcKalTrackCol.end(); iter_kal++ )
1684 {
1685 RecMdcTrackCol::iterator iter_mdc = mdcTrackCol.begin();
1686 for ( ; iter_mdc != mdcTrackCol.end(); iter_mdc++ )
1687 {
1688 if ( ( *iter_kal )->getTrackId() != ( *iter_mdc )->trackId() ) continue;
1689 if ( ( *iter_kal )->getTrackId() == ( *iter_ext )->trackId() ) break;
1690 }
1691 if ( iter_mdc != mdcTrackCol.end() )
1692 { Fill( eventHeader, *iter_mdc, *iter_kal, *iter_ext ); }
1693 }
1694 }
1695 return;
1696}
1697
1699 RecMdcTrackCol& mdcTrackCol, RecEmcShowerCol& emcShowerCol,
1700 RecMdcKalTrackCol& mdcKalTrackCol ) {
1701 bb_run = eventHeader.runNumber();
1702 bb_event = eventHeader.eventNumber();
1703 bb_trksize = extTrackCol.size();
1704 bb_mdcsize = mdcTrackCol.size();
1705 bb_emcsize = emcShowerCol.size();
1706
1707 RecMdcTrackCol::iterator iter_mdc1 = mdcTrackCol.begin();
1708 RecMdcTrackCol::iterator iter_mdc2 = mdcTrackCol.begin() + 1;
1709
1710 Hep3Vector p1 = ( *iter_mdc1 )->p3();
1711 Hep3Vector p2 = ( *iter_mdc2 )->p3();
1712
1713 bb_trk1 = ( *iter_mdc1 )->trackId();
1714 bb_pmdc1 = ( *iter_mdc1 )->p();
1715 bb_ptmdc1 = ( *iter_mdc1 )->pxy();
1716 bb_theta1 = ( *iter_mdc1 )->theta();
1717 bb_phi1 = ( *iter_mdc1 )->phi();
1718 bb_x1 = ( *iter_mdc1 )->x();
1719 bb_y1 = ( *iter_mdc1 )->y();
1720 bb_z1 = ( *iter_mdc1 )->z();
1721 bb_r1 = ( *iter_mdc1 )->r();
1722 bb_charge1 = ( *iter_mdc1 )->charge();
1723 bb_chi1 = ( *iter_mdc1 )->chi2();
1724 bb_ndof1 = ( *iter_mdc1 )->ndof();
1725 bb_layer1 = ( *iter_mdc1 )->lastLayer();
1726 bb_trk2 = ( *iter_mdc2 )->trackId();
1727 bb_pmdc2 = ( *iter_mdc2 )->p();
1728 bb_ptmdc2 = ( *iter_mdc2 )->pxy();
1729 bb_theta2 = ( *iter_mdc2 )->theta();
1730 bb_phi2 = ( *iter_mdc2 )->phi();
1731 bb_x2 = ( *iter_mdc2 )->x();
1732 bb_y2 = ( *iter_mdc2 )->y();
1733 bb_z2 = ( *iter_mdc2 )->z();
1734 bb_r2 = ( *iter_mdc2 )->r();
1735 bb_charge2 = ( *iter_mdc2 )->charge();
1736 bb_chi2 = ( *iter_mdc2 )->chi2();
1737 bb_ndof2 = ( *iter_mdc2 )->ndof();
1738 bb_layer2 = ( *iter_mdc2 )->lastLayer();
1739
1740 bb_dang = 180.0 - p1.angle( p2.unit() ) * 180.0 / pi;
1741 bb_dphi = abs( ( *iter_mdc1 )->phi() - ( *iter_mdc2 )->phi() ) * 180.0 / pi;
1742
1743 RecMdcKalTrackCol::iterator iter_kal1 = mdcKalTrackCol.begin();
1744 RecMdcKalTrackCol::iterator iter_kal2 = mdcKalTrackCol.begin() + 1;
1745
1746 if ( ( ( *iter_kal1 )->trackId() == ( *iter_mdc2 )->trackId() ) &&
1747 ( ( *iter_kal2 )->trackId() == ( *iter_mdc1 )->trackId() ) )
1748 {
1749 RecMdcKalTrackCol::iterator iter_tmp = iter_kal1;
1750 iter_kal1 = iter_kal2;
1751 iter_kal2 = iter_tmp;
1752 }
1753
1754 // RecMdcKalTrack::setPidType (RecMdcKalTrack::electron);
1755 ( *iter_kal1 )->setPidType( RecMdcKalTrack::electron );
1756 ( *iter_kal2 )->setPidType( RecMdcKalTrack::electron );
1757 double tanl1 = ( *iter_kal1 )->tanl();
1758 double kappa1 = ( *iter_kal1 )->kappa();
1759 double tanl2 = ( *iter_kal2 )->tanl();
1760 double kappa2 = ( *iter_kal2 )->kappa();
1761 bb_pe1 = sqrt( 1.0 + tanl1 * tanl1 ) / kappa1;
1762 bb_pte1 = 1.0 / kappa1;
1763 bb_pe2 = sqrt( 1.0 + tanl2 * tanl2 ) / kappa2;
1764 bb_pte2 = 1.0 / kappa2;
1765 // RecMdcKalTrack::setPidType (RecMdcKalTrack::muon);
1766 ( *iter_kal1 )->setPidType( RecMdcKalTrack::muon );
1767 ( *iter_kal2 )->setPidType( RecMdcKalTrack::muon );
1768 tanl1 = ( *iter_kal1 )->tanl();
1769 kappa1 = ( *iter_kal1 )->kappa();
1770 tanl2 = ( *iter_kal2 )->tanl();
1771 kappa2 = ( *iter_kal2 )->kappa();
1772 bb_pmu1 = sqrt( 1.0 + tanl1 * tanl1 ) / kappa1;
1773 bb_ptmu1 = 1.0 / kappa1;
1774 bb_pmu2 = sqrt( 1.0 + tanl2 * tanl2 ) / kappa2;
1775 bb_ptmu2 = 1.0 / kappa2;
1776
1777 RecExtTrackCol::iterator iter_ext1 = extTrackCol.begin();
1778 RecExtTrackCol::iterator iter_ext2 = extTrackCol.begin() + 1;
1779
1780 Hep3Vector extPos1 = ( *iter_ext1 )->emcPosition();
1781 Hep3Vector extPos2 = ( *iter_ext2 )->emcPosition();
1782
1783 bb_extx1 = extPos1.x();
1784 bb_exty1 = extPos1.y();
1785 bb_extz1 = extPos1.z();
1786 bb_extx2 = extPos2.x();
1787 bb_exty2 = extPos2.y();
1788 bb_extz2 = extPos2.z();
1789
1790 RecEmcShowerCol::iterator iter_emc1 = emcShowerCol.begin();
1791 RecEmcShowerCol::iterator iter_emc2 = emcShowerCol.begin() + 1;
1792
1793 Hep3Vector emcPos1( ( *iter_emc1 )->x(), ( *iter_emc1 )->y(), ( *iter_emc1 )->z() );
1794 Hep3Vector emcPos2( ( *iter_emc2 )->x(), ( *iter_emc2 )->y(), ( *iter_emc2 )->z() );
1795
1796 // cout << "ext 1 --- " << extPos1 << " ext 2 --- " << extPos2 <<
1797 // "emc 1 --- " << emcPos1 << " emc 2 --- " << emcPos2 << endl;
1798
1799 Hep3Vector dis1 = extPos1 - emcPos1;
1800 Hep3Vector dis2 = extPos2 - emcPos1;
1801
1802 // cout << " r1 = " << dis1.r() << " r2 = " << dis2.r() << endl;
1803
1804 if ( dis1.r() > dis2.r() )
1805 {
1806 RecEmcShowerCol::iterator iter_tmp = iter_emc1;
1807 iter_emc1 = iter_emc2;
1808 iter_emc2 = iter_tmp;
1809 Hep3Vector emc_tmp = emcPos1;
1810 emcPos1 = emcPos2;
1811 emcPos2 = emc_tmp;
1812 }
1813 dis1 = extPos1 - emcPos1;
1814 dis2 = extPos2 - emcPos2;
1815
1816 bb_emctrk1 = ( *iter_emc1 )->trackId();
1817 bb_emcx1 = ( *iter_emc1 )->x();
1818 bb_emcy1 = ( *iter_emc1 )->y();
1819 bb_emcz1 = ( *iter_emc1 )->z();
1820 bb_ep1 = ( *iter_emc1 )->energy() / ( *iter_mdc1 )->p();
1821 ;
1822 bb_th1 = ( *iter_emc1 )->theta();
1823 bb_ph1 = ( *iter_emc1 )->phi();
1824 bb_emctrk2 = ( *iter_emc2 )->trackId();
1825 bb_emcx2 = ( *iter_emc2 )->x();
1826 bb_emcy2 = ( *iter_emc2 )->y();
1827 bb_emcz2 = ( *iter_emc2 )->z();
1828 bb_ep2 = ( *iter_emc2 )->energy() / ( *iter_mdc2 )->p();
1829 ;
1830 bb_th2 = ( *iter_emc2 )->theta();
1831 bb_ph2 = ( *iter_emc2 )->phi();
1832 bb_dr1 = dis1.r();
1833 bb_drxy1 = dis1.rho();
1834 bb_dz1 = dis1.z();
1835 bb_dr2 = dis2.r();
1836 bb_drxy2 = dis2.rho();
1837 bb_dz2 = dis2.z();
1838
1839 double etot = 0.0;
1840 RecEmcShowerCol::iterator iter_emc = emcShowerCol.begin();
1841 for ( ; iter_emc != emcShowerCol.end(); iter_emc++ ) { etot += ( *iter_emc )->energy(); }
1842 bb_etot = etot - ( *iter_emc1 )->energy() - ( *iter_emc2 )->energy();
1843
1844 bb_tuple->write();
1845
1846 return;
1847}
double p2[4]
double p1[4]
Double_t etot
ObjectVector< RecEmcShower > RecEmcShowerCol
ObjectVector< RecExtTrack > RecExtTrackCol
std::multimap< unsigned int, TofData * > TofDataMap
std::multimap< unsignedint, TofData * >::iterator IterTofDataMap
double pi
EvtStreamInputIterator< typename Generator::result_type > iter(Generator gen, int N=0)
ITofCaliSvc * tofCaliSvc
int eventNumber() const
Retrieve event number.
void Fill_TofTrack(Event::EventHeader &, TofTrack *&, double, int)
void Fill_MRPC(Event::EventHeader &, TofData *&, double, int)
void Fill(Event::EventHeader &, RecMdcTrack *&, RecMdcKalTrack *&, RecExtTrack *&)
void Fill_Endcap(Event::EventHeader &, TofData *&, double, int)
void Fill_Barrel(Event::EventHeader &, TofData *&, double, int)
TofCheckDigi(NTuple::Tuple *&digi, NTuple::Tuple *&barrel, NTuple::Tuple *&endcap, NTuple::Tuple *&mrpc, NTuple::Tuple *&ext, NTuple::Tuple *&tof, NTuple::Tuple *&bhabha)
void FillCol(Event::EventHeader &, TofDigiCol &, double, int)
int tdcChannel()
Definition TofData.cxx:639
double qtc2()
Definition TofData.cxx:597
int qnumber2()
Definition TofData.cxx:729
int qtimes2()
Definition TofData.cxx:693
unsigned int westTimes()
Definition TofData.cxx:711
int ttimes1()
Definition TofData.cxx:687
double adc2()
Definition TofData.cxx:567
int tclock1()
Definition TofData.cxx:651
int qclock1()
Definition TofData.cxx:645
int tclock()
Definition TofData.cxx:675
double adc()
Definition TofData.cxx:579
double tdc2()
Definition TofData.cxx:573
double qtc1()
Definition TofData.cxx:591
int tdcChannelWest()
Definition TofData.cxx:627
int adcChannel()
Definition TofData.cxx:633
int qtimes1()
Definition TofData.cxx:681
int tnumber1()
Definition TofData.cxx:723
int adcChannelWest()
Definition TofData.cxx:621
double tdc1()
Definition TofData.cxx:561
int qnumber1()
Definition TofData.cxx:717
int adcChannelEast()
Definition TofData.cxx:609
int qclock()
Definition TofData.cxx:669
int ttimes2()
Definition TofData.cxx:699
double adc1()
Definition TofData.cxx:555
int qclock2()
Definition TofData.cxx:657
unsigned int eastTimes()
Definition TofData.cxx:705
int tnumber2()
Definition TofData.cxx:735
double tdc()
Definition TofData.cxx:585
int tclock2()
Definition TofData.cxx:663
int tdcChannelEast()
Definition TofData.cxx:615
double qtc()
Definition TofData.cxx:603
static int endcap(const Identifier &id)
Definition TofID.cxx:108
static int strip(const Identifier &id)
Definition TofID.cxx:120
static Identifier cell_id(int barrel_ec, int layer, int phi_module, int end)
For a single crystal.
Definition TofID.cxx:126
static bool is_scin(const Identifier &id)
Definition TofID.cxx:88
static int end(const Identifier &id)
Definition TofID.cxx:71
static bool is_barrel(const Identifier &id)
Test for barrel.
Definition TofID.cxx:40
static bool is_mrpc(const Identifier &id)
Definition TofID.cxx:98
static int phi_module(const Identifier &id)
Definition TofID.cxx:65
static int barrel_ec(const Identifier &id)
Values of different levels (failure returns 0).
Definition TofID.cxx:54
static int layer(const Identifier &id)
Definition TofID.cxx:59
static int module(const Identifier &id)
Definition TofID.cxx:114
int istrip2() const
Definition TofTrack.h:42
double tof2(unsigned int i) const
Definition TofTrack.h:96
double ph11() const
Definition TofTrack.h:83
double phi2() const
Definition TofTrack.h:73
int dstrip1() const
Definition TofTrack.h:43
double theta1() const
Definition TofTrack.h:70
double tof11(unsigned int i) const
Definition TofTrack.h:91
double tof12(unsigned int i) const
Definition TofTrack.h:92
double phi1() const
Definition TofTrack.h:72
double tdiff2() const
Definition TofTrack.h:123
double xhit1() const
Definition TofTrack.h:55
double yhit2() const
Definition TofTrack.h:58
double xhit2() const
Definition TofTrack.h:57
ExtTrackCase hitCase() const
Definition TofTrack.h:46
int strip1() const
Definition TofTrack.h:80
double zr1(unsigned int i) const
Definition TofTrack.h:60
double theta2() const
Definition TofTrack.h:71
double tdiff1() const
Definition TofTrack.h:122
double qch3() const
Definition TofTrack.h:101
double adc4() const
Definition TofTrack.h:106
double tdc4() const
Definition TofTrack.h:110
double tdc2() const
Definition TofTrack.h:108
int kal(unsigned int i) const
Definition TofTrack.h:59
int tofTrackId() const
Definition TofTrack.h:38
unsigned int quality1() const
Definition TofTrack.h:74
double tof(unsigned int i) const
Definition TofTrack.h:97
int size2() const
Definition TofTrack.h:67
int id2() const
Definition TofTrack.h:40
double ph12() const
Definition TofTrack.h:84
double path2() const
Definition TofTrack.h:50
double ph22() const
Definition TofTrack.h:86
double texpInner(unsigned int i) const
Definition TofTrack.h:112
double zadc2() const
Definition TofTrack.h:119
double ztdc1() const
Definition TofTrack.h:116
int strip2() const
Definition TofTrack.h:81
int trackId() const
Definition TofTrack.h:37
double errzrhit1() const
Definition TofTrack.h:53
int tofId1() const
Definition TofTrack.h:78
double tof21(unsigned int i) const
Definition TofTrack.h:93
double tof1(unsigned int i) const
Definition TofTrack.h:95
double p() const
Definition TofTrack.h:47
double tdc3() const
Definition TofTrack.h:109
double zrhit2() const
Definition TofTrack.h:52
double texpOuter(unsigned int i) const
Definition TofTrack.h:113
double path1() const
Definition TofTrack.h:49
double errzrhit2() const
Definition TofTrack.h:54
double qch4() const
Definition TofTrack.h:102
int istrip1() const
Definition TofTrack.h:41
double ph() const
Definition TofTrack.h:89
double yhit1() const
Definition TofTrack.h:56
double texp(unsigned int i) const
Definition TofTrack.h:114
double adc3() const
Definition TofTrack.h:105
double tof22(unsigned int i) const
Definition TofTrack.h:94
double ztdc2() const
Definition TofTrack.h:117
unsigned int quality() const
Definition TofTrack.h:76
double zr2(unsigned int i) const
Definition TofTrack.h:61
int size3() const
Definition TofTrack.h:68
double adc1() const
Definition TofTrack.h:103
int tofId2() const
Definition TofTrack.h:79
double zrhit1() const
Definition TofTrack.h:51
double ph2() const
Definition TofTrack.h:88
double ph21() const
Definition TofTrack.h:85
double qch1() const
Definition TofTrack.h:99
unsigned int barrel() const
Definition TofTrack.h:45
int dstrip2() const
Definition TofTrack.h:44
double tdc1() const
Definition TofTrack.h:107
double ph1() const
Definition TofTrack.h:87
double qch2() const
Definition TofTrack.h:100
unsigned int quality2() const
Definition TofTrack.h:75
double adc2() const
Definition TofTrack.h:104
int size4() const
Definition TofTrack.h:69
double zadc1() const
Definition TofTrack.h:118
int id1() const
Definition TofTrack.h:39
int size1() const
Definition TofTrack.h:66
const int getTrigCondition(int i) const
const int getTrigChannel(int i) const
ObjectList< McParticle > McParticleCol
ObjectVector< TofMcHit > TofMcHitCol