@@ -37,7 +37,7 @@ struct ThreeParticleCorrelations {
3737
3838 // Analysis parameters
3939 float centMin = 0.0 , centMax = 90.0 ;
40- float zvtxMax = 7 .0 ;
40+ float zvtxMax = 10 .0 ;
4141 float v0PtMin = 0.6 , v0PtMax = 12.0 ;
4242 float v0EtaMax = 0.72 ;
4343 float trackPtMin = 0.2 , trackPtMax = 3.0 ;
@@ -122,7 +122,7 @@ struct ThreeParticleCorrelations {
122122 PresliceUnsorted<aod::McCollisionLabels> perMCCol = aod::mccollisionlabel::mcCollisionId;
123123
124124 ConfigurableAxis confCentBins{" confCentBins" , {VARIABLE_WIDTH, 0 .0f , 10 .0f , 20 .0f , 30 .0f , 40 .0f , 50 .0f , 60 .0f , 70 .0f , 80 .0f , 90 .0f }, " ME Centrality binning" };
125- ConfigurableAxis confZvtxBins{" confZvtxBins" , {VARIABLE_WIDTH, -7 .0f , -5 .0f , -3 .0f , -1 .0f , 0 .0f , 1 .0f , 3 .0f , 5 .0f , 7 .0f }, " ME Zvtx binning" };
125+ ConfigurableAxis confZvtxBins{" confZvtxBins" , {VARIABLE_WIDTH, -10 .0f , -8 .0f , -6 .0f , -4 .0f , - 2.0 , 0 .0f , 2 .0f , 4 .0f , 6 .0f , 8 . 0f , 10 .0f }, " ME Zvtx binning" };
126126 using BinningType = ColumnBinningPolicy<aod::cent::CentFT0C, aod::collision::PosZ>;
127127 using BinningTypeMC = ColumnBinningPolicy<aod::mccollisionprop::BestCollisionCentFT0C, aod::mccollision::PosZ>;
128128
@@ -139,9 +139,11 @@ struct ThreeParticleCorrelations {
139139 TH3D** hEffPions = new TH3D*[2 ];
140140 TH3D** hEffKaons = new TH3D*[2 ];
141141 TH3D** hEffProtons = new TH3D*[2 ];
142+ TH3D** hEffLambdas = new TH3D*[2 ];
142143
143144 // Correlation variables
144145 int triggSign, assocSign;
146+ double v0Efficiency;
145147 double candMass;
146148 double * assocPID;
147149
@@ -305,13 +307,16 @@ struct ThreeParticleCorrelations {
305307
306308 ccdb->setURL (" http://alice-ccdb.cern.ch" );
307309 ccdb->setCaching (true );
308- TList* efficiencyList = ccdb->getForTimeStamp <TList>(" Users/j/jstaa/Efficiency/ChargedParticles" , 1 );
309- hEffPions[0 ] = static_cast <TH3D*>(efficiencyList->FindObject (" hEfficiencyPionP" ));
310- hEffPions[1 ] = static_cast <TH3D*>(efficiencyList->FindObject (" hEfficiencyPionN" ));
311- hEffKaons[0 ] = static_cast <TH3D*>(efficiencyList->FindObject (" hEfficiencyKaonP" ));
312- hEffKaons[1 ] = static_cast <TH3D*>(efficiencyList->FindObject (" hEfficiencyKaonN" ));
313- hEffProtons[0 ] = static_cast <TH3D*>(efficiencyList->FindObject (" hEfficiencyProtonP" ));
314- hEffProtons[1 ] = static_cast <TH3D*>(efficiencyList->FindObject (" hEfficiencyProtonN" ));
310+ TList* effListChargedParticles = ccdb->getForTimeStamp <TList>(" Users/j/jstaa/Efficiency/ChargedParticles" , 1 );
311+ TList* effListLambdas = ccdb->getForTimeStamp <TList>(" Users/j/jstaa/Efficiency/Lambdas" , 1 );
312+ hEffPions[0 ] = static_cast <TH3D*>(effListChargedParticles->FindObject (" hEfficiencyPionP" ));
313+ hEffPions[1 ] = static_cast <TH3D*>(effListChargedParticles->FindObject (" hEfficiencyPionN" ));
314+ hEffKaons[0 ] = static_cast <TH3D*>(effListChargedParticles->FindObject (" hEfficiencyKaonP" ));
315+ hEffKaons[1 ] = static_cast <TH3D*>(effListChargedParticles->FindObject (" hEfficiencyKaonN" ));
316+ hEffProtons[0 ] = static_cast <TH3D*>(effListChargedParticles->FindObject (" hEfficiencyProtonP" ));
317+ hEffProtons[1 ] = static_cast <TH3D*>(effListChargedParticles->FindObject (" hEfficiencyProtonN" ));
318+ hEffLambdas[0 ] = static_cast <TH3D*>(effListLambdas->FindObject (" hEfficiencyLambdaP" ));
319+ hEffLambdas[1 ] = static_cast <TH3D*>(effListLambdas->FindObject (" hEfficiencyLambdaN" ));
315320 }
316321
317322 // ==========================================================================================================================================================================================================================================================================
@@ -369,7 +374,9 @@ struct ThreeParticleCorrelations {
369374 if (v0Filters (collision, trigger, tracks)) {
370375
371376 triggSign = v0Sign (trigger);
372- rQARegistry.fill (HIST (" hPtV0" ), trigger.pt (), collision.centFT0C (), triggSign);
377+ v0Efficiency = v0Eff (hEffLambdas, trigger, collision.centFT0C ());
378+
379+ rQARegistry.fill (HIST (" hPtV0" ), trigger.pt (), collision.centFT0C (), triggSign, 1 . / v0Efficiency);
373380 if (triggSign == 1 ) {
374381 candMass = trigger.mLambda ();
375382 rQARegistry.fill (HIST (" hInvMassLambda" ), trigger.mLambda (), trigger.pt (), collision.centFT0C ());
@@ -388,36 +395,36 @@ struct ThreeParticleCorrelations {
388395
389396 if (candMass >= MassLambda0 - 4 * dGaussSigma && candMass <= MassLambda0 + 4 * dGaussSigma) {
390397 if (assocPID[0 ] == pionID) { // Pions
391- rSECorrRegistry.fill (HIST (" hSameLambdaPion_SGNL" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffPions, associate, collision.centFT0C ()));
398+ rSECorrRegistry.fill (HIST (" hSameLambdaPion_SGNL" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffPions, associate, collision.centFT0C ()) * v0Efficiency ));
392399 } else if (assocPID[0 ] == kaonID) { // Kaons
393- rSECorrRegistry.fill (HIST (" hSameLambdaKaon_SGNL" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffKaons, associate, collision.centFT0C ()));
400+ rSECorrRegistry.fill (HIST (" hSameLambdaKaon_SGNL" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffKaons, associate, collision.centFT0C ()) * v0Efficiency ));
394401 } else if (assocPID[0 ] == protonID) { // Protons
395- rSECorrRegistry.fill (HIST (" hSameLambdaProton_SGNL" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffProtons, associate, collision.centFT0C ()));
402+ rSECorrRegistry.fill (HIST (" hSameLambdaProton_SGNL" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffProtons, associate, collision.centFT0C ()) * v0Efficiency ));
396403 }
397404
398405 } else if (candMass >= MassLambda0 - 8 * dGaussSigma && candMass <= MassLambda0 + 8 * dGaussSigma) {
399406 if (assocPID[0 ] == pionID) { // Pions
400- rSECorrRegistry.fill (HIST (" hSameLambdaPion_SB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffPions, associate, collision.centFT0C ()));
407+ rSECorrRegistry.fill (HIST (" hSameLambdaPion_SB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffPions, associate, collision.centFT0C ()) * v0Efficiency ));
401408 if (candMass >= MassLambda0 - 8 * dGaussSigma && candMass < MassLambda0 - 4 * dGaussSigma) {
402- rSECorrRegistry.fill (HIST (" hSameLambdaPion_leftSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffPions, associate, collision.centFT0C ()));
409+ rSECorrRegistry.fill (HIST (" hSameLambdaPion_leftSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffPions, associate, collision.centFT0C ()) * v0Efficiency ));
403410 } else if (candMass > MassLambda0 + 4 * dGaussSigma && candMass <= MassLambda0 + 8 * dGaussSigma) {
404- rSECorrRegistry.fill (HIST (" hSameLambdaPion_rightSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffPions, associate, collision.centFT0C ()));
411+ rSECorrRegistry.fill (HIST (" hSameLambdaPion_rightSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffPions, associate, collision.centFT0C ()) * v0Efficiency ));
405412 }
406413
407414 } else if (assocPID[0 ] == kaonID) { // Kaons
408- rSECorrRegistry.fill (HIST (" hSameLambdaKaon_SB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffKaons, associate, collision.centFT0C ()));
415+ rSECorrRegistry.fill (HIST (" hSameLambdaKaon_SB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffKaons, associate, collision.centFT0C ()) * v0Efficiency ));
409416 if (candMass >= MassLambda0 - 8 * dGaussSigma && candMass < MassLambda0 - 4 * dGaussSigma) {
410- rSECorrRegistry.fill (HIST (" hSameLambdaKaon_leftSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffKaons, associate, collision.centFT0C ()));
417+ rSECorrRegistry.fill (HIST (" hSameLambdaKaon_leftSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffKaons, associate, collision.centFT0C ()) * v0Efficiency ));
411418 } else if (candMass > MassLambda0 + 4 * dGaussSigma && candMass <= MassLambda0 + 8 * dGaussSigma) {
412- rSECorrRegistry.fill (HIST (" hSameLambdaKaon_rightSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffKaons, associate, collision.centFT0C ()));
419+ rSECorrRegistry.fill (HIST (" hSameLambdaKaon_rightSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffKaons, associate, collision.centFT0C ()) * v0Efficiency ));
413420 }
414421
415422 } else if (assocPID[0 ] == protonID) { // Protons
416- rSECorrRegistry.fill (HIST (" hSameLambdaProton_SB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffProtons, associate, collision.centFT0C ()));
423+ rSECorrRegistry.fill (HIST (" hSameLambdaProton_SB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffProtons, associate, collision.centFT0C ()) * v0Efficiency ));
417424 if (candMass >= MassLambda0 - 8 * dGaussSigma && candMass < MassLambda0 - 4 * dGaussSigma) {
418- rSECorrRegistry.fill (HIST (" hSameLambdaProton_leftSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffProtons, associate, collision.centFT0C ()));
425+ rSECorrRegistry.fill (HIST (" hSameLambdaProton_leftSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffProtons, associate, collision.centFT0C ()) * v0Efficiency ));
419426 } else if (candMass > MassLambda0 + 4 * dGaussSigma && candMass <= MassLambda0 + 8 * dGaussSigma) {
420- rSECorrRegistry.fill (HIST (" hSameLambdaProton_rightSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffProtons, associate, collision.centFT0C ()));
427+ rSECorrRegistry.fill (HIST (" hSameLambdaProton_rightSB" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffProtons, associate, collision.centFT0C ()) * v0Efficiency ));
421428 }
422429 }
423430 }
@@ -445,6 +452,8 @@ struct ThreeParticleCorrelations {
445452 if (radialDistanceFilter (trigger, associate, bField, true ) && fakeV0Filter (trigger, associate)) {
446453
447454 triggSign = v0Sign (trigger);
455+ v0Efficiency = v0Eff (hEffLambdas, trigger, coll_1.centFT0C ());
456+
448457 if (triggSign == 1 ) {
449458 candMass = trigger.mLambda ();
450459 } else if (triggSign == -1 ) {
@@ -457,36 +466,36 @@ struct ThreeParticleCorrelations {
457466
458467 if (candMass >= MassLambda0 - 4 * dGaussSigma && candMass <= MassLambda0 + 4 * dGaussSigma) {
459468 if (assocPID[0 ] == pionID) { // Pions
460- rMECorrRegistry.fill (HIST (" hMixLambdaPion_SGNL" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffPions, associate, coll_1.centFT0C ()));
469+ rMECorrRegistry.fill (HIST (" hMixLambdaPion_SGNL" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffPions, associate, coll_1.centFT0C ()) * v0Efficiency ));
461470 } else if (assocPID[0 ] == kaonID) { // Kaons
462- rMECorrRegistry.fill (HIST (" hMixLambdaKaon_SGNL" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffKaons, associate, coll_1.centFT0C ()));
471+ rMECorrRegistry.fill (HIST (" hMixLambdaKaon_SGNL" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffKaons, associate, coll_1.centFT0C ()) * v0Efficiency ));
463472 } else if (assocPID[0 ] == protonID) { // Protons
464- rMECorrRegistry.fill (HIST (" hMixLambdaProton_SGNL" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffProtons, associate, coll_1.centFT0C ()));
473+ rMECorrRegistry.fill (HIST (" hMixLambdaProton_SGNL" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffProtons, associate, coll_1.centFT0C ()) * v0Efficiency ));
465474 }
466475
467476 } else if (candMass >= MassLambda0 - 8 * dGaussSigma && candMass <= MassLambda0 + 8 * dGaussSigma) {
468477 if (assocPID[0 ] == pionID) { // Pions
469- rMECorrRegistry.fill (HIST (" hMixLambdaPion_SB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffPions, associate, coll_1.centFT0C ()));
478+ rMECorrRegistry.fill (HIST (" hMixLambdaPion_SB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffPions, associate, coll_1.centFT0C ()) * v0Efficiency ));
470479 if (candMass >= MassLambda0 - 8 * dGaussSigma && candMass < MassLambda0 - 4 * dGaussSigma) {
471- rMECorrRegistry.fill (HIST (" hMixLambdaPion_leftSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffPions, associate, coll_1.centFT0C ()));
480+ rMECorrRegistry.fill (HIST (" hMixLambdaPion_leftSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffPions, associate, coll_1.centFT0C ()) * v0Efficiency ));
472481 } else if (candMass > MassLambda0 + 4 * dGaussSigma && candMass <= MassLambda0 + 8 * dGaussSigma) {
473- rMECorrRegistry.fill (HIST (" hMixLambdaPion_rightSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffPions, associate, coll_1.centFT0C ()));
482+ rMECorrRegistry.fill (HIST (" hMixLambdaPion_rightSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffPions, associate, coll_1.centFT0C ()) * v0Efficiency ));
474483 }
475484
476485 } else if (assocPID[0 ] == kaonID) { // Kaons
477- rMECorrRegistry.fill (HIST (" hMixLambdaKaon_SB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffKaons, associate, coll_1.centFT0C ()));
486+ rMECorrRegistry.fill (HIST (" hMixLambdaKaon_SB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffKaons, associate, coll_1.centFT0C ()) * v0Efficiency ));
478487 if (candMass >= MassLambda0 - 8 * dGaussSigma && candMass < MassLambda0 - 4 * dGaussSigma) {
479- rMECorrRegistry.fill (HIST (" hMixLambdaKaon_leftSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffKaons, associate, coll_1.centFT0C ()));
488+ rMECorrRegistry.fill (HIST (" hMixLambdaKaon_leftSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffKaons, associate, coll_1.centFT0C ()) * v0Efficiency ));
480489 } else if (candMass > MassLambda0 + 4 * dGaussSigma && candMass <= MassLambda0 + 8 * dGaussSigma) {
481- rMECorrRegistry.fill (HIST (" hMixLambdaKaon_rightSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffKaons, associate, coll_1.centFT0C ()));
490+ rMECorrRegistry.fill (HIST (" hMixLambdaKaon_rightSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffKaons, associate, coll_1.centFT0C ()) * v0Efficiency ));
482491 }
483492
484493 } else if (assocPID[0 ] == protonID) { // Protons
485- rMECorrRegistry.fill (HIST (" hMixLambdaProton_SB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffProtons, associate, coll_1.centFT0C ()));
494+ rMECorrRegistry.fill (HIST (" hMixLambdaProton_SB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffProtons, associate, coll_1.centFT0C ()) * v0Efficiency ));
486495 if (candMass >= MassLambda0 - 8 * dGaussSigma && candMass < MassLambda0 - 4 * dGaussSigma) {
487- rMECorrRegistry.fill (HIST (" hMixLambdaProton_leftSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffProtons, associate, coll_1.centFT0C ()));
496+ rMECorrRegistry.fill (HIST (" hMixLambdaProton_leftSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffProtons, associate, coll_1.centFT0C ()) * v0Efficiency ));
488497 } else if (candMass > MassLambda0 + 4 * dGaussSigma && candMass <= MassLambda0 + 8 * dGaussSigma) {
489- rMECorrRegistry.fill (HIST (" hMixLambdaProton_rightSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / trackEff (hEffProtons, associate, coll_1.centFT0C ()));
498+ rMECorrRegistry.fill (HIST (" hMixLambdaProton_rightSB" ), deltaPhi, deltaEta, coll_1.centFT0C (), coll_1.posZ (), triggSign, associate.sign (), 1 . / ( trackEff (hEffProtons, associate, coll_1.centFT0C ()) * v0Efficiency ));
490499 }
491500 }
492501 }
@@ -809,6 +818,25 @@ struct ThreeParticleCorrelations {
809818 return 0.1 * (grpo->getNominalL3Field ()); // 1 T = 10 kG
810819 }
811820
821+ template <class V0Cand >
822+ double v0Eff (TH3D** efficiencies, const V0Cand& v0, double centrality)
823+ {
824+
825+ int index = -999 ;
826+ if (v0Sign (v0) > 0 ) {
827+ index = 0 ;
828+ } else if (v0Sign (v0) < 0 ) {
829+ index = 1 ;
830+ }
831+
832+ double efficiency = efficiencies[index]->GetBinContent (efficiencies[index]->FindBin (v0.pt (), v0.eta (), centrality));
833+ if (efficiency > 0 ) {
834+ return efficiency;
835+ } else {
836+ return 1.0 ;
837+ }
838+ }
839+
812840 template <class TrackCand >
813841 double trackEff (TH3D** efficiencies, const TrackCand& track, double centrality)
814842 {
0 commit comments