BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EmcESum Class Reference

#include <EmcESum.h>

Public Member Functions

 EmcESum ()
 ~EmcESum ()
void getESum ()
double getTotE ()
double getLTotE ()
double getRTotE ()
double getBTotE ()
double getETotE ()
double getLBTotE ()
double getRBTotE ()
double getWETotE ()
double getEETotE ()
double getBBLKE (int i)
double getWEBLKE (int i)
double getEEBLKE (int i)

Detailed Description

Definition at line 8 of file EmcESum.h.

Constructor & Destructor Documentation

◆ EmcESum()

EmcESum::EmcESum ( )

Definition at line 29 of file EmcESum.cxx.

29{ m_EmcTCFinder = EmcTCFinder::get_Emc(); }
static EmcTCFinder * get_Emc(void)

◆ ~EmcESum()

EmcESum::~EmcESum ( )

Definition at line 30 of file EmcESum.cxx.

30{}

Member Function Documentation

◆ getBBLKE()

double EmcESum::getBBLKE ( int i)
inline

Definition at line 22 of file EmcESum.h.

22{ return BLK[i]; }

◆ getBTotE()

double EmcESum::getBTotE ( )
inline

Definition at line 16 of file EmcESum.h.

16{ return _BTotE; }

◆ getEEBLKE()

double EmcESum::getEEBLKE ( int i)
inline

Definition at line 24 of file EmcESum.h.

24{ return EEBLK[i]; }

◆ getEETotE()

double EmcESum::getEETotE ( )
inline

Definition at line 21 of file EmcESum.h.

21{ return _EETotE; }

◆ getESum()

void EmcESum::getESum ( )

Definition at line 31 of file EmcESum.cxx.

