36 for (
int j = 0; j < TrigConf::TCPHINO_B; j++ )
39 for (
int i = 0; i < TrigConf::TCTHETANO_B; i++ ) { BClusterId[i][j] = 0; }
42 for (
int j = 0; j < TrigConf::TCPHINO_E / 2; j++ )
44 if ( j < TrigConf::TCPHINO_E / 2 )
49 for (
int i = 0; i < TrigConf::TCTHETANO_E; i++ )
51 EEClusterId[i][j] = 0;
52 WEClusterId[i][j] = 0;
56 std::vector<double> emcClusE;
59 for (
int i = 0; i < TrigConf::TCTHETANO_B; i++ )
60 for (
int j = 0; j < TrigConf::TCPHINO_B; j++ )
67 int block_phi = int( j / 5 );
68 if ( ( ( block_phi % 2 == 0 ) && i > 5 ) || ( ( block_phi % 2 == 1 ) && i > 4 ) )
71 emcClusE.push_back( m_EmcTCFinder->getBTCEnergy( i, j ) );
75 for (
int i = 0; i < TrigConf::TCTHETANO_E; i++ )
76 for (
int j = 0; j < TrigConf::TCPHINO_E / 2; j++ )
80 EEClusterId[i][j] = 1;
82 emcClusE.push_back( m_EmcTCFinder->getEETCEnergy( i, j ) );
86 WEClusterId[i][j] = 1;
88 emcClusE.push_back( m_EmcTCFinder->getWETCEnergy( i, j ) );
92 for (
int j = 0; j < TrigConf::TCPHINO_B; j++ )
93 for (
int i = 0; i < TrigConf::TCTHETANO_B; i++ )
95 if ( BClusterId[i][j] == 1 )
102 for (
int j = 0; j < TrigConf::TCPHINO_E / 2; j++ )
103 for (
int i = 0; i < TrigConf::TCTHETANO_E; i++ )
105 if ( WEClusterId[i][j] == 1 ) { WEClusterPhi[j] = 1; }
108 for (
int j = 0; j < TrigConf::TCPHINO_E / 2; j++ )
109 for (
int i = 0; i < TrigConf::TCTHETANO_E; i++ )
111 if ( EEClusterId[i][j] == 1 ) { EEClusterPhi[j] = 1; }
117 int nbCluster = 0, neeCluster = 0, nweCluster = 0;
119 map<int, vector<complex<int>>, greater<int>> mClusId;
120 std::vector<complex<int>> vClusIdBR;
121 std::vector<complex<int>> vClusIdEE;
122 std::vector<complex<int>> vClusIdWE;
123 typedef pair<int, vector<complex<int>>> vpair;
129 for (
int i = 0; i < TrigConf::TCTHETANO_B; i++ )
130 for (
int j = 0; j < TrigConf::TCPHINO_B; j++ )
132 int BClusId = BClusterId[i][j];
137 vClusIdBR.push_back( clusId );
140 for (
int i = 0; i < TrigConf::TCTHETANO_E; i++ )
141 for (
int j = 0; j < TrigConf::TCPHINO_E / 2; j++ )
143 if ( EEClusterPhi[j] )
147 vClusIdEE.push_back( clusId );
149 if ( WEClusterPhi[j] )
153 vClusIdWE.push_back( clusId );
157 mClusId.insert( vpair( 1, vClusIdBR ) );
158 mClusId.insert( vpair( 0, vClusIdEE ) );
159 mClusId.insert( vpair( 2, vClusIdWE ) );
161 ISvcLocator* svcLocator = Gaudi::svcLocator();
162 StatusCode sc = svcLocator->service(
"BesGlobalTrigSvc", m_tmpSvc );
166 m_pIBGT->setEmcNweCluster( nweCluster );
167 m_pIBGT->setEmcNeeCluster( neeCluster );
168 m_pIBGT->setEmcClusId( mClusId );
169 m_pIBGT->setEmcClusE( emcClusE );
183 int clus0, clus1, clus3, clus4, clus8;
251 clus0 = m_EmcTCFinder->getBTC( TCThetaNb, TCPhiNb );
256 if ( TCPhiNb != 0 ) clus1 = m_EmcTCFinder->getBTC( TCThetaNb, TCPhiNb - 1 );
257 else clus1 = m_EmcTCFinder->getBTC( TCThetaNb, TrigConf::TCPHINO_B - 1 );
262 if ( TCThetaNb != 0 ) clus3 = m_EmcTCFinder->getBTC( TCThetaNb - 1, TCPhiNb );
265 if ( TCPhiNb != ( TrigConf::TCPHINO_B - 1 ) )
266 clus4 = m_EmcTCFinder->getBTC( TCThetaNb, TCPhiNb + 1 );
267 else clus4 = m_EmcTCFinder->getBTC( TCThetaNb, 0 );
286 if ( TCThetaNb != 0 && TCPhiNb != ( TrigConf::TCPHINO_B - 1 ) )
287 clus8 = m_EmcTCFinder->getBTC( TCThetaNb - 1, TCPhiNb + 1 );
288 if ( TCThetaNb == 0 ) clus8 = 1;
289 if ( TCThetaNb != 0 && TCPhiNb == ( TrigConf::TCPHINO_B - 1 ) )
290 clus8 = m_EmcTCFinder->getBTC( TCThetaNb - 1, 0 );
293 if ( !( ( clus3 > 0 ) || ( clus1 > 0 ) ) && !( ( clus4 > 0 ) && ( clus8 > 0 ) ) )
417 int etc1, etc2, etc3, etc4;
418 etc1 = m_EmcTCFinder->getEETC( TCThetaNb, TCPhiNb * 2 );
419 etc2 = m_EmcTCFinder->getEETC( TCThetaNb, TCPhiNb * 2 + 1 );
420 if ( etc1 > 0 || etc2 > 0 ) clus0 = 1;
425 etc3 = m_EmcTCFinder->getEETC( TCThetaNb, ( TCPhiNb - 1 ) * 2 );
426 etc4 = m_EmcTCFinder->getEETC( TCThetaNb, ( TCPhiNb - 1 ) * 2 + 1 );
427 if ( etc3 > 0 || etc4 > 0 ) clus1 = 1;
432 etc3 = m_EmcTCFinder->getEETC( TCThetaNb, ( TrigConf::TCPHINO_E / 2 - 1 ) * 2 );
433 etc4 = m_EmcTCFinder->getEETC( TCThetaNb, ( TrigConf::TCPHINO_E / 2 - 1 ) * 2 + 1 );
434 if ( etc3 > 0 || etc4 > 0 ) clus1 = 1;
438 if ( ( clus0 > 0 ) && ( clus1 == 0 ) )
return true;
451 int etc1, etc2, etc3, etc4;
452 etc1 = m_EmcTCFinder->getWETC( TCThetaNb, TCPhiNb * 2 );
453 etc2 = m_EmcTCFinder->getWETC( TCThetaNb, TCPhiNb * 2 + 1 );
454 if ( etc1 > 0 || etc2 > 0 ) clus0 = 1;
457 if ( TCPhiNb != ( TrigConf::TCPHINO_E / 2 - 1 ) )
459 etc3 = m_EmcTCFinder->getWETC( TCThetaNb, ( TCPhiNb + 1 ) * 2 );
460 etc4 = m_EmcTCFinder->getWETC( TCThetaNb, ( TCPhiNb + 1 ) * 2 + 1 );
461 if ( etc3 > 0 || etc4 > 0 ) clus1 = 1;
466 etc3 = m_EmcTCFinder->getWETC( TCThetaNb, 0 );
467 etc4 = m_EmcTCFinder->getWETC( TCThetaNb, 1 );
468 if ( etc3 > 0 || etc4 > 0 ) clus1 = 1;
472 if ( ( clus0 > 0 ) && ( clus1 == 0 ) )
return true;