2929// david.dobrigkeit.chinellato@cern.ch
3030//
3131
32+ #include < Math/Vector4D.h>
33+ #include < cmath>
34+ #include < array>
35+ #include < cstdlib>
36+ #include < map>
37+ #include < string>
38+ #include < vector>
39+
40+ #include < TFile.h>
41+ #include < TH2F.h>
42+ #include < TProfile.h>
43+ #include < TLorentzVector.h>
44+ #include < TPDGCode.h>
45+ #include " Math/Vector3D.h"
46+
47+ #include " DCAFitter/DCAFitterN.h"
48+ #include " DataFormatsParameters/GRPMagField.h"
49+ #include " DataFormatsParameters/GRPObject.h"
50+ #include " DetectorsBase/GeometryManager.h"
51+ #include " DetectorsBase/Propagator.h"
52+ #include " Framework/runDataProcessing.h"
53+ #include " Framework/AnalysisTask.h"
54+ #include " Framework/AnalysisDataModel.h"
55+ #include " Framework/ASoAHelpers.h"
56+ #include " Framework/O2DatabasePDGPlugin.h"
57+ #include " ReconstructionDataFormats/Track.h"
58+ #include " CCDB/BasicCCDBManager.h"
59+ #include " CommonConstants/PhysicsConstants.h"
60+ #include " Common/Core/trackUtilities.h"
61+ #include " PWGLF/DataModel/LFStrangenessTables.h"
3262#include " PWGLF/DataModel/LFStrangenessMLTables.h"
3363#include " PWGLF/DataModel/LFStrangenessPIDTables.h"
3464#include " PWGLF/DataModel/LFStrangenessTables.h"
3565#include " PWGLF/Utils/strangenessBuilderHelper.h"
3666#include " PWGUD/Core/SGSelector.h"
67+ #include " PWGUD/Core/UPCHelpers.h"
3768
38- #include " Common/CCDB/EventSelectionParams.h"
39- #include " Common/Core/RecoDecay.h"
69+ #include " Common/Core/TrackSelection.h"
4070#include " Common/Core/Zorro.h"
4171#include " Common/Core/ZorroSummary.h"
72+ #include " Common/Core/trackUtilities.h"
73+ #include " Common/DataModel/Centrality.h"
74+ #include " Common/DataModel/EventSelection.h"
75+ #include " Common/DataModel/Multiplicity.h"
76+ #include " Common/DataModel/TrackSelectionTables.h"
77+ #include " Tools/ML/MlResponse.h"
4278#include " Tools/ML/model.h"
4379
44- #include < CCDB/BasicCCDBManager.h>
45- #include < CCDB/CcdbApi.h>
46- #include < CommonConstants/MathConstants.h>
47- #include < CommonConstants/PhysicsConstants.h>
48- #include < DCAFitter/DCAFitterN.h>
49- #include < DataFormatsParameters/GRPMagField.h>
50- #include < DataFormatsParameters/GRPObject.h>
51- #include < DetectorsBase/MatLayerCylSet.h>
52- #include < DetectorsBase/Propagator.h>
53- #include < Framework/AnalysisDataModel.h>
54- #include < Framework/AnalysisHelpers.h>
55- #include < Framework/AnalysisTask.h>
56- #include < Framework/Array2D.h>
57- #include < Framework/Configurable.h>
58- #include < Framework/DataTypes.h>
59- #include < Framework/HistogramRegistry.h>
60- #include < Framework/HistogramSpec.h>
61- #include < Framework/InitContext.h>
62- #include < Framework/O2DatabasePDGPlugin.h>
63- #include < Framework/OutputObjHeader.h>
64- #include < Framework/runDataProcessing.h>
65- #include < ReconstructionDataFormats/Track.h>
66-
67- #include < Math/Vector3Dfwd.h>
68- #include < TH1.h>
69- #include < TMath.h>
80+ #include " CCDB/BasicCCDBManager.h"
81+ #include " CommonConstants/PhysicsConstants.h"
82+ #include " Framework/ASoAHelpers.h"
83+ #include " Framework/AnalysisDataModel.h"
84+ #include " Framework/AnalysisTask.h"
85+ #include " Framework/O2DatabasePDGPlugin.h"
86+ #include " Framework/runDataProcessing.h"
87+ #include " ReconstructionDataFormats/Track.h"
88+
89+ #include < Math/Vector4D.h>
90+ #include < TFile.h>
91+ #include < TH2F.h>
92+ #include < TLorentzVector.h>
7093#include < TPDGCode.h>
71- #include < TVector3 .h>
94+ #include < TProfile .h>
7295
73- #include < algorithm>
7496#include < array>
7597#include < cmath>
76- #include < cstdint>
7798#include < cstdlib>
7899#include < map>
79100#include < string>
@@ -139,7 +160,7 @@ struct QuarkoniaToHyperons {
139160 Configurable<bool > requireNoCollInTimeRangeStd{" requireNoCollInTimeRangeStd" , true , " reject collisions corrupted by the cannibalism, with other collisions within +/- 10 microseconds" };
140161 Configurable<bool > requireNoCollInTimeRangeNarrow{" requireNoCollInTimeRangeNarrow" , false , " reject collisions corrupted by the cannibalism, with other collisions within +/- 10 microseconds" };
141162
142- Configurable<float > maxZVtxPosition{" maxZVtxPosition" , 10 ., " max Z vtx position (cm) " };
163+ Configurable<float > maxZVtxPosition{" maxZVtxPosition" , 10 ., " max Z vtx position" };
143164
144165 Configurable<bool > buildK0sK0sPairs{" buildK0sK0sPairs" , false , " Build K0s K0s from charmonia decay" };
145166 Configurable<bool > buildLaLaBarPairs{" buildLaLaBarPairs" , false , " Build Lambda antiLambda from charmonia decay" };
@@ -368,7 +389,7 @@ struct QuarkoniaToHyperons {
368389 ConfigurableAxis axisHypPairPhi{" axisHypPairPhi" , {180 , 0 .0f , constants::math::TwoPI}, " Hyperon pair azimuthal angle (rad)" };
369390 } axes;
370391
371- o2::base::MatLayerCylSet* lut; // material LUT for DCA fitter
392+ o2::base::MatLayerCylSet* lut; // material LUT for DCA fitter
372393 o2::vertexing::DCAFitterN<2 > fitter;
373394
374395 // helper object
@@ -378,7 +399,7 @@ struct QuarkoniaToHyperons {
378399 Service<o2::framework::O2DatabasePDG> pdgDB;
379400
380401 // For manual sliceBy
381- PresliceUnsorted<soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraCollLabels>> perMcCollision = aod::v0data::straMCCollisionId;
402+ PresliceUnsorted<soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraEvSelExtras, aod:: StraCollLabels>> perMcCollision = aod::v0data::straMCCollisionId;
382403
383404 enum Selection : uint64_t { selCosPA = 0 ,
384405 selRadius,
@@ -794,10 +815,10 @@ struct QuarkoniaToHyperons {
794815 histos.add (" QA/XiXiBar/h3dMassXiXiBarVsDCAPair" , " h3dMassXiXiBarVsDCAPair" , kTH3F , {axes.axisDCAHypPair , axes.axisPt , axes.axisQuarkoniumMass });
795816 histos.add (" QA/XiXiBar/h3dMassXiXiBarVsPairCosPA" , " h3dMassXiXiBarVsPairCosPA" , kTH3F , {axes.axisHypPairCosPA , axes.axisPt , axes.axisQuarkoniumMass });
796817 histos.add (" QA/XiXiBar/h3dMassXiXiBarVsPairOpAngle" , " h3dMassXiXiBarVsPairOpAngle" , kTH3F , {axes.axisHypPairOpAngle , axes.axisPt , axes.axisQuarkoniumMass });
797- histos.add (" QA/XiXiBar/h3dMassXiXiBarVsPairEta" , " h3dMassXiXiBarVsPairEta" , kTH3F , {axes.axisHypPairEta , axes.axisPt , axes.axisQuarkoniumMass });
798- histos.add (" QA/XiXiBar/h3dMassXiXiBarVsPairPhi" , " h3dMassXiXiBarVsPairPhi" , kTH3F , {axes.axisHypPairPhi , axes.axisPt , axes.axisQuarkoniumMass });
799- histos.add (" QA/XiXiBar /h3dDeltaEtaXiXiBarVsPairEta" , " h3dDeltaEtaXiXiBarVsPairEta" , kTH3F , {axes.axisHypPairEta , axes.axisPt , axes.axisHypPairEta });
800- histos.add (" QA/XiXiBar /h3dDeltaPhiXiXiBarVsPairPhi" , " h3dDeltaPhiXiXiBarVsPairPhi" , kTH3F , {axes.axisHypPairPhi , axes.axisPt , axes.axisHypPairPhi });
818+ histos.add (" QA/XiXiBar/h3dMassXiXiBarVsPairEta" , " h3dMassXiXiBarVsPairEta" , kTH3F , {axes.axisHypPairEta , axes.axisPt , axes.axisQuarkoniumMass });
819+ histos.add (" QA/XiXiBar/h3dMassXiXiBarVsPairPhi" , " h3dMassXiXiBarVsPairPhi" , kTH3F , {axes.axisHypPairPhi , axes.axisPt , axes.axisQuarkoniumMass });
820+ histos.add (" QA/LaLaBar /h3dDeltaEtaXiXiBarVsPairEta" , " h3dDeltaEtaXiXiBarVsPairEta" , kTH3F , {axes.axisHypPairEta , axes.axisPt , axes.axisHypPairEta });
821+ histos.add (" QA/LaLaBar /h3dDeltaPhiXiXiBarVsPairPhi" , " h3dDeltaPhiXiXiBarVsPairPhi" , kTH3F , {axes.axisHypPairPhi , axes.axisPt , axes.axisHypPairPhi });
801822 }
802823 }
803824 if (buildOmOmBarPairs) {
@@ -890,8 +911,8 @@ struct QuarkoniaToHyperons {
890911 histos.add (" QA/OmOmBar/h3dMassOmOmBarVsPairOpAngle" , " h3dMassOmOmBarVsPairOpAngle" , kTH3F , {axes.axisHypPairOpAngle , axes.axisPt , axes.axisQuarkoniumMass });
891912 histos.add (" QA/OmOmBar/h3dMassOmOmBarVsPairEta" , " h3dMassOmOmBarVsPairEta" , kTH3F , {axes.axisHypPairEta , axes.axisPt , axes.axisQuarkoniumMass });
892913 histos.add (" QA/OmOmBar/h3dMassOmOmBarVsPairPhi" , " h3dMassOmOmBarVsPairPhi" , kTH3F , {axes.axisHypPairPhi , axes.axisPt , axes.axisQuarkoniumMass });
893- histos.add (" QA/OmOmBar /h3dDeltaEtaOmOmBarVsPairEta" , " h3dDeltaEtaOmOmBarVsPairEta" , kTH3F , {axes.axisHypPairEta , axes.axisPt , axes.axisHypPairEta });
894- histos.add (" QA/OmOmBar /h3dDeltaPhiOmOmBarVsPairPhi" , " h3dDeltaPhiOmOmBarVsPairPhi" , kTH3F , {axes.axisHypPairPhi , axes.axisPt , axes.axisHypPairPhi });
914+ histos.add (" QA/LaLaBar /h3dDeltaEtaOmOmBarVsPairEta" , " h3dDeltaEtaOmOmBarVsPairEta" , kTH3F , {axes.axisHypPairEta , axes.axisPt , axes.axisHypPairEta });
915+ histos.add (" QA/LaLaBar /h3dDeltaPhiOmOmBarVsPairPhi" , " h3dDeltaPhiOmOmBarVsPairPhi" , kTH3F , {axes.axisHypPairPhi , axes.axisPt , axes.axisHypPairPhi });
895916 }
896917 }
897918
@@ -1061,13 +1082,11 @@ struct QuarkoniaToHyperons {
10611082 std::array<float , 3 > antiHyperonMomentum = {0 .0f , 0 .0f , 0 .0f };
10621083 float DCADau = -999 .f;
10631084 float CosPA = -1 .f;
1064- float OpAngle = -999 .f;
1065- float Eta () const
1066- {
1085+ float OpAngle = -999 .f;
1086+ float Eta () const {
10671087 return RecoDecay::eta (std::array{hyperonMomentum[0 ] + antiHyperonMomentum[0 ], hyperonMomentum[1 ] + antiHyperonMomentum[1 ], hyperonMomentum[2 ] + antiHyperonMomentum[2 ]});
10681088 }
1069- float Phi () const
1070- {
1089+ float Phi () const {
10711090 return RecoDecay::phi (std::array{hyperonMomentum[0 ] + antiHyperonMomentum[0 ], hyperonMomentum[1 ] + antiHyperonMomentum[1 ]});
10721091 }
10731092 };
@@ -1122,7 +1141,7 @@ struct QuarkoniaToHyperons {
11221141 TVector3 hyp2Momentum (pairInfo.antiHyperonMomentum [0 ], pairInfo.antiHyperonMomentum [1 ], pairInfo.antiHyperonMomentum [2 ]);
11231142 pairInfo.OpAngle = hyp1Momentum.Angle (hyp2Momentum);
11241143
1125- if (d < 1e-5f ) { // Parallel or nearly parallel lines
1144+ if (d < 1e-5f ) { // Parallel or nearly parallel lines
11261145 pairInfo.X = pairInfo.Y = pairInfo.Z = -999 .f ; // should we use another dummy value? Perhaps 999.f?
11271146 return pairInfo;
11281147 }
@@ -1202,6 +1221,7 @@ struct QuarkoniaToHyperons {
12021221 return pairInfo;
12031222 }
12041223
1224+
12051225 template <typename TCollision>
12061226 bool isEventAccepted (TCollision collision, bool fillHists)
12071227 // check whether the collision passes our collision selections
@@ -2497,7 +2517,7 @@ struct QuarkoniaToHyperons {
24972517
24982518 // ______________________________________________________
24992519 // Real data processing - no MC subscription
2500- void processRealData (soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraStamps> const & collisions, V0Candidates const & fullV0s, CascadeCandidates const & fullCascades, DauTracks const &)
2520+ void processRealData (soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraEvSelExtras, aod:: StraStamps> const & collisions, V0Candidates const & fullV0s, CascadeCandidates const & fullCascades, DauTracks const &)
25012521 {
25022522 // Custom grouping
25032523 v0sGrouped.clear ();
@@ -2674,7 +2694,7 @@ struct QuarkoniaToHyperons {
26742694
26752695 // ______________________________________________________
26762696 // Simulated processing (subscribes to MC information too)
2677- void processMonteCarlo (soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraStamps, aod::StraCollLabels> const & collisions, V0MCCandidates const & fullV0s, CascadeMCCandidates const & fullCascades, DauTracks const &, aod::MotherMCParts const &, soa::Join<aod::StraMCCollisions, aod::StraMCCollMults> const & /* mccollisions*/ , soa::Join<aod::V0MCCores, aod::V0MCCollRefs> const &, soa::Join<aod::CascMCCores, aod::CascMCCollRefs> const &)
2697+ void processMonteCarlo (soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraEvSelExtras, aod:: StraStamps, aod::StraCollLabels> const & collisions, V0MCCandidates const & fullV0s, CascadeMCCandidates const & fullCascades, DauTracks const &, aod::MotherMCParts const &, soa::Join<aod::StraMCCollisions, aod::StraMCCollMults> const & /* mccollisions*/ , soa::Join<aod::V0MCCores, aod::V0MCCollRefs> const &, soa::Join<aod::CascMCCores, aod::CascMCCollRefs> const &)
26782698 {
26792699 // Custom grouping
26802700 v0sGrouped.clear ();
0 commit comments