@@ -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-
23462343WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
23472344{
23482345 return WorkflowSpec{
0 commit comments