@@ -42,29 +42,33 @@ class Reconstructor
4242 }
4343
4444 private:
45- static const int coincidencePairsSideC[4 ][ 2 ] = {{ 0 , 4 }, { 1 , 5 }, { 2 , 6 }, { 3 , 7 } };
46- static const int coincidencePairsSideA[4 ][ 2 ] = {{ 8 , 12 }, { 9 , 13 }, { 10 , 14 }, { 11 , 15 } };
45+ static constexpr uint8_t coincidencePairsSideC[8 ] = {4 , 5 , 6 , 7 , 0 , 1 , 2 , 3 };
46+ static constexpr uint8_t coincidencePairsSideA[8 ] = {12 , 13 , 14 , 15 , 8 , 9 , 10 , 11 };
4747
4848 bool isInAmplitudeWindow (int16_t amplitude)
4949 {
50- return amplitude >= FDDRecoConfig::Instance ().ChannelAmplitudeLower && amplitude <= FDDRecoConfig::Instance ().ChannelAmplitudeUpper ;
50+ return amplitude > FDDRecoConfig::Instance ().ChannelAmplitudeLower && amplitude < FDDRecoConfig::Instance ().ChannelAmplitudeUpper ;
5151 }
5252 bool isInTimeWindow (int16_t time)
5353 {
54- return time >= FDDRecoConfig::Instance ().ChannelTimeLower && time <= FDDRecoConfig::Instance ().ChannelTimeUpper ;
54+ return time > FDDRecoConfig::Instance ().ChannelTimeLower && time < FDDRecoConfig::Instance ().ChannelTimeUpper ;
5555 }
5656 bool isChannelDataGood (uint8_t channelBits)
5757 {
5858 return FDDRecoConfig::Instance ().isChannelDataGood (channelBits);
5959 }
60+ bool isCoincidenceConditionFulFilled (const bool * coincidencePairs, uint8_t channelNumber)
61+ {
62+ return (!FDDRecoConfig::Instance ().SwTriggerCoincidenceMode ) || ((channelNumber <= sSideAMaxId ) ? coincidencePairs[coincidencePairsSideA[channelNumber]] : coincidencePairs[coincidencePairsSideC[channelNumber]]);
63+ }
6064
6165 bool isInCollisionTimeAmplitudeWindow (int16_t amplitude)
6266 {
63- return amplitude >= FDDRecoConfig::Instance ().CollisionTimeAmplitudeLower && amplitude <= FDDRecoConfig::Instance ().CollisionTimeAmpltudeUpper ;
67+ return amplitude > FDDRecoConfig::Instance ().CollisionTimeAmplitudeLower && amplitude < FDDRecoConfig::Instance ().CollisionTimeAmpltudeUpper ;
6468 }
6569 bool isInCollisionTimeTimeWindow (int16_t time)
6670 {
67- return time >= FDDRecoConfig::Instance ().CollisionTimeTimeLower && time <= FDDRecoConfig::Instance ().CollisionTimeTimeUpper ;
71+ return time > FDDRecoConfig::Instance ().CollisionTimeTimeLower && time < FDDRecoConfig::Instance ().CollisionTimeTimeUpper ;
6872 }
6973 bool isChannelDataGoodForCollisionTime (uint8_t channelBits)
7074 {
@@ -73,15 +77,20 @@ class Reconstructor
7377
7478 bool checkSwOrGateConditions (const ChannelData& channelData)
7579 {
76- bool isAmplitudeInRange = channelData.mChargeADC >= FDDRecoConfig::Instance ().SwOrTriggerAmplitudeLowThreshold && channelData.mChargeADC <= FDDRecoConfig::Instance ().SwOrTriggerAmplitudeHighThreshold ;
77- bool isInTimeWindow = std::abs (channelData.mTime ) >= o2::fdd::timePerTDC * FDDRecoConfig::Instance ().SwOrTriggerTimeLowThreshold && std::abs (channelData.mTime ) <= o2::fdd::timePerTDC * FDDRecoConfig::Instance ().SwOrTriggerTimeHighThreshold ;
80+ bool isAmplitudeInRange = false ;
81+ if (channelData.mPMNumber <= sSideAMaxId ) {
82+ isAmplitudeInRange = channelData.mChargeADC > FDDRecoConfig::Instance ().SwOrTriggerAmplitudeLowThresholdSideA && channelData.mChargeADC < FDDRecoConfig::Instance ().SwOrTriggerAmplitudeHighThresholdSideA ;
83+ } else {
84+ isAmplitudeInRange = channelData.mChargeADC > FDDRecoConfig::Instance ().SwOrTriggerAmplitudeLowThresholdSideC && channelData.mChargeADC < FDDRecoConfig::Instance ().SwOrTriggerAmplitudeHighThresholdSideC ;
85+ }
86+ bool isInTimeWindow = std::abs (channelData.mTime ) <= FDDRecoConfig::Instance ().SwOrGate ;
7887 bool isCfdInAdcGate = channelData.getFlag (ChannelData::EEventDataBit::kIsCFDinADCgate );
7988 return isAmplitudeInRange && isInTimeWindow && isCfdInAdcGate;
8089 }
8190
8291 bool calculateSwTrigger (float meanTimeSideA, float meanTimeSideC, bool orGateSideA, bool orGateSideC)
8392 {
84- return (meanTimeSideC - meanTimeSideA) >= o2::fdd::timePerTDC * FDDRecoConfig::Instance (). SwVtxTriggerTimeDiffMin && ( meanTimeSideC - meanTimeSideA) <= o2::fdd::timePerTDC * FDDRecoConfig::Instance ().SwVtxTriggerTimeDiffMax && orGateSideA && orGateSideC;
93+ return std::abs ( meanTimeSideC - meanTimeSideA) < o2::fdd::timePerTDC * FDDRecoConfig::Instance ().SwVtxTriggerTimeWindow && orGateSideA && orGateSideC;
8594 }
8695 static constexpr uint8_t sSideAMaxId = 7 ;
8796
0 commit comments