From 0affc9e5c0d0ce8f51b0b74e3587b2938eab2572 Mon Sep 17 00:00:00 2001 From: abercuci Date: Mon, 15 Dec 2008 16:07:56 +0000 Subject: [PATCH] new database entry to store PID threshold at 90% efficiency (Markus) --- TRD/AliTRDpidUtil.cxx | 43 ++++++++++++++++++ TRD/AliTRDpidUtil.h | 11 ++++- .../PIDThresholds/Run0_999999999_v0_s0.root | Bin 0 -> 5790 bytes 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 TRD/Calib/PIDThresholds/Run0_999999999_v0_s0.root diff --git a/TRD/AliTRDpidUtil.cxx b/TRD/AliTRDpidUtil.cxx index b78c226019f..5f1d9f43938 100644 --- a/TRD/AliTRDpidUtil.cxx +++ b/TRD/AliTRDpidUtil.cxx @@ -1,4 +1,5 @@ #include "TObject.h" +#include "TObjArray.h" #include "TMath.h" #include "TF1.h" #include "TH1F.h" @@ -7,6 +8,10 @@ #include "AliLog.h" #include "Cal/AliTRDCalPID.h" +#include "AliCDBManager.h" +#include "AliCDBEntry.h" +#include "AliESDtrack.h" +#include "AliPID.h" #include "AliTRDpidUtil.h" ClassImp(AliTRDpidUtil) @@ -137,3 +142,41 @@ Int_t AliTRDpidUtil::GetMomentumBin(Double_t p) return -1; } + +//__________________________________________________________________________ +Bool_t AliTRDpidUtil::IsElectron(const AliESDtrack *track, PIDmethod_t method){ + // + // Do PID decision for the TRD based on 90% Electron efficiency threshold + // + // Author: Markus Fasel (M.Fasel@gsi.de) + // + if(method == kESD) method = kNN; + TString histname[2] = {"fHistThreshLQ", "fHistThreshNN"}; + AliCDBManager *cdb = AliCDBManager::Instance(); + AliCDBEntry *cdb_thresholds = cdb->Get("TRD/Calib/PIDThresholds"); + TObjArray *histos = dynamic_cast(cdb_thresholds->GetObject()); + TH1 * threshold_hist = dynamic_cast(histos->FindObject(histname[method].Data())); + Double_t threshold = threshold_hist->GetBinContent(GetMomentumBin(track->P()) + 1); + + // Do Decision + Double_t pid_probs[5]; + track->GetTRDpid(pid_probs); + if(pid_probs[AliPID::kElectron] >= threshold) return kTRUE; + return kFALSE; +} + +//__________________________________________________________________________ +Double_t AliTRDpidUtil::GetSystematicError(const AliESDtrack *track, PIDmethod_t method){ + // + // Returns the pion efficiency at 90% electron efficiency from the OCDB + // + // Author: Markus Fasel (M.Fasel@gsi.de) + // + if(method == kESD) method = kNN; + TString histname[2] = {"fHistPionEffLQ", "fHistPionEffNN"}; + AliCDBManager *cdb = AliCDBManager::Instance(); + AliCDBEntry *cdb_thresholds = cdb->Get("TRD/Calib/PIDThresholds"); + TObjArray *histos = dynamic_cast(cdb_thresholds->GetObject()); + TH1 * threshold_hist = dynamic_cast(histos->FindObject(histname[method].Data())); + return threshold_hist->GetBinContent(GetMomentumBin(track->P()) + 1); +} diff --git a/TRD/AliTRDpidUtil.h b/TRD/AliTRDpidUtil.h index 31c349f2e75..dc66f9a5b5b 100644 --- a/TRD/AliTRDpidUtil.h +++ b/TRD/AliTRDpidUtil.h @@ -10,12 +10,18 @@ /////////////////////////////////////////////////////// class TH1; +class AliESDtrack; class AliTRDpidUtil : public TObject { public: enum { kBins = 10001 }; + typedef enum{ + kLQ = 0 // 2D likelihood method + ,kNN = 1 // Neural network method + ,kESD = 2 // ESD results - check offline + } PIDmethod_t; AliTRDpidUtil(); virtual ~AliTRDpidUtil(){;} @@ -23,13 +29,16 @@ public: Bool_t CalculatePionEffi(TH1* histo1, TH1* histo2); static Float_t ElectronEfficiency() { return fEleEffi;}; + + static Bool_t IsElectron(const AliESDtrack *track, PIDmethod_t method = kNN); + static Double_t GetSystematicError(const AliESDtrack *track, PIDmethod_t method = kNN); Double_t GetCalcElectronEfficiency() {return fCalcEleEffi;}; Double_t GetPionEfficiency() {return fPionEffi;}; Double_t GetError() {return fError;}; Double_t GetThreshold() {return fThreshold;}; - Int_t GetMomentumBin(Double_t p); + static Int_t GetMomentumBin(Double_t p); static void SetElectronEfficiency(Float_t eleeffi) {fEleEffi = eleeffi;}; diff --git a/TRD/Calib/PIDThresholds/Run0_999999999_v0_s0.root b/TRD/Calib/PIDThresholds/Run0_999999999_v0_s0.root new file mode 100644 index 0000000000000000000000000000000000000000..9be8e9599affbf055b8c330f5e857eb5e4498d03 GIT binary patch literal 5790 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 Zlm8O+mm5FQiT?*tkCMo9yoEmi{skD}b%y`| literal 0 HcmV?d00001 -- 2.39.3