From 92329a66a03935d65ae559c09e36155b79240206 Mon Sep 17 00:00:00 2001 From: prino Date: Sun, 1 May 2011 20:13:10 +0000 Subject: [PATCH] Updated class to store dE/dx samples --- ITS/AliITSdEdxSamples.cxx | 94 ++++++++++++++++++++++++++------------- ITS/AliITSdEdxSamples.h | 43 +++++++++++++----- 2 files changed, 94 insertions(+), 43 deletions(-) diff --git a/ITS/AliITSdEdxSamples.cxx b/ITS/AliITSdEdxSamples.cxx index 088178540d6..fb57c479e64 100644 --- a/ITS/AliITSdEdxSamples.cxx +++ b/ITS/AliITSdEdxSamples.cxx @@ -38,44 +38,75 @@ AliITSdEdxSamples::AliITSdEdxSamples():TObject(), fParticleSpecie(0) { // Default constructor - - for(Int_t i=0; ifgkMaxSamples){ - AliWarning(Form("Too many dE/dx samples,only first %d will be used",fgkMaxSamples)); - fNSamples=fgkMaxSamples; + if(nSamples>kMaxSamples){ + AliWarning(Form("Too many dE samples,only first %d will be used",kMaxSamples)); + fNSamples=kMaxSamples; }else{ fNSamples=nSamples; } - for(Int_t i=0; ikMaxSamples){ + AliWarning(Form("Too many dx samples,only first %d will be used",kMaxSamples)) + fNSamples=kMaxSamples; + }else{ + fNSamples=nSamples; + } + for(Int_t i=0; i0) dE/dx values - if(fdEdxSamples[il]>mindedx){ - dedx[nc]= fdEdxSamples[il]; + Double_t dedxsamp=GetdEdxSample(il); + if(dedxsamp>mindedx){ + dedx[nc]= dedxsamp; nc++; - } + } } if(nc<1) return 0.; @@ -105,15 +137,15 @@ Double_t AliITSdEdxSamples::GetTruncatedMean(Double_t frac, Double_t mindedx) co } while (swap); Double_t sumamp=0,sumweight=0; - Double_t weight[fgkMaxSamples]; - for(Int_t iw=0; iwfgkMaxSamples) lastUsed=fgkMaxSamples; + if(lastUsed>kMaxSamples) lastUsed=kMaxSamples; for(Int_t iw=0; iw0.4 && lastUsed0.4 && lastUsed0) dE/dx values - if(fdEdxSamples[il]>mindedx){ - dedx[nc]= fdEdxSamples[il]; - nc++; + Double_t dedxsamp=GetdEdxSample(il); + if(dedxsamp>mindedx){ + dedx[nc]= dedxsamp; + nc++; } } if(nc<1) return 0.; @@ -153,8 +185,8 @@ void AliITSdEdxSamples::GetConditionalProbabilities(AliITSPidParams* pars, Doub for(Int_t iS=0; iS6) iLayer=6; // all extra points are treated as SSD - if(fdEdxSamples[iS]GetLandauGausNorm(dedx,AliPID::kProton,fP,iLayer); itsProb[0] *= layProb; diff --git a/ITS/AliITSdEdxSamples.h b/ITS/AliITSdEdxSamples.h index 62c60db56ce..21a17f23b09 100644 --- a/ITS/AliITSdEdxSamples.h +++ b/ITS/AliITSdEdxSamples.h @@ -3,8 +3,6 @@ /* Copyright(c) 2009-2012, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ -/* $Id$ */ - /////////////////////////////////////////////////////////////////// // // // Class to store information for PID with ITS // @@ -22,11 +20,13 @@ class AliITSdEdxSamples : public TObject { public: AliITSdEdxSamples(); - AliITSdEdxSamples(Int_t nSamples, Double_t* samples, Double_t mom, Int_t specie=0); + AliITSdEdxSamples(Int_t nSamples, Double_t* esamples, Double_t* xsamples, Double_t mom, Int_t specie=0); + AliITSdEdxSamples(const AliITSdEdxSamples& source); virtual ~AliITSdEdxSamples(){}; - void SetSamples(Int_t nSamples, Double_t* samples); - void SetSamplesAndMomenta(Int_t nSamples, Double_t* samples, Double_t* mom); + void SetdESamples(Int_t nSamples, Double_t* samples); + void SetdxSamples(Int_t nSamples, Double_t* samples); + void SetSamplesAndMomenta(Int_t nSamples, Double_t* esamples, Double_t* xsamples, Double_t* mom); void SetMomentum(Double_t mom){ fP=mom; } @@ -37,10 +37,27 @@ class AliITSdEdxSamples : public TObject { Int_t GetNumberOfSamples() const { return fNSamples; } - Double_t GetdEdxSample(Int_t i) const { - if(i0.) + return fdESamples[i]/(fdxSamples[i]*100.); + else return 0.; + } + Double_t GetMomentum() const { return fP; } @@ -56,16 +73,18 @@ class AliITSdEdxSamples : public TObject { Double_t GetWeightedMean(Double_t mindedx=0.) const; void GetConditionalProbabilities(AliITSPidParams* pars, Double_t condprob[AliPID::kSPECIES], Double_t mindedx=0.) const; + protected: - static const UShort_t fgkMaxSamples=10; // max. n. of layers with dE/dx info - + enum{kMaxSamples=10}; // max. n. of layers with dE/dx info + Int_t fNSamples; // number of samples - Double_t fdEdxSamples[fgkMaxSamples]; // dE/dx samples + Double_t fdESamples[kMaxSamples]; // dE samples (keV) + Double_t fdxSamples[kMaxSamples]; // dx samples (cm) Double_t fP; // track momentum Int_t fParticleSpecie; // MC generated particle - Double_t fPAtSample[fgkMaxSamples]; // track momentum at specific samples + Double_t fPAtSample[kMaxSamples]; // track momentum at specific samples - ClassDef(AliITSdEdxSamples,1); + ClassDef(AliITSdEdxSamples,2); }; #endif -- 2.39.3