Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EmcESum Class Reference

#include <EmcESum.h>

List of all members.

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]
EmcTCFinderm_EmcTCFinder
EmcTCFinderm_EmcTCFinder
BesGlobalTrigSvcm_pIBGT
BesGlobalTrigSvcm_pIBGT
IBesGlobalTrigSvcm_tmpSvc
IBesGlobalTrigSvcm_tmpSvc
double WEBLK [2]


Constructor & Destructor Documentation

EmcESum::EmcESum  ) 
 

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 }

EmcESum::~EmcESum  ) 
 

00037 {
00038 }

EmcESum::EmcESum  ) 
 

EmcESum::~EmcESum  ) 
 


Member Function Documentation

double EmcESum::getBBLKE int  i  )  [inline]
 

00023 { return BLK[i]; }

double EmcESum::getBBLKE int  i  )  [inline]
 

00023 { return BLK[i]; }

double EmcESum::getBTotE  )  [inline]
 

00017 { return _BTotE; }

double EmcESum::getBTotE  )  [inline]
 

00017 { return _BTotE; }

double EmcESum::getEEBLKE int  i  )  [inline]
 

00025 { return EEBLK[i]; }

double EmcESum::getEEBLKE int  i  )  [inline]
 

00025 { return EEBLK[i]; }

double EmcESum::getEETotE  )  [inline]
 

00022 { return _EETotE; }

double EmcESum::getEETotE  )  [inline]
 

00022 { return _EETotE; }

void EmcESum::getESum  ) 
 

void EmcESum::getESum  ) 
 

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 }

double EmcESum::getETotE  )  [inline]
 

00018 { return _ETotE; }

double EmcESum::getETotE  )  [inline]
 

00018 { return _ETotE; }

double EmcESum::getLBTotE  )  [inline]
 

00019 { return _LBTotE; }

double EmcESum::getLBTotE  )  [inline]
 

00019 { return _LBTotE; }

double EmcESum::getLTotE  )  [inline]
 

00015 { return _LTotE; }

double EmcESum::getLTotE  )  [inline]
 

00015 { return _LTotE; }

double EmcESum::getRBTotE  )  [inline]
 

00020 { return _RBTotE; }

double EmcESum::getRBTotE  )  [inline]
 

00020 { return _RBTotE; }

double EmcESum::getRTotE  )  [inline]
 

00016 { return _RTotE; }

double EmcESum::getRTotE  )  [inline]
 

00016 { return _RTotE; }

double EmcESum::getTotE  )  [inline]
 

00014 { return _TotE; }

double EmcESum::getTotE  )  [inline]
 

00014 { return _TotE; }

double EmcESum::getWEBLKE int  i  )  [inline]
 

00024 { return WEBLK[i]; }

double EmcESum::getWEBLKE int  i  )  [inline]
 

00024 { return WEBLK[i]; }

double EmcESum::getWETotE  )  [inline]
 

00021 { return _WETotE; }

double EmcESum::getWETotE  )  [inline]
 

00021 { return _WETotE; }


Member Data Documentation

double EmcESum::_BTotE [private]
 

double EmcESum::_EETotE [private]
 

double EmcESum::_ETotE [private]
 

double EmcESum::_LBTotE [private]
 

double EmcESum::_LTotE [private]
 

double EmcESum::_RBTotE [private]
 

double EmcESum::_RTotE [private]
 

double EmcESum::_TotE [private]
 

double EmcESum::_WETotE [private]
 

double EmcESum::BLK [private]
 

double EmcESum::EEBLK [private]
 

EmcTCFinder* EmcESum::m_EmcTCFinder [private]
 

EmcTCFinder* EmcESum::m_EmcTCFinder [private]
 

BesGlobalTrigSvc* EmcESum::m_pIBGT [private]
 

BesGlobalTrigSvc* EmcESum::m_pIBGT [private]
 

IBesGlobalTrigSvc* EmcESum::m_tmpSvc [private]
 

IBesGlobalTrigSvc* EmcESum::m_tmpSvc [private]
 

double EmcESum::WEBLK [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:01:17 2011 for BOSS6.5.5 by  doxygen 1.3.9.1