3939#include " Framework/AnalysisDataModel.h"
4040#include " Framework/ASoAHelpers.h"
4141#include " ReconstructionDataFormats/Track.h"
42+ #include " CommonConstants/MathConstants.h"
4243#include " CommonConstants/PhysicsConstants.h"
4344#include " Common/Core/trackUtilities.h"
4445#include " PWGLF/DataModel/LFStrangenessTables.h"
@@ -214,6 +215,8 @@ struct derivedlambdakzeroanalysis {
214215 ConfigurableAxis axisNsigmaTPC{" axisNsigmaTPC" , {200 , -10 .0f , 10 .0f }, " N sigma TPC" };
215216 ConfigurableAxis axisTPCsignal{" axisTPCsignal" , {200 , 0 .0f , 200 .0f }, " TPC signal" };
216217 ConfigurableAxis axisTOFdeltaT{" axisTOFdeltaT" , {200 , -5000 .0f , 5000 .0f }, " TOF Delta T (ps)" };
218+ ConfigurableAxis axisPhi{" axisPhi" , {18 , 0 .0f , constants::math::TwoPI}, " Azimuth angle (rad)" };
219+ ConfigurableAxis axisEta{" axisEta" , {10 , -1 .0f , 1 .0f }, " #eta" };
217220
218221 // UPC axes
219222 ConfigurableAxis axisSelGap{" axisSelGap" , {4 , -1.5 , 2.5 }, " Gap side" };
@@ -402,7 +405,7 @@ struct derivedlambdakzeroanalysis {
402405
403406 histos.add (" hGapSide" , " Gap side; Entries" , kTH1F , {{5 , -0.5 , 4.5 }});
404407 histos.add (" hSelGapSide" , " Selected gap side; Entries" , kTH1F , {axisSelGap});
405- histos.add (" hEventCentralityVsSelGapSide" , " Centrality (%); Selected gap side" , kTH2F , {{100 , 0 .0f , +100 .0f }, axisSelGap});
408+ histos.add (" hEventCentralityVsSelGapSide" , " ; Centrality (%); Selected gap side" , kTH2F , {{100 , 0 .0f , +100 .0f }, axisSelGap});
406409
407410 // for QA and test purposes
408411 auto hRawCentrality = histos.add <TH1>(" hRawCentrality" , " hRawCentrality" , kTH1F , {axisRawCentrality});
@@ -414,6 +417,7 @@ struct derivedlambdakzeroanalysis {
414417
415418 // histograms versus mass
416419 if (analyseK0Short) {
420+ histos.add (" h2dNbrOfK0ShortVsCentrality" , " h2dNbrOfK0ShortVsCentrality" , kTH2F , {axisCentrality, {10 , -0 .5f , 9 .5f }});
417421 histos.add (" h3dMassK0Short" , " h3dMassK0Short" , kTH3F , {axisCentrality, axisPt, axisK0Mass});
418422 // Non-UPC info
419423 histos.add (" h3dMassK0ShortHadronic" , " h3dMassK0ShortHadronic" , kTH3F , {axisCentrality, axisPt, axisK0Mass});
@@ -459,6 +463,7 @@ struct derivedlambdakzeroanalysis {
459463 }
460464 }
461465 if (analyseLambda) {
466+ histos.add (" h2dNbrOfLambdaVsCentrality" , " h2dNbrOfLambdaVsCentrality" , kTH2F , {axisCentrality, {10 , -0 .5f , 9 .5f }});
462467 histos.add (" h3dMassLambda" , " h3dMassLambda" , kTH3F , {axisCentrality, axisPt, axisLambdaMass});
463468 // Non-UPC info
464469 histos.add (" h3dMassLambdaHadronic" , " h3dMassLambdaHadronic" , kTH3F , {axisCentrality, axisPt, axisLambdaMass});
@@ -504,6 +509,7 @@ struct derivedlambdakzeroanalysis {
504509 }
505510 }
506511 if (analyseAntiLambda) {
512+ histos.add (" h2dNbrOfAntiLambdaVsCentrality" , " h2dNbrOfAntiLambdaVsCentrality" , kTH2F , {axisCentrality, {10 , -0 .5f , 9 .5f }});
507513 histos.add (" h3dMassAntiLambda" , " h3dMassAntiLambda" , kTH3F , {axisCentrality, axisPt, axisLambdaMass});
508514 // Non-UPC info
509515 histos.add (" h3dMassAntiLambdaHadronic" , " h3dMassAntiLambdaHadronic" , kTH3F , {axisCentrality, axisPt, axisLambdaMass});
@@ -566,20 +572,23 @@ struct derivedlambdakzeroanalysis {
566572 histos.add (" K0Short/h4dDCADaughters" , " h4dDCADaughters" , kTHnF , {axisCentrality, axisPtCoarse, axisK0Mass, axisDCAdau});
567573 histos.add (" K0Short/h4dPointingAngle" , " h4dPointingAngle" , kTHnF , {axisCentrality, axisPtCoarse, axisK0Mass, axisPointingAngle});
568574 histos.add (" K0Short/h4dV0Radius" , " h4dV0Radius" , kTHnF , {axisCentrality, axisPtCoarse, axisK0Mass, axisV0Radius});
575+ histos.add (" K0Short/h4dV0PhiVsEta" , " h4dV0PhiVsEta" , kTHnF , {axisPtCoarse, axisK0Mass, axisPhi, axisEta});
569576 }
570577 if (analyseLambda) {
571578 histos.add (" Lambda/h4dPosDCAToPV" , " h4dPosDCAToPV" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisDCAtoPV});
572579 histos.add (" Lambda/h4dNegDCAToPV" , " h4dNegDCAToPV" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisDCAtoPV});
573580 histos.add (" Lambda/h4dDCADaughters" , " h4dDCADaughters" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisDCAdau});
574581 histos.add (" Lambda/h4dPointingAngle" , " h4dPointingAngle" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisPointingAngle});
575582 histos.add (" Lambda/h4dV0Radius" , " h4dV0Radius" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisV0Radius});
583+ histos.add (" Lambda/h4dV0PhiVsEta" , " h4dV0PhiVsEta" , kTHnF , {axisPtCoarse, axisK0Mass, axisPhi, axisEta});
576584 }
577585 if (analyseAntiLambda) {
578586 histos.add (" AntiLambda/h4dPosDCAToPV" , " h4dPosDCAToPV" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisDCAtoPV});
579587 histos.add (" AntiLambda/h4dNegDCAToPV" , " h4dNegDCAToPV" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisDCAtoPV});
580588 histos.add (" AntiLambda/h4dDCADaughters" , " h4dDCADaughters" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisDCAdau});
581589 histos.add (" AntiLambda/h4dPointingAngle" , " h4dPointingAngle" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisPointingAngle});
582590 histos.add (" AntiLambda/h4dV0Radius" , " h4dV0Radius" , kTHnF , {axisCentrality, axisPtCoarse, axisLambdaMass, axisV0Radius});
591+ histos.add (" AntiLambda/h4dV0PhiVsEta" , " h4dV0PhiVsEta" , kTHnF , {axisPtCoarse, axisK0Mass, axisPhi, axisEta});
583592 }
584593 }
585594
@@ -974,7 +983,7 @@ struct derivedlambdakzeroanalysis {
974983 }
975984
976985 template <typename TV0>
977- void analyseCandidate (TV0 v0, float pt, float centrality, uint64_t selMap, uint8_t gapSide)
986+ void analyseCandidate (TV0 v0, float pt, float centrality, uint64_t selMap, uint8_t gapSide, int & nK0Shorts, int & nLambdas, int & nAntiLambdas )
978987 // precalculate this information so that a check is one mask operation, not many
979988 {
980989 bool passK0ShortSelections = false ;
@@ -1109,6 +1118,7 @@ struct derivedlambdakzeroanalysis {
11091118 histos.fill (HIST (" K0Short/h3dPosTOFdeltaTvsTrackPt" ), centrality, v0.positivept (), v0.posTOFDeltaTK0Pi ());
11101119 histos.fill (HIST (" K0Short/h3dNegTOFdeltaTvsTrackPt" ), centrality, v0.negativept (), v0.negTOFDeltaTK0Pi ());
11111120 }
1121+ nK0Shorts++;
11121122 }
11131123 if (passLambdaSelections && analyseLambda) {
11141124 histos.fill (HIST (" h3dMassLambda" ), centrality, pt, v0.mLambda ());
@@ -1161,6 +1171,7 @@ struct derivedlambdakzeroanalysis {
11611171 histos.fill (HIST (" Lambda/h3dPosTOFdeltaTvsTrackPt" ), centrality, v0.positivept (), v0.posTOFDeltaTLaPr ());
11621172 histos.fill (HIST (" Lambda/h3dNegTOFdeltaTvsTrackPt" ), centrality, v0.negativept (), v0.negTOFDeltaTLaPi ());
11631173 }
1174+ nLambdas++;
11641175 }
11651176 if (passAntiLambdaSelections && analyseAntiLambda) {
11661177 histos.fill (HIST (" h3dMassAntiLambda" ), centrality, pt, v0.mAntiLambda ());
@@ -1213,6 +1224,7 @@ struct derivedlambdakzeroanalysis {
12131224 histos.fill (HIST (" AntiLambda/h3dPosTOFdeltaTvsTrackPt" ), centrality, v0.positivept (), v0.posTOFDeltaTLaPi ());
12141225 histos.fill (HIST (" AntiLambda/h3dNegTOFdeltaTvsTrackPt" ), centrality, v0.negativept (), v0.negTOFDeltaTLaPr ());
12151226 }
1227+ nAntiLambdas++;
12161228 }
12171229
12181230 // __________________________________________
@@ -1229,6 +1241,9 @@ struct derivedlambdakzeroanalysis {
12291241 histos.fill (HIST (" K0Short/h4dPointingAngle" ), centrality, pt, v0.mK0Short (), TMath::ACos (v0.v0cosPA ()));
12301242 if (verifyMask (selMap, maskTopoNoDCAV0Dau | maskK0ShortSpecific))
12311243 histos.fill (HIST (" K0Short/h4dDCADaughters" ), centrality, pt, v0.mK0Short (), v0.dcaV0daughters ());
1244+
1245+ if (passK0ShortSelections)
1246+ histos.fill (HIST (" K0Short/h4dV0PhiVsEta" ), pt, v0.mK0Short (), v0.phi (), v0.eta ());
12321247 }
12331248
12341249 if (analyseLambda) {
@@ -1242,6 +1257,9 @@ struct derivedlambdakzeroanalysis {
12421257 histos.fill (HIST (" Lambda/h4dPointingAngle" ), centrality, pt, v0.mLambda (), TMath::ACos (v0.v0cosPA ()));
12431258 if (verifyMask (selMap, maskTopoNoDCAV0Dau | maskLambdaSpecific))
12441259 histos.fill (HIST (" Lambda/h4dDCADaughters" ), centrality, pt, v0.mLambda (), v0.dcaV0daughters ());
1260+
1261+ if (passLambdaSelections)
1262+ histos.fill (HIST (" Lambda/h4dV0PhiVsEta" ), pt, v0.mLambda (), v0.phi (), v0.eta ());
12451263 }
12461264 if (analyseAntiLambda) {
12471265 if (verifyMask (selMap, maskTopoNoV0Radius | maskAntiLambdaSpecific))
@@ -1254,6 +1272,9 @@ struct derivedlambdakzeroanalysis {
12541272 histos.fill (HIST (" AntiLambda/h4dPointingAngle" ), centrality, pt, v0.mAntiLambda (), TMath::ACos (v0.v0cosPA ()));
12551273 if (verifyMask (selMap, maskTopoNoDCAV0Dau | maskAntiLambdaSpecific))
12561274 histos.fill (HIST (" AntiLambda/h4dDCADaughters" ), centrality, pt, v0.mAntiLambda (), v0.dcaV0daughters ());
1275+
1276+ if (passAntiLambdaSelections)
1277+ histos.fill (HIST (" AntiLambda/h4dV0PhiVsEta" ), pt, v0.mAntiLambda (), v0.phi (), v0.eta ());
12571278 }
12581279 } // end systematics / qa
12591280 }
@@ -1408,6 +1429,9 @@ struct derivedlambdakzeroanalysis {
14081429
14091430 // __________________________________________
14101431 // perform main analysis
1432+ int nK0Shorts = 0 ;
1433+ int nLambdas = 0 ;
1434+ int nAntiLambdas = 0 ;
14111435 for (auto & v0 : fullV0s) {
14121436 if (std::abs (v0.negativeeta ()) > v0Selections.daughterEtaCut || std::abs (v0.positiveeta ()) > v0Selections.daughterEtaCut )
14131437 continue ; // remove acceptance that's badly reproduced by MC / superfluous in future
@@ -1424,8 +1448,19 @@ struct derivedlambdakzeroanalysis {
14241448 selMap = selMap | (uint64_t (1 ) << selConsiderK0Short) | (uint64_t (1 ) << selConsiderLambda) | (uint64_t (1 ) << selConsiderAntiLambda);
14251449 selMap = selMap | (uint64_t (1 ) << selPhysPrimK0Short) | (uint64_t (1 ) << selPhysPrimLambda) | (uint64_t (1 ) << selPhysPrimAntiLambda);
14261450
1427- analyseCandidate (v0, v0.pt (), centrality, selMap, selGapSide);
1451+ analyseCandidate (v0, v0.pt (), centrality, selMap, selGapSide, nK0Shorts, nLambdas, nAntiLambdas );
14281452 } // end v0 loop
1453+
1454+ // fill the histograms with the number of reconstructed K0s/Lambda/antiLambda per collision
1455+ if (analyseK0Short) {
1456+ histos.fill (HIST (" h2dNbrOfK0ShortVsCentrality" ), centrality, nK0Shorts);
1457+ }
1458+ if (analyseLambda) {
1459+ histos.fill (HIST (" h2dNbrOfLambdaVsCentrality" ), centrality, nLambdas);
1460+ }
1461+ if (analyseAntiLambda) {
1462+ histos.fill (HIST (" h2dNbrOfAntiLambdaVsCentrality" ), centrality, nAntiLambdas);
1463+ }
14291464 }
14301465
14311466 // ______________________________________________________
@@ -1524,6 +1559,9 @@ struct derivedlambdakzeroanalysis {
15241559
15251560 // __________________________________________
15261561 // perform main analysis
1562+ int nK0Shorts = 0 ;
1563+ int nLambdas = 0 ;
1564+ int nAntiLambdas = 0 ;
15271565 for (auto & v0 : fullV0s) {
15281566 if (std::abs (v0.negativeeta ()) > v0Selections.daughterEtaCut || std::abs (v0.positiveeta ()) > v0Selections.daughterEtaCut )
15291567 continue ; // remove acceptance that's badly reproduced by MC / superfluous in future
@@ -1556,7 +1594,7 @@ struct derivedlambdakzeroanalysis {
15561594 selMap = selMap | (uint64_t (1 ) << selPhysPrimK0Short) | (uint64_t (1 ) << selPhysPrimLambda) | (uint64_t (1 ) << selPhysPrimAntiLambda);
15571595 }
15581596
1559- analyseCandidate (v0, ptmc, centrality, selMap, selGapSide);
1597+ analyseCandidate (v0, ptmc, centrality, selMap, selGapSide, nK0Shorts, nLambdas, nAntiLambdas );
15601598
15611599 if (doCollisionAssociationQA) {
15621600 // check collision association explicitly
@@ -1571,6 +1609,17 @@ struct derivedlambdakzeroanalysis {
15711609 }
15721610
15731611 } // end v0 loop
1612+
1613+ // fill the histograms with the number of reconstructed K0s/Lambda/antiLambda per collision
1614+ if (analyseK0Short) {
1615+ histos.fill (HIST (" h2dNbrOfK0ShortVsCentrality" ), centrality, nK0Shorts);
1616+ }
1617+ if (analyseLambda) {
1618+ histos.fill (HIST (" h2dNbrOfLambdaVsCentrality" ), centrality, nLambdas);
1619+ }
1620+ if (analyseAntiLambda) {
1621+ histos.fill (HIST (" h2dNbrOfAntiLambdaVsCentrality" ), centrality, nAntiLambdas);
1622+ }
15741623 }
15751624
15761625 // ______________________________________________________
0 commit comments