From bd2491fe977f5e203fb1ed640b0cc8744e81f08c Mon Sep 17 00:00:00 2001 From: Martijn Laarhoven Date: Wed, 14 Jan 2026 23:13:19 +0100 Subject: [PATCH 1/2] Fix FT0 gain correction indexing in longRangeDihadronCor - Use channel ID instead of array index for gain correction - Fixes mismatched amplitude corrections for remapped dead channels --- .../Tasks/longRangeDihadronCor.cxx | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/PWGCF/TwoParticleCorrelations/Tasks/longRangeDihadronCor.cxx b/PWGCF/TwoParticleCorrelations/Tasks/longRangeDihadronCor.cxx index 8ed7e03dce3..ed0d25e9cef 100644 --- a/PWGCF/TwoParticleCorrelations/Tasks/longRangeDihadronCor.cxx +++ b/PWGCF/TwoParticleCorrelations/Tasks/longRangeDihadronCor.cxx @@ -671,6 +671,7 @@ struct LongRangeDihadronCor { if (cfgRemapFT0CDeadChannels) { if (id == kFT0CRemapChannelInnerRing) { int dead_id = id + kFT0CInnerMirror; +<<<<<<< Updated upstream registry.fill(HIST("FT0Amp"), dead_id, ampl); ampl = ampl / cstFT0RelGain[iCh]; registry.fill(HIST("FT0AmpCorrect"), dead_id, ampl); @@ -679,6 +680,18 @@ struct LongRangeDihadronCor { registry.fill(HIST("FT0Amp"), dead_id, ampl); ampl = ampl / cstFT0RelGain[iCh]; registry.fill(HIST("FT0AmpCorrect"), dead_id, ampl); +======= + float mirroredAmpl = ampl; + float mirroredAmplCorrected = mirroredAmpl / cstFT0RelGain[iCh]; + registry.fill(HIST("FT0Amp"), dead_id, mirroredAmpl); + registry.fill(HIST("FT0AmpCorrect"), dead_id, mirroredAmplCorrected); + } else if (id >= kFT0CRemapChannelStart && id <= kFT0CRemapChannelEnd) { + int dead_id = id + kFT0COuterMirror; + float mirroredAmpl = ampl; + float mirroredAmplCorrected = mirroredAmpl / cstFT0RelGain[iCh]; + registry.fill(HIST("FT0Amp"), dead_id, mirroredAmpl); + registry.fill(HIST("FT0AmpCorrect"), dead_id, mirroredAmplCorrected); +>>>>>>> Stashed changes } } if ((cfgRejectFT0CInside && (id >= kFT0CInnerRingMin && id <= kFT0CInnerRingMax)) || (cfgRejectFT0COutside && (id >= kFT0COuterRingMin && id <= kFT0COuterRingMax))) @@ -692,9 +705,16 @@ struct LongRangeDihadronCor { if (cfgRemapFT0ADeadChannels) { if (id >= kFT0ARemapChannelStart && id <= kFT0ARemapChannelEnd) { int dead_id = id - kFT0AOuterMirror; +<<<<<<< Updated upstream registry.fill(HIST("FT0Amp"), dead_id, ampl); ampl = ampl / cstFT0RelGain[iCh]; registry.fill(HIST("FT0AmpCorrect"), dead_id, ampl); +======= + float mirroredAmpl = ampl; + float mirroredAmplCorrected = mirroredAmpl / cstFT0RelGain[iCh]; + registry.fill(HIST("FT0Amp"), dead_id, mirroredAmpl); + registry.fill(HIST("FT0AmpCorrect"), dead_id, mirroredAmplCorrected); +>>>>>>> Stashed changes } } if ((cfgRejectFT0AInside && (id >= kFT0AInnerRingMin && id <= kFT0AInnerRingMax)) || (cfgRejectFT0AOutside && (id >= kFT0AOuterRingMin && id <= kFT0AOuterRingMax))) @@ -751,6 +771,13 @@ struct LongRangeDihadronCor { int chanelid = 0; float ampl = 0.; getChannel(ft0, iCh, chanelid, ampl, corType); + if (corType == kFT0C) { + if ((cfgRejectFT0CInside && (chanelid >= kFT0CInnerRingMin && chanelid <= kFT0CInnerRingMax)) || (cfgRejectFT0COutside && (chanelid >= kFT0COuterRingMin && chanelid <= kFT0COuterRingMax))) + continue; + } else if (corType == kFT0A) { + if ((cfgRejectFT0AInside && (chanelid >= kFT0AInnerRingMin && chanelid <= kFT0AInnerRingMax)) || (cfgRejectFT0AOutside && (chanelid >= kFT0AOuterRingMin && chanelid <= kFT0AOuterRingMax))) + continue; + } auto phi = getPhiFT0(chanelid, corType); auto eta = getEtaFT0(chanelid, corType); if (cfgDrawEtaPhiDis && system == SameEvent) { From 26926ec924ba9599bb4d864c4d55173d75073eb0 Mon Sep 17 00:00:00 2001 From: Martijn Laarhoven Date: Thu, 15 Jan 2026 09:45:20 +0100 Subject: [PATCH 2/2] Fix FT0 gain indexing bug and resolve merge conflicts - Use channel ID instead of array index for FT0 gain correction - Preserve original amplitude values for dead channel mapping - Resolve merge conflict markers --- .../Tasks/longRangeDihadronCor.cxx | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/PWGCF/TwoParticleCorrelations/Tasks/longRangeDihadronCor.cxx b/PWGCF/TwoParticleCorrelations/Tasks/longRangeDihadronCor.cxx index ed0d25e9cef..077d5c3ccc6 100644 --- a/PWGCF/TwoParticleCorrelations/Tasks/longRangeDihadronCor.cxx +++ b/PWGCF/TwoParticleCorrelations/Tasks/longRangeDihadronCor.cxx @@ -671,16 +671,6 @@ struct LongRangeDihadronCor { if (cfgRemapFT0CDeadChannels) { if (id == kFT0CRemapChannelInnerRing) { int dead_id = id + kFT0CInnerMirror; -<<<<<<< Updated upstream - registry.fill(HIST("FT0Amp"), dead_id, ampl); - ampl = ampl / cstFT0RelGain[iCh]; - registry.fill(HIST("FT0AmpCorrect"), dead_id, ampl); - } else if (id >= kFT0CRemapChannelStart && id <= kFT0CRemapChannelEnd) { - int dead_id = id + kFT0COuterMirror; - registry.fill(HIST("FT0Amp"), dead_id, ampl); - ampl = ampl / cstFT0RelGain[iCh]; - registry.fill(HIST("FT0AmpCorrect"), dead_id, ampl); -======= float mirroredAmpl = ampl; float mirroredAmplCorrected = mirroredAmpl / cstFT0RelGain[iCh]; registry.fill(HIST("FT0Amp"), dead_id, mirroredAmpl); @@ -691,7 +681,6 @@ struct LongRangeDihadronCor { float mirroredAmplCorrected = mirroredAmpl / cstFT0RelGain[iCh]; registry.fill(HIST("FT0Amp"), dead_id, mirroredAmpl); registry.fill(HIST("FT0AmpCorrect"), dead_id, mirroredAmplCorrected); ->>>>>>> Stashed changes } } if ((cfgRejectFT0CInside && (id >= kFT0CInnerRingMin && id <= kFT0CInnerRingMax)) || (cfgRejectFT0COutside && (id >= kFT0COuterRingMin && id <= kFT0COuterRingMax))) @@ -705,16 +694,10 @@ struct LongRangeDihadronCor { if (cfgRemapFT0ADeadChannels) { if (id >= kFT0ARemapChannelStart && id <= kFT0ARemapChannelEnd) { int dead_id = id - kFT0AOuterMirror; -<<<<<<< Updated upstream - registry.fill(HIST("FT0Amp"), dead_id, ampl); - ampl = ampl / cstFT0RelGain[iCh]; - registry.fill(HIST("FT0AmpCorrect"), dead_id, ampl); -======= float mirroredAmpl = ampl; float mirroredAmplCorrected = mirroredAmpl / cstFT0RelGain[iCh]; registry.fill(HIST("FT0Amp"), dead_id, mirroredAmpl); registry.fill(HIST("FT0AmpCorrect"), dead_id, mirroredAmplCorrected); ->>>>>>> Stashed changes } } if ((cfgRejectFT0AInside && (id >= kFT0AInnerRingMin && id <= kFT0AInnerRingMax)) || (cfgRejectFT0AOutside && (id >= kFT0AOuterRingMin && id <= kFT0AOuterRingMax)))