X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSdEdxSamples.cxx;h=a7dfa778461ca48236e3dcbe68fb6f7c735cbe64;hb=4134347025b179f8aa25371c730c801caa38ed40;hp=088178540d6798b4174da82e6f3eadbd87c5b691;hpb=cb0a52e080e53665e8d4500dee3ce41be919a8a6;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSdEdxSamples.cxx b/ITS/AliITSdEdxSamples.cxx index 088178540d6..a7dfa778461 100644 --- a/ITS/AliITSdEdxSamples.cxx +++ b/ITS/AliITSdEdxSamples.cxx @@ -34,64 +34,137 @@ ClassImp(AliITSdEdxSamples) //______________________________________________________________________ AliITSdEdxSamples::AliITSdEdxSamples():TObject(), fNSamples(0), + fClusterMap(0), fP(0.), - fParticleSpecie(0) + fParticleSpecie(0), + fLayersForPid(0xFFFF) { // Default constructor - - for(Int_t i=0; ioperator=(source); + fNSamples = source.fNSamples; + fClusterMap = source.fClusterMap; + fP = source.fP; + fParticleSpecie = source.fParticleSpecie; + fLayersForPid = source.fLayersForPid; + 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(HasPointOnLayer(il) && UseLayerForPid(il) && dedxsamp>mindedx){ + dedx[nc]= dedxsamp; nc++; - } + } } if(nc<1) return 0.; - + Int_t swap; // sort in ascending order do { swap=0; @@ -105,15 +178,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(HasPointOnLayer(il) && UseLayerForPid(il) && dedxsamp>mindedx){ + dedx[nc]= dedxsamp; + nc++; } } if(nc<1) return 0.; @@ -145,16 +218,18 @@ Double_t AliITSdEdxSamples::GetWeightedMean(Double_t mindedx) const { } //______________________________________________________________________ -void AliITSdEdxSamples::GetConditionalProbabilities(AliITSPidParams* pars, Double_t condprob[AliPID::kSPECIES], Double_t mindedx) const { +void AliITSdEdxSamples::GetConditionalProbabilities(const AliITSPidParams* pars, Double_t condprob[AliPID::kSPECIES], Double_t mindedx) const { // compute conditional probablilities const Int_t nPart = 3; Double_t itsProb[nPart] = {1,1,1}; // p, K, pi 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; @@ -185,3 +260,48 @@ void AliITSdEdxSamples::GetConditionalProbabilities(AliITSPidParams* pars, Doub return; } +//______________________________________________________________________ +void AliITSdEdxSamples::PrintAll() const{ + // print all the infos + printf("Particle %d momentum %f GeV/c, number of points %d\n", + GetParticleSpecieMC(), + fP, + GetNumberOfEffectiveSamples()); + for(Int_t iLay=0; iLay