#include <EmcESum.h>
Public Member Functions | |
EmcESum () | |
EmcESum () | |
double | getBBLKE (int i) |
double | getBBLKE (int i) |
double | getBTotE () |
double | getBTotE () |
double | getEEBLKE (int i) |
double | getEEBLKE (int i) |
double | getEETotE () |
double | getEETotE () |
void | getESum () |
void | getESum () |
double | getETotE () |
double | getETotE () |
double | getLBTotE () |
double | getLBTotE () |
double | getLTotE () |
double | getLTotE () |
double | getRBTotE () |
double | getRBTotE () |
double | getRTotE () |
double | getRTotE () |
double | getTotE () |
double | getTotE () |
double | getWEBLKE (int i) |
double | getWEBLKE (int i) |
double | getWETotE () |
double | getWETotE () |
~EmcESum () | |
~EmcESum () | |
Private Attributes | |
double | _BTotE |
double | _EETotE |
double | _ETotE |
double | _LBTotE |
double | _LTotE |
double | _RBTotE |
double | _RTotE |
double | _TotE |
double | _WETotE |
double | BLK [12] |
double | EEBLK [2] |
EmcTCFinder * | m_EmcTCFinder |
EmcTCFinder * | m_EmcTCFinder |
BesGlobalTrigSvc * | m_pIBGT |
BesGlobalTrigSvc * | m_pIBGT |
IBesGlobalTrigSvc * | m_tmpSvc |
IBesGlobalTrigSvc * | m_tmpSvc |
double | WEBLK [2] |
|
00030 { 00031 m_EmcTCFinder = EmcTCFinder::get_Emc(); 00032 ISvcLocator* svcLocator = Gaudi::svcLocator(); 00033 StatusCode sc = svcLocator->service("BesGlobalTrigSvc", m_tmpSvc); 00034 m_pIBGT = dynamic_cast<BesGlobalTrigSvc* >(m_tmpSvc); 00035 }
|
|
00037 { 00038 }
|
|
|
|
|
|
00023 { return BLK[i]; }
|
|
00023 { return BLK[i]; }
|
|
00017 { return _BTotE; }
|
|
00017 { return _BTotE; }
|
|
00025 { return EEBLK[i]; }
|
|
00025 { return EEBLK[i]; }
|
|
00022 { return _EETotE; }
|
|
00022 { return _EETotE; }
|
|
|
|
00040 { 00041 //reset values 00042 _TotE = 0; 00043 _RTotE = 0; 00044 _LTotE = 0; 00045 _BTotE = 0; 00046 _ETotE = 0; 00047 _LBTotE = 0; 00048 _RBTotE = 0; 00049 _WETotE = 0; 00050 _EETotE = 0; 00051 /* 00052 double L1TC_GATE = double (m_pIBGT->getL1TC_GATE()); 00053 00054 for(int i=0;i<12;i++) BLK[i] = 0; 00055 for(int i = 0; i < 2; i++) { WEBLK[i] = 0; EEBLK[i] = 0; } 00057 //Get total energy ,energy of right part and left part divided by z=0.The energy threshold of each trigger cell is 30*MeV. 00058 for(int i=0;i<TrigConf::TCTHETANO_B;i++) 00059 for(int j=0;j<TrigConf::TCPHINO_B;j++) 00060 { 00061 double BEnergy = m_EmcTCFinder->getBTC_ADC(i,j); 00062 00063 //set each barrel trigger cell energy to service 00064 m_pIBGT->setBTCEnergy(i,j,BEnergy); 00065 00066 int blkId = m_EmcTCFinder->getBLKId(i,j); 00067 //low energy threshold of trigger cell 00068 if(m_EmcTCFinder->getBTCEnergy(i,j) < L1TC_GATE) BEnergy = 0.; 00069 00070 BLK[blkId] +=BEnergy;//Get each block energy for babar trigger 00071 } 00072 00073 for(int i =0;i<TrigConf::TCTHETANO_E;i++) 00074 for(int j =0;j<TrigConf::TCPHINO_E;j++) 00075 { 00076 double EEnergy = m_EmcTCFinder->getEETC_ADC(i,j); 00077 //set each barrel trigger cell energy to service 00078 m_pIBGT->setEETCEnergy(i,j,EEnergy); 00079 //low energy threshold of trigger cell 00080 if(m_EmcTCFinder->getEETCEnergy(i,j) < L1TC_GATE) EEnergy = 0.; 00081 00082 if(j >= 0 && j < TrigConf::TCPHINO_E/2) EEBLK[0] += EEnergy; // north energy block 00083 else EEBLK[1] += EEnergy; // south energy block 00084 00085 double WEnergy = m_EmcTCFinder->getWETC_ADC(i,j); 00086 //set each barrel trigger cell energy to service 00087 m_pIBGT->setWETCEnergy(i,j,WEnergy); 00088 //low energy threshold of trigger cell 00089 if(m_EmcTCFinder->getWETCEnergy(i,j) < L1TC_GATE) WEnergy = 0.; 00090 00091 if(j >= 0 && j < TrigConf::TCPHINO_E/2) WEBLK[0] += WEnergy; // north energy block 00092 else WEBLK[1] += WEnergy; 00093 } 00094 00095 std::vector<double> BlockE; 00096 BlockE.clear(); 00097 00098 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}; 00099 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}; 00100 double bratio[12] = {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 00101 00102 for(int i = 0; i < 12; i++) { 00103 //double block_E = (BLK[i]/bratio[i] - 0xa + RandGauss::shoot(bmean[i],bsigma[i]))*m_pIBGT->getEnergy_Ratio(); //mv convert to adc 00104 double block_E = (BLK[i] - 0xa); //mv convert to adc 00105 if(block_E < 0) block_E = 0; 00106 _TotE += block_E; //Total energy of emc including barrel and endcaps 00107 _BTotE += block_E;//Total energy of barrel emc 00108 00109 if(i >= 6) 00110 { 00111 _LTotE += block_E;//Total energy of left part emc(left barrel and west endcap) 00112 _LBTotE += block_E;//Total energy of left part emc (only barrel) 00113 } 00114 else 00115 { 00116 _RTotE += block_E;//Total energy of right part emc(right barrel and east endcap) 00117 _RBTotE += block_E;//Total energy of right part emc (only barrel) 00118 } 00119 //BlockE.push_back(block_E); 00120 BlockE.push_back(BLK[i]); 00121 } 00122 00123 double emean[2] = {11.8,12.4}; 00124 double esigma[2] = {0.77,0.43}; 00125 double eratio[2] = {3.19,3.19}; 00126 00127 double wmean[2] = {19.9,8.89}; 00128 double wsigma[2] = {0.63,0.51}; 00129 double wratio[2] = {3.19,3.19}; 00130 00131 for(int i = 0; i < 2; i++) { 00132 //double wblock_E = (WEBLK[i]/wratio[i] - 0xa + RandGauss::shoot(wmean[i],wsigma[i]))*m_pIBGT->getEnergy_Ratio(); 00133 double wblock_E = (WEBLK[i] - 0xa); 00134 //double wblock_E = WEBLK[i]*0.51 - 14.4 - 0xa + RandGauss::shoot(wmean[i],wsigma[i]); 00135 double eblock_E = (EEBLK[i] - 0xa); 00136 //double eblock_E = (EEBLK[i]/eratio[i] - 0xa + RandGauss::shoot(emean[i],esigma[i]))*m_pIBGT->getEnergy_Ratio(); 00137 //double eblock_E = EEBLK[i]*0.51 - 14.4 - 0xa + RandGauss::shoot(emean[i],esigma[i]); 00138 if(wblock_E < 0) wblock_E = 0; 00139 if(eblock_E < 0) eblock_E = 0; 00140 00141 _TotE += eblock_E;//Total energy of emc including barrel and endcaps 00142 _RTotE += eblock_E;//Total energy of right part emc(right barrel and east endcap) 00143 _ETotE += eblock_E;//Total energy of west and east endcaps 00144 _EETotE += eblock_E;//Total energy of east endcap 00145 //_EETotE += EEBLK[i];//Total energy of east endcap 00146 00147 _TotE += wblock_E;//Total energy of emc including barrel and endcaps 00148 _LTotE += wblock_E;//Total energy of left part emc(left barrel and west endcap) 00149 _ETotE += wblock_E;//Total energy of west and east endcaps 00150 _WETotE += wblock_E;//Total energy of west endcap 00151 //_WETotE += WEBLK[i];//Total energy of west endcap 00152 } 00153 */ 00154 00155 for(int i=0;i<12;i++) BLK[i] = 0; 00156 for(int i = 0; i < 2; i++) { WEBLK[i] = 0; EEBLK[i] = 0; } 00158 //Get total energy ,energy of right part and left part divided by z=0.The energy threshold of each trigger cell is 30*MeV. 00159 for(int i = 0; i < 12; i++) { 00160 BLK[i] = m_EmcTCFinder->getBLKE(i+2); 00161 } 00162 00163 for(int i = 0; i < 2; i++) { 00164 EEBLK[i] = m_EmcTCFinder->getBLKE(i); 00165 WEBLK[i] = m_EmcTCFinder->getBLKE(i+14); 00166 } 00167 00168 std::vector<double> BlockE; 00169 BlockE.clear(); 00170 00171 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}; 00172 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}; 00173 00174 for(int i = 0; i < 12; i++) { 00175 double block_E = (BLK[i]*0.333 - 0xa + RandGauss::shoot(bmean[i],bsigma[i])); //mv convert to adc 00176 if(block_E < 0) block_E = 0; 00177 _TotE += block_E; //Total energy of emc including barrel and endcaps 00178 _BTotE += block_E;//Total energy of barrel emc 00179 00180 if(i >= 6) 00181 { 00182 _LTotE += block_E;//Total energy of left part emc(left barrel and west endcap) 00183 _LBTotE += block_E;//Total energy of left part emc (only barrel) 00184 } 00185 else 00186 { 00187 _RTotE += block_E;//Total energy of right part emc(right barrel and east endcap) 00188 _RBTotE += block_E;//Total energy of right part emc (only barrel) 00189 } 00190 BlockE.push_back(block_E); 00191 } 00192 00193 double emean[2] = {11.8,12.4}; 00194 double esigma[2] = {0.77,0.43}; 00195 00196 double wmean[2] = {19.9,8.89}; 00197 double wsigma[2] = {0.63,0.51}; 00198 00199 for(int i = 0; i < 2; i++) { 00200 double wblock_E = (WEBLK[i]*0.333 - 0xa + RandGauss::shoot(wmean[i],wsigma[i])); 00201 double eblock_E = (EEBLK[i]*0.333 - 0xa + RandGauss::shoot(emean[i],esigma[i])); 00202 if(wblock_E < 0) wblock_E = 0; 00203 if(eblock_E < 0) eblock_E = 0; 00204 00205 _TotE += eblock_E;//Total energy of emc including barrel and endcaps 00206 _RTotE += eblock_E;//Total energy of right part emc(right barrel and east endcap) 00207 _ETotE += eblock_E;//Total energy of west and east endcaps 00208 _EETotE += eblock_E;//Total energy of east endcap 00209 00210 _TotE += wblock_E;//Total energy of emc including barrel and endcaps 00211 _LTotE += wblock_E;//Total energy of left part emc(left barrel and west endcap) 00212 _ETotE += wblock_E;//Total energy of west and east endcaps 00213 _WETotE += wblock_E;//Total energy of west endcap 00214 } 00215 00216 //set energy information related to emc in service 00217 m_pIBGT->setEmcTotE(_TotE); 00218 m_pIBGT->setEmcLTotE(_LTotE); 00219 m_pIBGT->setEmcRTotE(_RTotE); 00220 m_pIBGT->setEmcBTotE(_BTotE); 00221 m_pIBGT->setEmcETotE(_ETotE); 00222 m_pIBGT->setEmcLBTotE(_LBTotE); 00223 m_pIBGT->setEmcRBTotE(_RBTotE); 00224 m_pIBGT->setEmcWETotE(_WETotE); 00225 m_pIBGT->setEmcEETotE(_EETotE); 00226 m_pIBGT->setEmcBlockE(BlockE); 00227 }
|
|
00018 { return _ETotE; }
|
|
00018 { return _ETotE; }
|
|
00019 { return _LBTotE; }
|
|
00019 { return _LBTotE; }
|
|
00015 { return _LTotE; }
|
|
00015 { return _LTotE; }
|
|
00020 { return _RBTotE; }
|
|
00020 { return _RBTotE; }
|
|
00016 { return _RTotE; }
|
|
00016 { return _RTotE; }
|
|
00014 { return _TotE; }
|
|
00014 { return _TotE; }
|
|
00024 { return WEBLK[i]; }
|
|
00024 { return WEBLK[i]; }
|
|
00021 { return _WETotE; }
|
|
00021 { return _WETotE; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|