Skip to content

Commit 2fde7fb

Browse files
authored
[PWGDQ] Simplify the DQ UPC event selection (#13732)
1 parent 0fceac8 commit 2fde7fb

File tree

5 files changed

+58
-282
lines changed

5 files changed

+58
-282
lines changed

PWGDQ/Core/VarManager.h

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,20 +1668,11 @@ void VarManager::FillEvent(T const& event, float* values)
16681668
}
16691669

16701670
if constexpr ((fillMap & CollisionMult) > 0 || (fillMap & ReducedEventExtended) > 0) {
1671-
if constexpr ((fillMap & RapidityGapFilter) > 0) {
1672-
// UPC: Use the FIT signals from the nearest BC with FIT amplitude above threshold
1673-
values[kMultFV0A] = event.newBcMultFV0A();
1674-
values[kMultFT0A] = event.newBcMultFT0A();
1675-
values[kMultFT0C] = event.newBcMultFT0C();
1676-
values[kMultFDDA] = event.newBcMultFDDA();
1677-
values[kMultFDDC] = event.newBcMultFDDC();
1678-
} else {
1679-
values[kMultFV0A] = event.multFV0A();
1680-
values[kMultFT0A] = event.multFT0A();
1681-
values[kMultFT0C] = event.multFT0C();
1682-
values[kMultFDDA] = event.multFDDA();
1683-
values[kMultFDDC] = event.multFDDC();
1684-
}
1671+
values[kMultFV0A] = event.multFV0A();
1672+
values[kMultFT0A] = event.multFT0A();
1673+
values[kMultFT0C] = event.multFT0C();
1674+
values[kMultFDDA] = event.multFDDA();
1675+
values[kMultFDDC] = event.multFDDC();
16851676
values[kMultTPC] = event.multTPC();
16861677
values[kMultFV0C] = event.multFV0C();
16871678
values[kMultZNA] = event.multZNA();

PWGDQ/DataModel/ReducedInfoTables.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,31 +36,15 @@ namespace o2::aod
3636
namespace dqppfilter
3737
{
3838
DECLARE_SOA_COLUMN(EventFilter, eventFilter, uint64_t); //! Bit-field used for the high level event triggering
39-
DECLARE_SOA_COLUMN(NewBcMultFT0A, newBcMultFT0A, float); //! sum of amplitudes on A side of FT0
40-
DECLARE_SOA_COLUMN(NewBcMultFT0C, newBcMultFT0C, float); //! sum of amplitudes on C side of FT0
41-
DECLARE_SOA_COLUMN(NewBcMultFDDA, newBcMultFDDA, float); //! sum of amplitudes on A side of FDD
42-
DECLARE_SOA_COLUMN(NewBcMultFDDC, newBcMultFDDC, float); //! sum of amplitudes on C side of FDD
43-
DECLARE_SOA_COLUMN(NewBcMultFV0A, newBcMultFV0A, float); //! sum of amplitudes on A side of FDD
39+
DECLARE_SOA_COLUMN(NewBcIndex, newBcIndex, uint64_t); //! globalIndex of the new BC determined in filterPbPb
4440
} // namespace dqppfilter
4541

4642
DECLARE_SOA_TABLE(DQEventFilter, "AOD", "EVENTFILTER", //! Store event-level decisions (DQ high level triggers)
4743
dqppfilter::EventFilter);
4844

4945
DECLARE_SOA_TABLE(DQRapidityGapFilter, "AOD", "RAPIDITYGAPFILTER",
5046
dqppfilter::EventFilter,
51-
dqppfilter::NewBcMultFT0A,
52-
dqppfilter::NewBcMultFT0C,
53-
dqppfilter::NewBcMultFDDA,
54-
dqppfilter::NewBcMultFDDC,
55-
dqppfilter::NewBcMultFV0A,
56-
zdc::EnergyCommonZNA,
57-
zdc::EnergyCommonZNC,
58-
zdc::EnergyCommonZPA,
59-
zdc::EnergyCommonZPC,
60-
zdc::TimeZNA,
61-
zdc::TimeZNC,
62-
zdc::TimeZPA,
63-
zdc::TimeZPC);
47+
dqppfilter::NewBcIndex);
6448

