Skip to content

Commit 03a25b6

Browse files
[PWGCF] Lambda spin analysis (#18159)
1 parent dd11b07 commit 03a25b6

1 file changed

Lines changed: 21 additions & 24 deletions

File tree

‎PWGCF/TwoParticleCorrelations/Tasks/lambdaOrAntiLambdaProducerWithSpin.cxx‎

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1520,6 +1520,7 @@ struct LambdaAntiLambdaPairAnalysis {
15201520

15211521
// Mixed-Event Compatablity variables
15221522
Configurable<float> mixedEventMaxDeltaMultiplicity{"mixedEventMaxDeltaMultiplicity", 10.f, "Maximum multiplicity difference between mixed events"};
1523+
Configurable<int> maxMixedEvents{"maxMixedEvents", 5, "Maximum multiplicity-compatible collision combinations with selected candidates in both collisions per dataframe"};
15231524

15241525
// Short-range pairs
15251526
Configurable<float> sameEventShortRangePairMaxDeltaRapidity{"sameEventShortRangePairMaxDeltaRapidity", 0.5f, "ShortRangePai Maximum absolute rapidity difference for same-event pairs"};
@@ -2258,7 +2259,7 @@ struct LambdaAntiLambdaPairAnalysis {
22582259
Preslice<FilteredLambdas> lambdasPerCollision = aod::lambdahyperon::collisionId;
22592260
Preslice<FilteredAntiLambdas> antiLambdasPerCollision = aod::lambdahyperon::collisionId;
22602261

2261-
void processData(CollisionsWithMultiplicity const& collisions, FilteredLambdas const& lambdas, FilteredAntiLambdas const& antiLambdas)
2262+
void processSameEventData(CollisionsWithMultiplicity const& collisions, FilteredLambdas const& lambdas, FilteredAntiLambdas const& antiLambdas)
22622263
{
22632264
static constexpr int MinimumSameSpeciesCandidates = 2;
22642265

@@ -2282,15 +2283,20 @@ struct LambdaAntiLambdaPairAnalysis {
22822283
fillAntiLambdaAntiLambdaSameEvent(antiLambdasThisCollision);
22832284
}
22842285
}
2286+
}
22852287

2286-
// ============================================================
2287-
// Mixed events
2288-
// ============================================================
2288+
void processMixedEventData(CollisionsWithMultiplicity const& collisions, FilteredLambdas const& lambdas, FilteredAntiLambdas const& antiLambdas)
2289+
{
2290+
int mixedEventCounter = 0;
22892291

22902292
for (auto const& [collision1, collision2] : combinations(CombinationsStrictlyUpperIndexPolicy(collisions, collisions))) {
22912293

22922294
const float deltaMultiplicity = std::abs(static_cast<float>(collision1.multNTracksPV()) - static_cast<float>(collision2.multNTracksPV()));
22932295

2296+
if (mixedEventCounter >= maxMixedEvents) {
2297+
break;
2298+
}
2299+
22942300
if (deltaMultiplicity > mixedEventMaxDeltaMultiplicity) {
22952301
continue;
22962302
}
@@ -2301,6 +2307,12 @@ struct LambdaAntiLambdaPairAnalysis {
23012307
const auto antiLambdas1 = antiLambdas.sliceBy(antiLambdasPerCollision, collision1.globalIndex());
23022308
const auto antiLambdas2 = antiLambdas.sliceBy(antiLambdasPerCollision, collision2.globalIndex());
23032309

2310+
// Empty collisions must not consume the mixing allowance.
2311+
if ((lambdas1.size() == 0 && antiLambdas1.size() == 0) ||
2312+
(lambdas2.size() == 0 && antiLambdas2.size() == 0)) {
2313+
continue;
2314+
}
2315+
23042316
// Lambda–anti-Lambda requires at least one of each.
23052317
if (lambdas1.size() > 0 && antiLambdas2.size() > 0) {
23062318
fillLambdaAntiLambdaMixedEvent(lambdas1, antiLambdas2);
@@ -2316,33 +2328,18 @@ struct LambdaAntiLambdaPairAnalysis {
23162328
if (antiLambdas1.size() > 0 && antiLambdas2.size() > 0) {
23172329
fillAntiLambdaAntiLambdaMixedEvent(antiLambdas1, antiLambdas2);
23182330
}
2331+
2332+
++mixedEventCounter;
23192333
}
23202334
}
2335+
23212336
void processDummy(aod::Collisions const&) {}
23222337

2323-
PROCESS_SWITCH(LambdaAntiLambdaPairAnalysis, processData, "Run candidate production", true);
2338+
PROCESS_SWITCH(LambdaAntiLambdaPairAnalysis, processSameEventData, "Run same-event pair analysis", true);
2339+
PROCESS_SWITCH(LambdaAntiLambdaPairAnalysis, processMixedEventData, "Run mixed-event pair analysis", false);
23242340
PROCESS_SWITCH(LambdaAntiLambdaPairAnalysis, processDummy, "Skip candidate production", false);
23252341
};
23262342

2327-
/*WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
2328-
{
2329-
const bool isMC = cfgc.options().get<bool>("isMC");
2330-
2331-
WorkflowSpec workflow;
2332-
2333-
if (isMC) {
2334-
workflow.push_back(adaptAnalysisTask<LambdaAntiLambdaMcRecoTableProducer>(cfgc));
2335-
workflow.push_back(adaptAnalysisTask<LambdaAntiLambdaEfficiencyPlots>(cfgc));
2336-
workflow.push_back(adaptAnalysisTask<LambdaAntiLambdaSelectionCutFlow>(cfgc));
2337-
} else {
2338-
workflow.push_back(adaptAnalysisTask<LambdaOrAntiLambdaProducerWithSpin>(cfgc));
2339-
workflow.push_back(adaptAnalysisTask<LambdaAntiLambdaSelector>(cfgc));
2340-
workflow.push_back(adaptAnalysisTask<LambdaAntiLambdaPairAnalysis>(cfgc));
2341-
}
2342-
2343-
return workflow;
2344-
}*/
2345-
23462343
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
23472344
{
23482345
return WorkflowSpec{

0 commit comments

Comments
 (0)