/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/TrigEvent/TrigEvent-00-01-02/src/TrigCondition.cxx

Go to the documentation of this file.
00001 #include <iostream>
00002 #include "TrigEvent/TrigCondition.h"
00003 
00004 const std::string TrigCondition::s_CONDITIONS[] = {
00005   "00: NCluster >= 1",
00006   "01: NCluster >= 2",
00007   "02: Barrel Cluster back to back",
00008   "03: Endcap Cluster back to back",
00009   "04: Cluster Balance in Z direction",
00010   "05: Barrel Cluster Balance in Phi direction",
00011   "06: Endcap Cluster phi Balance",
00012   "07: Barrel total Energy Higher threshold",
00013   "08: Endcap total Energy Higher threshold",
00014   "09: Total Energy Lower threshold",
00015   "10: Total Energy Middle threshold",
00016   "11: Energy Balance in \"Z\" direction",
00017   "12: Barrel Energy difference Balance",
00018   "13: Endcap Energy difference Balance",
00019   "14: Energy Block Balance",
00020   "15: Endcap Energy Balance",
00021   "16: Endcap TOF back to back",
00022   "17: Barrel TOF back to back",
00023   "18: NETOF >= 2",
00024   "19: NETOF >= 1",
00025   "20: NBTOF >= 2",
00026   "21: NBTOF >= 1",
00027   "22: Not defined yet",
00028   "23: Not defined yet",
00029   "24: Not defined yet",
00030   "25: Not defined yet",
00031   "26: Not defined yet",
00032   "27: Not defined yet",
00033   "28: Not defined yet",
00034   "29: Not defined yet",
00035   "30: Not defined yet",
00036   "31: Not defined yet",
00037   "32: MUON Back to Back 3478",
00038   "33: MUON Back to Back 37",
00039   "34: Not defined yet",
00040   "35: Not defined yet",
00041   "36: Not defined yet",
00042   "37: Not defined yet",
00043   "38: Short Track back to back",
00044   "39: NStrk >= N",
00045   "40: NStrk >= 2",
00046   "41: NStrk >= 1",
00047   "42: Long Track back to back",
00048   "43: NLtrk >= N",
00049   "44: NLtrk >= 2",
00050   "45: NLtrk >= 1",
00051   "46: NItrk >= 1",
00052   "47: NItrk >= 2"
00053 };
00054 
00055 TrigCondition::TrigCondition(char* name, uint32_t window, const uint32_t* data) :
00056   m_name(name)
00057 {
00058   for (uint32_t group = 0; group < 2; group++) {
00059     uint32_t iBegin = group * 24;
00060     uint32_t iEnd   = (group + 1) * 24;
00061     uint32_t jBegin = group * window;
00062     uint32_t jEnd   = (group + 1) * window;
00063     for (uint32_t i = iBegin, mask = 1; i < iEnd; i++, mask <<= 1) {
00064       uint32_t num_One = 0, num_Zero = 0;
00065       for (uint32_t j = jBegin; j < jEnd; j++) {
00066         if ((data[j] & mask) != 0) {
00067           num_One++;
00068         }
00069         else {
00070           if (num_One == 0) num_Zero++;
00071         }
00072       }
00073       m_num_One[i]  = num_One;
00074       m_num_Zero[i] = num_Zero;
00075     }
00076   }
00077 
00078   for (uint32_t i = 0; i < 48; i++) {
00079     if (m_num_One[i] != 0) m_condList.push_back(i);
00080   }
00081 }
00082 
00083 void TrigCondition::print() const {
00084   int size = m_condList.size();
00085   std::cout << "TrigCondition-" << m_name << " contains the following conditions:" << std::endl;
00086   for (int i = 0; i < size; i++) {
00087     std::cout << '\t' << s_CONDITIONS[m_condList[i]] << std::endl;
00088   }
00089 }

Generated on Tue Nov 29 23:11:43 2016 for BOSS_7.0.2 by  doxygen 1.4.7