#include <BesMdcTrig.h>
Public Member Functions | |
BesMdcTrig () | |
~BesMdcTrig () | |
void | startMdcTrig () |
Private Attributes | |
MdcTCount * | m_MdcTCount |
bool | NLtrk1 |
bool | NLtrk2 |
bool | NLtrkN |
bool | NStrk1 |
bool | NStrk2 |
bool | NStrkN |
bool | STrk_BB |
bool | LTrk_BB |
bool | NItrk1 |
bool | NItrk2 |
BesGlobalTrigSvc * | m_pIBGT |
IBesGlobalTrigSvc * | m_tmpSvc |
Definition at line 7 of file BesMdcTrig.h.
BesMdcTrig::BesMdcTrig | ( | ) |
Definition at line 27 of file BesMdcTrig.cxx.
References m_MdcTCount.
00028 { 00029 m_MdcTCount = new MdcTCount(); 00030 }
BesMdcTrig::~BesMdcTrig | ( | ) |
Definition at line 31 of file BesMdcTrig.cxx.
References m_MdcTCount.
00032 { 00033 if(m_MdcTCount) delete m_MdcTCount; 00034 }
void BesMdcTrig::startMdcTrig | ( | ) |
Definition at line 35 of file BesMdcTrig.cxx.
References MdcTCount::GetltrackId(), BesGlobalTrigSvc::getMAXMDCTRACK(), MdcTCount::GetnItrkSL1(), MdcTCount::GetnItrkSL2(), MdcTCount::GetstrackId(), MdcTCount::GetTCount(), genRecEmupikp::i, LTrk_BB, m_MdcTCount, m_pIBGT, m_tmpSvc, NItrk1, NItrk2, NLtrk1, NLtrk2, NLtrkN, NStrk1, NStrk2, NStrkN, BesGlobalTrigSvc::setLTrk_BB(), BesGlobalTrigSvc::setNItrk1(), BesGlobalTrigSvc::setNItrk2(), BesGlobalTrigSvc::setNLtrk1(), BesGlobalTrigSvc::setNLtrk2(), BesGlobalTrigSvc::setNLtrkN(), BesGlobalTrigSvc::setNStrk1(), BesGlobalTrigSvc::setNStrk2(), BesGlobalTrigSvc::setNStrkN(), BesGlobalTrigSvc::setSTrk_BB(), and STrk_BB.
Referenced by BesGlobalTrigSvc::startMdcTrig().
00036 { 00037 StatusCode sc = Gaudi::svcLocator()->service("BesGlobalTrigSvc", m_tmpSvc); 00038 m_pIBGT = dynamic_cast<BesGlobalTrigSvc* >(m_tmpSvc); 00039 00040 NLtrk1 = false; 00041 NLtrk2 = false; 00042 NLtrkN = false; 00043 LTrk_BB = false; 00044 NStrk1 = false; 00045 NStrk2 = false; 00046 NStrkN = false; 00047 STrk_BB = false; 00048 NItrk1 = false; 00049 NItrk2 = false; 00050 00051 if(!m_MdcTCount) std::cerr<<"can not initialize mdcTCount"<<std::endl; 00052 m_MdcTCount->GetTCount(); 00053 int nItrk1 = m_MdcTCount->GetnItrkSL1(); 00054 int nItrk2 = m_MdcTCount->GetnItrkSL2(); 00055 00056 // std::cout<<"track number is "<<s<<" "<<l<<std::endl; 00057 //trigger condition of short and long track in outer room 00058 int MAXMDCTRACK = m_pIBGT->getMAXMDCTRACK(); 00059 if((nItrk1 >= 1) || (nItrk2 >= 1)) NItrk1 = true; 00060 if((nItrk1 >= 1) && (nItrk2 >= 1)) NItrk2 = true; 00061 00062 //trigger condition of babar using short track information 00063 std::vector<int> stmp; 00064 std::vector<int>::iterator siter; 00065 stmp.clear(); 00066 stmp = m_MdcTCount->GetstrackId(); 00067 int nstrk = stmp.size(); 00068 if(nstrk>=1) NStrk1 = true; 00069 if(nstrk>=2) NStrk2 = true; 00070 if(nstrk>=MAXMDCTRACK) NStrkN = true; 00071 00072 // if(stmp.empty()) std::cout<<"have no short track id infor in vector tmp"<<std::endl; 00073 00074 for(siter=stmp.begin();siter!=stmp.end();siter++) 00075 { 00076 for(int i=0;i<15;i++) 00077 { 00078 if(((*siter)+i+57)>127) 00079 { 00080 int id; 00081 id = (*siter)+i+57-128; 00082 if(find(stmp.begin(),stmp.end(),id)!=stmp.end()) { STrk_BB = true; break; } 00083 } 00084 else 00085 { 00086 int id; 00087 id = (*siter)+i+57; 00088 if(find(stmp.begin(),stmp.end(),id)!=stmp.end()) { STrk_BB = true; break; } 00089 } 00090 } 00091 00092 if(STrk_BB == true) break; 00093 } 00094 //trigger condition of babar using long track information 00095 std::vector<int> ltmp; 00096 std::vector<int>::iterator liter; 00097 ltmp.clear(); 00098 ltmp = m_MdcTCount->GetltrackId(); 00099 int nltrk = ltmp.size(); 00100 if(nltrk>=1) NLtrk1 = true; 00101 if(nltrk>=2) NLtrk2 = true; 00102 if(nltrk>=MAXMDCTRACK) NLtrkN = true; 00103 // if(ltmp.empty()) std::cout<<"have no long track id infor in vector tmp"<<std::endl; 00104 for(liter=ltmp.begin();liter!=ltmp.end();liter++) 00105 { 00106 for(int i=0;i<15;i++) 00107 { 00108 if(((*liter)+i+57)>127) 00109 { 00110 int id; 00111 id = (*liter)+i+57-128; 00112 if(find(ltmp.begin(),ltmp.end(),id)!=ltmp.end()) { LTrk_BB = true; break; } 00113 } 00114 else 00115 { 00116 int id; 00117 id = (*liter)+i+57; 00118 if(find(ltmp.begin(),ltmp.end(),id)!=ltmp.end()) { LTrk_BB = true; break; } 00119 } 00120 } 00121 // std::cout<<"LTrk_BB is "<<LTrk_BB<<std::endl; 00122 if(LTrk_BB == true) break; 00123 } 00124 00125 //set trigger conditions in service 00126 m_pIBGT->setSTrk_BB(STrk_BB); 00127 m_pIBGT->setNStrkN(NStrkN); 00128 m_pIBGT->setNStrk2(NStrk2); 00129 m_pIBGT->setNStrk1(NStrk1); 00130 m_pIBGT->setLTrk_BB(LTrk_BB); 00131 m_pIBGT->setNLtrkN(NLtrkN); 00132 m_pIBGT->setNLtrk2(NLtrk2); 00133 m_pIBGT->setNLtrk1(NLtrk1); 00134 m_pIBGT->setNItrk2(NItrk2); 00135 m_pIBGT->setNItrk1(NItrk1); 00136 }
bool BesMdcTrig::LTrk_BB [private] |
MdcTCount* BesMdcTrig::m_MdcTCount [private] |
Definition at line 13 of file BesMdcTrig.h.
Referenced by BesMdcTrig(), startMdcTrig(), and ~BesMdcTrig().
BesGlobalTrigSvc* BesMdcTrig::m_pIBGT [private] |
IBesGlobalTrigSvc* BesMdcTrig::m_tmpSvc [private] |
bool BesMdcTrig::NItrk1 [private] |
bool BesMdcTrig::NItrk2 [private] |
bool BesMdcTrig::NLtrk1 [private] |
bool BesMdcTrig::NLtrk2 [private] |
bool BesMdcTrig::NLtrkN [private] |
bool BesMdcTrig::NStrk1 [private] |
bool BesMdcTrig::NStrk2 [private] |
bool BesMdcTrig::NStrkN [private] |
bool BesMdcTrig::STrk_BB [private] |