00001 //---------------------------------------------------------------------------// 00002 // BOOST --- BESIII Object_Oriented Simulation Tool / 00003 // 00004 //---------------------------------------------------------------------------/ 00005 // 00006 //Description: 00007 //Author: Caogf 00008 //Created: Mar, 2006 00009 //Modified: 00010 //Comment: 00011 // 00012 00013 #include "Trigger/MdcTCount.h" 00014 #include "Trigger/MdcTF.h" 00015 #include <iostream> 00016 00017 #include "Trigger/IBesGlobalTrigSvc.h" 00018 #include "Trigger/BesGlobalTrigSvc.h" 00019 #include "GaudiKernel/ISvcLocator.h" 00020 #include "GaudiKernel/Bootstrap.h" 00021 #include "GaudiKernel/IDataProviderSvc.h" 00022 00023 MdcTCount::MdcTCount() 00024 { 00025 m_MdcTF = new MdcTF(); 00026 } 00027 MdcTCount::~MdcTCount() 00028 { 00029 if(m_MdcTF) delete m_MdcTF; 00030 } 00031 void MdcTCount::GetTCount() 00032 { 00033 if(m_MdcTF) m_MdcTF->GetTrack(); 00034 //reset values 00035 strackNo = 0; 00036 ltrackNo = 0; 00037 nItrkSL1 = 0; 00038 nItrkSL2 = 0; 00039 strackId.clear(); 00040 ltrackId.clear(); 00041 intrkId1.clear(); 00042 intrkId2.clear(); 00043 00044 intrkId1 = m_MdcTF->GetintrkSL1(); 00045 intrkId2 = m_MdcTF->GetintrkSL2(); 00046 nItrkSL1 = intrkId1.size(); 00047 nItrkSL2 = intrkId2.size(); 00048 00049 //Get short and long track information 00050 for(int i = 0;i<128;i++) 00051 { 00052 int stId = 0, ltId = 0; 00053 //find short track 00054 if(m_MdcTF->GetstrackId(i) != 0) { 00055 //cout<<"TCount Cell ID "<<i<<endl; 00056 //for(int j = 1; j < 128; j++) { 00057 for(int j = 1; j < 17; j++) { 00058 if((i-j) < 0) stId = m_MdcTF->GetstrackId(128-j+i); 00059 else stId = m_MdcTF->GetstrackId(i-j); 00060 //cout<<"stId is "<<stId<<" j is "<<j<<" j%2 is "<<j%2<<endl; 00061 if(stId == 0) { 00062 if(j%2 != 0) { strackId.push_back(i); strackNo+=1; }//cout<<"short track count id : "<<i<<endl; } 00063 break; 00064 } 00065 } 00066 } 00067 //find long track 00068 if(m_MdcTF->GetltrackId(i) != 0) { 00069 //for(int j = 1; j < 128; j++) { 00070 for(int j = 1; j < 17; j++) { 00071 if((i-j) < 0) ltId = m_MdcTF->GetltrackId(128-j+i); 00072 else ltId = m_MdcTF->GetltrackId(i-j); 00073 if(ltId == 0) { 00074 if(j%2 != 0) { ltrackId.push_back(i); ltrackNo+=1; }// cout<<"long track count id : "<<i<<endl; } 00075 break; 00076 } 00077 } 00078 } 00079 } 00080 /* 00081 //No track combination 00082 for(int i = 0;i<128;i++) 00083 { 00084 //find short track 00085 if(m_MdcTF->GetstrackId(i) != 0) { 00086 strackId.push_back(i); 00087 } 00088 //find long track 00089 if(m_MdcTF->GetltrackId(i) != 0) { 00090 ltrackId.push_back(i); 00091 } 00092 } 00093 */ 00094 ISvcLocator* svcLocator = Gaudi::svcLocator(); 00095 StatusCode sc = svcLocator->service("BesGlobalTrigSvc", m_tmpSvc); 00096 m_pIBGT = dynamic_cast<BesGlobalTrigSvc* >(m_tmpSvc); 00097 00098 //set short and long track Id in service 00099 m_pIBGT->setMdcStrkId(strackId); 00100 m_pIBGT->setMdcLtrkId(ltrackId); 00101 }