@@ -138,6 +138,7 @@ struct CascadeSelector {
138138 ConfigurableAxis ptAxis = {" ptAxis" , {150 , 0 , 15 }, " #it{p}_{T}" };
139139 ConfigurableAxis rapidityAxis{" rapidityAxis" , {100 , -1 .f , 1 .f }, " y" };
140140 ConfigurableAxis invLambdaMassAxis{" invLambdaMassAxis" , {100 , 1 .07f , 1 .17f }, " Inv. Mass (GeV/c^{2})" };
141+ ConfigurableAxis chi2Axis{" chi2Axis" , {100 , 0 .f , 10 .f }, " Chi2" };
141142 AxisSpec itsClustersAxis{8 , -0.5 , 7.5 , " number of ITS clusters" };
142143 AxisSpec tpcRowsAxis{160 , -0.5 , 159.5 , " TPC crossed rows" };
143144 HistogramRegistry registry{
@@ -148,10 +149,10 @@ struct CascadeSelector {
148149 {" hCascRadius" , " hCascRadius" , {HistType::kTH3F , {radiusAxis, invXiMassAxis, ptAxis}}},
149150 {" hV0CosPA" , " hV0CosPA" , {HistType::kTH3F , {cpaAxis, invXiMassAxis, ptAxis}}},
150151 {" hCascCosPA" , " hCascCosPA" , {HistType::kTH3F , {cpaAxis, invXiMassAxis, ptAxis}}},
151- {" hDCAPosToPV" , " hDCAPosToPV" , {HistType::kTH3F , {vertexAxis , invXiMassAxis, ptAxis}}},
152- {" hDCANegToPV" , " hDCANegToPV" , {HistType::kTH3F , {vertexAxis , invXiMassAxis, ptAxis}}},
153- {" hDCABachToPV" , " hDCABachToPV" , {HistType::kTH3F , {vertexAxis , invXiMassAxis, ptAxis}}},
154- {" hDCAV0ToPV" , " hDCAV0ToPV" , {HistType::kTH3F , {vertexAxis , invXiMassAxis, ptAxis}}},
152+ {" hDCAPosToPV" , " hDCAPosToPV" , {HistType::kTH3F , {dcaAxis , invXiMassAxis, ptAxis}}},
153+ {" hDCANegToPV" , " hDCANegToPV" , {HistType::kTH3F , {dcaAxis , invXiMassAxis, ptAxis}}},
154+ {" hDCABachToPV" , " hDCABachToPV" , {HistType::kTH3F , {dcaAxis , invXiMassAxis, ptAxis}}},
155+ {" hDCAV0ToPV" , " hDCAV0ToPV" , {HistType::kTH3F , {dcaAxis , invXiMassAxis, ptAxis}}},
155156 {" hDCAV0Dau" , " hDCAV0Dau" , {HistType::kTH3F , {dcaAxis, invXiMassAxis, ptAxis}}},
156157 {" hDCACascDau" , " hDCACascDau" , {HistType::kTH3F , {dcaAxis, invXiMassAxis, ptAxis}}},
157158 {" hLambdaMass" , " hLambdaMass" , {HistType::kTH3F , {invLambdaMassAxis, invXiMassAxis, ptAxis}}},
@@ -161,27 +162,19 @@ struct CascadeSelector {
161162 {" hMassOmegaMinus" , " hMassOmegaMinus" , {HistType::kTH3F , {invOmegaMassAxis, ptAxis, rapidityAxis}}},
162163 {" hMassOmegaPlus" , " hMassOmegaPlus" , {HistType::kTH3F , {invOmegaMassAxis, ptAxis, rapidityAxis}}},
163164
164- // // invariant mass per cut, start with Xi
165- // {"hMassXi0", "Xi inv mass before selections", {HistType::kTH2F, {invMassAxis, ptAxis}}},
166- // {"hMassXi1", "Xi inv mass after TPCnCrossedRows cut", {HistType::kTH2F, {invMassAxis, ptAxis}}},
167- // {"hMassXi2", "Xi inv mass after ITSnClusters cut", {HistType::kTH2F, {invMassAxis, ptAxis}}},
168- // {"hMassXi3", "Xi inv mass after topo cuts", {HistType::kTH2F, {invMassAxis, ptAxis}}},
169- // {"hMassXi4", "Xi inv mass after V0 daughters PID cut", {HistType::kTH2F, {invMassAxis, ptAxis}}},
170- // {"hMassXi5", "Xi inv mass after bachelor PID cut", {HistType::kTH2F, {invMassAxis, ptAxis}}},
171-
172165 // ITS & TPC clusters, with Xi inv mass
173166 {" hTPCnCrossedRowsPos" , " hTPCnCrossedRowsPos" , {HistType::kTH3F , {tpcRowsAxis, invXiMassAxis, ptAxis}}},
174167 {" hTPCnCrossedRowsNeg" , " hTPCnCrossedRowsNeg" , {HistType::kTH3F , {tpcRowsAxis, invXiMassAxis, ptAxis}}},
175168 {" hTPCnCrossedRowsBach" , " hTPCnCrossedRowsBach" , {HistType::kTH3F , {tpcRowsAxis, invXiMassAxis, ptAxis}}},
176169 {" hITSnClustersPos" , " hITSnClustersPos" , {HistType::kTH3F , {itsClustersAxis, invXiMassAxis, ptAxis}}},
177170 {" hITSnClustersNeg" , " hITSnClustersNeg" , {HistType::kTH3F , {itsClustersAxis, invXiMassAxis, ptAxis}}},
178171 {" hITSnClustersBach" , " hITSnClustersBach" , {HistType::kTH3F , {itsClustersAxis, invXiMassAxis, ptAxis}}},
179- {" hTPCChi2Pos" , " hTPCChi2Pos" , {HistType::kTH1F , {{ 100 , 0 , 10 , " TPC Chi2 Pos " } }}},
180- {" hTPCChi2Neg" , " hTPCChi2Neg" , {HistType::kTH1F , {{ 100 , 0 , 10 , " TPC Chi2 Neg " } }}},
181- {" hTPCChi2Bach" , " hTPCChi2Bach" , {HistType::kTH1F , {{ 100 , 0 , 10 , " TPC Chi2 Bach " } }}},
182- {" hITSChi2Pos" , " hITSChi2Pos" , {HistType::kTH1F , {{ 100 , 0 , 100 , " ITS Chi2 Pos " } }}},
183- {" hITSChi2Neg" , " hITSChi2Neg" , {HistType::kTH1F , {{ 100 , 0 , 100 , " ITS Chi2 Neg " } }}},
184- {" hITSChi2Bach" , " hITSChi2Bach" , {HistType::kTH1F , {{ 100 , 0 , 100 , " ITS Chi2 Bach " } }}},
172+ {" hTPCChi2Pos" , " hTPCChi2Pos" , {HistType::kTH1F , {chi2Axis }}},
173+ {" hTPCChi2Neg" , " hTPCChi2Neg" , {HistType::kTH1F , {chi2Axis }}},
174+ {" hTPCChi2Bach" , " hTPCChi2Bach" , {HistType::kTH1F , {chi2Axis }}},
175+ {" hITSChi2Pos" , " hITSChi2Pos" , {HistType::kTH1F , {chi2Axis }}},
176+ {" hITSChi2Neg" , " hITSChi2Neg" , {HistType::kTH1F , {chi2Axis }}},
177+ {" hITSChi2Bach" , " hITSChi2Bach" , {HistType::kTH1F , {chi2Axis }}},
185178
186179 {" hTriggerQA" , " hTriggerQA" , {HistType::kTH1F , {{2 , -0.5 , 1.5 , " Trigger y/n" }}}},
187180 },
@@ -193,7 +186,7 @@ struct CascadeSelector {
193186 ccdb->setURL (ccdbUrl);
194187 ccdb->setCaching (true );
195188
196- auto h = registry.add <TH1>(" hSelectionStatus" , " hSelectionStatus" , HistType::kTH1I , {{10 , 0 , 10 , " status" }});
189+ auto h = registry.add <TH1>(" hSelectionStatus" , " hSelectionStatus" , HistType::kTH1F , {{10 , 0 , 10 , " status" }});
197190 h->GetXaxis ()->SetBinLabel (1 , " All" );
198191 h->GetXaxis ()->SetBinLabel (2 , " nTPC OK" );
199192 h->GetXaxis ()->SetBinLabel (3 , " nITS OK" );
@@ -204,7 +197,7 @@ struct CascadeSelector {
204197 h->GetXaxis ()->SetBinLabel (8 , " V0 PID OK" );
205198 h->GetXaxis ()->SetBinLabel (9 , " Bach PID OK" );
206199
207- auto hEventSel = registry.add <TH1>(" hEventSel" , " hEventSel" , HistType::kTH1I , {{10 , 0 , 10 , " selection criteria" }});
200+ auto hEventSel = registry.add <TH1>(" hEventSel" , " hEventSel" , HistType::kTH1F , {{10 , 0 , 10 , " selection criteria" }});
208201 hEventSel->GetXaxis ()->SetBinLabel (1 , " All" );
209202 hEventSel->GetXaxis ()->SetBinLabel (2 , " sel8" );
210203 hEventSel->GetXaxis ()->SetBinLabel (3 , " INEL0" );
@@ -218,10 +211,10 @@ struct CascadeSelector {
218211 registry.add (" truerec/hCascRadius" , " hCascRadius" , HistType::kTH1F , {radiusAxis});
219212 registry.add (" truerec/hV0CosPA" , " hV0CosPA" , HistType::kTH1F , {cpaAxis});
220213 registry.add (" truerec/hCascCosPA" , " hCascCosPA" , HistType::kTH1F , {cpaAxis});
221- registry.add (" truerec/hDCAPosToPV" , " hDCAPosToPV" , HistType::kTH1F , {vertexAxis });
222- registry.add (" truerec/hDCANegToPV" , " hDCANegToPV" , HistType::kTH1F , {vertexAxis });
223- registry.add (" truerec/hDCABachToPV" , " hDCABachToPV" , HistType::kTH1F , {vertexAxis });
224- registry.add (" truerec/hDCAV0ToPV" , " hDCAV0ToPV" , HistType::kTH1F , {vertexAxis });
214+ registry.add (" truerec/hDCAPosToPV" , " hDCAPosToPV" , HistType::kTH1F , {dcaAxis });
215+ registry.add (" truerec/hDCANegToPV" , " hDCANegToPV" , HistType::kTH1F , {dcaAxis });
216+ registry.add (" truerec/hDCABachToPV" , " hDCABachToPV" , HistType::kTH1F , {dcaAxis });
217+ registry.add (" truerec/hDCAV0ToPV" , " hDCAV0ToPV" , HistType::kTH1F , {dcaAxis });
225218 registry.add (" truerec/hDCAV0Dau" , " hDCAV0Dau" , HistType::kTH1F , {dcaAxis});
226219 registry.add (" truerec/hDCACascDau" , " hDCACascDau" , HistType::kTH1F , {dcaAxis});
227220 registry.add (" truerec/hLambdaMass" , " hLambdaMass" , HistType::kTH1F , {invLambdaMassAxis});
@@ -231,12 +224,12 @@ struct CascadeSelector {
231224 registry.add (" truerec/hITSnClustersPos" , " hITSnClustersPos" , HistType::kTH1F , {itsClustersAxis});
232225 registry.add (" truerec/hITSnClustersNeg" , " hITSnClustersNeg" , HistType::kTH1F , {itsClustersAxis});
233226 registry.add (" truerec/hITSnClustersBach" , " hITSnClustersBach" , HistType::kTH1F , {itsClustersAxis});
234- registry.add (" truerec/hTPCChi2Pos" , " hTPCChi2Pos" , HistType::kTH1F , {{ 100 , 0 , 10 , " TPC Chi2 Pos " } });
235- registry.add (" truerec/hTPCChi2Neg" , " hTPCChi2Neg" , HistType::kTH1F , {{ 100 , 0 , 10 , " TPC Chi2 Neg " } });
236- registry.add (" truerec/hTPCChi2Bach" , " hTPCChi2Bach" , HistType::kTH1F , {{ 100 , 0 , 10 , " TPC Chi2 Bach " } });
237- registry.add (" truerec/hITSChi2Pos" , " hITSChi2Pos" , HistType::kTH1F , {{ 100 , 0 , 100 , " ITS Chi2 Pos " } });
238- registry.add (" truerec/hITSChi2Neg" , " hITSChi2Neg" , HistType::kTH1F , {{ 100 , 0 , 100 , " ITS Chi2 Neg " } });
239- registry.add (" truerec/hITSChi2Bach" , " hITSChi2Bach" , HistType::kTH1F , {{ 100 , 0 , 100 , " ITS Chi2 Bach " } });
227+ registry.add (" truerec/hTPCChi2Pos" , " hTPCChi2Pos" , HistType::kTH1F , {chi2Axis });
228+ registry.add (" truerec/hTPCChi2Neg" , " hTPCChi2Neg" , HistType::kTH1F , {chi2Axis });
229+ registry.add (" truerec/hTPCChi2Bach" , " hTPCChi2Bach" , HistType::kTH1F , {chi2Axis });
230+ registry.add (" truerec/hITSChi2Pos" , " hITSChi2Pos" , HistType::kTH1F , {chi2Axis });
231+ registry.add (" truerec/hITSChi2Neg" , " hITSChi2Neg" , HistType::kTH1F , {chi2Axis });
232+ registry.add (" truerec/hITSChi2Bach" , " hITSChi2Bach" , HistType::kTH1F , {chi2Axis });
240233 registry.add (" truerec/hXiMinus" , " hXiMinus" , HistType::kTH2F , {ptAxis, rapidityAxis});
241234 registry.add (" truerec/hXiPlus" , " hXiPlus" , HistType::kTH2F , {ptAxis, rapidityAxis});
242235 registry.add (" truerec/hOmegaMinus" , " hOmegaMinus" , HistType::kTH2F , {ptAxis, rapidityAxis});
@@ -423,8 +416,13 @@ struct CascadeSelector {
423416 casc.cascradius () < cascadesetting_cascradius ||
424417 casc.v0cosPA (pvx, pvy, pvz) < v0setting_cospa ||
425418 casc.casccosPA (pvx, pvy, pvz) < cascadesetting_cospa ||
426- casc.dcav0topv (pvx, pvy, pvz) < cascadesetting_mindcav0topv ||
427- std::abs (casc.mLambda () - 1.115683 ) > cascadesetting_v0masswindow)
419+ std::abs (casc.dcav0topv (pvx, pvy, pvz)) < cascadesetting_mindcav0topv ||
420+ std::abs (casc.mLambda () - 1.115683 ) > cascadesetting_v0masswindow ||
421+ std::abs (casc.dcapostopv ()) < v0setting_dcapostopv ||
422+ std::abs (casc.dcanegtopv ()) < v0setting_dcanegtopv ||
423+ casc.dcaV0daughters () > v0setting_dcav0dau ||
424+ std::abs (casc.dcabachtopv ()) < cascadesetting_dcabachtopv ||
425+ casc.dcacascdaughters () > cascadesetting_dcacascdau)
428426 return 0 ; // It failed at least one topo selection
429427
430428 registry.fill (HIST (" hSelectionStatus" ), 4 ); // passes topo
@@ -625,6 +623,7 @@ struct CascadeCorrelations {
625623 Configurable<std::string> efficiencyCCDBPath{" efficiencyCCDBPath" , " Users/r/rspijker/test/EffTest" , " Path of the efficiency corrections" };
626624 Configurable<bool > doTFBorderCut{" doTFBorderCut" , true , " Switch to apply TimeframeBorderCut event selection" };
627625 Configurable<bool > doSel8{" doSel8" , true , " Switch to apply sel8 event selection" };
626+ Configurable<int > INEL{" INEL" , 0 , " Number of charged tracks within |eta| < 1 has to be greater than value" }; // used in MC closure
628627
629628 ConfigurableAxis radiusAxis = {" radiusAxis" , {100 , 0 .0f , 50 .0f }, " cm" };
630629 ConfigurableAxis cpaAxis = {" cpaAxis" , {100 , 0 .95f , 1 .0f }, " CPA" };
@@ -1006,25 +1005,28 @@ struct CascadeCorrelations {
10061005 Configurable<float > etaGenCascades{" etaGenCascades" , 0.8 , " min/max of eta for generated cascades" };
10071006 Filter genCascadesFilter = nabs(aod::mcparticle::pdgCode) == 3312 ;
10081007
1009- void processMC (aod::McCollision const &, soa::SmallGroups<soa::Join<aod::McCollisionLabels, MyCollisionsMult>> const & collisions, soa::Filtered<aod::McParticles> const & genCascades, aod::McParticles const & mcParticles)
1008+ void processMC (aod::McCollision const & mcCollision , soa::SmallGroups<soa::Join<aod::McCollisionLabels, MyCollisionsMult>> const & collisions, soa::Filtered<aod::McParticles> const & genCascades, aod::McParticles const & mcParticles)
10101009 {
1010+ // apply evsel
1011+ if (INEL >= 0 && !pwglf::isINELgtNmc (mcParticles, INEL, pdgDB))
1012+ return ;
1013+ if (std::abs (mcCollision.posZ ()) > zVertexCut)
1014+ return ;
1015+
10111016 // Let's do some logic on matched reconstructed collisions - if there less or more than one, fill some QA and skip the rest
10121017 double FT0mult = -1 ; // non-sensible default value just in case
1013- double vtxz = - 999 .; // non-sensible default value just in case
1018+ double vtxz = mcCollision. posZ ();
10141019 if (collisions.size () < 1 ) {
10151020 registry.fill (HIST (" MC/hSplitEvents" ), 0 );
10161021 registry.fill (HIST (" MC/hGenMultNoReco" ), mCounter .countFT0A (mcParticles) + mCounter .countFT0C (mcParticles));
1017- return ;
10181022 } else if (collisions.size () == 1 ) {
10191023 registry.fill (HIST (" MC/hSplitEvents" ), 1 );
10201024 registry.fill (HIST (" MC/hGenMultOneReco" ), mCounter .countFT0A (mcParticles) + mCounter .countFT0C (mcParticles));
10211025 for (auto const & collision : collisions) { // not really a loop, as there is only one collision
10221026 FT0mult = collision.centFT0M ();
1023- vtxz = collision.posZ ();
10241027 }
10251028 } else if (collisions.size () > 1 ) {
10261029 registry.fill (HIST (" MC/hSplitEvents" ), collisions.size ());
1027- return ;
10281030 }
10291031
10301032 // QA
0 commit comments