3434#include " Framework/AnalysisTask.h"
3535#include " Framework/AnalysisDataModel.h"
3636#include " Framework/ASoAHelpers.h"
37- #include " AnalysisDataModel/HFSecondaryVertex.h"
3837#include " DetectorsVertexing/DCAFitterN.h"
3938#include " ReconstructionDataFormats/Track.h"
4039#include " AnalysisCore/RecoDecay.h"
5352#include < cmath>
5453#include < array>
5554#include < cstdlib>
56- #include " AnalysisDataModel/PID/PIDResponse.h"
5755#include " Framework/ASoAHelpers.h"
5856
5957using namespace o2 ;
@@ -85,35 +83,41 @@ struct lambdakzeroprefilterpairs {
8583 Configurable<int > mincrossedrows{" mincrossedrows" , 70 , " min crossed rows" };
8684 Configurable<bool > tpcrefit{" tpcrefit" , 1 , " demand TPC refit" };
8785
86+ OutputObj<TH1F> hGoodIndices{TH1F (" hGoodIndices" , " " , 4 , 0 , 4 )};
87+
8888 Produces<aod::V0GoodIndices> v0goodindices;
8989
9090 void process (aod::Collision const & collision, aod::V0s const & V0s,
9191 soa::Join<aod::FullTracks, aod::TracksExtended> const & tracks)
9292 {
9393 for (auto & V0 : V0s) {
94+ hGoodIndices->Fill (0.5 );
9495 if (tpcrefit) {
95- if (!(V0.posTrack ().flags () & 0x40 )) {
96+ if (!(V0.posTrack_as <FullTracksExt> ().trackType () & o2::aod::track::TPCrefit )) {
9697 continue ; // TPC refit
9798 }
98- if (!(V0.negTrack ().flags () & 0x40 )) {
99+ if (!(V0.negTrack_as <FullTracksExt> ().trackType () & o2::aod::track::TPCrefit )) {
99100 continue ; // TPC refit
100101 }
101102 }
102- if (V0.posTrack ().tpcNClsCrossedRows () < mincrossedrows) {
103+ hGoodIndices->Fill (1.5 );
104+ if (V0.posTrack_as <FullTracksExt>().tpcNClsCrossedRows () < mincrossedrows) {
103105 continue ;
104106 }
105- if (V0.negTrack ().tpcNClsCrossedRows () < mincrossedrows) {
107+ if (V0.negTrack_as <FullTracksExt> ().tpcNClsCrossedRows () < mincrossedrows) {
106108 continue ;
107109 }
108-
109- if (V0.posTrack_as <FullTracksExt>().dcaXY () < dcapostopv) {
110+ hGoodIndices-> Fill ( 2.5 );
111+ if (fabs ( V0.posTrack_as <FullTracksExt>().dcaXY () ) < dcapostopv) {
110112 continue ;
111113 }
112- if (V0.negTrack_as <FullTracksExt>().dcaXY () < dcanegtopv) {
114+ if (fabs ( V0.negTrack_as <FullTracksExt>().dcaXY () ) < dcanegtopv) {
113115 continue ;
114116 }
115-
116- v0goodindices (V0.posTrack ().globalIndex (), V0.negTrack ().globalIndex (), V0.posTrack ().collisionId ());
117+ hGoodIndices->Fill (3.5 );
118+ v0goodindices (V0.posTrack_as <FullTracksExt>().globalIndex (),
119+ V0.negTrack_as <FullTracksExt>().globalIndex (),
120+ V0.posTrack_as <FullTracksExt>().collisionId ());
117121 }
118122 }
119123};
@@ -124,7 +128,7 @@ struct lambdakzeroproducer {
124128 Produces<aod::V0Data> v0data;
125129
126130 OutputObj<TH1F> hEventCounter{TH1F (" hEventCounter" , " " , 1 , 0 , 1 )};
127- OutputObj<TH1F> hCascCandidate {TH1F (" hCascCandidate " , " " , 10 , 0 , 10 )};
131+ OutputObj<TH1F> hV0Candidate {TH1F (" hV0Candidate " , " " , 2 , 0 , 2 )};
128132
129133 // Configurables
130134 Configurable<double > d_bz{" d_bz" , -5.0 , " bz field" };
@@ -162,13 +166,13 @@ struct lambdakzeroproducer {
162166 std::array<float , 3 > pvec0 = {0 .};
163167 std::array<float , 3 > pvec1 = {0 .};
164168
165- hCascCandidate->Fill (0.5 );
166- auto pTrack = getTrackParCov (V0.posTrack ());
167- auto nTrack = getTrackParCov (V0.negTrack ());
169+ hV0Candidate->Fill (0.5 );
170+
171+ auto pTrack = getTrackParCov (V0.posTrack_as <FullTracksExt>());
172+ auto nTrack = getTrackParCov (V0.negTrack_as <FullTracksExt>());
168173 int nCand = fitter.process (pTrack, nTrack);
169174 if (nCand != 0 ) {
170175 fitter.propagateTracksToVertex ();
171- hCascCandidate->Fill (2.5 );
172176 const auto & vtx = fitter.getPCACandidate ();
173177 for (int i = 0 ; i < 3 ; i++) {
174178 pos[i] = vtx[i];
@@ -178,7 +182,7 @@ struct lambdakzeroproducer {
178182 }
179183
180184 // Apply selections so a skimmed table is created only
181- if (fitter.getChi2AtPCACandidate () < dcav0dau) {
185+ if (fitter.getChi2AtPCACandidate () > dcav0dau) {
182186 continue ;
183187 }
184188
@@ -188,13 +192,17 @@ struct lambdakzeroproducer {
188192 continue ;
189193 }
190194
191- v0data (V0.posTrack ().globalIndex (), V0.negTrack ().globalIndex (), V0.negTrack ().collisionId (),
192- pos[0 ], pos[1 ], pos[2 ],
193- pvec0[0 ], pvec0[1 ], pvec0[2 ],
194- pvec1[0 ], pvec1[1 ], pvec1[2 ],
195- fitter.getChi2AtPCACandidate (),
196- V0.posTrack_as <FullTracksExt>().dcaXY (),
197- V0.negTrack_as <FullTracksExt>().dcaXY ());
195+ hV0Candidate->Fill (1.5 );
196+ v0data (
197+ V0.posTrack_as <FullTracksExt>().globalIndex (),
198+ V0.negTrack_as <FullTracksExt>().globalIndex (),
199+ V0.negTrack_as <FullTracksExt>().collisionId (),
200+ pos[0 ], pos[1 ], pos[2 ],
201+ pvec0[0 ], pvec0[1 ], pvec0[2 ],
202+ pvec1[0 ], pvec1[1 ], pvec1[2 ],
203+ fitter.getChi2AtPCACandidate (),
204+ V0.posTrack_as <FullTracksExt>().dcaXY (),
205+ V0.negTrack_as <FullTracksExt>().dcaXY ());
198206 }
199207 }
200208};
0 commit comments