From: hristov Date: Thu, 11 Jun 2009 15:41:03 +0000 (+0000) Subject: Moving AliTPCpidESD and AliTOFpidESD to libESD. This provides possibility for n-sigma... X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=6461bb0ee3e4937cd480ca9f7e4e0ca73374cf8a Moving AliTPCpidESD and AliTOFpidESD to libESD. This provides possibility for n-sigma cuts in the ESD analysis --- diff --git a/TOF/AliTOFpidESD.cxx b/TOF/AliTOFpidESD.cxx deleted file mode 100644 index 98056517ae1..00000000000 --- a/TOF/AliTOFpidESD.cxx +++ /dev/null @@ -1,292 +0,0 @@ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ - -//-----------------------------------------------------------------// -// // -// Implementation of the TOF PID class // -// Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch // -// // -//-----------------------------------------------------------------// - -#include "TMath.h" -#include "AliLog.h" - -#include "AliESDtrack.h" -#include "AliESDEvent.h" - -#include "AliTOFpidESD.h" - -ClassImp(AliTOFpidESD) - -//_________________________________________________________________________ -AliTOFpidESD::AliTOFpidESD(): - fSigma(0), - fRange(0), - fPmax(0), // zero at 0.5 GeV/c for pp - fTime0(0) -{ -} -//_________________________________________________________________________ -AliTOFpidESD::AliTOFpidESD(Double_t *param): - fSigma(param[0]), - fRange(param[1]), - fPmax(0), // zero at 0.5 GeV/c for pp - fTime0(0) -{ - // - // The main constructor - // - // - - //fPmax=TMath::Exp(-0.5*3*3)/fSigma; // ~3 sigma at 0.5 GeV/c for PbPb -} - -//_________________________________________________________________________ -Double_t -AliTOFpidESD::GetMismatchProbability(Double_t p, Double_t mass) const { - // - // Returns the probability of mismatching - // assuming 1/(p*beta)^2 scaling - // - const Double_t km=0.5; // "reference" momentum (GeV/c) - - Double_t ref2=km*km*km*km/(km*km + mass*mass);// "reference" (p*beta)^2 - Double_t p2beta2=p*p*p*p/(p*p + mass*mass); - - return fPmax*ref2/p2beta2; -} - -//_________________________________________________________________________ -Int_t AliTOFpidESD::MakePID(AliESDEvent *event, Double_t timeZero) -{ - // - // This function calculates the "detector response" PID probabilities - // Just for a bare hint... - - AliDebug(1,Form("TOF PID Parameters: Sigma (ps)= %f, Range= %f",fSigma,fRange)); - AliDebug(1,"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \n"); - - fTime0=timeZero; - return MakePID(event); -} - -//_________________________________________________________________________ -Int_t AliTOFpidESD::MakePID(AliESDEvent *event) -{ - // - // This function calculates the "detector response" PID probabilities - // Just for a bare hint... - - Int_t ntrk=event->GetNumberOfTracks(); - AliESDtrack **tracks=new AliESDtrack*[ntrk]; - - Int_t i; - for (i=0; iGetTrack(i); - tracks[i]=t; - } - - for (i=0; iGetStatus()&AliESDtrack::kTOFout)==0) continue; - if ((t->GetStatus()&AliESDtrack::kTIME)==0) continue; - - Double_t time[AliPID::kSPECIES]; - if (!ExpectedSignals(t,time,AliPID::kSPECIES)) continue; - Double_t sigma[AliPID::kSPECIES]; - if (!ExpectedSigmas(t,sigma,AliPID::kSPECIES)) continue; - - AliDebug(2,Form("Expected TOF signals [ps]: %f %f %f %f %f", - GetExpectedSignal(t,AliPID::kElectron), - GetExpectedSignal(t,AliPID::kMuon), - GetExpectedSignal(t,AliPID::kPion), - GetExpectedSignal(t,AliPID::kKaon), - GetExpectedSignal(t,AliPID::kProton) - )); - - AliDebug(2,Form("Expected TOF std deviations [ps]: %f %f %f %f %f", - GetExpectedSigma(t,AliPID::kElectron), - GetExpectedSigma(t,AliPID::kMuon), - GetExpectedSigma(t,AliPID::kPion), - GetExpectedSigma(t,AliPID::kKaon), - GetExpectedSigma(t,AliPID::kProton) - )); - - AliDebug(2,Form("Expected TOF std deviations [number of expected sigmas]: %f %f %f %f %f", - GetNumberOfSigmas(t,AliPID::kElectron), - GetNumberOfSigmas(t,AliPID::kMuon), - GetNumberOfSigmas(t,AliPID::kPion), - GetNumberOfSigmas(t,AliPID::kKaon), - GetNumberOfSigmas(t,AliPID::kProton) - )); - - Double_t tof = t->GetTOFsignal() - fTime0; - - Double_t p[AliPID::kSPECIES]; - Bool_t mismatch = kTRUE, heavy = kTRUE; - for (Int_t j=0; j fRange*sig) { - p[j] = TMath::Exp(-0.5*fRange*fRange)/sig; - } else - p[j] = TMath::Exp(-0.5*(tof-time[j])*(tof-time[j])/(sig*sig))/sig; - - // Check the mismatching - Double_t mass = AliPID::ParticleMass(j); - Double_t pm = GetMismatchProbability(t->GetP(),mass); - if (p[j]>pm) mismatch = kFALSE; - - // Check for particles heavier than (AliPID::kSPECIES - 1) - if (tof < (time[j] + fRange*sig)) heavy=kFALSE; - - } - - if (mismatch) - for (Int_t j=0; jSetTOFpid(p); - - if (heavy) t->ResetStatus(AliESDtrack::kTOFpid); - - } - - delete[] tracks; - - return 0; -} - -//_________________________________________________________________________ -Bool_t AliTOFpidESD::ExpectedSignals(const AliESDtrack *t, - Double_t s[],Int_t n) const -{ - // - // Return the expected PID signals for the involved particle species - // - - if (n > AliPID::kSPECIESN) return kFALSE; - if ( !t->IsOn(AliESDtrack::kTIME) ) return kFALSE; - - Double_t time[AliPID::kSPECIESN]; - t->GetIntegratedTimes(time); - for (Int_t i=0; iGetP(); - Double_t dpp = 0.01; //mean relative pt resolution; - if (mom>0.5) dpp = 0.01*mom; - for (Int_t i=0; iGetTOFsignal() - fTime0; - for (Int_t i=0; i= AliPID::kSPECIESN) return -1.; - if ( !t->IsOn(AliESDtrack::kTIME) ) return -1.; - - Double_t time[AliPID::kSPECIESN]; - t->GetIntegratedTimes(time); - - return time[n]; -} - -//_________________________________________________________________________ - Double_t AliTOFpidESD::GetExpectedSigma(const AliESDtrack *t, - AliPID::EParticleType n) const -{ - // - // Return the expected sigma of the PID signal for the specified - // particle type. - // If the operation is not possible, return a negative value. - // - - Double_t time[AliPID::kSPECIESN]; - if ( !ExpectedSignals(t,time,AliPID::kSPECIESN) ) return -1.; - - Double_t mom = t->GetP(); - Double_t dpp = 0.01; //mean relative pt resolution; - if (mom>0.5) dpp = 0.01*mom; - - Double_t mass = AliPID::ParticleMass(n); - Double_t sigma = dpp*time[n]/(1.+ mom*mom/(mass*mass)); - - return TMath::Sqrt(sigma*sigma + fSigma*fSigma); -} - -//_________________________________________________________________________ - Double_t AliTOFpidESD::GetNumberOfSigmas(const AliESDtrack *t, - AliPID::EParticleType n) const -{ - // - // Returns the deviation of the actual PID signal from the expected - // signal for the specified particle type, in units of expected - // sigmas. - // If the operation is not possible, return a negative value. - // - - Double_t time=GetExpectedSignal(t,n);; - if (time < 0.) return -1.; - - Double_t sigma=GetExpectedSigma(t,n); - if (sigma < 0.) return -1; - - Double_t tof=t->GetTOFsignal() - fTime0; - return (time-tof)/sigma; -} diff --git a/TOF/AliTOFpidESD.h b/TOF/AliTOFpidESD.h deleted file mode 100644 index 9116a5bfe88..00000000000 --- a/TOF/AliTOFpidESD.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef ALITOFPIDESD_H -#define ALITOFPIDESD_H - -/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * See cxx source for full Copyright notice */ - -//------------------------------------------------------- -// TOF PID class -// Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch -//------------------------------------------------------- - -#include "TObject.h" -#include "AliPID.h" - -class AliESDEvent; -class AliESDtrack; - -class AliTOFpidESD : public TObject { -public: - AliTOFpidESD(); - AliTOFpidESD(Double_t *param); - ~AliTOFpidESD(){} - - void SetTimeZero(Double_t t0) { fTime0=t0; } - Double_t GetTimeZero() const { return fTime0; } - - void SetMaxMismatchProbability(Double_t p) {fPmax=p;} - Double_t GetMaxMismatchProbability() const {return fPmax;} - - Int_t MakePID(AliESDEvent *event); - Int_t MakePID(AliESDEvent *event, Double_t timeZero); - - Bool_t ExpectedSignals(const AliESDtrack *t, - Double_t s[], - Int_t n=AliPID::kSPECIES) const; - Bool_t ExpectedSigmas(const AliESDtrack *t, - Double_t s[], - Int_t n=AliPID::kSPECIES) const; - Bool_t NumberOfSigmas(const AliESDtrack *t, - Double_t s[], - Int_t n=AliPID::kSPECIES) const; - - Double_t GetExpectedSignal(const AliESDtrack *t, - AliPID::EParticleType n=AliPID::kKaon) const; - Double_t GetExpectedSigma(const AliESDtrack *t, - AliPID::EParticleType n=AliPID::kKaon) const; - Double_t GetNumberOfSigmas(const AliESDtrack *t, - AliPID::EParticleType n=AliPID::kKaon) const; - -private: - Double_t GetMismatchProbability(Double_t p,Double_t mass) const; - - Double_t fSigma; // intrinsic TOF resolution - Double_t fRange; // one particle type PID range (in sigmas) - Double_t fPmax; // "maximal" probability of mismathing (at ~0.5 GeV/c) - Double_t fTime0; // time zero - - ClassDef(AliTOFpidESD,3) // TOF PID class -}; - -#endif diff --git a/TOF/CMake_libTOFrec.txt b/TOF/CMake_libTOFrec.txt index 6e4297bb0f8..bb2ee10e623 100644 --- a/TOF/CMake_libTOFrec.txt +++ b/TOF/CMake_libTOFrec.txt @@ -5,7 +5,7 @@ set(SRCS AliTOFClusterFinderV1.cxx AliTOFtrack.cxx AliTOFtracker.cxx AliTOFtrackerMI.cxx AliTOFtrackerV1.cxx - AliTOFpidESD.cxx AliTOFReconstructor.cxx AliTOFRecoParam.cxx + AliTOFReconstructor.cxx AliTOFRecoParam.cxx AliTOFQADataMakerRec.cxx ) diff --git a/TOF/TOFrecLinkDef.h b/TOF/TOFrecLinkDef.h index e47bc6288b5..ee23baece7b 100644 --- a/TOF/TOFrecLinkDef.h +++ b/TOF/TOFrecLinkDef.h @@ -15,7 +15,6 @@ #pragma link C++ class AliTOFtracker+; #pragma link C++ class AliTOFtrackerMI+; #pragma link C++ class AliTOFtrackerV1+; -#pragma link C++ class AliTOFpidESD+; #pragma link C++ class AliTOFReconstructor+; #pragma link C++ class AliTOFRecoParam; #pragma link C++ class AliTOFQADataMakerRec+; diff --git a/TOF/libTOFrec.pkg b/TOF/libTOFrec.pkg index f461218c50b..ea5ec46579a 100644 --- a/TOF/libTOFrec.pkg +++ b/TOF/libTOFrec.pkg @@ -5,7 +5,7 @@ SRCS = AliTOFcluster.cxx AliTOFClusterFinder.cxx \ AliTOFClusterFinderV1.cxx \ AliTOFtrack.cxx \ AliTOFtracker.cxx AliTOFtrackerMI.cxx AliTOFtrackerV1.cxx \ - AliTOFpidESD.cxx AliTOFReconstructor.cxx AliTOFRecoParam.cxx \ + AliTOFReconstructor.cxx AliTOFRecoParam.cxx \ AliTOFQADataMakerRec.cxx HDRS:= $(SRCS:.cxx=.h)