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

BesMdcTrig Class Reference

#include <BesMdcTrig.h>

List of all members.

Public Member Functions

 BesMdcTrig ()
 BesMdcTrig ()
void startMdcTrig ()
void startMdcTrig ()
 ~BesMdcTrig ()
 ~BesMdcTrig ()

Private Attributes

bool LTrk_BB
MdcTCountm_MdcTCount
MdcTCountm_MdcTCount
BesGlobalTrigSvcm_pIBGT
BesGlobalTrigSvcm_pIBGT
IBesGlobalTrigSvcm_tmpSvc
IBesGlobalTrigSvcm_tmpSvc
bool NItrk1
bool NItrk2
bool NLtrk1
bool NLtrk2
bool NLtrkN
bool NStrk1
bool NStrk2
bool NStrkN
bool STrk_BB


Constructor & Destructor Documentation

BesMdcTrig::BesMdcTrig  ) 
 

00028 {
00029   m_MdcTCount = new MdcTCount();
00030   ISvcLocator* svcLocator = Gaudi::svcLocator();
00031   StatusCode sc = svcLocator->service("BesGlobalTrigSvc", m_tmpSvc);
00032   m_pIBGT = dynamic_cast<BesGlobalTrigSvc* >(m_tmpSvc);
00033 }

BesMdcTrig::~BesMdcTrig  ) 
 

00035 {
00036   if(m_MdcTCount) delete m_MdcTCount;
00037 }

BesMdcTrig::BesMdcTrig  ) 
 

BesMdcTrig::~BesMdcTrig  ) 
 


Member Function Documentation

void BesMdcTrig::startMdcTrig  ) 
 

void BesMdcTrig::startMdcTrig  ) 
 

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 //  std::cout<<"track number is "<<s<<" "<<l<<std::endl;
00056   //trigger condition of short and long track in outer room
00057   int MAXMDCTRACK = m_pIBGT->getMAXMDCTRACK();
00058   if((nItrk1 >= 1) || (nItrk2 >= 1)) NItrk1 = true;
00059   if((nItrk1 >= 1) && (nItrk2 >= 1)) NItrk2 = true;
00060    
00061   //trigger condition of babar using short track information
00062   std::vector<int> stmp;
00063   std::vector<int>::iterator siter;
00064   stmp.clear();
00065   stmp = m_MdcTCount->GetstrackId();
00066   int nstrk = stmp.size();
00067   if(nstrk>=1) NStrk1 = true;
00068   if(nstrk>=2) NStrk2 = true;
00069   if(nstrk>=MAXMDCTRACK) NStrkN = true;
00070   
00071  // if(stmp.empty()) std::cout<<"have no short track id infor in vector tmp"<<std::endl;
00072   
00073   for(siter=stmp.begin();siter!=stmp.end();siter++)
00074   {
00075     for(int i=0;i<15;i++)
00076     {
00077       if(((*siter)+i+57)>127) 
00078       {
00079         int id;
00080         id = (*siter)+i+57-128;
00081         if(find(stmp.begin(),stmp.end(),id)!=stmp.end()) { STrk_BB = true; break; }
00082       }
00083       else
00084       {
00085         int id;
00086         id = (*siter)+i+57;
00087         if(find(stmp.begin(),stmp.end(),id)!=stmp.end()) { STrk_BB = true; break; }
00088       }
00089     }
00090     
00091     if(STrk_BB == true) break;
00092   }
00093   //trigger condition of babar using long track information
00094   std::vector<int> ltmp;
00095   std::vector<int>::iterator liter;
00096   ltmp.clear();
00097   ltmp = m_MdcTCount->GetltrackId();
00098   int nltrk = ltmp.size();
00099   if(nltrk>=1) NLtrk1 = true;
00100   if(nltrk>=2) NLtrk2 = true;
00101   if(nltrk>=MAXMDCTRACK) NLtrkN = true;
00102 //  if(ltmp.empty()) std::cout<<"have no long track id infor in vector tmp"<<std::endl;
00103   for(liter=ltmp.begin();liter!=ltmp.end();liter++)
00104   {
00105     for(int i=0;i<15;i++)
00106     {
00107       if(((*liter)+i+57)>127)
00108       {
00109         int id;
00110         id = (*liter)+i+57-128;
00111         if(find(ltmp.begin(),ltmp.end(),id)!=ltmp.end()) { LTrk_BB = true; break; }
00112       }
00113       else
00114       {
00115         int id;
00116         id = (*liter)+i+57;
00117         if(find(ltmp.begin(),ltmp.end(),id)!=ltmp.end()) { LTrk_BB = true; break; }
00118       }
00119     }
00120 //    std::cout<<"LTrk_BB is "<<LTrk_BB<<std::endl;
00121     if(LTrk_BB == true) break;
00122   }         
00123 
00124   //set trigger conditions in service
00125   m_pIBGT->setSTrk_BB(STrk_BB);
00126   m_pIBGT->setNStrkN(NStrkN);
00127   m_pIBGT->setNStrk2(NStrk2);
00128   m_pIBGT->setNStrk1(NStrk1);
00129   m_pIBGT->setLTrk_BB(LTrk_BB);
00130   m_pIBGT->setNLtrkN(NLtrkN);
00131   m_pIBGT->setNLtrk2(NLtrk2);
00132   m_pIBGT->setNLtrk1(NLtrk1);
00133   m_pIBGT->setNItrk2(NItrk2);
00134   m_pIBGT->setNItrk1(NItrk1);
00135 }


Member Data Documentation

bool BesMdcTrig::LTrk_BB [private]
 

MdcTCount* BesMdcTrig::m_MdcTCount [private]
 

MdcTCount* BesMdcTrig::m_MdcTCount [private]
 

BesGlobalTrigSvc* BesMdcTrig::m_pIBGT [private]
 

BesGlobalTrigSvc* BesMdcTrig::m_pIBGT [private]
 

IBesGlobalTrigSvc* BesMdcTrig::m_tmpSvc [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]
 


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