@@ -122,6 +122,7 @@ struct derivedlambdakzeroanalysis {
122122 Configurable<bool > doTOFQA{" doTOFQA" , false , " do TOF QA histograms" };
123123 Configurable<int > doDetectPropQA{" doDetectPropQA" , 0 , " do Detector/ITS map QA: 0: no, 1: 4D, 2: 5D with mass; 3: plain in 3D" };
124124 Configurable<bool > doEtaPhiQA{" doEtaPhiQA" , false , " do Eta/Phi QA histograms" };
125+ Configurable<bool > doEventMCQA{" doEventMCQA" , false , " do MC event QA histograms" };
125126
126127 Configurable<bool > doPlainTopoQA{" doPlainTopoQA" , true , " do simple 1D QA of candidates" };
127128 Configurable<float > qaMinPt{" qaMinPt" , 0 .0f , " minimum pT for QA plots" };
@@ -332,6 +333,7 @@ struct derivedlambdakzeroanalysis {
332333 ConfigurableAxis axisMultFT0M{" axisMultFT0M" , {500 , 0 .0f , +100000 .0f }, " Multiplicity FT0M" };
333334 ConfigurableAxis axisMultFT0C{" axisMultFT0C" , {500 , 0 .0f , +10000 .0f }, " Multiplicity FT0C" };
334335 ConfigurableAxis axisMultFV0A{" axisMultFV0A" , {500 , 0 .0f , +100000 .0f }, " Multiplicity FV0A" };
336+ ConfigurableAxis axisRapidity{" axisRapidity" , {200 , -1 .0f , 1 .0f }, " rapidity axis for analysis" };
335337
336338 ConfigurableAxis axisRawCentrality{"axisRawCentrality", {VARIABLE_WIDTH, 0.000f, 52.320f, 75.400f, 95.719f, 115.364f, 135.211f, 155.791f, 177.504f, 200.686f, 225.641f, 252.645f, 281.906f, 313.850f, 348.302f, 385.732f, 426.307f, 470.146f, 517.555f, 568.899f, 624.177f, 684.021f, 748.734f, 818.078f, 892.577f, 973.087f, 1058.789f, 1150.915f, 1249.319f, 1354.279f, 1465.979f, 1584.790f, 1710.778f, 1844.863f, 1985.746f, 2134.643f, 2291.610f, 2456.943f, 2630.653f, 2813.959f, 3006.631f, 3207.229f, 3417.641f, 3637.318f, 3865.785f, 4104.997f, 4354.938f, 4615.786f, 4885.335f, 5166.555f, 5458.021f, 5762.584f, 6077.881f, 6406.834f, 6746.435f, 7097.958f, 7462.579f, 7839.165f, 8231.629f, 8635.640f, 9052.000f, 9484.268f, 9929.111f, 10389.350f, 10862.059f, 11352.185f, 11856.823f, 12380.371f, 12920.401f, 13476.971f, 14053.087f, 14646.190f, 15258.426f, 15890.617f, 16544.433f, 17218.024f, 17913.465f, 18631.374f, 19374.983f, 20136.700f, 20927.783f, 21746.796f, 22590.880f, 23465.734f, 24372.274f, 25314.351f, 26290.488f, 27300.899f, 28347.512f, 29436.133f, 30567.840f, 31746.818f, 32982.664f, 34276.329f, 35624.859f, 37042.588f, 38546.609f, 40139.742f, 41837.980f, 43679.429f, 45892.130f, 400000.000f}, "raw centrality signal"}; // for QA
337339
@@ -778,6 +780,13 @@ struct derivedlambdakzeroanalysis {
778780 }
779781 }
780782
783+ if (doEventMCQA) {
784+ histos.add (" hMultFT0MVsMultMC" , " hMultFT0MVsMultMC;FT0M amplitude;#it{N}_{ch}(|#it{#eta}|<0.5)" , kTH2D , {axisConfigurations.axisMultFT0M , axisConfigurations.axisNch });
785+ histos.add (" hMultFT0CVsMultMC" , " hMultFT0CVsMultMC;FT0C amplitude;#it{N}_{ch}(|#it{#eta}|<0.5)" , kTH2D , {axisConfigurations.axisMultFT0C , axisConfigurations.axisNch });
786+ histos.add (" hMultNGlobalVsMultMC" , " hMultNGlobalVsMultMC;#it{N}_{ch}(global tracks);#it{N}_{ch} (|#it{#eta}|<0.5)" , kTH2D , {axisConfigurations.axisNch , axisConfigurations.axisNch });
787+ histos.add (" hMultFV0AVsMultMC" , " hMultFV0AVsMultMC;FV0A amplitude;#it{N}_{ch}(|#it{#eta}|<0.5)" , kTH2D , {axisConfigurations.axisMultFV0A , axisConfigurations.axisNch });
788+ }
789+
781790 histos.add (" hEventPVz" , " hEventPVz" , kTH1D , {{100 , -20 .0f , +20 .0f }});
782791 histos.add (" hCentralityVsPVz" , " hCentralityVsPVz" , kTH2D , {axisConfigurations.axisCentralityFine , {100 , -20 .0f , +20 .0f }});
783792 if (doprocessGeneratedRun3 || doprocessGeneratedRun2) {
@@ -1193,6 +1202,11 @@ struct derivedlambdakzeroanalysis {
11931202 histos.add (" GeneralQA/h2dArmenterosAll" , " h2dArmenterosAll" , kTH2D , {axisConfigurations.axisAPAlpha , axisConfigurations.axisAPQt });
11941203 histos.add (" GeneralQA/h2dArmenterosSelected" , " h2dArmenterosSelected" , kTH2D , {axisConfigurations.axisAPAlpha , axisConfigurations.axisAPQt });
11951204
1205+ if (doprocessMonteCarloRun3 || doprocessMonteCarloRun2) {
1206+ histos.add (" GeneralQA/h2dRapVsRapGen" , " h2dRapVsRapGen;Rapidity;Generated rapidity" , kTH2D , {axisConfigurations.axisRapidity , axisConfigurations.axisRapidity });
1207+ histos.add (" GeneralQA/h2dPtVsPtGen" , " h2dPtVsPtGen;#it{p}_{T} (GeV/#it{c});#it{p}_{T}^{MC} (GeV/#it{c})" , kTH2D , {axisConfigurations.axisPt , axisConfigurations.axisPt });
1208+ }
1209+
11961210 // Creation of histograms: MC generated
11971211 if ((doprocessGeneratedRun3 || doprocessGeneratedRun2)) {
11981212 if (useMcCentrality) {
@@ -1862,7 +1876,7 @@ struct derivedlambdakzeroanalysis {
18621876 }
18631877
18641878 template <typename TV0 >
1865- void analyseCandidate (TV0 const & v0, float pt, float centrality, uint64_t selMap, uint8_t gapSide, int & nK0Shorts, int & nLambdas, int & nAntiLambdas)
1879+ void analyseCandidate (TV0 const & v0, float pt, float rapidityLambda, float rapidityK0Short, float centrality, uint64_t selMap, uint8_t gapSide, int & nK0Shorts, int & nLambdas, int & nAntiLambdas)
18661880 // precalculate this information so that a check is one mask operation, not many
18671881 {
18681882 bool passK0ShortSelections = false ;
@@ -2047,6 +2061,10 @@ struct derivedlambdakzeroanalysis {
20472061 histos.fill (HIST (" K0Short/h5dPosPhiVsEta" ), centrality, v0.positivept (), invMassK0Short, v0.positivephi (), v0.positiveeta ());
20482062 histos.fill (HIST (" K0Short/h5dNegPhiVsEta" ), centrality, v0.negativept (), invMassK0Short, v0.negativephi (), v0.negativeeta ());
20492063 }
2064+ if (doprocessMonteCarloRun3 || doprocessMonteCarloRun2) {
2065+ histos.fill (HIST (" GeneralQA/h2dRapVsRapGen" ), v0.yK0Short (), rapidityK0Short);
2066+ histos.fill (HIST (" GeneralQA/h2dPtVsPtGen" ), v0.pt (), pt);
2067+ }
20502068 nK0Shorts++;
20512069 }
20522070 if (passLambdaSelections && analyseLambda) {
@@ -2133,6 +2151,10 @@ struct derivedlambdakzeroanalysis {
21332151 histos.fill (HIST (" Lambda/h5dPosPhiVsEta" ), centrality, v0.positivept (), invMassLambda, v0.positivephi (), v0.positiveeta ());
21342152 histos.fill (HIST (" Lambda/h5dNegPhiVsEta" ), centrality, v0.negativept (), invMassLambda, v0.negativephi (), v0.negativeeta ());
21352153 }
2154+ if (doprocessMonteCarloRun3 || doprocessMonteCarloRun2) {
2155+ histos.fill (HIST (" GeneralQA/h2dRapVsRapGen" ), v0.yLambda (), rapidityLambda);
2156+ histos.fill (HIST (" GeneralQA/h2dPtVsPtGen" ), v0.pt (), pt);
2157+ }
21362158 nLambdas++;
21372159 }
21382160 if (passAntiLambdaSelections && analyseAntiLambda) {
@@ -2219,6 +2241,10 @@ struct derivedlambdakzeroanalysis {
22192241 histos.fill (HIST (" AntiLambda/h5dPosPhiVsEta" ), centrality, v0.positivept (), invMassAntiLambda, v0.positivephi (), v0.positiveeta ());
22202242 histos.fill (HIST (" AntiLambda/h5dNegPhiVsEta" ), centrality, v0.negativept (), invMassAntiLambda, v0.negativephi (), v0.negativeeta ());
22212243 }
2244+ if (doprocessMonteCarloRun3 || doprocessMonteCarloRun2) {
2245+ histos.fill (HIST (" GeneralQA/h2dRapVsRapGen" ), v0.yLambda (), rapidityLambda);
2246+ histos.fill (HIST (" GeneralQA/h2dPtVsPtGen" ), v0.pt (), pt);
2247+ }
22222248 nAntiLambdas++;
22232249 }
22242250
@@ -2831,6 +2857,10 @@ struct derivedlambdakzeroanalysis {
28312857 // If so, we consider it
28322858 bool atLeastOne = false ;
28332859 int biggestNContribs = -1 ;
2860+ float multFT0M = -1 .f ;
2861+ float multFT0C = -1 .f ;
2862+ float multNGlobal = -1 .f ;
2863+ float multFV0A = -1 .f ;
28342864 float centrality = 100 .5f ;
28352865 int nCollisions = 0 ;
28362866 for (auto const & collision : groupedCollisions) {
@@ -2843,6 +2873,10 @@ struct derivedlambdakzeroanalysis {
28432873 if (biggestNContribs < collision.multPVTotalContributors ()) {
28442874 biggestNContribs = collision.multPVTotalContributors ();
28452875 centrality = getCentralityRun3 (collision, useMcCentrality);
2876+ multFT0M = collision.multFT0A () + collision.multFT0C ();
2877+ multFT0C = collision.multFT0C ();
2878+ multNGlobal = collision.multNTracksGlobal ();
2879+ multFV0A = collision.multFV0A ();
28462880 }
28472881 } else { // we are in Run 2: there should be only one collision in groupedCollisions
28482882 centrality = eventSelections.useSPDTrackletsCent ? collision.centRun2SPDTracklets () : collision.centRun2V0M ();
@@ -2859,6 +2893,13 @@ struct derivedlambdakzeroanalysis {
28592893 histos.fill (HIST (" hCentralityVsPVzMC" ), centrality, mcCollision.posZ ());
28602894 histos.fill (HIST (" hEventPVzMC" ), mcCollision.posZ ());
28612895
2896+ if (doEventMCQA) {
2897+ histos.fill (HIST (" hMultFT0MVsMultMC" ), multFT0M, mcCollision.multMCNParticlesEta05 ());
2898+ histos.fill (HIST (" hMultFT0CVsMultMC" ), multFT0C, mcCollision.multMCNParticlesEta05 ());
2899+ histos.fill (HIST (" hMultNGlobalVsMultMC" ), multNGlobal, mcCollision.multMCNParticlesEta05 ());
2900+ histos.fill (HIST (" hMultFV0AVsMultMC" ), multFV0A, mcCollision.multMCNParticlesEta05 ());
2901+ }
2902+
28622903 if (atLeastOne) {
28632904 if constexpr (run3) {
28642905 if (useMcCentrality) {
@@ -2930,7 +2971,7 @@ struct derivedlambdakzeroanalysis {
29302971 BITSET (selMap, selPhysPrimLambda);
29312972 BITSET (selMap, selPhysPrimAntiLambda);
29322973
2933- analyseCandidate (v0, v0.pt (), centrality, selMap, selGapSide, nK0Shorts, nLambdas, nAntiLambdas);
2974+ analyseCandidate (v0, v0.pt (), v0. yLambda (), v0. yK0Short (), centrality, selMap, selGapSide, nK0Shorts, nLambdas, nAntiLambdas);
29342975 } // end v0 loop
29352976
29362977 // fill the histograms with the number of reconstructed K0s/Lambda/antiLambda per collision
@@ -3018,7 +3059,7 @@ struct derivedlambdakzeroanalysis {
30183059 BITSET (selMap, selPhysPrimAntiLambda);
30193060 }
30203061
3021- analyseCandidate (v0, ptmc, centrality, selMap, selGapSide, nK0Shorts, nLambdas, nAntiLambdas);
3062+ analyseCandidate (v0, ptmc, ymc, ymc, centrality, selMap, selGapSide, nK0Shorts, nLambdas, nAntiLambdas);
30223063
30233064 if (doCollisionAssociationQA) {
30243065 // check collision association explicitly
0 commit comments