@@ -82,6 +82,7 @@ struct f1protoncorrelation {
8282 Configurable<int > nRot{" nRot" , 4 , " Number of rotational bkg" };
8383 // Event Mixing
8484 Configurable<int > nEvtMixing{" nEvtMixing" , 10 , " Number of events to mix" };
85+ Configurable<int > nEvtMixingBkg{" nEvtMixingBkg" , 5 , " Number of events to mix for background reconstruction" };
8586 ConfigurableAxis CfgVtxBins{" CfgVtxBins" , {10 , -10 , 10 }, " Mixing bins - z-vertex" };
8687 ConfigurableAxis CfgMultBins{" CfgMultBins" , {VARIABLE_WIDTH, 0.0 , 40.0 , 80.0 , 500.0 }, " Mixing bins - number of contributor" };
8788
@@ -108,10 +109,11 @@ struct f1protoncorrelation {
108109 const AxisSpec thnAxisCharge{configThnAxisCharge, " Charge" };
109110
110111 // register histograms
111- histos.add (" hPhaseSpaceProtonKaonSame" , " hPhaseSpaceProtonKaonSame" , kTH2F , {{200 , -2 .0f , 2 .0f }, {360 , -4.0 * TMath::Pi (), 4.0 * TMath::Pi ()}});
112- histos.add (" hPhaseSpaceProtonPionSame" , " hPhaseSpaceProtonPionSame" , kTH2F , {{200 , -2 .0f , 2 .0f }, {360 , -4.0 * TMath::Pi (), 4.0 * TMath::Pi ()}});
113- histos.add (" hPhaseSpaceProtonKaonMix" , " hPhaseSpaceProtonKaonMix" , kTH2F , {{200 , -2 .0f , 2 .0f }, {360 , -4.0 * TMath::Pi (), 4.0 * TMath::Pi ()}});
114- histos.add (" hPhaseSpaceProtonPionMix" , " hPhaseSpaceProtonPionMix" , kTH2F , {{200 , -2 .0f , 2 .0f }, {360 , -4.0 * TMath::Pi (), 4.0 * TMath::Pi ()}});
112+ histos.add (" hPhaseSpaceProtonKaonSame" , " hPhaseSpaceProtonKaonSame" , kTH3F , {{40 , -2 .0f , 2 .0f }, {180 , -2.0 * TMath::Pi (), 2.0 * TMath::Pi ()}, {100 , 0.0 , 1.0 }});
113+ histos.add (" hPhaseSpaceProtonPionSame" , " hPhaseSpaceProtonPionSame" , kTH3F , {{40 , -2 .0f , 2 .0f }, {180 , -2.0 * TMath::Pi (), 2.0 * TMath::Pi ()}, {100 , 0.0 , 1.0 }});
114+ histos.add (" hPhaseSpaceProtonKaonMix" , " hPhaseSpaceProtonKaonMix" , kTH3F , {{40 , -2 .0f , 2 .0f }, {180 , -2.0 * TMath::Pi (), 2.0 * TMath::Pi ()}, {100 , 0.0 , 1.0 }});
115+ histos.add (" hPhaseSpaceProtonPionMix" , " hPhaseSpaceProtonPionMix" , kTH3F , {{40 , -2 .0f , 2 .0f }, {180 , -2.0 * TMath::Pi (), 2.0 * TMath::Pi ()}, {100 , 0.0 , 1.0 }});
116+
115117 histos.add (" hNsigmaProtonTPC" , " Nsigma Proton TPC distribution" , kTH2F , {{100 , -5 .0f , 5 .0f }, {100 , 0 .0f , 10 .0f }});
116118 histos.add (" hNsigmaKaonTPC" , " Nsigma Kaon TPC distribution" , kTH2F , {{100 , -5 .0f , 5 .0f }, {100 , 0 .0f , 10 .0f }});
117119 histos.add (" hNsigmaPionTPC" , " Nsigma Pion TPC distribution" , kTH2F , {{100 , -5 .0f , 5 .0f }, {100 , 0 .0f , 10 .0f }});
@@ -126,6 +128,9 @@ struct f1protoncorrelation {
126128 histos.add (" h2MixEventInvariantMassLike_mass" , " Like Sign Invariant mass of f1 mix event" , kTHnSparseF , {thnAxisKstar, thnAxisPt, thnAxisInvMass, thnAxisCharge});
127129 histos.add (" h2MixEventInvariantMassRot_mass" , " Rotational Sign Invariant mass of f1 mix event" , kTHnSparseF , {thnAxisKstar, thnAxisPt, thnAxisInvMass, thnAxisCharge});
128130
131+ histos.add (" h2MixEventInvariantMassUnlike_mass_SEFP" , " Unlike-sign invariant mass of f1 mix event (SE-F1P: π mixed, p same event)" , kTHnSparseF , {thnAxisKstar, thnAxisPt, thnAxisInvMass, thnAxisCharge});
132+ histos.add (" h2MixEventInvariantMassUnlike_mass_DEFP" , " Unlike-sign invariant mass of f1 mix event (DE-F1P: π + p mixed)" , kTHnSparseF , {thnAxisKstar, thnAxisPt, thnAxisInvMass, thnAxisCharge});
133+
129134 if (fillSparse) {
130135 histos.add (" SEMassUnlike" , " SEMassUnlike" , HistType::kTHnSparseF , {thnAxisInvMass, thnAxisPt, thnAxisPtProton, thnAxisKstar, thnAxisNsigma, thnAxisCharge});
131136 histos.add (" SEMassLike" , " SEMassLike" , HistType::kTHnSparseF , {thnAxisInvMass, thnAxisPt, thnAxisPtProton, thnAxisKstar, thnAxisNsigma, thnAxisCharge});
@@ -311,8 +316,8 @@ struct f1protoncorrelation {
311316 pionCharge = 1 ;
312317 kaonCharge = -1 ;
313318 }
314- histos.fill (HIST (" hPhaseSpaceProtonKaonSame" ), Proton.Eta () - Kaon.Eta (), PhiAtSpecificRadiiTPC (Proton, Kaon, protontrack.protonCharge (), kaonCharge, bz, bz)); // Phase Space Proton kaon
315- histos.fill (HIST (" hPhaseSpaceProtonPionSame" ), Proton.Eta () - Kaon.Eta (), PhiAtSpecificRadiiTPC (Proton, Pion, protontrack.protonCharge (), pionCharge, bz, bz)); // Phase Space Proton Pion
319+ histos.fill (HIST (" hPhaseSpaceProtonKaonSame" ), Proton.Eta () - Kaon.Eta (), PhiAtSpecificRadiiTPC (Proton, Kaon, protontrack.protonCharge (), kaonCharge, bz, bz), relative_momentum ); // Phase Space Proton kaon
320+ histos.fill (HIST (" hPhaseSpaceProtonPionSame" ), Proton.Eta () - Kaon.Eta (), PhiAtSpecificRadiiTPC (Proton, Pion, protontrack.protonCharge (), pionCharge, bz, bz), relative_momentum ); // Phase Space Proton Pion
316321 histos.fill (HIST (" h2SameEventInvariantMassUnlike_mass" ), relative_momentum, F1.Pt (), F1.M (), pairCharge); // F1 sign = 1 unlike, F1 sign = -1 like
317322 if (fillSparse) {
318323 histos.fill (HIST (" SEMassUnlike" ), F1.M (), F1.Pt (), Proton.Pt (), relative_momentum, combinedTPC, pairCharge);
@@ -354,113 +359,163 @@ struct f1protoncorrelation {
354359 BinningType colBinning{{CfgVtxBins, CfgMultBins}, true };
355360 Preslice<aod::F1Tracks> tracksPerCollisionPresliceF1 = aod::f1protondaughter::redF1PEventId;
356361 Preslice<aod::ProtonTracks> tracksPerCollisionPresliceP = aod::f1protondaughter::redF1PEventId;
357- void processME (aod::RedF1PEvents& collisions, aod::F1Tracks& f1tracks, aod::ProtonTracks& protontracks)
362+ void processME (aod::RedF1PEvents& collisions,
363+ aod::F1Tracks& f1tracks,
364+ aod::ProtonTracks& protontracks)
358365 {
359- for (auto & [collision1, collision2] : selfCombinations (colBinning, nEvtMixing, - 1 , collisions, collisions)) {
360- // LOGF(info, "Mixed event collisions: (%d, %d)", collision1.index(), collision2.index());
361- if (collision1.index () == collision2.index ()) {
366+ for (auto const & [collision1, collision2] :
367+ selfCombinations (colBinning, nEvtMixingBkg, - 1 , collisions, collisions)) {
368+ if (collision1.index () == collision2.index ())
362369 continue ;
363- }
364- if (f1tracks.size () == 0 || protontracks.size () == 0 ) {
365- continue ;
366- }
367- auto groupF1 = f1tracks.sliceBy (tracksPerCollisionPresliceF1, collision1.globalIndex ());
368- auto groupProton = protontracks.sliceBy (tracksPerCollisionPresliceP, collision2.globalIndex ());
369- // auto groupF1 = f1tracks.sliceByCached(aod::f1protondaughter::redF1PEventId, collision1.globalIndex(), cache);
370- // auto groupProton = protontracks.sliceByCached(aod::f1protondaughter::redF1PEventId, collision2.globalIndex(), cache);
371- for (auto & [t1, t2] : soa::combinations (o2::soa::CombinationsFullIndexPolicy (groupF1, groupProton))) {
372- if (t1.f1MassKaonKshort () > maxKKS0Mass) {
370+
371+ // Preslices
372+ auto f1_c1 = f1tracks.sliceBy (tracksPerCollisionPresliceF1, collision1.globalIndex ());
373+ auto f1_c2 = f1tracks.sliceBy (tracksPerCollisionPresliceF1, collision2.globalIndex ());
374+ auto p_c1 = protontracks.sliceBy (tracksPerCollisionPresliceP, collision1.globalIndex ());
375+ auto p_c2 = protontracks.sliceBy (tracksPerCollisionPresliceP, collision2.globalIndex ());
376+
377+ // -------------------------------
378+ // CASE 1: SE-F1P (π mixed from c2, K+K0s from c1, proton from c1)
379+ // -------------------------------
380+ for (auto const & t1 : f1_c1) {
381+ if (t1.f1MassKaonKshort () > maxKKS0Mass)
373382 continue ;
374- }
375- F1.SetXYZM (t1.f1Px (), t1.f1Py (), t1.f1Pz (), t1.f1Mass ());
376- Pion.SetXYZM (t1.f1d1Px (), t1.f1d1Py (), t1.f1d1Pz (), 0.139 );
383+
377384 Kaon.SetXYZM (t1.f1d2Px (), t1.f1d2Py (), t1.f1d2Pz (), 0.493 );
378385 Kshort.SetXYZM (t1.f1d3Px (), t1.f1d3Py (), t1.f1d3Pz (), 0.497 );
379386 KaonKshortPair = Kaon + Kshort;
380- if (Pion.Pt () > maxMomentumPion || Kaon.Pt () > maxMomentumKaon) {
387+
388+ if (Kaon.Pt () > maxMomentumKaon)
381389 continue ;
382- }
383390 if (pdepPID) {
384- if (Kaon.Pt () <= 0.5 && (t1.f1d2TPC () < -2.5 || t1.f1d2TPC () > 2.5 )) {
391+ if (Kaon.Pt () <= 0.5 && (t1.f1d2TPC () < -2.5 || t1.f1d2TPC () > 2.5 ))
385392 continue ;
386- }
387- if (Kaon.Pt () > 0.5 && Kaon.Pt () <= 0.7 && (t1.f1d2TPC () < -1.5 || t1.f1d2TPC () > 2.5 )) {
393+ if (Kaon.Pt () > 0.5 && Kaon.Pt () <= 0.7 && (t1.f1d2TPC () < -1.5 || t1.f1d2TPC () > 2.5 ))
388394 continue ;
389- }
390- if (Kaon.Pt () > 0.7 && Kaon.Pt () <= 1.0 && (t1.f1d2TPC () < -1.0 || t1.f1d2TPC () > 2.5 )) {
395+ if (Kaon.Pt () > 0.7 && Kaon.Pt () <= 1.0 && (t1.f1d2TPC () < -1.0 || t1.f1d2TPC () > 2.5 ))
391396 continue ;
392- }
393- if (Kaon.Pt () > 1.0 && (t1.f1d2TPC () < -2.5 || t1.f1d2TPC () > 2.5 )) {
397+ if (Kaon.Pt () > 1.0 && (t1.f1d2TPC () < -2.5 || t1.f1d2TPC () > 2.5 ))
394398 continue ;
395- }
396- if (Pion.Pt () < 2.0 && (t1.f1d1TPC () < -2.5 || t1.f1d1TPC () > 2.5 )) {
399+ }
400+ if (strategyPIDKaon == 1 &&
401+ Kaon.Pt () > momentumTOFKaonMin && Kaon.Pt () <= momentumTOFKaonMax &&
402+ t1.f1d2TOFHit () != 1 )
403+ continue ;
404+
405+ for (auto const & t2 : p_c1) { // proton from c1
406+ Proton.SetXYZM (t2.protonPx (), t2.protonPy (), t2.protonPz (), 0.938 );
407+ if (Proton.Pt () > momentumProtonMax)
397408 continue ;
398- }
399- if (Pion.Pt () > 2.0 && (t1.f1d1TPC () < -2.5 || t1.f1d1TPC () > 2.5 )) {
409+ if (Proton.P () < momentumTOFProton && TMath::Abs (t2.protonNsigmaTPC ()) > 2.5 )
410+ continue ;
411+ if (Proton.P () >= momentumTOFProton && (t2.protonTOFHit () != 1 || TMath::Abs (t2.protonNsigmaTOF ()) > 2.5 ))
400412 continue ;
413+
414+ for (auto const & t3 : f1_c2) { // pion source from c2
415+ Pion.SetXYZM (t3.f1d1Px (), t3.f1d1Py (), t3.f1d1Pz (), 0.139 );
416+ if (Pion.Pt () > maxMomentumPion)
417+ continue ;
418+ if (pdepPID) {
419+ if (Pion.Pt () < 2.0 && (t3.f1d1TPC () < -2.5 || t3.f1d1TPC () > 2.5 ))
420+ continue ;
421+ if (Pion.Pt () >= 2.0 && (t3.f1d1TPC () < -2.5 || t3.f1d1TPC () > 2.5 ))
422+ continue ;
423+ }
424+ if (strategyPIDPion == 1 &&
425+ Pion.Pt () > momentumTOFPionMin && Pion.Pt () <= momentumTOFPionMax &&
426+ t3.f1d1TOFHit () != 1 )
427+ continue ;
428+
429+ // Fake f1: π(mixed) + (K+K0s from c1)
430+ F1 = Pion + KaonKshortPair;
431+
432+ // keep only unlike-sign branch
433+ if (t1.f1SignalStat () <= 0 )
434+ continue ;
435+
436+ int f1Charge = t1.f1SignalStat ();
437+ float pairQ = f1Charge * t2.protonCharge ();
438+
439+ auto kstar = getkstar (F1, Proton);
440+
441+ histos.fill (HIST (" h2MixEventInvariantMassUnlike_mass_SEFP" ),
442+ kstar, F1.Pt (), F1.M (), pairQ);
401443 }
402444 }
403- if (strategyPIDPion == 1 && Pion.Pt () > momentumTOFPionMin && Pion.Pt () <= momentumTOFPionMax && t1.f1d1TOFHit () != 1 ) {
404- continue ;
405- }
406- if (strategyPIDKaon == 1 && Kaon.Pt () > momentumTOFKaonMin && Kaon.Pt () <= momentumTOFKaonMax && t1.f1d2TOFHit () != 1 ) {
407- continue ;
408- }
409- if (typeofCombined == 0 ) {
410- combinedTPC = TMath::Sqrt (t1.f1d1TPC () * t1.f1d1TPC () + t1.f1d2TPC () * t1.f1d2TPC ());
411- }
412- if (typeofCombined == 1 ) {
413- combinedTPC = (t1.f1d1TPC () - t1.f1d2TPC ()) / (t1.f1d1TPC () + t1.f1d2TPC ());
414- }
415- Proton.SetXYZM (t2.protonPx (), t2.protonPy (), t2.protonPz (), 0.938 );
416- if (Proton.Pt () > momentumProtonMax) {
445+ }
446+
447+ // -------------------------------
448+ // CASE 2: DE-F1P (π mixed from c2, K+K0s from c1, proton from c2)
449+ // -------------------------------
450+ for (auto const & t1 : f1_c1) {
451+ if (t1.f1MassKaonKshort () > maxKKS0Mass)
417452 continue ;
418- }
419- if (Proton.P () < momentumTOFProton && TMath::Abs (t2.protonNsigmaTPC ()) > 2.5 ) {
453+
454+ Kaon.SetXYZM (t1.f1d2Px (), t1.f1d2Py (), t1.f1d2Pz (), 0.493 );
455+ Kshort.SetXYZM (t1.f1d3Px (), t1.f1d3Py (), t1.f1d3Pz (), 0.497 );
456+ KaonKshortPair = Kaon + Kshort;
457+
458+ if (Kaon.Pt () > maxMomentumKaon)
420459 continue ;
460+ if (pdepPID) {
461+ if (Kaon.Pt () <= 0.5 && (t1.f1d2TPC () < -2.5 || t1.f1d2TPC () > 2.5 ))
462+ continue ;
463+ if (Kaon.Pt () > 0.5 && Kaon.Pt () <= 0.7 && (t1.f1d2TPC () < -1.5 || t1.f1d2TPC () > 2.5 ))
464+ continue ;
465+ if (Kaon.Pt () > 0.7 && Kaon.Pt () <= 1.0 && (t1.f1d2TPC () < -1.0 || t1.f1d2TPC () > 2.5 ))
466+ continue ;
467+ if (Kaon.Pt () > 1.0 && (t1.f1d2TPC () < -2.5 || t1.f1d2TPC () > 2.5 ))
468+ continue ;
421469 }
422- if (Proton.P () >= momentumTOFProton && (t2.protonTOFHit () != 1 || TMath::Abs (t2.protonNsigmaTOF ()) > 2.5 )) {
470+ if (strategyPIDKaon == 1 &&
471+ Kaon.Pt () > momentumTOFKaonMin && Kaon.Pt () <= momentumTOFKaonMax &&
472+ t1.f1d2TOFHit () != 1 )
423473 continue ;
424- }
425- auto relative_momentum = getkstar (F1, Proton);
426- if (t1.f1SignalStat () > 0 ) {
427- histos.fill (HIST (" h2MixEventInvariantMassUnlike_mass" ), relative_momentum, F1.Pt (), F1.M (), 1.0 ); // F1 sign = 1 unlike, F1 sign = -1 like
428- if (fillSparse) {
429- histos.fill (HIST (" MEMassUnlike" ), F1.M (), F1.Pt (), Proton.Pt (), relative_momentum, combinedTPC, 1.0 );
430- }
431- }
432- if (t1.f1SignalStat () == -1 ) {
433- histos.fill (HIST (" h2MixEventInvariantMassLike_mass" ), relative_momentum, F1.Pt (), F1.M (), 1.0 );
434- if (fillSparse) {
435- histos.fill (HIST (" MEMassLike" ), F1.M (), F1.Pt (), Proton.Pt (), relative_momentum, combinedTPC, 1.0 );
436- }
437- }
438- if (fillRotation) {
439- for (int nrotbkg = 0 ; nrotbkg < nRot; nrotbkg++) {
440- auto anglestart = 5.0 * TMath::Pi () / 6.0 ;
441- auto angleend = 7.0 * TMath::Pi () / 6.0 ;
442- auto anglestep = (angleend - anglestart) / (1.0 * (9.0 - 1.0 ));
443- auto rotangle = anglestart + nrotbkg * anglestep;
444- auto rotPionPx = Pion.Px () * std::cos (rotangle) - Pion.Py () * std::sin (rotangle);
445- auto rotPionPy = Pion.Px () * std::sin (rotangle) + Pion.Py () * std::cos (rotangle);
446- PionRot.SetXYZM (rotPionPx, rotPionPy, Pion.Pz (), Pion.M ());
447- F1Rot = PionRot + KaonKshortPair;
448- if (F1Rot.Pt () < 1.0 ) {
474+
475+ for (auto const & t2 : p_c2) { // proton from c2
476+ Proton.SetXYZM (t2.protonPx (), t2.protonPy (), t2.protonPz (), 0.938 );
477+ if (Proton.Pt () > momentumProtonMax)
478+ continue ;
479+ if (Proton.P () < momentumTOFProton && TMath::Abs (t2.protonNsigmaTPC ()) > 2.5 )
480+ continue ;
481+ if (Proton.P () >= momentumTOFProton && (t2.protonTOFHit () != 1 || TMath::Abs (t2.protonNsigmaTOF ()) > 2.5 ))
482+ continue ;
483+
484+ for (auto const & t3 : f1_c2) { // pion from c2
485+ Pion.SetXYZM (t3.f1d1Px (), t3.f1d1Py (), t3.f1d1Pz (), 0.139 );
486+ if (Pion.Pt () > maxMomentumPion)
449487 continue ;
488+ if (pdepPID) {
489+ if (Pion.Pt () < 2.0 && (t3.f1d1TPC () < -2.5 || t3.f1d1TPC () > 2.5 ))
490+ continue ;
491+ if (Pion.Pt () >= 2.0 && (t3.f1d1TPC () < -2.5 || t3.f1d1TPC () > 2.5 ))
492+ continue ;
450493 }
451- auto relative_momentum_rot = getkstar (F1Rot, Proton);
452- if (t1.f1SignalStat () > 0 ) {
453- histos.fill (HIST (" h2MixEventInvariantMassRot_mass" ), relative_momentum_rot, F1Rot.Pt (), F1Rot.M (), 1.0 );
454- if (fillSparse) {
455- histos.fill (HIST (" MEMassRot" ), F1Rot.M (), F1Rot.Pt (), Proton.Pt (), relative_momentum_rot, combinedTPC, 1.0 );
456- }
457- }
494+ if (strategyPIDPion == 1 &&
495+ Pion.Pt () > momentumTOFPionMin && Pion.Pt () <= momentumTOFPionMax &&
496+ t3.f1d1TOFHit () != 1 )
497+ continue ;
498+
499+ F1 = Pion + KaonKshortPair;
500+
501+ if (t1.f1SignalStat () <= 0 )
502+ continue ;
503+
504+ int f1Charge = t1.f1SignalStat ();
505+ float pairQ = f1Charge * t2.protonCharge ();
506+
507+ auto kstar = getkstar (F1, Proton);
508+
509+ histos.fill (HIST (" h2MixEventInvariantMassUnlike_mass_DEFP" ),
510+ kstar, F1.Pt (), F1.M (), pairQ);
458511 }
459512 }
460513 }
461514 }
462515 }
463- PROCESS_SWITCH (f1protoncorrelation, processME, " Process EventMixing for combinatorial background" , false );
516+
517+ PROCESS_SWITCH (f1protoncorrelation, processME, " Process EventMixing for combinatorial background (SE-F1P & DE-F1P, minimal)" , false );
518+
464519 void processMEOpti (aod::RedF1PEvents& collisions, aod::F1Tracks& f1tracks, aod::ProtonTracks& protontracks)
465520 {
466521 // for (auto const& [collision1, collision2] : combinations(soa::CombinationsBlockFullIndexPolicy(colBinningFemto, nEvtMixing, -1, collisions, collisions))){
@@ -544,8 +599,8 @@ struct f1protoncorrelation {
544599 kaonCharge = -1 ;
545600 }
546601 histos.fill (HIST (" h2MixEventInvariantMassUnlike_mass" ), relative_momentum, F1.Pt (), F1.M (), pairCharge); // F1 sign = 1 unlike, F1 sign = -1 like
547- histos.fill (HIST (" hPhaseSpaceProtonKaonMix" ), Proton.Eta () - Kaon.Eta (), PhiAtSpecificRadiiTPC (Proton, Kaon, t2.protonCharge (), kaonCharge, bz, bz2)); // Phase Space Proton kaon
548- histos.fill (HIST (" hPhaseSpaceProtonPionMix" ), Proton.Eta () - Kaon.Eta (), PhiAtSpecificRadiiTPC (Proton, Pion, t2.protonCharge (), pionCharge, bz, bz2)); // Phase Space Proton Pion
602+ histos.fill (HIST (" hPhaseSpaceProtonKaonMix" ), Proton.Eta () - Kaon.Eta (), PhiAtSpecificRadiiTPC (Proton, Kaon, t2.protonCharge (), kaonCharge, bz, bz2), relative_momentum ); // Phase Space Proton kaon
603+ histos.fill (HIST (" hPhaseSpaceProtonPionMix" ), Proton.Eta () - Kaon.Eta (), PhiAtSpecificRadiiTPC (Proton, Pion, t2.protonCharge (), pionCharge, bz, bz2), relative_momentum ); // Phase Space Proton Pion
549604 if (fillSparse) {
550605 histos.fill (HIST (" MEMassUnlike" ), F1.M (), F1.Pt (), Proton.Pt (), relative_momentum, combinedTPC, pairCharge);
551606 }
0 commit comments