Skip to content

Commit b9437df

Browse files
committed
Fix FIT detector amplitude initialization and fired channel counting
- Fix FT0/FV0A/FDD amplitude initialization to preserve -1 sentinel values - Only overwrite amplitude if actual signal is present (nFired > 0) - Fix fired channel counting: count only channels with amp > 0, not array size - Add FT0s, FDDs, FV0As table subscriptions to processPbPbWithFilterBarrelOnlyWithFIT This allows distinguishing between "no detector data" and "detector present but no signal"
1 parent b299ebf commit b9437df

File tree

2 files changed

+44
-15
lines changed

2 files changed

+44
-15
lines changed

PWGDQ/Core/VarManager.h

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5347,49 +5347,77 @@ void VarManager::FillFIT(T const& obj, float* values)
53475347
// Fill FT0 information from BC
53485348
if (obj.has_ft0()) {
53495349
auto ft0 = obj.ft0();
5350-
values[kAmplitudeFT0A] = 0.f;
5350+
float ampA = 0.f;
5351+
int nFiredFT0A = 0;
53515352
for (auto const& amp : ft0.amplitudeA()) {
5352-
values[kAmplitudeFT0A] += amp;
5353+
if (amp > 0) {
5354+
ampA += amp;
5355+
nFiredFT0A++;
5356+
}
53535357
}
5354-
values[kAmplitudeFT0C] = 0.f;
5358+
float ampC = 0.f;
5359+
int nFiredFT0C = 0;
53555360
for (auto const& amp : ft0.amplitudeC()) {
5356-
values[kAmplitudeFT0C] += amp;
5361+
if (amp > 0) {
5362+
ampC += amp;
5363+
nFiredFT0C++;
5364+
}
53575365
}
5366+
// Only overwrite defaults if we have actual signal
5367+
if (nFiredFT0A > 0) values[kAmplitudeFT0A] = ampA;
5368+
if (nFiredFT0C > 0) values[kAmplitudeFT0C] = ampC;
53585369
values[kTimeFT0A] = ft0.timeA();
53595370
values[kTimeFT0C] = ft0.timeC();
53605371
values[kTriggerMaskFT0] = ft0.triggerMask();
5361-
values[kNFiredChannelsFT0A] = ft0.amplitudeA().size();
5362-
values[kNFiredChannelsFT0C] = ft0.amplitudeC().size();
5372+
values[kNFiredChannelsFT0A] = nFiredFT0A;
5373+
values[kNFiredChannelsFT0C] = nFiredFT0C;
53635374
}
53645375

53655376
// Fill FV0A information from BC
53665377
if (obj.has_fv0a()) {
53675378
auto fv0a = obj.fv0a();
5368-
values[kAmplitudeFV0A] = 0.f;
5379+
float ampV0A = 0.f;
5380+
int nFiredFV0A = 0;
53695381
for (auto const& amp : fv0a.amplitude()) {
5370-
values[kAmplitudeFV0A] += amp;
5382+
if (amp > 0) {
5383+
ampV0A += amp;
5384+
nFiredFV0A++;
5385+
}
53715386
}
5387+
// Only overwrite defaults if we have actual signal
5388+
if (nFiredFV0A > 0) values[kAmplitudeFV0A] = ampV0A;
53725389
values[kTimeFV0A] = fv0a.time();
53735390
values[kTriggerMaskFV0A] = fv0a.triggerMask();
5374-
values[kNFiredChannelsFV0A] = fv0a.amplitude().size();
5391+
values[kNFiredChannelsFV0A] = nFiredFV0A;
53755392
}
53765393

53775394
// Fill FDD information from BC
53785395
if (obj.has_fdd()) {
53795396
auto fdd = obj.fdd();
5380-
values[kAmplitudeFDDA] = 0.f;
5397+
float ampFDDA = 0.f;
5398+
int nFiredFDDA = 0;
53815399
for (auto const& amp : fdd.chargeA()) {
5382-
values[kAmplitudeFDDA] += amp;
5400+
if (amp > 0) {
5401+
ampFDDA += amp;
5402+
nFiredFDDA++;
5403+
}
53835404
}
5384-
values[kAmplitudeFDDC] = 0.f;
5405+
float ampFDDC = 0.f;
5406+
int nFiredFDDC = 0;
53855407
for (auto const& amp : fdd.chargeC()) {
5386-
values[kAmplitudeFDDC] += amp;
5408+
if (amp > 0) {
5409+
ampFDDC += amp;
5410+
nFiredFDDC++;
5411+
}
53875412
}
5413+
// Only overwrite defaults if we have actual signal
5414+
if (nFiredFDDA > 0) values[kAmplitudeFDDA] = ampFDDA;
5415+
if (nFiredFDDC > 0) values[kAmplitudeFDDC] = ampFDDC;
53885416
values[kTimeFDDA] = fdd.timeA();
53895417
values[kTimeFDDC] = fdd.timeC();
53905418
values[kTriggerMaskFDD] = fdd.triggerMask();
5391-
values[kNFiredChannelsFDDA] = fdd.chargeA().size();
5392-
values[kNFiredChannelsFDDC] = fdd.chargeC().size();
5419+
values[kNFiredChannelsFDDA] = nFiredFDDA;
5420+
values[kNFiredChannelsFDDC] = nFiredFDDC;
53935421
}
53945422
}
53955423
}

PWGDQ/TableProducer/tableMaker_withAssoc.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,6 +1706,7 @@ struct TableMaker {
17061706

17071707
// produce the barrel only DQ skimmed data model for UPC Pb-Pb with FIT detector info
17081708
void processPbPbWithFilterBarrelOnlyWithFIT(MyEventsWithMultsAndRapidityGapFilter const& collisions, MyBCs const& bcs, aod::Zdcs& zdcs,
1709+
aod::FT0s const& ft0s, aod::FDDs const& fdds, aod::FV0As const& fv0as,
17091710
MyBarrelTracksWithCov const& tracksBarrel,
17101711
TrackAssoc const& trackAssocs)
17111712
{

0 commit comments

Comments
 (0)