Skip to content

Commit 94f0396

Browse files
[PWGLF] Add more granularity to the number of selected collisions in StraSelections (#17159)
Co-authored-by: ALICE Builder <alibuild@users.noreply.github.com>
1 parent a7bddd7 commit 94f0396

3 files changed

Lines changed: 56 additions & 8 deletions

File tree

PWGLF/DataModel/LFStrangenessTables.h

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,32 @@ DECLARE_SOA_TABLE(StraOrigins, "AOD", "STRAORIGIN", //! Table which contains the
4747
// for keeping track of the number of selected collisions
4848
namespace straselections
4949
{
50+
// Event selection criteria
51+
enum EventSelectionFlags {
52+
kIsTriggerTVX = 0, // FT0 vertex (acceptable FT0C-FT0A time difference) at trigger level
53+
kNoITSROFrameBorder, // bunch crossing is far from ITS RO Frame border
54+
kNoTimeFrameBorder, // bunch crossing is far from Time Frame borders
55+
kIsGoodZvtxAcceptance, // Zvtx within detector acceptance
56+
kNoSameBunchPileup, // reject collisions in case of pileup with another collision in the same foundBC
57+
kIsGoodRCT, // Good RCT
58+
kNsel // counter
59+
};
60+
5061
DECLARE_SOA_COLUMN(TotalNbrOfCollisions, totalNbrOfCollisions, int); //! total number of analysed collisions
5162
DECLARE_SOA_COLUMN(TotalNbrOfSelCollisions, totalNbrOfSelCollisions, int); //! total number of selected collisions
63+
DECLARE_SOA_COLUMN(TotalIsTriggerTVXCollisions, totalIsTriggerTVXCollisions, int); //! N selected collisions after applying IsTriggerTVX
64+
DECLARE_SOA_COLUMN(TotalNoITSROFBorderCollisions, totalNoITSROFBorderCollisions, int); //! N selected collisions after applying IsTriggerTVX, NoITSROF
65+
DECLARE_SOA_COLUMN(TotalNoTFBorderCollisions, totalNoTFBorderCollisions, int); //! N selected collisions after applying IsTriggerTVX, NoITSROF, NoTF
66+
DECLARE_SOA_COLUMN(TotalIsGoodZvtxCollisions, totalIsGoodZvtxCollisions, int); //! N selected collisions after applying IsTriggerTVX, NoITSROF, NoTF, |Zvtx| < X cm
67+
DECLARE_SOA_COLUMN(TotalNoSBPileupCollisions, totalNoSBPileupCollisions, int); //! N selected collisions after applying IsTriggerTVX, NoITSROF, NoTF, |Zvtx| < X cm, NoSameBunchPileup
68+
DECLARE_SOA_COLUMN(TotalIsGoodRCTCollisions, totalIsGoodRCTCollisions, int); //! N selected collisions after applying IsTriggerTVX, NoITSROF, NoTF, |Zvtx| < X cm, NoSameBunchPileup, Good RCT
5269
} // namespace straselections
5370

5471
DECLARE_SOA_TABLE(StraSelections, "AOD", "STRASELECTIONS", //! keep track of the number of analysed collisions in this DF
55-
o2::soa::Index<>, straselections::TotalNbrOfCollisions, straselections::TotalNbrOfSelCollisions);
72+
o2::soa::Index<>, straselections::TotalNbrOfCollisions, straselections::TotalNbrOfSelCollisions,
73+
straselections::TotalIsTriggerTVXCollisions, straselections::TotalNoITSROFBorderCollisions,
74+
straselections::TotalNoTFBorderCollisions, straselections::TotalIsGoodZvtxCollisions,
75+
straselections::TotalNoSBPileupCollisions, straselections::TotalIsGoodRCTCollisions);
5676

5777
namespace stracollision
5878
{

PWGLF/TableProducer/Strangeness/strangederivedbuilder.cxx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -287,32 +287,38 @@ struct strangederivedbuilder {
287287
}
288288

289289
template <typename TCollision>
290-
bool isCollisionAccepted(TCollision collision)
290+
bool isCollisionAccepted(TCollision collision, std::array<int, o2::aod::straselections::kNsel>& nSelected)
291291
// check whether the collision passes our collision selections
292292
{
293293
if (requireTriggerTVX && !collision.selection_bit(aod::evsel::kIsTriggerTVX)) {
294294
return false;
295295
}
296+
nSelected[o2::aod::straselections::kIsTriggerTVX]++;
296297

297298
if (rejectITSROFBorder && !collision.selection_bit(o2::aod::evsel::kNoITSROFrameBorder)) {
298299
return false;
299300
}
301+
nSelected[o2::aod::straselections::kNoITSROFrameBorder]++;
300302

301303
if (rejectTFBorder && !collision.selection_bit(o2::aod::evsel::kNoTimeFrameBorder)) {
302304
return false;
303305
}
306+
nSelected[o2::aod::straselections::kNoTimeFrameBorder]++;
304307

305308
if (std::abs(collision.posZ()) > maxZVtxPosition) {
306309
return false;
307310
}
311+
nSelected[o2::aod::straselections::kIsGoodZvtxAcceptance]++;
308312

309313
if (rejectSameBunchPileup && !collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup)) {
310314
return false;
311315
}
316+
nSelected[o2::aod::straselections::kNoSameBunchPileup]++;
312317

313318
if (!cfgApplyRCTrequirement && !rctFlagsChecker(collision)) {
314319
return false;
315320
}
321+
nSelected[o2::aod::straselections::kIsGoodRCT]++;
316322

317323
return true;
318324
}
@@ -559,6 +565,7 @@ struct strangederivedbuilder {
559565

560566
int totalNbrCollisions = collisions.size();
561567
int totalNbrSelectedCollisions = 0;
568+
std::array<int, o2::aod::straselections::kNsel> totalNbrCollisionsPerSelection = {};
562569

563570
// +-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+
564571
for (const auto& collision : collisions) {
@@ -639,7 +646,7 @@ struct strangederivedbuilder {
639646
for (const auto& track : TrackTable_thisColl)
640647
TrackCollIndices[track.globalIndex()] = bc.globalBC();
641648

642-
if (fillOnlySelectedCollisions && !isCollisionAccepted(collision)) {
649+
if (fillOnlySelectedCollisions && !isCollisionAccepted(collision, totalNbrCollisionsPerSelection)) {
643650
continue;
644651
}
645652

@@ -771,7 +778,13 @@ struct strangederivedbuilder {
771778
for (const auto& casc : TraCascades) {
772779
products.tracasccollref(TraCascadeCollIndices[casc.globalIndex()]);
773780
}
774-
products.straSelection(totalNbrCollisions, totalNbrSelectedCollisions);
781+
products.straSelection(totalNbrCollisions, totalNbrSelectedCollisions,
782+
totalNbrCollisionsPerSelection[o2::aod::straselections::kIsTriggerTVX],
783+
totalNbrCollisionsPerSelection[o2::aod::straselections::kNoITSROFrameBorder],
784+
totalNbrCollisionsPerSelection[o2::aod::straselections::kNoTimeFrameBorder],
785+
totalNbrCollisionsPerSelection[o2::aod::straselections::kIsGoodZvtxAcceptance],
786+
totalNbrCollisionsPerSelection[o2::aod::straselections::kNoSameBunchPileup],
787+
totalNbrCollisionsPerSelection[o2::aod::straselections::kIsGoodRCT]);
775788
}
776789

777790
// helper function to estimate collision time
@@ -781,6 +794,8 @@ struct strangederivedbuilder {
781794
std::vector<double> collisionEventTime(collisions.size(), 0.0);
782795
std::vector<double> collisionEventTimeErr(collisions.size(), 0.0);
783796
std::vector<int> collisionNtracks(collisions.size(), 0);
797+
798+
std::array<int, o2::aod::straselections::kNsel> totalNbrCollisionsPerSelection = {};
784799
for (const auto& track : tracks) {
785800
if (track.hasTOF() && track.collisionId() >= 0) {
786801
collisionEventTime[track.collisionId()] += track.tofEvTime();
@@ -797,7 +812,7 @@ struct strangederivedbuilder {
797812
collisionEventTime[collision.globalIndex()] = -1e+6; // undefined
798813
collisionEventTimeErr[collision.globalIndex()] = -1e-6; // undefined
799814
}
800-
if (fillOnlySelectedCollisions && !isCollisionAccepted(collision)) {
815+
if (fillOnlySelectedCollisions && !isCollisionAccepted(collision, totalNbrCollisionsPerSelection)) {
801816
continue;
802817
}
803818
histos.fill(HIST("h2dCollisionTimesVsNTracks"), collisionNtracks[collision.globalIndex()], collisionEventTime[collision.globalIndex()]);

PWGLF/Tasks/Strangeness/derivedlambdakzeroanalysis.cxx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -673,9 +673,15 @@ struct derivedlambdakzeroanalysis {
673673

674674
//
675675
if (doprocessAnalysedCollisions) {
676-
histos.add("hEventPreSelection", "hEventPreSelection", kTH1D, {{2, -0.5f, +1.5f}});
676+
histos.add("hEventPreSelection", "hEventPreSelection", kTH1D, {{8, -0.5f, +7.5f}});
677677
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(1, "All collisions");
678-
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(2, "Preselected collisions");
678+
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(2, "kIsTriggerTVX");
679+
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(3, "kNoITSROFrameBorder");
680+
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(4, "kNoTimeFrameBorder");
681+
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(5, "posZ cut");
682+
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(6, "kNoSameBunchPileup");
683+
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(7, "RCT flags");
684+
histos.get<TH1>(HIST("hEventPreSelection"))->GetXaxis()->SetBinLabel(8, "Preselected collisions");
679685
}
680686

681687
// Event Counters
@@ -3166,8 +3172,15 @@ struct derivedlambdakzeroanalysis {
31663172
void processAnalysedCollisions(aod::StraSelections const& straSelections)
31673173
{
31683174
for (auto const& straSelection : straSelections) {
3175+
// Event selection criteria
31693176
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(1, straSelection.totalNbrOfCollisions() /* all collisions */);
3170-
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(2, straSelection.totalNbrOfSelCollisions() /* preselected collisions */);
3177+
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(2, straSelection.totalIsTriggerTVXCollisions() /* preselected IsTriggerTVX collisions */);
3178+
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(3, straSelection.totalNoITSROFBorderCollisions() /* + preselected NoITSROF collisions */);
3179+
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(4, straSelection.totalNoTFBorderCollisions() /* + preselected NoTF collisions */);
3180+
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(5, straSelection.totalIsGoodZvtxCollisions() /* + preselected |Zvtx| < X cm collisions */);
3181+
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(6, straSelection.totalNoSBPileupCollisions() /* + preselected NoSameBunchPileup collisions */);
3182+
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(7, straSelection.totalIsGoodRCTCollisions() /* + preselected Good RCT collisions */);
3183+
histos.get<TH1>(HIST("hEventPreSelection"))->AddBinContent(8, straSelection.totalNbrOfSelCollisions() /* total number of preselected collisions */);
31713184
}
31723185
}
31733186

0 commit comments

Comments
 (0)