@@ -59,10 +59,10 @@ using namespace o2::framework::expressions;
5959using std::array;
6060
6161// use parameters + cov mat non-propagated, aux info + (extension propagated)
62- using FullTracksExt = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TracksDCA >;
63- using FullTracksExtIU = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TracksDCA >;
64- using FullTracksExtWithPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TracksDCA, aod:: pidTPCPi, aod::pidTPCKa, aod::pidTPCPr>;
65- using FullTracksExtIUWithPID = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TracksDCA, aod:: pidTPCPi, aod::pidTPCKa, aod::pidTPCPr>;
62+ using FullTracksExt = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov>;
63+ using FullTracksExtIU = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU>;
64+ using FullTracksExtWithPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr>;
65+ using FullTracksExtIUWithPID = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr>;
6666
6767Zorro zorro;
6868
@@ -80,7 +80,7 @@ using CascDataExtSelected = soa::Join<CascDataExt, CascadeFlags>;
8080} // namespace o2::aod
8181
8282using MyCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::PVMults>;
83- using MyCollisionsMult = soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults >;
83+ using MyCollisionsMult = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms >;
8484using MyCascades = soa::Filtered<aod::CascDataExtSelected>;
8585using LabeledCascades = soa::Join<aod::CascDataExt, aod::McCascLabels>;
8686
@@ -261,36 +261,44 @@ struct CascadeSelector {
261261 }
262262
263263 template <typename TCollision>
264- bool eventSelection (TCollision const & collision)
264+ bool eventSelection (TCollision const & collision, bool fillHistos )
265265 {
266266 if (useTrigger) {
267267 auto bc = collision.template bc_as <aod::BCsWithTimestamps>();
268268 zorro.initCCDB (ccdb.service , bc.runNumber (), bc.timestamp (), triggerList);
269269 bool eventTrigger = zorro.isSelected (bc.globalBC ());
270270 if (eventTrigger) {
271- registry.fill (HIST (" hTriggerQA" ), 1 );
271+ if (fillHistos)
272+ registry.fill (HIST (" hTriggerQA" ), 1 );
272273 } else {
273- registry.fill (HIST (" hTriggerQA" ), 0 );
274+ if (fillHistos)
275+ registry.fill (HIST (" hTriggerQA" ), 0 );
274276 return false ;
275277 }
276278 }
277279 // fill event selection based on which selection criteria are applied and passed
278- registry.fill (HIST (" hEventSel" ), 0 );
280+ if (fillHistos)
281+ registry.fill (HIST (" hEventSel" ), 0 );
279282 if (doSel8 && !collision.sel8 ()) {
280- registry.fill (HIST (" hEventSel" ), 1 );
283+ if (fillHistos)
284+ registry.fill (HIST (" hEventSel" ), 1 );
281285 return false ;
282286 } else if (collision.multNTracksPVeta1 () <= INEL) {
283- registry.fill (HIST (" hEventSel" ), 2 );
287+ if (fillHistos)
288+ registry.fill (HIST (" hEventSel" ), 2 );
284289 return false ;
285290 } else if (std::abs (collision.posZ ()) > maxVertexZ) {
286- registry.fill (HIST (" hEventSel" ), 3 );
291+ if (fillHistos)
292+ registry.fill (HIST (" hEventSel" ), 3 );
287293 return false ;
288294 } else if (doNoSameBunchPileUp && !collision.selection_bit (aod::evsel::kNoSameBunchPileup )) {
289- registry.fill (HIST (" hEventSel" ), 4 );
295+ if (fillHistos)
296+ registry.fill (HIST (" hEventSel" ), 4 );
290297 return false ;
291298 }
292299 // passes all selections
293- registry.fill (HIST (" hEventSel" ), 5 );
300+ if (fillHistos)
301+ registry.fill (HIST (" hEventSel" ), 5 );
294302 return true ;
295303 }
296304
@@ -528,7 +536,7 @@ struct CascadeSelector {
528536 bool evSel = false ; // will be true if at least one rec. collision passes evsel
529537 for (auto const & collision : collisions) {
530538 // can be more than 1 rec. collisions due to event splitting
531- evSel = eventSelection (collision);
539+ evSel = eventSelection (collision, false );
532540 if (evSel) // exit loop if we find 1 rec. event that passes evsel
533541 break ;
534542 }
@@ -564,7 +572,7 @@ struct CascadeSelector {
564572 // wrappers for data/MC processes on reco level
565573 void processRecData (MyCollisions::iterator const & collision, aod::CascDataExt const & Cascades, FullTracksExtIUWithPID const &, aod::BCsWithTimestamps const &)
566574 {
567- bool evSel = eventSelection (collision);
575+ bool evSel = eventSelection (collision, true );
568576 // do not skip the collision if event selection fails - this will lead to the cascadeFlag table having less entries than the Cascade table, and therefor not joinable.
569577 for (auto const & casc : Cascades) {
570578 if (!evSel) {
@@ -578,7 +586,7 @@ struct CascadeSelector {
578586
579587 void processRecMC (MyCollisions::iterator const & collision, LabeledCascades const & Cascades, FullTracksExtIUWithPID const &, aod::BCsWithTimestamps const &, aod::McParticles const &)
580588 {
581- bool evSel = eventSelection (collision);
589+ bool evSel = eventSelection (collision, true );
582590 // do not skip the collision if event selection fails - this will lead to the cascadeFlag table having less entries than the Cascade table, and therefor not joinable.
583591 for (auto const & casc : Cascades) {
584592 if (!evSel) {
@@ -620,7 +628,7 @@ struct CascadeCorrelations {
620628 ConfigurableAxis ptAxis = {" ptAxis" , {150 , 0 , 15 }, " #it{p}_{T}" };
621629 ConfigurableAxis vertexAxis = {" vertexAxis" , {200 , -10 .0f , 10 .0f }, " cm" };
622630 ConfigurableAxis dcaAxis = {" dcaAxis" , {100 , 0 .0f , 2 .0f }, " cm" };
623- ConfigurableAxis multiplicityAxis{" multiplicityAxis" , {100 , 0 , 100 }, " Multiplicity (MultFT0M ?)" };
631+ ConfigurableAxis multiplicityAxis{" multiplicityAxis" , {100 , 0 , 100 }, " Multiplicity (centFT0M ?)" };
624632 ConfigurableAxis invLambdaMassAxis{" invLambdaMassAxis" , {100 , 1 .07f , 1 .17f }, " Inv. Mass (GeV/c^{2})" };
625633 AxisSpec signAxis{3 , -1.5 , 1.5 , " sign of cascade" };
626634 AxisSpec deltaYAxis{40 , -2 .f , 2 .f , " #Delta y" };
@@ -686,10 +694,10 @@ struct CascadeCorrelations {
686694 " registry" ,
687695 {
688696 // inv mass
689- {" hMassXiMinus" , " hMassXiMinus" , {HistType::kTH2F , {invMassAxis, ptAxis}}},
690- {" hMassXiPlus" , " hMassXiPlus" , {HistType::kTH2F , {invMassAxis, ptAxis}}},
691- {" hMassOmegaMinus" , " hMassOmegaMinus" , {HistType::kTH2F , {invMassAxis, ptAxis}}},
692- {" hMassOmegaPlus" , " hMassOmegaPlus" , {HistType::kTH2F , {invMassAxis, ptAxis}}},
697+ {" hMassXiMinus" , " hMassXiMinus" , {HistType::kTH3F , {{ 200 , 1.24 , 1.44 , " Inv. Mass (GeV/c^{2}) " }, ptAxis, rapidityAxis }}},
698+ {" hMassXiPlus" , " hMassXiPlus" , {HistType::kTH3F , {{ 200 , 1.24 , 1.44 , " Inv. Mass (GeV/c^{2}) " }, ptAxis, rapidityAxis }}},
699+ {" hMassOmegaMinus" , " hMassOmegaMinus" , {HistType::kTH3F , {{ 200 , 1.6 , 1.8 , " Inv. Mass (GeV/c^{2}) " }, ptAxis, rapidityAxis }}},
700+ {" hMassOmegaPlus" , " hMassOmegaPlus" , {HistType::kTH3F , {{ 200 , 1.6 , 1.8 , " Inv. Mass (GeV/c^{2}) " }, ptAxis, rapidityAxis }}},
693701 // efficiency corrected inv mass
694702 {" hMassXiEffCorrected" , " hMassXiEffCorrected" , {HistType::kTHnSparseF , {invMassAxis, signAxis, ptAxis, rapidityAxis, vertexAxis, multiplicityAxis}}, true },
695703 {" hMassOmegaEffCorrected" , " hMassOmegaEffCorrected" , {HistType::kTHnSparseF , {invMassAxis, signAxis, ptAxis, rapidityAxis, vertexAxis, multiplicityAxis}}, true },
@@ -769,7 +777,7 @@ struct CascadeCorrelations {
769777 SliceCache cache;
770778 ConfigurableAxis axisVtxZ{" axisVtxZ" , {VARIABLE_WIDTH, -10 .0f , -8 .f , -6 .f , -4 .f , -2 .f , 0 .f , 2 .f , 4 .f , 6 .f , 8 .f , 10 .f }, " Mixing bins - z-vertex" };
771779 // ConfigurableAxis axisMult{"axisMult", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 100, 1000}, "Mixing bins - multiplicity"};
772- // using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::mult::MultFT0M<aod::mult::MultFT0A, aod::mult::MultFT0C> >;
780+ // using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::centFT0M >;
773781 // BinningType colBinning{{axisVtxZ, axisMult}, true}; // true is for 'ignore overflows' (true by default). Underflows and overflows will have bin -1.
774782 using BinningType = ColumnBinningPolicy<aod::collision::PosZ>;
775783 BinningType colBinning{{axisVtxZ}, true }; // true is for 'ignore overflows' (true by default). Underflows and overflows will have bin -1.
@@ -793,25 +801,25 @@ struct CascadeCorrelations {
793801 for (auto const & casc : Cascades) {
794802 if (casc.isSelected () <= 2 ) { // not exclusively an Omega --> consistent with Xi or both
795803 if (casc.sign () < 0 ) {
796- registry.fill (HIST (" hMassXiMinus" ), casc.mXi (), casc.pt ());
797- weight = getEfficiency (hEffXiMin, casc.pt ());
804+ registry.fill (HIST (" hMassXiMinus" ), casc.mXi (), casc.pt (), casc. yXi () );
805+ weight = getEfficiency (hEffXiMin, casc.pt (), casc. yXi () );
798806 } else {
799- registry.fill (HIST (" hMassXiPlus" ), casc.mXi (), casc.pt ());
800- weight = getEfficiency (hEffXiPlus, casc.pt ());
807+ registry.fill (HIST (" hMassXiPlus" ), casc.mXi (), casc.pt (), casc. yXi () );
808+ weight = getEfficiency (hEffXiPlus, casc.pt (), casc. yXi () );
801809 }
802810 // LOGF(info, "casc pt %f, weight %f", casc.pt(), weight);
803- registry.fill (HIST (" hMassXiEffCorrected" ), casc.mXi (), casc.sign (), casc.pt (), casc.yXi (), collision.posZ (), collision.multFT0M (), weight);
811+ registry.fill (HIST (" hMassXiEffCorrected" ), casc.mXi (), casc.sign (), casc.pt (), casc.yXi (), collision.posZ (), collision.centFT0M (), weight);
804812 registry.fill (HIST (" hRapidityXi" ), casc.yXi ());
805813 }
806814 if (casc.isSelected () >= 2 ) { // consistent with Omega or both
807815 if (casc.sign () < 0 ) {
808- registry.fill (HIST (" hMassOmegaMinus" ), casc.mOmega (), casc.pt ());
809- weight = getEfficiency (hEffOmegaMin, casc.pt ());
816+ registry.fill (HIST (" hMassOmegaMinus" ), casc.mOmega (), casc.pt (), casc. yOmega () );
817+ weight = getEfficiency (hEffOmegaMin, casc.pt (), casc. yOmega () );
810818 } else {
811- registry.fill (HIST (" hMassOmegaPlus" ), casc.mOmega (), casc.pt ());
812- weight = getEfficiency (hEffOmegaPlus, casc.pt ());
819+ registry.fill (HIST (" hMassOmegaPlus" ), casc.mOmega (), casc.pt (), casc. yOmega () );
820+ weight = getEfficiency (hEffOmegaPlus, casc.pt (), casc. yOmega () );
813821 }
814- registry.fill (HIST (" hMassOmegaEffCorrected" ), casc.mOmega (), casc.sign (), casc.pt (), casc.yOmega (), collision.posZ (), collision.multFT0M (), weight);
822+ registry.fill (HIST (" hMassOmegaEffCorrected" ), casc.mOmega (), casc.sign (), casc.pt (), casc.yOmega (), collision.posZ (), collision.centFT0M (), weight);
815823 registry.fill (HIST (" hRapidityOmega" ), casc.yOmega ());
816824 }
817825 registry.fill (HIST (" hV0Radius" ), casc.v0radius ());
@@ -870,12 +878,12 @@ struct CascadeCorrelations {
870878 if (assoc.isSelected () <= 2 && std::abs (assoc.yXi ()) < maxRapidity) { // assoc Xi
871879 if (doEfficiencyCorrection)
872880 weightAssoc = assoc.sign () < 0 ? getEfficiency (hEffXiMin, assoc.pt ()) : getEfficiency (hEffXiPlus, assoc.pt ());
873- registry.fill (HIST (" hXiXi" ), dphi, trigger.yXi () - assoc.yXi (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassXiTrigg, invMassXiAssoc, collision.posZ (), collision.multFT0M (), weightTrigg * weightAssoc);
881+ registry.fill (HIST (" hXiXi" ), dphi, trigger.yXi () - assoc.yXi (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassXiTrigg, invMassXiAssoc, collision.posZ (), collision.centFT0M (), weightTrigg * weightAssoc);
874882 }
875883 if (assoc.isSelected () >= 2 && std::abs (assoc.yOmega ()) < maxRapidity) { // assoc Omega
876884 if (doEfficiencyCorrection)
877885 weightAssoc = assoc.sign () < 0 ? getEfficiency (hEffOmegaMin, assoc.pt ()) : getEfficiency (hEffOmegaPlus, assoc.pt ());
878- registry.fill (HIST (" hXiOm" ), dphi, trigger.yXi () - assoc.yOmega (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassXiTrigg, invMassOmAssoc, collision.posZ (), collision.multFT0M (), weightTrigg * weightAssoc);
886+ registry.fill (HIST (" hXiOm" ), dphi, trigger.yXi () - assoc.yOmega (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassXiTrigg, invMassOmAssoc, collision.posZ (), collision.centFT0M (), weightTrigg * weightAssoc);
879887 }
880888 }
881889 if (trigger.isSelected () >= 2 && std::abs (trigger.yOmega ()) < maxRapidity) { // trigger Omega
@@ -885,12 +893,12 @@ struct CascadeCorrelations {
885893 if (doEfficiencyCorrection)
886894 weightAssoc = assoc.sign () < 0 ? getEfficiency (hEffXiMin, assoc.pt ()) : getEfficiency (hEffXiPlus, assoc.pt ());
887895 // if Omega-Xi, fill the Xi-Omega histogram (flip the trigger/assoc and dphy,dy signs)
888- registry.fill (HIST (" hXiOm" ), RecoDecay::constrainAngle (assoc.phi () - trigger.phi (), -PIHalf), -(trigger.yOmega () - assoc.yXi ()), assoc.sign (), trigger.sign (), assoc.pt (), trigger.pt (), invMassXiAssoc, invMassOmTrigg, collision.posZ (), collision.multFT0M (), weightTrigg * weightAssoc);
896+ registry.fill (HIST (" hXiOm" ), RecoDecay::constrainAngle (assoc.phi () - trigger.phi (), -PIHalf), -(trigger.yOmega () - assoc.yXi ()), assoc.sign (), trigger.sign (), assoc.pt (), trigger.pt (), invMassXiAssoc, invMassOmTrigg, collision.posZ (), collision.centFT0M (), weightTrigg * weightAssoc);
889897 }
890898 if (assoc.isSelected () >= 2 && std::abs (assoc.yOmega ()) < maxRapidity) { // assoc Omega
891899 if (doEfficiencyCorrection)
892900 weightAssoc = assoc.sign () < 0 ? getEfficiency (hEffOmegaMin, assoc.pt ()) : getEfficiency (hEffOmegaPlus, assoc.pt ());
893- registry.fill (HIST (" hOmOm" ), dphi, trigger.yOmega () - assoc.yOmega (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassOmTrigg, invMassOmAssoc, collision.posZ (), collision.multFT0M (), weightTrigg * weightAssoc);
901+ registry.fill (HIST (" hOmOm" ), dphi, trigger.yOmega () - assoc.yOmega (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassOmTrigg, invMassOmAssoc, collision.posZ (), collision.centFT0M (), weightTrigg * weightAssoc);
894902 }
895903 }
896904
@@ -956,12 +964,12 @@ struct CascadeCorrelations {
956964 if (assoc.isSelected () <= 2 && std::abs (assoc.yXi ()) < maxRapidity) { // assoc Xi
957965 if (doEfficiencyCorrection)
958966 weightAssoc = assoc.sign () < 0 ? getEfficiency (hEffXiMin, assoc.pt ()) : getEfficiency (hEffXiPlus, assoc.pt ());
959- registry.fill (HIST (" MixedEvents/hMEXiXi" ), dphi, trigger.yXi () - assoc.yXi (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassXiTrigg, invMassXiAssoc, col1.posZ (), col1.multFT0M (), weightTrigg * weightAssoc);
967+ registry.fill (HIST (" MixedEvents/hMEXiXi" ), dphi, trigger.yXi () - assoc.yXi (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassXiTrigg, invMassXiAssoc, col1.posZ (), col1.centFT0M (), weightTrigg * weightAssoc);
960968 }
961969 if (assoc.isSelected () >= 2 && std::abs (assoc.yOmega ()) < maxRapidity) { // assoc Omega
962970 if (doEfficiencyCorrection)
963971 weightAssoc = assoc.sign () < 0 ? getEfficiency (hEffOmegaMin, assoc.pt ()) : getEfficiency (hEffOmegaPlus, assoc.pt ());
964- registry.fill (HIST (" MixedEvents/hMEXiOm" ), dphi, trigger.yXi () - assoc.yOmega (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassXiTrigg, invMassOmAssoc, col1.posZ (), col1.multFT0M (), weightTrigg * weightAssoc);
972+ registry.fill (HIST (" MixedEvents/hMEXiOm" ), dphi, trigger.yXi () - assoc.yOmega (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassXiTrigg, invMassOmAssoc, col1.posZ (), col1.centFT0M (), weightTrigg * weightAssoc);
965973 }
966974 }
967975 if (trigger.isSelected () >= 2 && std::abs (trigger.yOmega ()) < maxRapidity) { // trigger Omega
@@ -971,12 +979,12 @@ struct CascadeCorrelations {
971979 if (doEfficiencyCorrection)
972980 weightAssoc = assoc.sign () < 0 ? getEfficiency (hEffXiMin, assoc.pt ()) : getEfficiency (hEffXiPlus, assoc.pt ());
973981 // if Omega-Xi, fill the Xi-Omega histogram (flip the trigger/assoc and dphy,dy signs)
974- registry.fill (HIST (" MixedEvents/hMEXiOm" ), RecoDecay::constrainAngle (assoc.phi () - trigger.phi (), -PIHalf), -(trigger.yOmega () - assoc.yXi ()), assoc.sign (), trigger.sign (), assoc.pt (), trigger.pt (), invMassXiAssoc, invMassOmTrigg, col1.posZ (), col1.multFT0M (), weightTrigg * weightAssoc);
982+ registry.fill (HIST (" MixedEvents/hMEXiOm" ), RecoDecay::constrainAngle (assoc.phi () - trigger.phi (), -PIHalf), -(trigger.yOmega () - assoc.yXi ()), assoc.sign (), trigger.sign (), assoc.pt (), trigger.pt (), invMassXiAssoc, invMassOmTrigg, col1.posZ (), col1.centFT0M (), weightTrigg * weightAssoc);
975983 }
976984 if (assoc.isSelected () >= 2 && std::abs (assoc.yOmega ()) < maxRapidity) { // assoc Omega
977985 if (doEfficiencyCorrection)
978986 weightAssoc = assoc.sign () < 0 ? getEfficiency (hEffOmegaMin, assoc.pt ()) : getEfficiency (hEffOmegaPlus, assoc.pt ());
979- registry.fill (HIST (" MixedEvents/hMEOmOm" ), dphi, trigger.yOmega () - assoc.yOmega (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassOmTrigg, invMassOmAssoc, col1.posZ (), col1.multFT0M (), weightTrigg * weightAssoc);
987+ registry.fill (HIST (" MixedEvents/hMEOmOm" ), dphi, trigger.yOmega () - assoc.yOmega (), trigger.sign (), assoc.sign (), trigger.pt (), assoc.pt (), invMassOmTrigg, invMassOmAssoc, col1.posZ (), col1.centFT0M (), weightTrigg * weightAssoc);
980988 }
981989 }
982990
@@ -1006,7 +1014,7 @@ struct CascadeCorrelations {
10061014 registry.fill (HIST (" MC/hSplitEvents" ), 1 );
10071015 registry.fill (HIST (" MC/hGenMultOneReco" ), mCounter .countFT0A (mcParticles) + mCounter .countFT0C (mcParticles));
10081016 for (auto const & collision : collisions) { // not really a loop, as there is only one collision
1009- FT0mult = collision.multFT0M ();
1017+ FT0mult = collision.centFT0M ();
10101018 vtxz = collision.posZ ();
10111019 }
10121020 } else if (collisions.size () > 1 ) {
0 commit comments