Skip to content

Commit e1a65c6

Browse files
committed
add HM triggers to CF table producer
1 parent cd56171 commit e1a65c6

2 files changed

Lines changed: 32 additions & 7 deletions

File tree

‎PWGCF/TableProducer/CMakeLists.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
o2physics_add_dpl_workflow(filter-correlations
1313
SOURCES filterCorrelations.cxx
14-
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGCFCore
14+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGCFCore O2Physics::EventFilteringUtils
1515
COMPONENT_NAME Analysis)
1616

1717
o2physics_add_dpl_workflow(filter-correlations-2prong

‎PWGCF/TableProducer/filterCorrelations.cxx‎

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "Common/CCDB/EventSelectionParams.h"
1616
#include "Common/CCDB/TriggerAliases.h"
1717
#include "Common/Core/TableHelper.h"
18+
#include "Common/Core/Zorro.h"
1819
#include "Common/DataModel/Centrality.h"
1920
#include "Common/DataModel/EventSelection.h"
2021
#include "Common/DataModel/Multiplicity.h"
@@ -92,7 +93,7 @@ struct FilterCF {
9293
O2_DEFINE_CONFIGURABLE(cfgCutMCPt, float, 0.5f, "Minimal pT for particles");
9394
O2_DEFINE_CONFIGURABLE(cfgCutMCEta, float, 0.8f, "Eta range for particles");
9495
O2_DEFINE_CONFIGURABLE(cfgVerbosity, int, 1, "Verbosity level (0 = major, 1 = per collision)");
95-
O2_DEFINE_CONFIGURABLE(cfgTrigger, int, 7, "Trigger choice: (0 = none, 7 = sel7, 8 = sel8, 9 = sel8 + kNoSameBunchPileup + kIsGoodZvtxFT0vsPV, 10 = sel8 before April, 2024, 11 = sel8 for MC, 12 = sel8 with low occupancy cut, 13 = sel8 + kNoSameBunchPileup + kIsGoodITSLayersAll -- for OO/NeNe) ");
96+
O2_DEFINE_CONFIGURABLE(cfgTrigger, int, 7, "Trigger choice: (0 = none, 7 = sel7, 8 = sel8, 9 = sel8 + kNoSameBunchPileup + kIsGoodZvtxFT0vsPV, 10 = sel8 before April, 2024, 11 = sel8 for MC, 12 = sel8 with low occupancy cut, 13 = sel8 + kNoSameBunchPileup + kIsGoodITSLayersAll -- for OO/NeNe, 14 = fHighTrackMult (pp), 15 = fHighMultFv0 (pp), 16 = fHighTrackMult || fHighMultFv0 (pp))");
9697
O2_DEFINE_CONFIGURABLE(cfgMinOcc, int, 0, "minimum occupancy selection");
9798
O2_DEFINE_CONFIGURABLE(cfgMaxOcc, int, 3000, "maximum occupancy selection");
9899
O2_DEFINE_CONFIGURABLE(cfgCollisionFlags, uint16_t, aod::collision::CollisionFlagsRun2::Run2VertexerTracks, "Request collision flags if non-zero (0 = off, 1 = Run2VertexerTracks)");
@@ -135,6 +136,9 @@ struct FilterCF {
135136

136137
HistogramRegistry registrytrackQA{"TrackQA", {}, OutputObjHandlingPolicy::AnalysisObject, true, true};
137138

139+
Zorro zorro;
140+
int zorroRun = 0;
141+
138142
Produces<aod::CFCollisions> outputCollisions;
139143
Produces<aod::CFCollisionsExtra> outputCollisionsExtra;
140144
Produces<aod::CFTracks> outputTracks;
@@ -194,12 +198,13 @@ struct FilterCF {
194198
return;
195199
}
196200
localMultiplicityEfficiency.reset(dynamic_cast<THn*>(efficiency->Clone()));
197-
} else {
198-
ccdb->setURL("http://alice-ccdb.cern.ch");
199-
ccdb->setCaching(true);
200-
ccdb->setLocalObjectValidityChecking();
201201
}
202202
}
203+
if ((cfgTrigger >= 14 && cfgTrigger <= 16) || (!cfgEfficiencyMultiplicity.value.empty() && cfgLocalEfficiency == 0)) { // o2-linter: disable=magic-number (documented legacy trigger-selection code)
204+
ccdb->setURL("http://alice-ccdb.cern.ch");
205+
ccdb->setCaching(true);
206+
ccdb->setLocalObjectValidityChecking();
207+
}
203208
if (doprocessTrackQA) {
204209
registrytrackQA.add("zvtx", "Z Vertex position; posz (cm); Events", HistType::kTH1F, {{100, -12, 12}});
205210
registrytrackQA.add("eta", "eta distribution; eta; arb. units", HistType::kTH1F, {{100, -2, 2}});
@@ -249,6 +254,26 @@ struct FilterCF {
249254
if (cfgTrigger == 13) { // relevant for pO/OO/NeNe, recommended by Physics Board on 27.01.2026; o2-linter: disable=magic-number (documented legacy trigger-selection code)
250255
return isMultSelected && collision.sel8() && collision.selection_bit(aod::evsel::kNoSameBunchPileup) && collision.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV);
251256
}
257+
258+
// Zorro-based trigger selection
259+
if (cfgTrigger >= 14 && cfgTrigger <= 16) { // o2-linter: disable=magic-number (documented legacy trigger-selection code)
260+
std::string zorroMask;
261+
if (cfgTrigger == 14) { // High-multiplicity pp trigger based on tracks (PWGMM/multFilter.cxx); o2-linter: disable=magic-number (documented legacy trigger-selection code)
262+
zorroMask = "fHighTrackMult";
263+
}
264+
if (cfgTrigger == 15) { // High-multiplicity pp trigger based on FV0 amplitude (PWGMM/multFilter.cxx); o2-linter: disable=magic-number (documented legacy trigger-selection code)
265+
zorroMask = "fHighMultFv0";
266+
}
267+
if (cfgTrigger == 16) { // High-multiplicity pp trigger based on tracks or FV0 amplitude (PWGMM/multFilter.cxx); o2-linter: disable=magic-number (documented legacy trigger-selection code)
268+
zorroMask = "fHighTrackMult,fHighMultFv0";
269+
}
270+
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
271+
if (zorroRun != bc.runNumber()) {
272+
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), zorroMask);
273+
zorroRun = bc.runNumber();
274+
}
275+
return isMultSelected && zorro.isSelected(bc.globalBC(), 0); // Set BC threshold to zero to not admit nearby low-multiplicity collisions
276+
}
252277
return false;
253278
}
254279

@@ -488,7 +513,7 @@ struct FilterCF {
488513
}
489514
PROCESS_SWITCH(FilterCF, processDataMults, "Process data with multiplicity sets", false);
490515

491-
void processTrackQA(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CFMultiplicities>>::iterator const& collision, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA>> const& tracks)
516+
void processTrackQA(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CFMultiplicities>>::iterator const& collision, aod::BCsWithTimestamps const&, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA>> const& tracks)
492517
{
493518
if (!keepCollision(collision)) {
494519
return;

0 commit comments

Comments
 (0)