CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
ParticleID.cxx
Go to the documentation of this file.
1#include <iostream>
2// #include <cmath>
3#include <cstdlib>
4
5#include "ParticleID/ParticleID.h"
6
7#ifndef BEAN
8#include "EvtRecEvent/EvtRecTrack.h"
9#include "GaudiKernel/Bootstrap.h"
10#include "GaudiKernel/ISvcLocator.h"
11#include "GaudiKernel/ISvcLocator.h"
12#include "GaudiKernel/IDataProviderSvc.h"
13#include "GaudiKernel/SmartDataPtr.h"
14#include "EventModel/EventHeader.h"
15#endif
16
17//
18// Author: K.L. He & L. L. Wang & Gang.Qin, 01/07/2007 created
19
20ParticleID * ParticleID::m_pointer = 0;
21
23 if(!m_pointer) m_pointer = new ParticleID();
24 return m_pointer;
25}
26
28
29 if(IsDedxInfoUsed()) {
30 if(!m_dedxpid) m_dedxpid = DedxPID::instance();
31 m_dedxpid->init();
32 }
33
34 if(IsTofInfoUsed()|IsTof1InfoUsed()|IsTof2InfoUsed()) {
35 if(!m_tofpid) m_tofpid = TofPID::instance();
36 m_tofpid->init();
37 }
38
39 if(IsTofCorrInfoUsed()) {
40 if(!m_tofcorrpid) m_tofcorrpid = TofCorrPID::instance();
41 // m_tofcorrpid->init();
42 }
43
44 if(IsEmcInfoUsed()) {
45 if(!m_emcpid) m_emcpid = EmcPID::instance();
46 m_emcpid->init();
47 }
48
49 if(IsMucInfoUsed()) {
50 if(!m_mucpid) m_mucpid = MucPID::instance();
51 m_mucpid->init();
52 }
53
54
55 if(IsMrpcInfoUsed()) {
56 if(!m_mrpcpid) m_mrpcpid = MrpcPID::instance();
57 m_mrpcpid->init();
58 }
59
60
61 // global info.
62 m_pidsys = 0;
63 m_pidcase = 0;
64 m_method = 0;
65 m_TotalLikelihood =0;
66 m_discard =1;
67 // probability
68 m_ndof = 0;
69 m_nhitcut=5;
70 for(int i = 0; i < 4; i++) {
71 m_chisq[i] = 9999.;
72 m_prob[i] = -1.0;
73 }
74}
75
76
77ParticleID::ParticleID() : ParticleIDBase() {
78 m_dedxpid = 0;
79 m_tofpid = 0;
80 m_tofepid = 0;
81 m_tofqpid = 0;
82 m_tofcpid = 0;
83 m_tofcorrpid = 0;
84 m_emcpid = 0;
85 m_mucpid = 0;
86 m_mrpcpid = 0;
87
88
89}
90
91
93 // if(m_dedxpid) delete m_dedxpid;
94 // if(m_tof1pid) delete m_tof1pid;
95 // if(m_tof2pid) delete m_tof2pid;
96 // if(m_tofepid) delete m_tofepid;
97 // if(m_tofqpid) delete m_tofqpid;
98 // if(m_emcpid) delete m_emcpid;
99}
100
102#ifdef BEAN
103 cout << " please use ParticleID::calculate(run) ! " << endl;
104 exit(1);
105}
106
107
108void ParticleID::calculate(int run)
109{
110#endif
111 int nhitcutpid=getNhitCut();
112
113#ifndef BEAN
114 IDataProviderSvc* m_eventSvc;
115 Gaudi::svcLocator()->service("EventDataSvc", m_eventSvc, true);
116
117 SmartDataPtr<Event::EventHeader> eventHeaderpid(m_eventSvc,"/Event/EventHeader");
118 int runpid=eventHeaderpid->runNumber();
119 int eventpid=eventHeaderpid->eventNumber();
120 // cout<<"runpid="<<runpid<<endl;
121 // cout<<"eventpid="<<eventpid<<endl;
122#else
123 int runpid=run;
124#endif
125
126 EvtRecTrack* recTrk = PidTrk();
127 // int runnum=getRunNo();
128 // cout<<"runnum="<<runnum<<endl;
129 // if user did not specify sub sys, sepcify the default value
130 if(m_pidsys == 0) {
131 m_pidsys = useDedx() | useTof() | useTofE() | useEmc() | useMuc() | useTofQ() | useTofC() | useTofCorr() | useMrpc();
132 }
133 // if user did not set the seperate case, set the default value
134
135 if(m_pidcase == 0 ) {
136 m_pidcase = all();
137 }
138 //dedx sys
139 if(IsDedxInfoUsed()) {
140 if(!m_dedxpid) m_dedxpid = DedxPID::instance();
141 m_dedxpid->init();
142 m_dedxpid->setRunNo(runpid);
143 m_dedxpid->setNhitCutDx(nhitcutpid);
144 m_dedxpid->setRecTrack(recTrk);
145 m_dedxpid->setChiMinCut(chiMinCut());
146 m_dedxpid->setPdfMinSigmaCut(pdfMinSigmaCut());
147 m_dedxpid->calculate();
148 }
149
150 // tof1 and tof2 sys
151 if(IsTofInfoUsed()|IsTof1InfoUsed()|IsTof2InfoUsed()|IsTofCInfoUsed())
152 {
153 if(IsTofCInfoUsed())
154 {
155 if(!m_tofcpid) m_tofcpid = TofCPID::instance();
156 m_tofcpid->init();
157 m_tofcpid->setRunNo(runpid);
158 m_tofcpid->setRecTrack(recTrk);
159 m_tofcpid->setChiMinCut(chiMinCut());
160 m_tofcpid->setPdfMinSigmaCut(pdfMinSigmaCut());
161 m_tofcpid->calculate();
162 }
163 else
164 {
165 if(!m_tofpid) m_tofpid = TofPID::instance();
166 m_tofpid->init();
167 m_tofpid->setRecTrack(recTrk);
168 m_tofpid->setChiMinCut(chiMinCut());
170 m_tofpid->calculate();
171 }
172
173 }
174 // tof secondary correction sys
175 if(IsTofCorrInfoUsed()) {
176 if(!m_tofcorrpid) m_tofcorrpid = TofCorrPID::instance();
177 m_tofcorrpid->setRunNo(runpid);
178 m_tofcorrpid->init();
179 m_tofcorrpid->setRecTrack(recTrk);
180 m_tofcorrpid->setChiMinCut(chiMinCut());
181 m_tofcorrpid->setPdfMinSigmaCut(pdfMinSigmaCut());
182 m_tofcorrpid->calculate();
183 }
184
185 /*
186 // tof1 sys
187 if(IsTof1InfoUsed()){
188 if(!m_tof1pid) m_tof1pid = Tof1PID::instance();
189 m_tof1pid->init();
190 m_tof1pid->setRecTrack(recTrk);
191 m_tof1pid->setChiMinCut(4);
192 m_tof1pid->setPdfMinSigmaCut(4);
193 m_tof1pid->calculate();
194 }
195
196 // tof2 sys
197 if(IsTof2InfoUsed()){
198 if(!m_tof2pid) m_tof2pid = Tof2PID::instance();
199 m_tof2pid->init();
200 m_tof2pid->setRecTrack(recTrk);
201 m_tof2pid->setChiMinCut(4);
202 m_tof2pid->setPdfMinSigmaCut(4);
203 m_tof2pid->calculate();
204 }
205
206 */
207 // tofq sys
208 if(IsTofQInfoUsed()) {
209 if(!m_tofqpid) m_tofqpid = TofQPID::instance();
210 m_tofqpid->init();
211 m_tofqpid->setRecTrack(recTrk);
212 m_tofqpid->setChiMinCut(chiMinCut());
213 m_tofqpid->calculate();
214 }
215
216 // endcap tof sys
217 if(IsTofEInfoUsed()&&(!IsTofCorrInfoUsed())) {
218 if(!m_tofepid) m_tofepid = TofEPID::instance();
219 m_tofepid->init();
220 m_tofepid->setRecTrack(recTrk);
221 m_tofepid->setChiMinCut(chiMinCut());
222 m_tofepid->setPdfMinSigmaCut(pdfMinSigmaCut());
223 m_tofepid->calculate();
224 }
225 // emc sys
226 if(IsEmcInfoUsed()) {
227 if(!m_emcpid) m_emcpid = EmcPID::instance();
228 m_emcpid->init();
229 m_emcpid->setRecTrack(recTrk);
230 m_emcpid->setChiMinCut(chiMinCut());
231 m_emcpid->calculate();
232 }
233
234 // muc sys
235 if(IsMucInfoUsed()) {
236 if(!m_mucpid) m_mucpid = MucPID::instance();
237 m_mucpid->init();
238 m_mucpid->setRecTrack(recTrk);
239 m_mucpid->setChiMinCut(chiMinCut());
240 m_mucpid->calculate();
241 }
242 //mrpc sys
243 if(IsMrpcInfoUsed()) {
244 if(!m_mrpcpid) m_mrpcpid = MrpcPID::instance();
245 m_mrpcpid->init();
246 m_mrpcpid->setRecTrack(recTrk);
247 m_mrpcpid->setChiMinCut(chiMinCut());
248 m_mrpcpid->setPdfMinSigmaCut(pdfMinSigmaCut());
249 m_mrpcpid->calculate();
250 }
251
252
253
254 // probability method
255 if((m_method & methodProbability()) == methodProbability())
256 if(particleIDCalculation() < 0) m_ndof = 0;
257 // std::cout<<"m_ndof="<<m_ndof<<std::endl;
258
259 //likelihood method
260 if((m_method & methodLikelihood()) == methodLikelihood())
261 if(LikelihoodCalculation() < 0) m_discard =0;
262 // neuron network
263 if((m_method & methodNeuronNetwork()) == methodNeuronNetwork())
264 // m_neuronPid = neuronPIDCalculation();
265 if(LikelihoodCalculation() < 0) m_discard =0;
266
267}
268
269int ParticleID ::particleIDCalculation() {
270 int irc = -1;
271 bool valid = IsDedxInfoValid() || IsTofInfoValid()||IsTofEInfoValid()
272 || IsTofQInfoValid() || IsEmcInfoValid() || IsMucInfoValid()
273 || IsTofCInfoValid() || IsTofCorrInfoValid() || IsMrpcInfoValid();
274
275 if(!valid) return irc;
276
277 double chisq[5];
278 bool pidcase[5];
279 for(int i = 0; i < 5; i++) {
280 chisq[i] = 0;
281 pidcase[i] = false;
282 }
283
284 if((m_pidcase & onlyElectron()) == onlyElectron()) pidcase[0] = true;
285 if((m_pidcase & onlyMuon()) == onlyMuon()) pidcase[1] = true;
286 if((m_pidcase & onlyPion()) == onlyPion()) pidcase[2] = true;
287 if((m_pidcase & onlyKaon()) == onlyKaon()) pidcase[3] = true;
288 if((m_pidcase & onlyProton()) == onlyProton()) pidcase[4] = true;
289
290 //
291 // dEdx PID
292 //
293 if(IsDedxInfoUsed()) {
294 if(IsDedxInfoValid()) {
295 bool okpid = false;
296 for(int i = 0; i < 5; i++) {
297 if(pidcase[i] && (fabs(chiDedx(i)) < m_dedxpid->chiMinCut()))
298 if(!okpid) okpid = true;
299 }
300 if(okpid) {
301 m_ndof++;
302 for(int i = 0; i < 5; i++) chisq[i] += chiDedx(i)*chiDedx(i);
303
304
305 }
306 } // dE/dx
307 }
308 //
309 // Barrel TOF
310 //
311
312 if(IsTofInfoUsed()|IsTof1InfoUsed()|IsTof2InfoUsed() | IsTofCInfoUsed())
313 { if(IsTofCInfoUsed())
314 {
315 if(IsTofCInfoValid()) {
316 bool okpid = false;
317 for(int i = 0; i < 5; i++) {
318 if(pidcase[i] && (fabs(chiTofC(i)) < m_tofcpid->chiMinCut()))
319 if(!okpid) okpid = true;
320 }
321 if(okpid) {
322 m_ndof++;
323 for(int i = 0; i < 5; i++) chisq[i] += chiTofC(i)*chiTofC(i);
324 }
325 } // TOF1
326 }
327 else {
328 if(IsTofInfoValid()) {
329 bool okpid = false;
330 for(int i = 0; i < 5; i++) {
331 if(pidcase[i] && (fabs(chiTof(i)) < m_tofpid->chiMinCut()))
332 if(!okpid) okpid = true;
333 }
334 if(okpid) {
335 m_ndof++;
336 for(int i = 0; i < 5; i++) chisq[i] += chiTof(i)*chiTof(i);
337 }
338 } // TOF1
339
340
341 //
342 // EndCap Tof
343 //
344
345 if(IsTofEInfoUsed()) {
346 if(IsTofEInfoValid()) {
347 bool okpid = false;
348 for(int i = 0; i < 5; i++) {
349 if(pidcase[i] && (fabs(chiTofE(i)) < m_tofepid->chiMinCut()))
350 if(!okpid) okpid = true;
351 }
352 if(okpid) {
353 m_ndof++;
354 for(int i = 0; i < 5; i++) chisq[i] += chiTofE(i)*chiTofE(i);
355 }
356 } // EndCap TOF
357 }
358
359 }
360 }
361
362 // Secondary TOF correction
363 if(IsTofCorrInfoUsed()) {
364 if(IsTofCorrInfoValid()) {
365 bool okpid = false;
366 for(int i = 0; i < 5; i++) {
367 // if(pidcase[i] && (fabs(chiTofCorr(i)) < m_tofcorrpid->chiMinCut()))
368 if(pidcase[i] && ( chiTofCorr(i) < 6.0 && chiTofCorr(i) > -4.0 ) )
369 if(!okpid) okpid = true;
370 }
371 if(okpid) {
372 m_ndof++;
373 for(int i = 0; i < 5; i++) chisq[i] += chiTofCorr(i)*chiTofCorr(i);
374 }
375 }
376 }
377
378 //
379 // Barrel TOF Q
380 //
381
382 if(IsTofQInfoUsed()) {
383 if(IsTofQInfoValid()) {
384 bool okpid = false;
385 for(int i = 0; i < 5; i++) {
386 if(pidcase[i] && (fabs(chiTofQ(i)) < m_tofqpid->chiMinCut()))
387 if(!okpid) okpid = true;
388 }
389 if(okpid) {
390 m_ndof++;
391 for(int i = 0; i < 5; i++) chisq[i] += chiTofQ(i)*chiTofQ(i);
392 }
393 } // TofQ
394 }
395
396 // Muc Pid
397 if(IsMucInfoUsed()) {
398 if(IsMucInfoValid()) {
399 bool okpid = false;
400 for(int i = 0; i < 5; i++) {
401 if(pidcase[i] && (fabs(chiMuc(i)) < m_mucpid->chiMinCut()))
402 if(!okpid) okpid = true;
403 }
404 if(okpid) {
405 m_ndof++;
406 for(int i = 0; i < 5; i++) chisq[i] += chiMuc(i)*chiMuc(i);
407 }
408 } // Muc Pid
409 }
410
411
412 // Emc PID
413 if(IsEmcInfoUsed()) {
414 if(IsEmcInfoValid()) {
415 bool okpid = false;
416 for(int i = 0; i < 5; i++) {
417 if(pidcase[i] && (fabs(chiEmc(i)) < m_emcpid->chiMinCut()))
418 if(!okpid) okpid = true;
419 }
420 if(okpid) {
421 m_ndof++;
422 for(int i = 0; i < 5; i++) chisq[i] += chiEmc(i)*chiEmc(i);
423 }
424 } // Emc Pid
425 }
426
427 // Mrpc PID
428 if(IsMrpcInfoUsed()) {
429 if(IsMrpcInfoValid()) {
430 bool okpid = false;
431 for(int i = 0; i < 5; i++) {
432 if(pidcase[i] && (fabs(chiMrpc(i)) < m_mrpcpid->chiMinCut()))
433 if(!okpid) okpid = true;
434 }
435 if(okpid) {
436 m_ndof++;
437 for(int i = 0; i < 5; i++) chisq[i] += chiMrpc(i)*chiMrpc(i);
438 }
439 } // Mrpc Pid
440 }
441
442
443 if(m_ndof <= 0) return irc;
444
445
446 for(int i = 0; i < 5; i++) {
447 m_chisq[i] = chisq[i];
448 m_prob[i] = probCalculate(chisq[i], m_ndof);
449 }
450
451
452 irc = 0;
453 return irc;
454}
455
456
457
458
459
461 int irc = -1;
462
464 if(!valid) return irc;
465 double pdf[5];
466 bool pidcase[5];
467 for(int i = 0; i < 5; i++) {
468 pdf[i] = 1;
469 pidcase[i] = false;
470 }
471
472 if((m_pidcase & onlyElectron()) == onlyElectron()) pidcase[0] = true;
473 if((m_pidcase & onlyMuon()) == onlyMuon()) pidcase[1] = true;
474 if((m_pidcase & onlyPion()) == onlyPion()) pidcase[2] = true;
475 if((m_pidcase & onlyKaon()) == onlyKaon()) pidcase[3] = true;
476 if((m_pidcase & onlyProton()) == onlyProton()) pidcase[4] = true;
477
478 for(int i = 0; i < 5; i++) {
479 if(pidcase[i]==0)
480 pdf[i]=0;
481 }
482
483 //
484 // dEdx PID
485 //
486 if(IsDedxInfoUsed()) {
487 if(IsDedxInfoValid()) {
488 bool okpid = false;
489 for(int i = 0; i < 5; i++) {
490 if(pidcase[i] && pdfCalculate(chiDedx(i),1) > pdfCalculate(m_dedxpid->pdfMinSigmaCut(),1.5))
491 if(!okpid) okpid = true;
492 }
493 if(okpid) {
494 m_ndof++;
495 for(int i = 0; i < 5; i++) {
496 pdf[i] *= pdfDedx(i);
497 }
498 }
499 } // dE/dx
500 }
501
502
503 //
504 // Barrel TOF
505 //
506 if(IsTofInfoUsed()|IsTof1InfoUsed()|IsTof2InfoUsed()|IsTofCInfoUsed())
507 { if(IsTofCInfoUsed())
508 {
509
510 if(IsTofCInfoValid()) {
511 bool okpid = false;
512 for(int i = 0; i < 5; i++) {
513 if(pidcase[i] && pdfCalculate(chiTof(i),1) > pdfCalculate(m_tofcpid->pdfMinSigmaCut(),1.5))
514 if(!okpid) okpid = true;
515 }
516 if(okpid) {
517 m_ndof++;
518 for(int i = 0; i < 5; i++) {
519 pdf[i] *= pdfTofC(i);
520 }
521 }
522 } // TOF
523 }
524
525 else {
526 if(IsTofInfoValid()) {
527 bool okpid = false;
528 for(int i = 0; i < 5; i++) {
529 if(pidcase[i] && pdfCalculate(chiTof(i),1) > pdfCalculate(m_tofpid->pdfMinSigmaCut(),1.5))
530 if(!okpid) okpid = true;
531 }
532 if(okpid) {
533 m_ndof++;
534 for(int i = 0; i < 5; i++) {
535 pdf[i] *= pdfTof(i);
536 }
537 }
538 } // TOF
539
540
541
542 //
543 // EndCap Tof
544 //
545
546 if(IsTofEInfoUsed()) {
547 if(IsTofEInfoValid()) {
548 bool okpid = false;
549 for(int i = 0; i < 5; i++) {
550 if(pidcase[i]&& pdfCalculate(chiTofE(i),1) > pdfCalculate(m_tofepid->pdfMinSigmaCut(),1.5))
551 if(!okpid) okpid = true;
552 }
553 if(okpid) {
554 // m_ndof++;
555 // for(int i = 0; i < 5; i++) pdf[i] *= pdfTofE(i);
556 }
557 } // EndCap TOF
558 }
559 }
560
561 }
562
563 // Secondary TOF correction
564 if(IsTofCorrInfoUsed()) {
565 if(IsTofCorrInfoValid()) {
566 bool okpid = false;
567 for(int i = 0; i < 5; i++) {
568 if(pidcase[i] && pdfCalculate(chiTofCorr(i),1) > pdfCalculate(m_tofcorrpid->pdfMinSigmaCut(),1.5))
569 if(!okpid) okpid = true;
570 }
571 if(okpid) {
572 m_ndof++;
573 for(int i = 0; i < 5; i++) {
574 pdf[i] *= pdfTofCorr(i);
575 }
576 }
577 }
578 }
579
580
581 //
582 // Barrel TOF Q
583 //
584
585 if(IsTofQInfoValid()) {
586 bool okpid = false;
587 for(int i = 0; i < 5; i++) {
588 if(pidcase[i])
589 if(!okpid) okpid = true;
590 }
591 if(okpid) {
592 // m_ndof++;
593 for(int i = 0; i < 5; i++) pdf[i] *= pdfTofQ(i);
594 }
595 } // TofQ
596
597 //
598 // Emc PID
599 //
600 if(IsEmcInfoUsed()) {
601 if(IsEmcInfoValid()) {
602 bool okpid = false;
603 for(int i = 0; i < 5; i++) {
604 if(pidcase[i]&&pdfEmc(i)>0)
605 if(!okpid) okpid = true;
606 }
607 if(okpid) {
608 m_ndof++;
609 for(int i = 0; i < 5; i++) {
610 pdf[i] *= pdfEmc(i);
611 }
612 } // Emc Pid
613 }
614 }
615 if(IsMucInfoUsed()) {
616 if(IsMucInfoValid()) {
617 bool okpid = false;
618 for(int i = 0; i < 5; i++) {
619 if(pidcase[i]&&pdfMuc(i)>0)
620 if(!okpid) okpid = true;
621 }
622 if(okpid) {
623 m_ndof++;
624 for(int i = 0; i < 5; i++) {
625 pdf[i] *= pdfMuc(i);
626 }
627 }
628 } // Emc Pid
629 }
630 if(IsMrpcInfoUsed()) {
631 if(IsMrpcInfoValid()) {
632 bool okpid = false;
633 for(int i = 0; i < 5; i++) {
634 if(pidcase[i]&&pdfMrpc(i)>0)
635 if(!okpid) okpid = true;
636 }
637 if(okpid) {
638 m_ndof++;
639 for(int i = 0; i < 5; i++) {
640 pdf[i] *= pdfMrpc(i);
641 }
642 }
643 } // Emc Pid
644 }
645
646
647
648
649 if(m_ndof <= 0) return irc;
650 for(int i = 0; i < 5; i++) {
651 m_pdf[i] = pdf[i];
652 m_TotalLikelihood += pdf[i];
653 }
654 for(int i = 0; i < 5; i++) {
655 m_likelihoodfraction[i] = pdf[i]/m_TotalLikelihood;
656 }
657
658
659 irc = 0;
660 return irc;
661}
662
void init()
Definition: DedxPID.cxx:26
void calculate()
Definition: DedxPID.cxx:42
static DedxPID * instance()
Definition: DedxPID.cxx:17
void calculate()
Definition: EmcPID.cxx:153
void init()
Definition: EmcPID.cxx:95
static EmcPID * instance()
Definition: EmcPID.cxx:23
void calculate()
Definition: MrpcPID.cxx:39
static MrpcPID * instance()
Definition: MrpcPID.cxx:16
void init()
Definition: MrpcPID.cxx:25
void init()
Definition: MucPID.cxx:67
static MucPID * instance()
Definition: MucPID.cxx:22
void calculate()
Definition: MucPID.cxx:101
double pdfCalculate(double offset, double sigma)
double pdfEmc(int n)
double pdfTofC(int n)
bool IsTofEInfoValid() const
bool IsEmcInfoValid() const
double pdfDedx(int n)
int LikelihoodCalculation()
Definition: ParticleID.cxx:460
double chiTofE(int n) const
bool IsTofCorrInfoValid() const
bool IsMrpcInfoValid() const
bool IsTofCInfoValid() const
bool IsTofInfoValid() const
double pdfTof(int n)
bool IsTofQInfoValid() const
int particleIDCalculation()
Definition: ParticleID.cxx:269
static ParticleID * instance()
Definition: ParticleID.cxx:22
bool IsDedxInfoValid() const
double pdfMrpc(int n)
double pdfMuc(int n)
double pdfTofCorr(int n)
void calculate()
Definition: ParticleID.cxx:101
void init()
Definition: ParticleID.cxx:27
bool IsMucInfoValid() const
double chiTof(int n) const
double pdfTofQ(int n)
double chiTofCorr(int n) const
double chiDedx(int n) const
void calculate()
Definition: TofCPID.cxx:55
void init()
Definition: TofCPID.cxx:43
static TofCPID * instance()
Definition: TofCPID.cxx:19
void init()
Definition: TofCorrPID.cxx:29
void calculate()
Definition: TofCorrPID.cxx:56
static TofCorrPID * instance()
Definition: TofCorrPID.cxx:19
void init()
Definition: TofEPID.cxx:25
void calculate()
Definition: TofEPID.cxx:39
static TofEPID * instance()
Definition: TofEPID.cxx:16
void init()
Definition: TofPID.cxx:24
void calculate()
Definition: TofPID.cxx:48
static TofPID * instance()
Definition: TofPID.cxx:15
void init()
Definition: TofQPID.cxx:22
void calculate()
Definition: TofQPID.cxx:34
static TofQPID * instance()
Definition: TofQPID.cxx:13