00001
00002
00003
00004
00005
00006
00007 #ifndef SUM_TRIGGER_PATCH_CHANNELS_HH
00008 #define SUM_TRIGGER_PATCH_CHANNELS_HH
00009
00010 #include "DSM.hh"
00011
00012 inline void sumTriggerPatchChannels(const DSM& dsm, int chMin, int chMax, int step, int targetPedestal, int& sum, int& highTowerBits)
00013 {
00014
00015
00016 int nChannels = 0;
00017
00018 for (int ch = chMin; ch <= chMax; ch += step) {
00019 int highTower = dsm.channels[ch] & 0x3f;
00020
00021 for (int reg = 0; reg < 4; ++reg)
00022 highTowerBits |= (highTower > dsm.registers[reg]) << reg;
00023
00024 int triggerPatch = dsm.channels[ch] >> 6 & 0x3f;
00025
00026 sum += triggerPatch;
00027
00028 ++nChannels;
00029 }
00030
00031
00032
00033 if (sum < nChannels)
00034 sum = 0;
00035 else
00036 sum -= (nChannels - targetPedestal);
00037
00038
00039
00040 if (sum > 63) sum = 63;
00041 }
00042
00043 #endif // SUM_TRIGGER_PATCH_CHANNELS_HH