From: wiechula Date: Thu, 27 Sep 2012 10:27:12 +0000 (+0000) Subject: o use AliPIDResponse (Markus Fasel) X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=320386a4cab84ee080ceb6c7f05e83217892ca55 o use AliPIDResponse (Markus Fasel) --- diff --git a/ANALYSIS/AliESDpidCuts.cxx b/ANALYSIS/AliESDpidCuts.cxx index 2970b5a815b..c46dc83a4f2 100644 --- a/ANALYSIS/AliESDpidCuts.cxx +++ b/ANALYSIS/AliESDpidCuts.cxx @@ -24,10 +24,12 @@ #include #include +#include "AliAnalysisManager.h" +#include "AliInputEventHandler.h" #include "AliESDtrack.h" #include "AliESDEvent.h" #include "AliLog.h" -#include "AliESDpid.h" +#include "AliPIDResponse.h" #include "AliESDpidCuts.h" @@ -38,7 +40,7 @@ const Int_t AliESDpidCuts::kNcuts = 3; //_____________________________________________________________________ AliESDpidCuts::AliESDpidCuts(const Char_t *name, const Char_t *title): AliAnalysisCuts(name, title) - , fESDpid(NULL) + , fPIDresponse(NULL) , fTPCsigmaCutRequired(0) , fTOFsigmaCutRequired(0) , fCutTPCclusterRatio(0.) @@ -50,7 +52,6 @@ AliESDpidCuts::AliESDpidCuts(const Char_t *name, const Char_t *title): // Default constructor // - fESDpid = new AliESDpid; memset(fCutTPCnSigma, 0, sizeof(Float_t)* AliPID::kSPECIES * 2); memset(fCutTOFnSigma, 0, sizeof(Float_t)* AliPID::kSPECIES * 2); @@ -62,7 +63,7 @@ AliESDpidCuts::AliESDpidCuts(const Char_t *name, const Char_t *title): //_____________________________________________________________________ AliESDpidCuts::AliESDpidCuts(const AliESDpidCuts &ref): AliAnalysisCuts(ref) - , fESDpid(NULL) + , fPIDresponse(NULL) , fTPCsigmaCutRequired(ref.fTPCsigmaCutRequired) , fTOFsigmaCutRequired(ref.fTOFsigmaCutRequired) , fCutTPCclusterRatio(ref.fCutTPCclusterRatio) @@ -73,7 +74,7 @@ AliESDpidCuts::AliESDpidCuts(const AliESDpidCuts &ref): // // Copy constructor // - fESDpid = new AliESDpid(*ref.fESDpid); + fPIDresponse = ref.fPIDresponse; memcpy(fCutTPCnSigma, ref.fCutTPCnSigma, sizeof(Float_t) * AliPID::kSPECIES * 2); memcpy(fCutTOFnSigma, ref.fCutTOFnSigma, sizeof(Float_t) * AliPID::kSPECIES * 2); @@ -103,9 +104,7 @@ AliESDpidCuts::~AliESDpidCuts(){ // // Destructor // - delete fESDpid; - delete fHcutStatistics; delete fHcutCorrelation; for(Int_t imode = 0; imode < 2; imode++){ delete fHclusterRatio[imode]; @@ -116,6 +115,20 @@ AliESDpidCuts::~AliESDpidCuts(){ } } +//_____________________________________________________________________ +void AliESDpidCuts::Init(){ + // + // Init function, get PID response from the Analysis Manager + // + AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); + if(mgr){ + AliInputEventHandler *handler = dynamic_cast(mgr->GetInputEventHandler()); + if(handler){ + fPIDresponse = handler->GetPIDResponse(); + } + } +} + //_____________________________________________________________________ Bool_t AliESDpidCuts::IsSelected(TObject *obj){ // @@ -141,7 +154,7 @@ void AliESDpidCuts::Copy(TObject &c) const { // AliESDpidCuts &target = dynamic_cast(c); - target.fESDpid = new AliESDpid(*fESDpid); + target.fPIDresponse = fPIDresponse; target.fCutTPCclusterRatio = fCutTPCclusterRatio; target.fMinMomentumTOF = fMinMomentumTOF; @@ -233,6 +246,10 @@ Bool_t AliESDpidCuts::AcceptTrack(const AliESDtrack *track, const AliESDEvent *e // // Check whether the tracks survived the cuts // + if(!fPIDresponse){ + AliError("PID Response not available"); + return 0; + } enum{ kCutClusterRatioTPC, kCutNsigmaTPC, @@ -252,7 +269,7 @@ Bool_t AliESDpidCuts::AcceptTrack(const AliESDtrack *track, const AliESDEvent *e // check TPC nSigma cut Float_t nsigmaTPC[AliPID::kSPECIES], nsigma; // need all sigmas for QA plotting for(Int_t ispec = 0; ispec < AliPID::kSPECIES; ispec++){ - nsigmaTPC[ispec] = nsigma = fESDpid->NumberOfSigmasTPC(track,(AliPID::EParticleType)ispec); + nsigmaTPC[ispec] = nsigma = fPIDresponse->NumberOfSigmasTPC(track,(AliPID::EParticleType)ispec); if(!(fTPCsigmaCutRequired & 1 << ispec)) continue; SETBIT(cutRequired, kCutNsigmaTPC); // We found at least one species where the n-Sigma Cut is required if(nsigma >= fCutTPCnSigma[2*ispec] && nsigma <= fCutTPCnSigma[2*ispec+1]) SETBIT(cutFullfiled, kCutNsigmaTPC); // Fullfiled for at least one species @@ -264,7 +281,7 @@ Bool_t AliESDpidCuts::AcceptTrack(const AliESDtrack *track, const AliESDEvent *e track->GetIntegratedTimes(times); for(Int_t ispec = 0; ispec < AliPID::kSPECIES; ispec++){ - if(hasTOFpid && event) nsigmaTOF[ispec] = nsigma = fESDpid->NumberOfSigmasTOF(track,(AliPID::EParticleType)ispec, event->GetT0()); + if(hasTOFpid && event) nsigmaTOF[ispec] = nsigma = fPIDresponse->NumberOfSigmasTOF(track,(AliPID::EParticleType)ispec); if(!(fTOFsigmaCutRequired && 1 << ispec)) continue; SETBIT(cutRequired, kCutNsigmaTOF); if(track->GetOuterParam()->P() >= fMinMomentumTOF){ diff --git a/ANALYSIS/AliESDpidCuts.h b/ANALYSIS/AliESDpidCuts.h index d7c9e52d512..667ca1992bf 100644 --- a/ANALYSIS/AliESDpidCuts.h +++ b/ANALYSIS/AliESDpidCuts.h @@ -35,6 +35,7 @@ class AliESDpidCuts : public AliAnalysisCuts{ AliESDpidCuts &operator=(const AliESDpidCuts &ref); virtual ~AliESDpidCuts(); + virtual void Init(); virtual void Copy(TObject &c) const; virtual Long64_t Merge(TCollection *coll); @@ -46,7 +47,8 @@ class AliESDpidCuts : public AliAnalysisCuts{ virtual Bool_t IsSelected(TList * /*lst*/) {return kTRUE; } virtual Bool_t AcceptTrack(const AliESDtrack *track, const AliESDEvent *event); - AliESDpid *GetESDpid() { return fESDpid; }; + void SetPIDResponse(AliPIDResponse * pidresponse) { fPIDresponse = pidresponse; } + AliPIDResponse *GetPIDresponse() { return fPIDresponse; }; void SetTPCclusterRatioCut(Float_t clr) { fCutTPCclusterRatio = clr; } inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma); @@ -57,7 +59,7 @@ class AliESDpidCuts : public AliAnalysisCuts{ protected: static const Int_t kNcuts; // Number of Cuts - AliESDpid *fESDpid; //! PID helper (n-sigma-cut) + AliPIDResponse *fPIDresponse; //! PID helper (n-sigma-cut) Char_t fTPCsigmaCutRequired; // Sigma cut Requirement for TPC and Particle Species Char_t fTOFsigmaCutRequired; // Sigma cut Requirement for TOF and Particle Species Float_t fCutTPCnSigma[AliPID::kSPECIES * 2]; // Species dependent cut on the distance to the TPC dE/dx line