@@ -43,11 +43,15 @@ struct FemtoCorrelationsMC {
4343 // / Construct a registry object with direct declaration
4444 HistogramRegistry registry{" registry" , {}, OutputObjHandlingPolicy::AnalysisObject};
4545
46+ Configurable<bool > _removeSameBunchPileup{" removeSameBunchPileup" , false , " " };
47+ Configurable<bool > _requestGoodZvtxFT0vsPV{" requestGoodZvtxFT0vsPV" , false , " " };
48+ Configurable<bool > _requestVertexITSTPC{" requestVertexITSTPC" , false , " " };
49+
4650 Configurable<float > _min_P{" min_P" , 0.0 , " lower mometum limit" };
4751 Configurable<float > _max_P{" max_P" , 100.0 , " upper mometum limit" };
4852 Configurable<float > _eta{" eta" , 100.0 , " abs eta value limit" };
49- Configurable<float > _dcaXY{" dcaXY" , 10.0 , " abs dcaXY value limit" };
50- Configurable<float > _dcaZ{" dcaZ" , 10.0 , " abs dcaZ value limit" };
53+ Configurable<std::vector< float >> _dcaXY{" dcaXY" , std::vector< float >{ 0 . 3f , 0 . 0f , 0 . 0f }, " abs dcaXY value limit; formula: [0] + [1]*pT^[2] " };
54+ Configurable<std::vector< float >> _dcaZ{" dcaZ" , std::vector< float >{ 0 . 3f , 0 . 0f , 0 . 0f }, " abs dcaZ value limit; formula: [0] + [1]*pT^[2] " };
5155 Configurable<int16_t > _tpcNClsFound{" minTpcNClsFound" , 0 , " minimum allowed number of TPC clasters" };
5256 Configurable<float > _tpcChi2NCl{" tpcChi2NCl" , 100.0 , " upper limit for chi2 value of a fit over TPC clasters" };
5357 Configurable<float > _tpcCrossedRowsOverFindableCls{" tpcCrossedRowsOverFindableCls" , 0 , " lower limit of TPC CrossedRows/FindableCls value" };
@@ -89,7 +93,7 @@ struct FemtoCorrelationsMC {
8993 std::pair<int , std::vector<float >> TPCcuts_2;
9094 std::pair<int , std::vector<float >> TOFcuts_2;
9195
92- using FilteredCollisions = aod::SingleCollSels;
96+ using FilteredCollisions = soa::Join< aod::SingleCollSels, aod::SingleCollExtras> ;
9397 using FilteredTracks = soa::Join<aod::SingleTrackSels, aod::SingleTrkMCs>;
9498
9599 typedef std::shared_ptr<soa::Filtered<FilteredTracks>::iterator> trkType;
@@ -140,9 +144,9 @@ struct FemtoCorrelationsMC {
140144 for (unsigned int i = 0 ; i < _centBins.value .size () - 1 ; i++) {
141145
142146 std::map<int , std::shared_ptr<TH3>> DCA_histos_1_perMult;
143- DCA_histos_1_perMult[0 ] = registry.add <TH3>(Form (" Cent%i/FirstParticle/dcaxyz_vs_pt_primary" , i), " dcaxyz_vs_pt_primary" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {250 , -1 ., 1 . , " DCA_XY(pt) primary" }, {250 , -1 ., 1 . , " DCA_Z(pt) primary" }});
144- DCA_histos_1_perMult[1 ] = registry.add <TH3>(Form (" Cent%i/FirstParticle/dcaxyz_vs_pt_weakdecay" , i), " dcaxyz_vs_pt_weakdecay" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {250 , -1 ., 1 . , " DCA_XY(pt) weakdecay" }, {250 , -1 ., 1 . , " DCA_Z(pt) weakdecay" }});
145- DCA_histos_1_perMult[2 ] = registry.add <TH3>(Form (" Cent%i/FirstParticle/dcaxyz_vs_pt_material" , i), " dcaxyz_vs_pt_material" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {250 , -1 ., 1 . , " DCA_XY(pt) material" }, {250 , -1 ., 1 . , " DCA_Z(pt) material" }});
147+ DCA_histos_1_perMult[0 ] = registry.add <TH3>(Form (" Cent%i/FirstParticle/dcaxyz_vs_pt_primary" , i), " dcaxyz_vs_pt_primary" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {500 , -0.5 , 0.5 , " DCA_XY(pt) primary" }, {500 , -0.5 , 0.5 , " DCA_Z(pt) primary" }});
148+ DCA_histos_1_perMult[1 ] = registry.add <TH3>(Form (" Cent%i/FirstParticle/dcaxyz_vs_pt_weakdecay" , i), " dcaxyz_vs_pt_weakdecay" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {500 , -0.5 , 0.5 , " DCA_XY(pt) weakdecay" }, {500 , -0.5 , 0.5 , " DCA_Z(pt) weakdecay" }});
149+ DCA_histos_1_perMult[2 ] = registry.add <TH3>(Form (" Cent%i/FirstParticle/dcaxyz_vs_pt_material" , i), " dcaxyz_vs_pt_material" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {500 , -0.5 , 0.5 , " DCA_XY(pt) material" }, {500 , -0.5 , 0.5 , " DCA_Z(pt) material" }});
146150
147151 std::map<int , std::shared_ptr<TH1>> Purity_histos_1_perMult;
148152 Purity_histos_1_perMult[11 ] = registry.add <TH1>(Form (" Cent%i/FirstParticle/pSpectraEl" , i), " pSpectraEl" , kTH1F , {{100 , 0 ., 5 ., " p" }});
@@ -158,9 +162,9 @@ struct FemtoCorrelationsMC {
158162
159163 if (!IsIdentical) {
160164 std::map<int , std::shared_ptr<TH3>> DCA_histos_2_perMult;
161- DCA_histos_2_perMult[0 ] = registry.add <TH3>(Form (" Cent%i/SecondParticle/dcaxyz_vs_pt_primary" , i), " dcaxyz_vs_pt_primary" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {200 , -1 ., 1 . , " DCA_XY(pt) primary" }, {200 , -1 ., 1 . , " DCA_Z(pt) primary" }});
162- DCA_histos_2_perMult[1 ] = registry.add <TH3>(Form (" Cent%i/SecondParticle/dcaxyz_vs_pt_weakdecay" , i), " dcaxyz_vs_pt_weakdecay" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {200 , -1 ., 1 . , " DCA_XY(pt) weakdecay" }, {200 , -1 ., 1 . , " DCA_Z(pt) weakdecay" }});
163- DCA_histos_2_perMult[2 ] = registry.add <TH3>(Form (" Cent%i/SecondParticle/dcaxyz_vs_pt_material" , i), " dcaxyz_vs_pt_material" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {200 , -1 ., 1 . , " DCA_XY(pt) material" }, {200 , -1 ., 1 . , " DCA_Z(pt) material" }});
165+ DCA_histos_2_perMult[0 ] = registry.add <TH3>(Form (" Cent%i/SecondParticle/dcaxyz_vs_pt_primary" , i), " dcaxyz_vs_pt_primary" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {500 , -0.5 , 0.5 , " DCA_XY(pt) primary" }, {500 , -0.5 , - 0.5 , " DCA_Z(pt) primary" }});
166+ DCA_histos_2_perMult[1 ] = registry.add <TH3>(Form (" Cent%i/SecondParticle/dcaxyz_vs_pt_weakdecay" , i), " dcaxyz_vs_pt_weakdecay" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {500 , -0.5 , 0.5 , " DCA_XY(pt) weakdecay" }, {500 , -0.5 , 0.5 , " DCA_Z(pt) weakdecay" }});
167+ DCA_histos_2_perMult[2 ] = registry.add <TH3>(Form (" Cent%i/SecondParticle/dcaxyz_vs_pt_material" , i), " dcaxyz_vs_pt_material" , kTH3F , {{100 , 0 ., 5 ., " pt" }, {500 , -0.5 , 0.5 , " DCA_XY(pt) material" }, {500 , -0.5 , 0.5 , " DCA_Z(pt) material" }});
164168
165169 std::map<int , std::shared_ptr<TH1>> Purity_histos_2_perMult;
166170 Purity_histos_2_perMult[11 ] = registry.add <TH1>(Form (" Cent%i/SecondParticle/pSpectraEl" , i), " pSpectraEl" , kTH1F , {{100 , 0 ., 5 ., " p" }});
@@ -285,6 +289,12 @@ struct FemtoCorrelationsMC {
285289 continue ;
286290 if (track.template singleCollSel_as <soa::Filtered<FilteredCollisions>>().multPerc () < *_centBins.value .begin () || track.template singleCollSel_as <soa::Filtered<FilteredCollisions>>().multPerc () >= *(_centBins.value .end () - 1 ))
287291 continue ;
292+ if (_removeSameBunchPileup && !track.template singleCollSel_as <soa::Filtered<FilteredCollisions>>().isNoSameBunchPileup ())
293+ continue ;
294+ if (_requestGoodZvtxFT0vsPV && !track.template singleCollSel_as <soa::Filtered<FilteredCollisions>>().isGoodZvtxFT0vsPV ())
295+ continue ;
296+ if (_requestVertexITSTPC && !track.template singleCollSel_as <soa::Filtered<FilteredCollisions>>().isVertexITSTPC ())
297+ continue ;
288298
289299 unsigned int centBin = o2::aod::singletrackselector::getBinIndex<unsigned int >(track.template singleCollSel_as <soa::Filtered<FilteredCollisions>>().multPerc (), _centBins);
290300
@@ -295,7 +305,7 @@ struct FemtoCorrelationsMC {
295305 if (trackOrigin > -1 && trackOrigin < 3 )
296306 DCA_histos_1[centBin][track.origin ()]->Fill (track.pt (), track.dcaXY (), track.dcaZ ());
297307
298- if (abs (track.dcaXY ()) > _dcaXY || abs (track.dcaZ ()) > _dcaZ)
308+ if (abs (track.dcaXY ()) > _dcaXY. value [ 0 ] + _dcaXY. value [ 1 ] * std::pow (track. pt (), _dcaXY. value [ 2 ]) || abs (track.dcaZ ()) > _dcaZ. value [ 0 ] + _dcaZ. value [ 1 ] * std::pow (track. pt (), _dcaZ. value [ 2 ]) )
299309 continue ;
300310
301311 trackPDG = abs (track.pdgCode ());
@@ -316,7 +326,7 @@ struct FemtoCorrelationsMC {
316326 if (trackOrigin > -1 && trackOrigin < 3 )
317327 DCA_histos_2[centBin][track.origin ()]->Fill (track.pt (), track.dcaXY (), track.dcaZ ());
318328
319- if (abs (track.dcaXY ()) > _dcaXY || abs (track.dcaZ ()) > _dcaZ)
329+ if (abs (track.dcaXY ()) > _dcaXY. value [ 0 ] + _dcaXY. value [ 1 ] * std::pow (track. pt (), _dcaXY. value [ 2 ]) || abs (track.dcaZ ()) > _dcaZ. value [ 0 ] + _dcaZ. value [ 1 ] * std::pow (track. pt (), _dcaZ. value [ 2 ]) )
320330 continue ;
321331
322332 trackPDG = abs (track.pdgCode ());
0 commit comments