BOSS 6.6.4.p01
BESIII Offline Software System
Loading...
Searching...
No Matches
EmcRecTofDigitCalib.cxx
Go to the documentation of this file.
1//
2// Tof digit to hit
3//
4// He Miao 2006, 9,26
5//
7#include "Identifier/TofID.h"
9
11{}
12
14{}
15
17 RecEmcTofHitMap& tofHitMap)
18{
19 TofDigiCol::iterator iter2;
20 for(iter2=tofDigiCol->begin();
21 iter2!=tofDigiCol->end();
22 iter2++,iter2++) {
23
24 Identifier id=(*iter2)->identify();
25 bool is_barrel = TofID::is_barrel(id);
26 int layer = TofID::layer(id);
27 int im = TofID::phi_module(id);
28
29 if(!is_barrel) return;
30
31 double adc0 = RawDataUtil::TofCharge((*iter2)->getChargeChannel())*2;
32 double tdc0 = RawDataUtil::TofTime((*iter2)->getTimeChannel());
33 double adc1 = RawDataUtil::TofCharge((*(iter2+1))->getChargeChannel())*2;
34 double tdc1 = RawDataUtil::TofTime((*(iter2+1))->getTimeChannel());
35
36 double rand0 = (double)(rand()%100)/1000.-0.05; //-0.05 --> 0.05
37 double rand1 = (double)(rand()%100)/1000.-0.05; //-0.05 --> 0.05
38
39 //smear 5%
40 adc0 *= (1+rand0);
41 adc1 *= (1+rand1);
42
43 double zpos, energy, e0, e1;
44 zpos = 0.08331*(tdc1-tdc0);
45 if(fabs(zpos)>1.15) continue;
46
47 //ADC->energy
48 if((adc0>46.&&adc0<920.) && (adc1<=46.||adc1>=920.)) {
49 energy = adc0/exp(2.783+0.3133*zpos);
50 } else if((adc1>46.&&adc1<920.) && (adc0<=46.||adc0>=920.)) {
51 energy = adc1/exp(2.784-0.3079*zpos);
52 } else if((adc0>46.&&adc0<920.) && (adc1>46.&&adc1<920.)) {
53 e0 = adc0/exp(2.783+0.3133*zpos);
54 e1 = adc1/exp(2.784-0.3079*zpos);
55 energy = (e0+e1)/2;
56 } else if(adc0>=920.&&adc1>=920.) {
57 e0 = 920./exp(2.783+0.3133*zpos);
58 e1 = 920./exp(2.784-0.3079*zpos);
59 energy = e0>e1?e0:e1;
60 } else {
61 continue;
62 }
63
64 double phi,r;
65 if(layer==0) {
66 phi=(im+0.5)*CLHEP::twopi/88.;
67 r=838.5;
68 } else {
69 phi=im*CLHEP::twopi/88.;
70 r=895.5;
71 }
72
73 zpos*=1000; //zpos: m->mm
74 HepPoint3D pos(r*cos(phi), r*sin(phi), zpos);
75
76 tofHitMap[im+layer*88] = RecEmcTofHit(id, energy, pos);
77 }
78}
double sin(const BesAngle a)
Definition: BesAngle.h:210
double cos(const BesAngle a)
Definition: BesAngle.h:213
Double_t e1
EvtComplex exp(const EvtComplex &c)
Definition: EvtComplex.hh:252
************Class m_ypar INTEGER m_KeyWgt INTEGER m_nphot INTEGER m_KeyGPS INTEGER m_IsBeamPolarized INTEGER m_EvtGenInterface DOUBLE PRECISION m_Emin DOUBLE PRECISION m_sphot DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_q2 DOUBLE PRECISION m_PolBeam2 DOUBLE PRECISION m_xErrPb *COMMON c_KK2f $ !CMS energy average $ !Spin Polarization vector first beam $ !Spin Polarization vector second beam $ !Beam energy spread[GeV] $ !minimum hadronization energy[GeV] $ !input READ never touch them !$ !debug facility $ !maximum weight $ !inverse alfaQED $ !minimum real photon energy
Definition: KK2f.h:50
map< int, RecEmcTofHit, less< int > > RecEmcTofHitMap
Definition: RecEmcTofHit.h:67
ObjectVector< TofDigi > TofDigiCol
Definition: TofDigi.h:41
void Convert(TofDigiCol *tofDigiCol, RecEmcTofHitMap &tofHitMap)
static double TofTime(unsigned int timeChannel)
Definition: RawDataUtil.h:63
static double TofCharge(unsigned int chargeChannel)
Definition: RawDataUtil.h:66
static bool is_barrel(const Identifier &id)
Test for barrel.
Definition: TofID.cxx:78
static int phi_module(const Identifier &id)
Definition: TofID.cxx:117
static int layer(const Identifier &id)
Definition: TofID.cxx:109