1313// / \brief Analysis of strangeness tracking efficiency via primary production of Omega and Xi in Run 3
1414// / \author Yakiv Paroviak (yakiv.paroviak@cern.ch)
1515
16- #include " Framework/runDataProcessing .h"
17- # include " Framework/AnalysisTask.h "
16+ #include " PWGLF/DataModel/LFStrangenessTables .h"
17+
1818#include " Common/DataModel/Centrality.h"
19- #include " Common/DataModel/Multiplicity.h"
2019#include " Common/DataModel/EventSelection.h"
20+ #include " Common/DataModel/Multiplicity.h"
21+
2122#include " Framework/ASoAHelpers.h"
2223#include " Framework/AnalysisDataModel.h"
23- #include " PWGLF/DataModel/LFStrangenessTables.h"
24+ #include " Framework/AnalysisTask.h"
25+ #include " Framework/runDataProcessing.h"
2426
2527using namespace o2 ;
2628using namespace o2 ::framework;
@@ -33,24 +35,23 @@ struct StrangeCascTrack {
3335
3436 HistogramRegistry histos{" Histos" , {}, OutputObjHandlingPolicy::AnalysisObject};
3537
36- Configurable<bool > doProcessPP{" doprocesspp " , true , " true for pp, false for PbPb and OO" };
37- Configurable<bool > doProcessPbPb{" doprocesspbpb " , false , " true for PbPb, false for pp and OO" };
38- Configurable<bool > doProcessOO{" doprocessoo " , false , " true for OO, false for pp and PbPb" };
38+ Configurable<bool > doProcessPP{" doProcessPP " , true , " true for pp, false for PbPb and OO" };
39+ Configurable<bool > doProcessPbPb{" doProcessPbPb " , false , " true for PbPb, false for pp and OO" };
40+ Configurable<bool > doProcessOO{" doProcessOO " , false , " true for OO, false for pp and PbPb" };
3941
40- Configurable<bool > doProcessMC{" domc " , false , " true for MC, false for data" };
42+ Configurable<bool > doProcessMC{" doProcessMC " , false , " true for MC, false for data" };
4143
42- Configurable<bool > doRequireFT0{" doft0 " , false , " true for offline trigger for Run 3" };
43- Configurable<bool > doApplyPID{" dopid " , false , " true for offline trigger for Run 3" };
44- Configurable<bool > doApplyCuts{" docuts " , true , " true for offline trigger for Run 3" };
44+ Configurable<bool > doRequireFT0{" doRequireFT0 " , false , " true for offline trigger for Run 3" };
45+ Configurable<bool > doApplyPID{" doApplyPID " , false , " true for offline trigger for Run 3" };
46+ Configurable<bool > doApplyCuts{" doApplyCuts " , true , " true for offline trigger for Run 3" };
4547
4648 ConfigurableAxis axisPt{" axisPt" , {VARIABLE_WIDTH, 0.0 , 0.5 , 1.0 , 1.5 , 2.0 , 3.0 , 4.0 , 6.0 , 10.0 }, " p_{T} (GeV/c)" };
4749 ConfigurableAxis axisMult{" axisMult" , {VARIABLE_WIDTH, 0 .0f , 0 .01f , 1 .0f , 10 .0f , 20 .0f , 30 .0f , 40 .0f , 50 .0f , 70 .0f , 100 .0f }, " Multiplicity" };
4850 ConfigurableAxis axisOmegaMass{" axisOmegaMass" , {2000 , 1.6 , 1.8 }, " #Omega M_{inv} (GeV/c^{2})" };
4951 ConfigurableAxis axisXiMass{" axisXiMass" , {2000 , 1.2 , 1.4 }, " #Xi M_{inv} (GeV/c^{2})" };
5052
51- Configurable<double > CutDCAtoPVxy{" cutpvdcaxy" , 0 .02f , " max cascade dca to PV in xy" };
52- Configurable<double > CutDCAtoPVz{" cutpvdcaz" , 0 .02f , " max cascade dca to PV in z" };
53-
53+ Configurable<double > CutDCAtoPVxy{" CutDCAtoPVxy" , 0 .02f , " max cascade dca to PV in xy" };
54+ Configurable<double > CutDCAtoPVz{" CutDCAtoPVz" , 0 .02f , " max cascade dca to PV in z" };
5455
5556 void init (InitContext const &)
5657 {
@@ -60,106 +61,105 @@ struct StrangeCascTrack {
6061 histos.add (" Events/PVz" , " PV z position" , kTH1F , {{100 , -20 , 20 }});
6162 histos.add (" Events/Mult" , " Multiplicity" , kTH1F , {axisMult});
6263
63- histos.add (" Tracked/Phi" , " Phi" , kTH1F , {{100 , 0 ., 2 * M_PI}});
64+ histos.add (" Tracked/Phi" , " Phi" , kTH1F , {{100 , 0 ., 2 * o2::constants::math:: M_PI}});
6465 histos.add (" Tracked/Eta" , " Eta" , kTH1F , {{102 , -2.01 , 2.01 }});
6566 histos.add (" Tracked/DCAxy" , " DCA to xy" , kTH1F , {{500 , 0 ., 0.5 }});
6667 histos.add (" Tracked/DCAz" , " DCA to z" , kTH1F , {{500 , 0 ., 0.5 }});
6768 histos.add (" Tracked/EvMult" , " Multiplicity of events with >=1 cascade" , kTH1F , {axisMult});
68- histos.add (" Tracked/MassOmega" , " Invariant mass hypothesis" ,kTH1F , {axisOmegaMass});
69+ histos.add (" Tracked/MassOmega" , " Invariant mass hypothesis" , kTH1F , {axisOmegaMass});
6970 histos.add (" Tracked/MassXi" , " Invariant mass hypothesis" , kTH1F , {axisXiMass});
70- histos.add (" Tracked/Omega" , " " ,kTHnD , {axisOmegaMass, axisPt, axisMult});
71+ histos.add (" Tracked/Omega" , " " , kTHnD , {axisOmegaMass, axisPt, axisMult});
7172 histos.add (" Tracked/Xi" , " " , kTHnD , {axisXiMass, axisPt, axisMult});
7273
73- histos.add (" All/Phi" , " Phi" , kTH1F , {{100 , 0 ., 2 * M_PI}});
74+ histos.add (" All/Phi" , " Phi" , kTH1F , {{100 , 0 ., 2 * o2::constants::math:: M_PI}});
7475 histos.add (" All/Eta" , " Eta" , kTH1F , {{102 , -2.01 , 2.01 }});
7576 histos.add (" All/DCAxy" , " DCA to xy" , kTH1F , {{1000 , 0 , 1 .}});
7677 histos.add (" All/DCAz" , " DCA to z" , kTH1F , {{1000 , 0 , 1 .}});
7778 histos.add (" All/EvMult" , " Multiplicity of events with >=1 cascade" , kTH1F , {axisMult});
78- histos.add (" All/MassOmega" , " Invariant mass hypothesis" ,kTH1F , {axisOmegaMass});
79+ histos.add (" All/MassOmega" , " Invariant mass hypothesis" , kTH1F , {axisOmegaMass});
7980 histos.add (" All/MassXi" , " Invariant mass hypothesis" , kTH1F , {axisXiMass});
8081 histos.add (" All/Omega" , " " , kTHnD , {axisOmegaMass, axisPt, axisMult});
81- histos.add (" All/Xi" , " " , kTHnD , {axisXiMass, axisPt, axisMult});
82+ histos.add (" All/Xi" , " " , kTHnD , {axisXiMass, axisPt, axisMult});
8283 }
8384
84-
85- void processTracked (soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs, aod::PVMults>::iterator const & collision,
86- aod::TraCascDatas const & tracascades)
87- {
88- double mult = doProcessPP ? collision.centFT0M () : collision.centFT0C ();
89- int64_t casccollid = 0 ;
90- for (auto const & cascade : tracascades) {
91-
92- double dcaxy = cascade.dcaXYCascToPV ();
93- double dcaz = cascade.dcaZCascToPV ();
94- if (doApplyCuts && ((dcaxy > CutDCAtoPVxy) || (dcaz > CutDCAtoPVz))) continue ; // DCA check
95-
96- if (collision.index () != casccollid) {
97- histos.fill (HIST (" Tracked/EvMult" ), mult); // count and list mult of events with at least one cascade
98- casccollid = collision.index ();
85+ void processTracked (soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs, aod::PVMults>::iterator const & collision,
86+ aod::TraCascDatas const & tracascades)
87+ {
88+ double mult = doProcessPP ? collision.centFT0M () : collision.centFT0C ();
89+ int64_t casccollid = 0 ;
90+ for (auto const & cascade : tracascades) {
91+
92+ double dcaxy = cascade.dcaXYCascToPV ();
93+ double dcaz = cascade.dcaZCascToPV ();
94+ if (doApplyCuts && ((dcaxy > CutDCAtoPVxy) || (dcaz > CutDCAtoPVz)))
95+ continue ; // DCA check
96+
97+ if (collision.index () != casccollid) {
98+ histos.fill (HIST (" Tracked/EvMult" ), mult); // count and list mult of events with at least one cascade
99+ casccollid = collision.index ();
100+ }
101+
102+ double pt = cascade.pt ();
103+ double phi = cascade.phi ();
104+ double eta = cascade.eta ();
105+ double massXi = cascade.mXi ();
106+ double massOmega = cascade.mOmega ();
107+
108+ histos.fill (HIST (" Tracked/DCAxy" ), dcaxy);
109+ histos.fill (HIST (" Tracked/DCAz" ), dcaz);
110+ histos.fill (HIST (" Tracked/Phi" ), phi);
111+ histos.fill (HIST (" Tracked/Eta" ), eta);
112+ histos.fill (HIST (" Tracked/MassXi" ), massXi);
113+ histos.fill (HIST (" Tracked/MassOmega" ), massOmega);
114+ histos.fill (HIST (" Tracked/Xi" ), massXi, pt, mult);
115+ histos.fill (HIST (" Tracked/Omega" ), massOmega, pt, mult);
99116 }
100-
101- double pt = cascade.pt ();
102- double phi = cascade.phi ();
103- double eta = cascade.eta ();
104- double massXi = cascade.mXi ();
105- double massOmega = cascade.mOmega ();
106-
107- histos.fill (HIST (" Tracked/DCAxy" ), dcaxy);
108- histos.fill (HIST (" Tracked/DCAz" ), dcaz);
109- histos.fill (HIST (" Tracked/Phi" ), phi);
110- histos.fill (HIST (" Tracked/Eta" ), eta);
111- histos.fill (HIST (" Tracked/MassXi" ), massXi);
112- histos.fill (HIST (" Tracked/MassOmega" ), massOmega);
113- histos.fill (HIST (" Tracked/Xi" ), massXi, pt, mult);
114- histos.fill (HIST (" Tracked/Omega" ), massOmega, pt, mult);
115-
116117 }
117- }
118118
119- void processAll (soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs, aod::PVMults>::iterator const & collision,
120- aod::CascDatas const & cascades)
121- {
122- histos.fill (HIST (" Events/EvCounter" ), 0.5 );
123- double mult = doProcessPP ? collision.centFT0M () : collision.centFT0C ();
124- histos.fill (HIST (" Events/Mult" ), mult);
125- double pvx = collision.posX ();
126- double pvy = collision.posY ();
127- double pvz = collision.posZ ();
128- histos.fill (HIST (" Events/PVx" ), pvx);
129- histos.fill (HIST (" Events/PVy" ), pvy);
130- histos.fill (HIST (" Events/PVz" ), pvz);
131-
132- int64_t casccollid = 0 ;
133- for (auto const & cascade : cascades) {
134-
135- double dcaxy = cascade.dcaXYCascToPV ();
136- double dcaz = cascade.dcaZCascToPV ();
137- if (doApplyCuts && ((dcaxy > CutDCAtoPVxy) || (dcaz > CutDCAtoPVz))) continue ; // DCA check
138-
139- if (collision.index () != casccollid) {
140- histos.fill (HIST (" All/EvMult" ), mult); // count and list mult of events with at least one cascade
141- casccollid = collision.index ();
119+ void processAll (soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs, aod::PVMults>::iterator const & collision,
120+ aod::CascDatas const & cascades)
121+ {
122+ histos.fill (HIST (" Events/EvCounter" ), 0.5 );
123+ double mult = doProcessPP ? collision.centFT0M () : collision.centFT0C ();
124+ histos.fill (HIST (" Events/Mult" ), mult);
125+ double pvx = collision.posX ();
126+ double pvy = collision.posY ();
127+ double pvz = collision.posZ ();
128+ histos.fill (HIST (" Events/PVx" ), pvx);
129+ histos.fill (HIST (" Events/PVy" ), pvy);
130+ histos.fill (HIST (" Events/PVz" ), pvz);
131+
132+ int64_t casccollid = 0 ;
133+ for (auto const & cascade : cascades) {
134+
135+ double dcaxy = cascade.dcaXYCascToPV ();
136+ double dcaz = cascade.dcaZCascToPV ();
137+ if (doApplyCuts && ((dcaxy > CutDCAtoPVxy) || (dcaz > CutDCAtoPVz)))
138+ continue ; // DCA check
139+
140+ if (collision.index () != casccollid) {
141+ histos.fill (HIST (" All/EvMult" ), mult); // count and list mult of events with at least one cascade
142+ casccollid = collision.index ();
143+ }
144+
145+ double pt = cascade.pt ();
146+ double phi = cascade.phi ();
147+ double eta = cascade.eta ();
148+ double massXi = cascade.mXi ();
149+ double massOmega = cascade.mOmega ();
150+
151+ histos.fill (HIST (" All/DCAxy" ), dcaxy);
152+ histos.fill (HIST (" All/DCAz" ), dcaz);
153+ histos.fill (HIST (" All/Phi" ), phi);
154+ histos.fill (HIST (" All/Eta" ), eta);
155+ histos.fill (HIST (" All/MassXi" ), massXi);
156+ histos.fill (HIST (" All/MassOmega" ), massOmega);
157+ histos.fill (HIST (" All/Xi" ), massXi, pt, mult);
158+ histos.fill (HIST (" All/Omega" ), massOmega, pt, mult);
142159 }
143-
144- double pt = cascade.pt ();
145- double phi = cascade.phi ();
146- double eta = cascade.eta ();
147- double massXi = cascade.mXi ();
148- double massOmega = cascade.mOmega ();
149-
150- histos.fill (HIST (" All/DCAxy" ), dcaxy);
151- histos.fill (HIST (" All/DCAz" ), dcaz);
152- histos.fill (HIST (" All/Phi" ), phi);
153- histos.fill (HIST (" All/Eta" ), eta);
154- histos.fill (HIST (" All/MassXi" ), massXi);
155- histos.fill (HIST (" All/MassOmega" ), massOmega);
156- histos.fill (HIST (" All/Xi" ), massXi, pt, mult);
157- histos.fill (HIST (" All/Omega" ), massOmega, pt, mult);
158-
159160 }
160- }
161- PROCESS_SWITCH (StrangeCascTrack, processTracked, " process tracked cascades" , true );
162- PROCESS_SWITCH (StrangeCascTrack, processAll, " process all cascades" , true );
161+ PROCESS_SWITCH (StrangeCascTrack, processTracked, " process tracked cascades" , true );
162+ PROCESS_SWITCH (StrangeCascTrack, processAll, " process all cascades" , true );
163163};
164164
165165WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments