From 40891fa2882f8fd1a673fd64974ab857e764f994 Mon Sep 17 00:00:00 2001 From: Constantin Loizides Date: Mon, 9 Dec 2013 21:21:10 +0100 Subject: [PATCH] Added static AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface function that operates on esd or aod tracks --- EMCAL/AliEMCALRecoUtils.cxx | 68 ++++++++++++++++++++++++++++++++++++- EMCAL/AliEMCALRecoUtils.h | 6 +++- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/EMCAL/AliEMCALRecoUtils.cxx b/EMCAL/AliEMCALRecoUtils.cxx index bf4b2ce513e..d0bdd6b2e3b 100644 --- a/EMCAL/AliEMCALRecoUtils.cxx +++ b/EMCAL/AliEMCALRecoUtils.cxx @@ -13,7 +13,7 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* $Id$ */ +/* $Id: AliEMCALRecoUtils.cxx | Sun Dec 8 06:56:48 2013 +0100 | Constantin Loizides $ */ /////////////////////////////////////////////////////////////////////////////// // @@ -2099,6 +2099,72 @@ Int_t AliEMCALRecoUtils::FindMatchedClusterInClusterArr(const AliExternalTrackP return index; } +//------------------------------------------------------------------------------------ +Bool_t AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(AliVTrack *track, + Double_t emcalR, Double_t mass, Double_t step) +{ + // Extrpolate track to EMCAL surface + + track->SetTrackPhiEtaPtOnEMCal(-999, -999, -999); + + if (track->Pt()<0.350) + return kFALSE; + + Double_t phi = track->Phi()*TMath::RadToDeg(); + if (TMath::Abs(track->Eta())>0.9 || phi <= 10 || phi >= 250) + return kFALSE; + + AliESDtrack *esdt = dynamic_cast(track); + AliAODTrack *aodt = 0; + if (!esdt) { + aodt = dynamic_cast(track); + if (!aodt) + return kFALSE; + } + + if (mass<0) { + Bool_t onlyTPC = kFALSE; + if (mass==-99) + onlyTPC=kTRUE; + if (esdt) + mass = esdt->GetMass(onlyTPC); + else + mass = aodt->M(); + } + + AliExternalTrackParam *trackParam = 0; + if (esdt) { + trackParam = new AliExternalTrackParam(*esdt->GetInnerParam()); + } else { + Double_t xyz[3] = {0}, pxpypz[3] = {0}, cv[21] = {0}; + aodt->PxPyPz(pxpypz); + aodt->XvYvZv(xyz); + aodt->GetCovarianceXYZPxPyPz(cv); + trackParam = new AliExternalTrackParam(xyz,pxpypz,cv,aodt->Charge()); + } + if (!trackParam) + return kFALSE; + + Float_t etaout=-999, phiout=-999, ptout=-999; + Bool_t ret = ExtrapolateTrackToEMCalSurface(trackParam, + emcalR, + mass, + step, + etaout, + phiout, + ptout); + + if (!ret) + return kFALSE; + + if (TMath::Abs(etaout)>0.75 || (phiout<70*TMath::DegToRad()) || (phiout>190*TMath::DegToRad())) + return kFALSE; + + track->SetTrackPhiEtaPtOnEMCal(phiout, etaout, ptout); + return kTRUE; +} + + //------------------------------------------------------------------------------------ Bool_t AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(AliExternalTrackParam *trkParam, const Double_t emcalR, diff --git a/EMCAL/AliEMCALRecoUtils.h b/EMCAL/AliEMCALRecoUtils.h index 8d896f567e0..98f4e446220 100644 --- a/EMCAL/AliEMCALRecoUtils.h +++ b/EMCAL/AliEMCALRecoUtils.h @@ -1,7 +1,7 @@ #ifndef ALIEMCALRECOUTILS_H #define ALIEMCALRECOUTILS_H -/* $Id: AliEMCALRecoUtils.h 33808 2009-07-15 09:48:08Z gconesab $ */ +/* $Id: AliEMCALRecoUtils.h | Tue Jul 23 09:11:15 2013 +0000 | gconesab $ */ /////////////////////////////////////////////////////////////////////////////// // @@ -34,6 +34,7 @@ class AliEMCALGeometry; class AliEMCALPIDUtils; class AliESDtrack; class AliExternalTrackParam; +class AliVTrack; class AliEMCALRecoUtils : public TNamed { @@ -263,6 +264,9 @@ public: AliExternalTrackParam *trkParam, const TObjArray * clusterArr, Float_t &dEta, Float_t &dPhi); + + static Bool_t ExtrapolateTrackToEMCalSurface(AliVTrack *track, /*note, on success the call will change the track*/ + Double_t emcalR=440, Double_t mass=0.1396, Double_t step=20); static Bool_t ExtrapolateTrackToEMCalSurface(AliExternalTrackParam *trkParam, const Double_t emcalR, const Double_t mass, const Double_t step, -- 2.43.0