From 665f3db3cff6144f0d68818b612ab89c78d0bd80 Mon Sep 17 00:00:00 2001 From: mfloris Date: Fri, 6 Jun 2014 15:27:24 +0200 Subject: [PATCH] Modified DCA getter (M Tangaro) --- .../AliAnalysisTaskSpectraAllChAOD.cxx | 37 ++++++++++++------- .../TestAOD/AliAnalysisTaskSpectraAllChAOD.h | 3 +- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.cxx b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.cxx index 62545d2d410..3a5ffea8dc3 100644 --- a/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.cxx +++ b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.cxx @@ -236,9 +236,6 @@ void AliAnalysisTaskSpectraAllChAOD::UserExec(Option_t *) //main loop on tracks - //Get Vertex for DCA - AliAODVertex * vertex = fAOD->GetPrimaryVertex();//FIXME vertex is recreated - Int_t Nch = 0.; for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) { @@ -271,18 +268,10 @@ void AliAnalysisTaskSpectraAllChAOD::UserExec(Option_t *) } /*** DCA ***/ - - //AliAODTrack::DCA(): for newest AOD fTrack->DCA() always gives -999. This should fix. - //FIXME should update EventCuts? - //FIXME add track->GetXYZ(p) method - Double_t d[2], cov[2]; Double_t dcaxy = -999.; - AliExternalTrackParam etp; etp.CopyFromVTrack(static_cast(track)); - if(etp.PropagateToDCA(vertex, fAOD->GetMagneticField(),999,d,cov)) { -// printf("DCAr: %f DCAz: %f Cov: rr%f rz:%f zz:%f",d[0],d[1],cov[0],cov[1],cov[2]); - dcaxy = d[0]; - } + Double_t p[2]; + if(GetDCA(track,p)){ dcaxy=p[0]; } //pt cent Q vec IDrec IDgen isph y Double_t varTrk[7]; @@ -332,6 +321,28 @@ void AliAnalysisTaskSpectraAllChAOD::UserExec(Option_t *) PostData(4, fHelperPID); } +//_________________________________________________________________ +Bool_t AliAnalysisTaskSpectraAllChAOD::GetDCA(const AliAODTrack* trk, Double_t * p){ + + //AliAODTrack::DCA(): for newest AOD fTrack->DCA() always gives -999. This should fix. + //FIXME should update EventCuts? + //FIXME add track->GetXYZ(p) method + + double xyz[3],cov[3]; + + if (!trk->GetXYZ(xyz)) { // dca is not stored + AliExternalTrackParam etp; + etp.CopyFromVTrack(trk); + AliVEvent* ev = (AliVEvent*)trk->GetEvent(); + if (!ev) {/*printf("Event is not connected to the track\n");*/ return kFALSE;} + if (!etp.PropagateToDCA(ev->GetPrimaryVertex(), ev->GetMagneticField(),999,xyz,cov)) return kFALSE; // failed, track is too far from vertex + } + p[0] = xyz[0]; + p[1] = xyz[1]; + return kTRUE; + +} + //_________________________________________________________________ void AliAnalysisTaskSpectraAllChAOD::Terminate(Option_t *) { diff --git a/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.h b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.h index 4b28e1d2e61..8ec8b775614 100644 --- a/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.h +++ b/PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.h @@ -86,7 +86,8 @@ class AliAnalysisTaskSpectraAllChAOD : public AliAnalysisTaskSE void SetnDCABin(Int_t val) { fnDCABins = val; } void SetDCAmin(Double_t val) { fDCAmin = val; } void SetDCAmax(Double_t val) { fDCAmax = val; } - + Bool_t GetDCA(const AliAODTrack* trk, Double_t * p); + private: AliAODEvent * fAOD; //! AOD object -- 2.43.0