31 {
32 // reset values
33 _TotE = 0;
34 _RTotE = 0;
35 _LTotE = 0;
36 _BTotE = 0;
37 _ETotE = 0;
38 _LBTotE = 0;
39 _RBTotE = 0;
40 _WETotE = 0;
41 _EETotE = 0;
42 /*
43 double L1TC_GATE = double (m_pIBGT->getL1TC_GATE());
44
45 for(int i=0;i<12;i++) BLK[i] = 0;
46 for(int i = 0; i < 2; i++) { WEBLK[i] = 0; EEBLK[i] = 0; }
47 /////////////////////////////////////////////////////////////////////////////////////////////////
48 //Get total energy ,energy of right part and left part divided by z=0.The energy threshold
49 of each trigger cell is 30*MeV. for(int i=0;i<TrigConf::TCTHETANO_B;i++) for(int
50 j=0;j<TrigConf::TCPHINO_B;j++)
51 {
52 double BEnergy = m_EmcTCFinder->getBTC_ADC(i,j);
53
54 //set each barrel trigger cell energy to service
55 m_pIBGT->setBTCEnergy(i,j,BEnergy);
56
57 int blkId = m_EmcTCFinder->getBLKId(i,j);
58 //low energy threshold of trigger cell
59 if(m_EmcTCFinder->getBTCEnergy(i,j) < L1TC_GATE) BEnergy = 0.;
60
61 BLK[blkId] +=BEnergy;//Get each block energy for babar trigger
62 }
63
64 for(int i =0;i<TrigConf::TCTHETANO_E;i++)
65 for(int j =0;j<TrigConf::TCPHINO_E;j++)
66 {
67 double EEnergy = m_EmcTCFinder->getEETC_ADC(i,j);
68 //set each barrel trigger cell energy to service
69 m_pIBGT->setEETCEnergy(i,j,EEnergy);
70 //low energy threshold of trigger cell
71 if(m_EmcTCFinder->getEETCEnergy(i,j) < L1TC_GATE) EEnergy = 0.;
72
73 if(j >= 0 && j < TrigConf::TCPHINO_E/2) EEBLK[0] += EEnergy; // north energy block
74 else EEBLK[1] += EEnergy; // south energy block
75
76 double WEnergy = m_EmcTCFinder->getWETC_ADC(i,j);
77 //set each barrel trigger cell energy to service
78 m_pIBGT->setWETCEnergy(i,j,WEnergy);
79 //low energy threshold of trigger cell
80 if(m_EmcTCFinder->getWETCEnergy(i,j) < L1TC_GATE) WEnergy = 0.;
81
82 if(j >= 0 && j < TrigConf::TCPHINO_E/2) WEBLK[0] += WEnergy; // north energy block
83 else WEBLK[1] += WEnergy;
84 }
85
86 std::vector<double> BlockE;
87 BlockE.clear();
88
89 double bmean[12] = {8.02,10.1,12.3,7.43,14.8,13.0,12.5,13.2,10.9,12.3,14.7,15.7};
90 double bsigma[12] = {0.88,0.52,0.9,0.72,0.7,0.82,0.64,0.78,0.72,0.76,0.54,0.64};
91 double bratio[12] =
92 {3.28,3.15,3.01,3.12,3.09,3.22,2.90,2.89,2.97,3.00,3.02,3.15};//run10584
93
94 for(int i = 0; i < 12; i++) {
95 //double block_E = (BLK[i]/bratio[i] - 0xa +
96 RandGauss::shoot(bmean[i],bsigma[i]))*m_pIBGT->getEnergy_Ratio(); //mv convert to adc double
97 block_E = (BLK[i] - 0xa); //mv convert to adc if(block_E < 0) block_E = 0; _TotE += block_E;
98 //Total energy of emc including barrel and endcaps _BTotE += block_E;//Total energy of barrel
99 emc
100
101 if(i >= 6)
102 {
103 _LTotE += block_E;//Total energy of left part emc(left barrel and west endcap)
104 _LBTotE += block_E;//Total energy of left part emc (only barrel)
105 }
106 else
107 {
108 _RTotE += block_E;//Total energy of right part emc(right barrel and east endcap)
109 _RBTotE += block_E;//Total energy of right part emc (only barrel)
110 }
111 //BlockE.push_back(block_E);
112 BlockE.push_back(BLK[i]);
113 }
114
115 double emean[2] = {11.8,12.4};
116 double esigma[2] = {0.77,0.43};
117 double eratio[2] = {3.19,3.19};
118
119 double wmean[2] = {19.9,8.89};
120 double wsigma[2] = {0.63,0.51};
121 double wratio[2] = {3.19,3.19};
122
123 for(int i = 0; i < 2; i++) {
124 //double wblock_E = (WEBLK[i]/wratio[i] - 0xa +
125 RandGauss::shoot(wmean[i],wsigma[i]))*m_pIBGT->getEnergy_Ratio(); double wblock_E = (WEBLK[i]
126 - 0xa);
127 //double wblock_E = WEBLK[i]*0.51 - 14.4 - 0xa + RandGauss::shoot(wmean[i],wsigma[i]);
128 double eblock_E = (EEBLK[i] - 0xa);
129 //double eblock_E = (EEBLK[i]/eratio[i] - 0xa +
130 RandGauss::shoot(emean[i],esigma[i]))*m_pIBGT->getEnergy_Ratio();
131 //double eblock_E = EEBLK[i]*0.51 - 14.4 - 0xa + RandGauss::shoot(emean[i],esigma[i]);
132 if(wblock_E < 0) wblock_E = 0;
133 if(eblock_E < 0) eblock_E = 0;
134
135 _TotE += eblock_E;//Total energy of emc including barrel and endcaps
136 _RTotE += eblock_E;//Total energy of right part emc(right barrel and east endcap)
137 _ETotE += eblock_E;//Total energy of west and east endcaps
138 _EETotE += eblock_E;//Total energy of east endcap
139 //_EETotE += EEBLK[i];//Total energy of east endcap
140
141 _TotE += wblock_E;//Total energy of emc including barrel and endcaps
142 _LTotE += wblock_E;//Total energy of left part emc(left barrel and west endcap)
143 _ETotE += wblock_E;//Total energy of west and east endcaps
144 _WETotE += wblock_E;//Total energy of west endcap
145 //_WETotE += WEBLK[i];//Total energy of west endcap
146 }
147 */
148
149 for ( int i = 0; i < 12; i++ ) BLK[i] = 0;
150 for ( int i = 0; i < 2; i++ )
151 {
152 WEBLK[i] = 0;
153 EEBLK[i] = 0;
154 }
155 /////////////////////////////////////////////////////////////////////////////////////////////////
156 // Get total energy ,energy of right part and left part divided by z=0.The energy threshold
157 // of each trigger cell is 30*MeV.
158 for ( int i = 0; i < 12; i++ ) { BLK[i] = m_EmcTCFinder->getBLKE( i + 2 ); }
159
160 for ( int i = 0; i < 2; i++ )
161 {
162 EEBLK[i] = m_EmcTCFinder->getBLKE( i );
163 WEBLK[i] = m_EmcTCFinder->getBLKE( i + 14 );
164 }
165
166 std::vector<double> BlockE;
167 BlockE.clear();
168
169 double bmean[12] = { 8.02, 10.1, 12.3, 7.43, 14.8, 13.0,
170 12.5, 13.2, 10.9, 12.3, 14.7, 15.7 };
171 double bsigma[12] = { 0.88, 0.52, 0.9, 0.72, 0.7, 0.82, 0.64, 0.78, 0.72, 0.76, 0.54, 0.64 };
172
173 for ( int i = 0; i < 12; i++ )
174 {
175 double block_E = ( BLK[i] * 0.333 - 0xa +
176 RandGauss::shoot( bmean[i], bsigma[i] ) ); // mv convert to adc
177 if ( block_E < 0 ) block_E = 0;
178 _TotE += block_E; // Total energy of emc including barrel and endcaps
179 _BTotE += block_E; // Total energy of barrel emc
180
181 if ( i >= 6 )
182 {
183 _LTotE += block_E; // Total energy of left part emc(left barrel and west endcap)
184 _LBTotE += block_E; // Total energy of left part emc (only barrel)
185 }
186 else
187 {
188 _RTotE += block_E; // Total energy of right part emc(right barrel and east endcap)
189 _RBTotE += block_E; // Total energy of right part emc (only barrel)
190 }
191 BlockE.push_back( block_E );
192 }
193
194 double emean[2] = { 11.8, 12.4 };
195 double esigma[2] = { 0.77, 0.43 };
196
197 double wmean[2] = { 19.9, 8.89 };
198 double wsigma[2] = { 0.63, 0.51 };
199
200 for ( int i = 0; i < 2; i++ )
201 {
202 double wblock_E = ( WEBLK[i] * 0.333 - 0xa + RandGauss::shoot( wmean[i], wsigma[i] ) );
203 double eblock_E = ( EEBLK[i] * 0.333 - 0xa + RandGauss::shoot( emean[i], esigma[i] ) );
204 if ( wblock_E < 0 ) wblock_E = 0;
205 if ( eblock_E < 0 ) eblock_E = 0;
206
207 _TotE += eblock_E; // Total energy of emc including barrel and endcaps
208 _RTotE += eblock_E; // Total energy of right part emc(right barrel and east endcap)
209 _ETotE += eblock_E; // Total energy of west and east endcaps
210 _EETotE += eblock_E; // Total energy of east endcap
211
212 _TotE += wblock_E; // Total energy of emc including barrel and endcaps
213 _LTotE += wblock_E; // Total energy of left part emc(left barrel and west endcap)
214 _ETotE += wblock_E; // Total energy of west and east endcaps
215 _WETotE += wblock_E; // Total energy of west endcap
216 }
217
218 ISvcLocator* svcLocator = Gaudi::svcLocator();
219 StatusCode sc = svcLocator->service( "BesGlobalTrigSvc", m_tmpSvc );
220 m_pIBGT = dynamic_cast<BesGlobalTrigSvc*>( m_tmpSvc );
221
222 // set energy information related to emc in service
223 m_pIBGT->setEmcTotE( _TotE );
224 m_pIBGT->setEmcLTotE( _LTotE );
225 m_pIBGT->setEmcRTotE( _RTotE );
226 m_pIBGT->setEmcBTotE( _BTotE );
227 m_pIBGT->setEmcETotE( _ETotE );
228 m_pIBGT->setEmcLBTotE( _LBTotE );
229 m_pIBGT->setEmcRBTotE( _RBTotE );
230 m_pIBGT->setEmcWETotE( _WETotE );
231 m_pIBGT->setEmcEETotE( _EETotE );
232 m_pIBGT->setEmcBlockE( BlockE );
233}

◆ getETotE()

double EmcESum::getETotE ( )
inline

Definition at line 17 of file EmcESum.h.

17{ return _ETotE; }

◆ getLBTotE()

double EmcESum::getLBTotE ( )
inline

Definition at line 18 of file EmcESum.h.

18{ return _LBTotE; }

◆ getLTotE()

double EmcESum::getLTotE ( )
inline

Definition at line 14 of file EmcESum.h.

14{ return _LTotE; }

◆ getRBTotE()

double EmcESum::getRBTotE ( )
inline

Definition at line 19 of file EmcESum.h.

19{ return _RBTotE; }

◆ getRTotE()

double EmcESum::getRTotE ( )
inline

Definition at line 15 of file EmcESum.h.

15{ return _RTotE; }

◆ getTotE()

double EmcESum::getTotE ( )
inline

Definition at line 13 of file EmcESum.h.

13{ return _TotE; }

◆ getWEBLKE()

double EmcESum::getWEBLKE ( int i)
inline

Definition at line 23 of file EmcESum.h.

23{ return WEBLK[i]; }

◆ getWETotE()

double EmcESum::getWETotE ( )
inline

Definition at line 20 of file EmcESum.h.

20{ return _WETotE; }

The documentation for this class was generated from the following files: