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

BesTofTrig Class Reference

#include <BesTofTrig.h>

List of all members.

Public Member Functions

 BesTofTrig ()
 BesTofTrig ()
std::vector< int > & GetbHitpos ()
std::vector< int > & GetbHitpos ()
std::vector< int > & GetecapHitpos ()
std::vector< int > & GetecapHitpos ()
std::vector< int > & GetwcapHitpos ()
std::vector< int > & GetwcapHitpos ()
void startTofTrig ()
void startTofTrig ()
 ~BesTofTrig ()
 ~BesTofTrig ()

Private Attributes

std::vector< int > bHitpos
std::vector< int > bHitpos
std::vector< int > ecapHitpos
std::vector< int > ecapHitpos
bool ETBB
BesGlobalTrigSvcm_pIBGT
BesGlobalTrigSvcm_pIBGT
IBesGlobalTrigSvcm_tmpSvc
IBesGlobalTrigSvcm_tmpSvc
TofHitCountm_TofHitCount
TofHitCountm_TofHitCount
bool NBTOF1
bool NBTOF2
bool NETOF1
bool NETOF2
bool NTOF1
bool TBB
std::vector< int > wcapHitpos
std::vector< int > wcapHitpos


Constructor & Destructor Documentation

BesTofTrig::BesTofTrig  ) 
 

00027 {
00028   m_TofHitCount = TofHitCount::get_Tof();
00029   ISvcLocator* svcLocator = Gaudi::svcLocator();
00030   StatusCode sc = svcLocator->service("BesGlobalTrigSvc", m_tmpSvc);
00031   m_pIBGT = dynamic_cast<BesGlobalTrigSvc* >(m_tmpSvc);
00032 }

BesTofTrig::~BesTofTrig  ) 
 

00034 {
00035 }

BesTofTrig::BesTofTrig  ) 
 

BesTofTrig::~BesTofTrig  ) 
 


Member Function Documentation

std::vector<int>& BesTofTrig::GetbHitpos  )  [inline]
 

00017 { return bHitpos; }

std::vector<int>& BesTofTrig::GetbHitpos  )  [inline]
 

00017 { return bHitpos; }

std::vector<int>& BesTofTrig::GetecapHitpos  )  [inline]
 

00018 { return ecapHitpos; }

std::vector<int>& BesTofTrig::GetecapHitpos  )  [inline]
 

00018 { return ecapHitpos; }

std::vector<int>& BesTofTrig::GetwcapHitpos  )  [inline]
 

00019 { return wcapHitpos; }

std::vector<int>& BesTofTrig::GetwcapHitpos  )  [inline]
 

00019 { return wcapHitpos; }

void BesTofTrig::startTofTrig  ) 
 

void BesTofTrig::startTofTrig  ) 
 

00037 {
00038   //reset hit counter
00039   int barHitCount = 0;
00040   int endHitCount = 0;
00041   
00042   NBTOF1 = false;
00043   NBTOF2 = false;
00044   NETOF1 = false;
00045   NETOF2 = false;
00046   NTOF1 = false;
00047  
00048   TBB = false;
00049   ETBB = false;
00050   
00051   bHitpos.clear();
00052   ecapHitpos.clear();
00053   wcapHitpos.clear();
00054   
00055   if(!m_TofHitCount) std::cerr<<"can not get TofHitCount pointer"<<std::endl;
00056   
00057   std::vector<int> barHitmap;
00058   std::vector<int> endHitmap;
00059   std::vector<int> barHitId1;
00060   std::vector<int> barHitId2;
00061   std::vector<int> ecapHitId;
00062   std::vector<int> wcapHitId;
00063   std::vector<int>::iterator iter;
00064   
00065   barHitmap.clear();
00066   endHitmap.clear();
00067   barHitId1.clear();
00068   barHitId2.clear();
00069   ecapHitId.clear();
00070   wcapHitId.clear();
00071 
00072   barHitId1 = m_TofHitCount->GetbarrelHit1();
00073   barHitId2 = m_TofHitCount->GetbarrelHit2();
00074   ecapHitId = m_TofHitCount->GetecapHit();
00075   wcapHitId = m_TofHitCount->GetwcapHit();
00076   
00077   for(unsigned int btofId = 0; btofId < barHitId1.size(); btofId++) barHitmap.push_back(barHitId1[btofId]);
00078   for(unsigned int btofId = 0; btofId < barHitId2.size(); btofId++) barHitmap.push_back(88+barHitId2[btofId]);
00079   for(unsigned int etofId = 0; etofId < ecapHitId.size(); etofId++) endHitmap.push_back(ecapHitId[etofId]);
00080   for(unsigned int etofId = 0; etofId < wcapHitId.size(); etofId++) endHitmap.push_back(48+wcapHitId[etofId]);
00081   //two layer tof in barrel is "or" logic
00082   // -------------------------
00083   // ... |   |   |j+1| j | ...    outer layer
00084   // -------------------------
00085   // ---------------------------
00086   //   ... |   |   | i |   | ...  inner layer
00087   // ---------------------------
00088   // M_i = M_i || M_j || M_j+1
00089   int scinNo;
00090   for(int btofId = 0; btofId < 88; btofId++) {
00091     if(m_pIBGT->getTofLayerControl() == 1) {
00092       if((find(barHitId1.begin(),barHitId1.end(),btofId)!=barHitId1.end()) ) { 
00093          bHitpos.push_back(btofId);
00094       }
00095     }
00096     if(m_pIBGT->getTofLayerControl() == 2) {
00097       if(btofId != 87) {
00098         if((find(barHitId1.begin(),barHitId1.end(),btofId)!=barHitId1.end()) || 
00099            (find(barHitId2.begin(),barHitId2.end(),btofId)!=barHitId2.end()) ||
00100            (find(barHitId2.begin(),barHitId2.end(),btofId+1)!=barHitId2.end()) ) {
00101            bHitpos.push_back(btofId);
00102         }
00103       }
00104       if(btofId == 87) {
00105         if((find(barHitId1.begin(),barHitId1.end(),btofId)!=barHitId1.end()) || 
00106            (find(barHitId2.begin(),barHitId2.end(),btofId)!=barHitId2.end()) ||
00107            (find(barHitId2.begin(),barHitId2.end(),0)!=barHitId2.end()) ) {
00108            bHitpos.push_back(btofId);
00109         }
00110       }
00111     }
00112   }
00113   //hit position in end caps
00114   for(iter=ecapHitId.begin();iter!=ecapHitId.end();iter++)
00115   {
00116     scinNo = (int) (*iter)/2;
00117     if(find(ecapHitpos.begin(),ecapHitpos.end(),scinNo)==ecapHitpos.end())
00118     {
00119       ecapHitpos.push_back(scinNo);
00120     }
00121   }
00122 
00123   for(iter=wcapHitId.begin();iter!=wcapHitId.end();iter++)
00124   {
00125     scinNo = (int)*iter/2;
00126     if(find(wcapHitpos.begin(),wcapHitpos.end(),scinNo)==wcapHitpos.end())
00127     {
00128       wcapHitpos.push_back(scinNo);
00129     }
00130   }
00131 
00132   //Counting the hit number only for NBTOF1, NBTOF2, NETOF1, NETOF1 trigger conditions. Combine contiguous hits as one hit
00133   //barrel
00134   for(int btofId = 0; btofId < 88; btofId++) {
00135     if(btofId == 0) {
00136       if((find(bHitpos.begin(),bHitpos.end(),btofId) != bHitpos.end()) &&
00137          (find(bHitpos.begin(),bHitpos.end(),87) == bHitpos.end())) {
00138         barHitCount++;
00139       }
00140     }
00141     else {
00142       if((find(bHitpos.begin(),bHitpos.end(),btofId) != bHitpos.end()) &&
00143          (find(bHitpos.begin(),bHitpos.end(),btofId-1) == bHitpos.end())) {
00144         barHitCount++;
00145       }
00146     }
00147   }
00148   //endcaps
00149   for(int etofId = 0; etofId < 48; etofId++) {
00150     if(etofId == 0) {
00151       if((find(wcapHitId.begin(),wcapHitId.end(),etofId) != wcapHitId.end()) &&
00152          (find(wcapHitId.begin(),wcapHitId.end(),47) == wcapHitId.end())) {
00153         endHitCount++;
00154       }
00155       if((find(ecapHitId.begin(),ecapHitId.end(),etofId) != ecapHitId.end()) &&
00156          (find(ecapHitId.begin(),ecapHitId.end(),47) == ecapHitId.end())) {
00157         endHitCount++;
00158       }
00159     }
00160     else {
00161       if((find(wcapHitId.begin(),wcapHitId.end(),etofId) != wcapHitId.end()) &&
00162          (find(wcapHitId.begin(),wcapHitId.end(),etofId-1) == wcapHitId.end())) {
00163         endHitCount++;
00164       }
00165       if((find(ecapHitId.begin(),ecapHitId.end(),etofId) != ecapHitId.end()) &&
00166          (find(ecapHitId.begin(),ecapHitId.end(),etofId-1) == ecapHitId.end())) {
00167         endHitCount++;
00168       }
00169     }
00170   }
00171   
00172   if(barHitCount>=1) NBTOF1 = true;
00173   if(barHitCount>=2) NBTOF2 = true;
00174   if(endHitCount>=1) NETOF1 = true;
00175   if(endHitCount>=2) NETOF2 = true;
00176   if((NBTOF1 == true) || (NETOF1 == true)) NTOF1 = true;
00177   
00178   for(iter=bHitpos.begin();iter!=bHitpos.end();iter++)
00179   {
00180     scinNo = *iter;
00181     for(int i=0;i<13;i++)
00182     {
00183       if(scinNo+38+i<88)
00184       {
00185         if(find(bHitpos.begin(),bHitpos.end(),scinNo+38+i)!=bHitpos.end()) TBB = true;
00186       }
00187       if(scinNo+38+i>=88)
00188       {
00189         if(find(bHitpos.begin(),bHitpos.end(),scinNo+38+i-88)!=bHitpos.end()) TBB = true;
00190       }
00191     }
00192   }
00193   for(iter=wcapHitId.begin();iter!=wcapHitId.end();iter++)
00194   {
00195     scinNo = *iter;
00196     for(int i=0;i<9;i++)
00197     {
00198       if(scinNo+20+i<48)
00199       {
00200         if(find(ecapHitId.begin(),ecapHitId.end(),scinNo+20+i)!=ecapHitId.end()) ETBB = true;
00201       }
00202       if(scinNo+20+i>=48)
00203       {
00204         if(find(ecapHitId.begin(),ecapHitId.end(),scinNo+20+i-48)!=ecapHitId.end()) ETBB = true;
00205       }
00206     }
00207   }
00208   map<int,vector<int>,greater<int> > mHitId;
00209   mHitId.clear();
00210   typedef pair<int, vector<int> > vpair;
00211 /*
00212   std::vector<int> bhitmap;
00213   bhitmap.clear();
00214   for(int id = 0; id < barHitId1.size(); id++) {
00215     bhitmap.push_back(barHitId1[id]);
00216   }
00217   for(int id = 0; id < barHitId2.size(); id++) {
00218     bhitmap.push_back(88+barHitId2[id]);
00219   }
00220 */
00221   mHitId.insert(vpair(0,ecapHitpos));
00222   mHitId.insert(vpair(1,bHitpos));
00223   mHitId.insert(vpair(2,wcapHitpos));
00224 
00225   m_pIBGT->setNBTof1(NBTOF1);
00226   m_pIBGT->setNBTof2(NBTOF2);
00227   m_pIBGT->setNETof1(NETOF1);
00228   m_pIBGT->setNETof2(NETOF2);
00229   m_pIBGT->setNTof1(NTOF1);
00230   m_pIBGT->setBTofBB(TBB);
00231   m_pIBGT->setETofBB(ETBB);
00232   m_pIBGT->setTofHitPos(mHitId);
00233   m_pIBGT->setBTofHitMap(barHitmap);
00234   m_pIBGT->setETofHitMap(endHitmap);
00235 }


Member Data Documentation

std::vector<int> BesTofTrig::bHitpos [private]
 

std::vector<int> BesTofTrig::bHitpos [private]
 

std::vector<int> BesTofTrig::ecapHitpos [private]
 

std::vector<int> BesTofTrig::ecapHitpos [private]
 

bool BesTofTrig::ETBB [private]
 

BesGlobalTrigSvc* BesTofTrig::m_pIBGT [private]
 

BesGlobalTrigSvc* BesTofTrig::m_pIBGT [private]
 

IBesGlobalTrigSvc* BesTofTrig::m_tmpSvc [private]
 

IBesGlobalTrigSvc* BesTofTrig::m_tmpSvc [private]
 

TofHitCount* BesTofTrig::m_TofHitCount [private]
 

TofHitCount* BesTofTrig::m_TofHitCount [private]
 

bool BesTofTrig::NBTOF1 [private]
 

bool BesTofTrig::NBTOF2 [private]
 

bool BesTofTrig::NETOF1 [private]
 

bool BesTofTrig::NETOF2 [private]
 

bool BesTofTrig::NTOF1 [private]
 

bool BesTofTrig::TBB [private]
 

std::vector<int> BesTofTrig::wcapHitpos [private]
 

std::vector<int> BesTofTrig::wcapHitpos [private]
 


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