6549
namespace reducedevent
6650
{

PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -598,13 +598,6 @@ struct TableMakerMC {
598598
}
599599
(reinterpret_cast<TH2I*>(fStatsList->At(0)))->Fill(1.0, static_cast<float>(o2::aod::evsel::kNsel));
600600

601-
// apply the event filter
602-
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
603-
if (!collision.eventFilter()) {
604-
continue;
605-
}
606-
}
607-
608601
auto bc = collision.template bc_as<BCsWithTimestamps>();
609602
// store the selection decisions
610603
uint64_t tag = static_cast<uint64_t>(0);
@@ -664,20 +657,11 @@ struct TableMakerMC {
664657
multZNC = collision.multZNC();
665658
multTracklets = collision.multTracklets();
666659
multTracksPV = collision.multNTracksPV();
667-
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
668-
// Use the FIT signals from the nearest BC with FIT amplitude above threshold
669-
multFV0A = collision.newBcMultFV0A();
670-
multFT0A = collision.newBcMultFT0A();
671-
multFT0C = collision.newBcMultFT0C();
672-
multFDDA = collision.newBcMultFDDA();
673-
multFDDC = collision.newBcMultFDDC();
674-
} else {
675-
multFV0A = collision.multFV0A();
676-
multFT0A = collision.multFT0A();
677-
multFT0C = collision.multFT0C();
678-
multFDDA = collision.multFDDA();
679-
multFDDC = collision.multFDDC();
680-
}
660+
multFV0A = collision.multFV0A();
661+
multFT0A = collision.multFT0A();
662+
multFT0C = collision.multFT0C();
663+
multFDDA = collision.multFDDA();
664+
multFDDC = collision.multFDDC();
681665
}
682666
if constexpr ((TEventFillMap & VarManager::ObjTypes::CollisionCent) > 0) {
683667
centFT0C = collision.centFT0C();

PWGDQ/TableProducer/tableMaker_withAssoc.cxx

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,10 @@ struct TableMaker {
331331
Partition<MyBarrelTracksWithCovNoTOF> tracksPosWithCovNoTOF = (((aod::track::flags & static_cast<uint32_t>(o2::aod::track::PVContributor)) == static_cast<uint32_t>(o2::aod::track::PVContributor)) && (aod::track::tgl > static_cast<float>(0.05)));
332332
Partition<MyBarrelTracksWithCovNoTOF> tracksNegWithCovNoTOF = (((aod::track::flags & static_cast<uint32_t>(o2::aod::track::PVContributor)) == static_cast<uint32_t>(o2::aod::track::PVContributor)) && (aod::track::tgl < static_cast<float>(-0.05)));
333333

334+
Preslice<MyBarrelTracksWithCov> presliceWithCov = aod::track::collisionId;
335+
Partition<MyBarrelTracksWithCov> tracksPosWithCov = (((aod::track::flags & static_cast<uint32_t>(o2::aod::track::PVContributor)) == static_cast<uint32_t>(o2::aod::track::PVContributor)) && (aod::track::tgl > static_cast<float>(0.05)));
336+
Partition<MyBarrelTracksWithCov> tracksNegWithCov = (((aod::track::flags & static_cast<uint32_t>(o2::aod::track::PVContributor)) == static_cast<uint32_t>(o2::aod::track::PVContributor)) && (aod::track::tgl < static_cast<float>(-0.05)));
337+
334338
struct {
335339
std::map<int32_t, float> oMeanTimeShortA;
336340
std::map<int32_t, float> oMeanTimeShortC;
@@ -788,7 +792,7 @@ struct TableMaker {
788792
}
789793

790794
template <uint32_t TEventFillMap, uint32_t TTrackFillMap, typename TEvents, typename TBCs, typename TZdcs, typename TTrackAssoc, typename TTracks>
791-
void skimCollisions(TEvents const& collisions, TBCs const& /*bcs*/, TZdcs const& /*zdcs*/,
795+
void skimCollisions(TEvents const& collisions, TBCs const& bcs, TZdcs const& /*zdcs*/,
792796
TTrackAssoc const& trackAssocs, TTracks const& tracks)
793797
{
794798
// Skim collisions
@@ -821,7 +825,7 @@ struct TableMaker {
821825
(reinterpret_cast<TH2D*>(fStatsList->At(kStatsEvent)))->Fill(1.0, static_cast<float>(o2::aod::evsel::kNsel));
822826

823827
// apply the event filter computed by filter-PP
824-
if constexpr ((TEventFillMap & VarManager::ObjTypes::EventFilter) > 0 || (TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
828+
if constexpr ((TEventFillMap & VarManager::ObjTypes::EventFilter) > 0) {
825829
if (!collision.eventFilter()) {
826830
continue;
827831
}
@@ -836,8 +840,8 @@ struct TableMaker {
836840
if (bcEvSel.globalIndex() != bc.globalIndex()) {
837841
tag |= (static_cast<uint64_t>(1) << 0);
838842
}
839-
// Put the 8 first bits of the event filter in the last 8 bits of the tag
840-
if constexpr ((TEventFillMap & VarManager::ObjTypes::EventFilter) > 0 || (TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
843+
// Put the 8 first bits of the rapidity gap filter in the last 8 bits of the tag
844+
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
841845
tag |= (collision.eventFilter() << 56);
842846
}
843847

@@ -846,8 +850,12 @@ struct TableMaker {
846850
VarManager::FillEvent<TEventFillMap>(collision); // extract event information and place it in the fValues array
847851
if constexpr ((TEventFillMap & VarManager::ObjTypes::Zdc) > 0) {
848852
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
849-
// Collision table already has ZDC info
850-
VarManager::FillZDC(collision);
853+
// The DQRapidityGapFilter contains the index of the bc we want to get ZDC info from
854+
auto newbc = bcs.rawIteratorAt(collision.newBcIndex());
855+
if (newbc.has_zdc()) {
856+
auto newbc_zdc = newbc.zdc();
857+
VarManager::FillZDC(newbc_zdc);
858+
}
851859
} else if (bcEvSel.has_zdc()) {
852860
auto bc_zdc = bcEvSel.zdc();
853861
VarManager::FillZDC(bc_zdc);
@@ -926,20 +934,11 @@ struct TableMaker {
926934
multZNC = collision.multZNC();
927935
multTracklets = collision.multTracklets();
928936
multTracksPV = collision.multNTracksPV();
929-
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
930-
// Use the FIT signals from the nearest BC with FIT amplitude above threshold
931-
multFV0A = collision.newBcMultFV0A();
932-
multFT0A = collision.newBcMultFT0A();
933-
multFT0C = collision.newBcMultFT0C();
934-
multFDDA = collision.newBcMultFDDA();
935-
multFDDC = collision.newBcMultFDDC();
936-
} else {
937-
multFV0A = collision.multFV0A();
938-
multFT0A = collision.multFT0A();
939-
multFT0C = collision.multFT0C();
940-
multFDDA = collision.multFDDA();
941-
multFDDC = collision.multFDDC();
942-
}
937+
multFV0A = collision.multFV0A();
938+
multFT0A = collision.multFT0A();
939+
multFT0C = collision.multFT0C();
940+
multFDDA = collision.multFDDA();
941+
multFDDC = collision.multFDDC();
943942
}
944943
if constexpr ((TEventFillMap & VarManager::ObjTypes::CollisionCent) > 0) {
945944
centFT0C = collision.centFT0C();
@@ -952,9 +951,15 @@ struct TableMaker {
952951
eventInfo(collision.globalIndex());
953952
if constexpr ((TEventFillMap & VarManager::ObjTypes::Zdc) > 0) {
954953
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
955-
// ZDC information is already in the DQRapidityGapFilter
956-
zdc(collision.energyCommonZNA(), collision.energyCommonZNC(), collision.energyCommonZPA(), collision.energyCommonZPC(),
957-
collision.timeZNA(), collision.timeZNC(), collision.timeZPA(), collision.timeZPC());
954+
// The DQRapidityGapFilter contains the index of the bc we want to get ZDC info from
955+
auto newbc = bcs.rawIteratorAt(collision.newBcIndex());
956+
if (newbc.has_zdc()) {
957+
auto newbc_zdc = newbc.zdc();
958+
zdc(newbc_zdc.energyCommonZNA(), newbc_zdc.energyCommonZNC(), newbc_zdc.energyCommonZPA(), newbc_zdc.energyCommonZPC(),
959+
newbc_zdc.timeZNA(), newbc_zdc.timeZNC(), newbc_zdc.timeZPA(), newbc_zdc.timeZPC());
960+
} else {
961+
zdc(-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0);
962+
}
958963
} else if (bcEvSel.has_zdc()) {
959964
auto bc_zdc = bcEvSel.zdc();
960965
zdc(bc_zdc.energyCommonZNA(), bc_zdc.energyCommonZNC(), bc_zdc.energyCommonZPA(), bc_zdc.energyCommonZPC(),
@@ -1650,6 +1655,7 @@ struct TableMaker {
16501655
MyBarrelTracksWithCov const& tracksBarrel,
16511656
TrackAssoc const& trackAssocs)
16521657
{
1658+
computeOccupancyEstimators(collisions, tracksPosWithCov, tracksNegWithCov, presliceWithCov, bcs);
16531659
fullSkimming<gkEventFillMapWithMultsRapidityGapFilterZdc, gkTrackFillMapWithCov, 0u, 0u>(collisions, bcs, zdcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr);
16541660
}
16551661

0 commit comments

Comments
 (0)