AliFatal("Failed initializing settings from OADB");
}
else{
- AliInfo(Form("AliPIDResponse::SetTRDdEdxParams loading %s from %s\n", cont.GetName(), filePathNamePackage.Data()));
+ AliInfo(Form("Loading %s from %s\n", cont.GetName(), filePathNamePackage.Data()));
fTRDdEdxParams = (AliTRDdEdxParams*)(cont.GetObject(fRun, "default"));
//fTRDdEdxParams->Print();
}
if(!fkTRDdEdxParams){
- AliError("AliTRDPIDResponse::GetSignalDelta fkTRDdEdxParams null");
+ AliError("fkTRDdEdxParams null");
return -99999;
}
- TVectorF meanvec = fkTRDdEdxParams->GetMeanParameter(type);
- TVectorF resvec = fkTRDdEdxParams->GetSigmaParameter(type);
-
- Double_t meanpar[meanvec.GetNrows()];
- Double_t respar[resvec.GetNrows()];
-
- for(Int_t ii=0; ii<meanvec.GetNrows(); ii++){
- meanpar[ii]=meanvec[ii];
- }
- for(Int_t ii=0; ii<resvec.GetNrows(); ii++){
- respar[ii]=resvec[ii];
- }
+ const Float_t *meanpar = (fkTRDdEdxParams->GetMeanParameter(type)).GetMatrixArray();
+ const Float_t *respar = (fkTRDdEdxParams->GetSigmaParameter(type)).GetMatrixArray();
//============================================================================================<<<<<<<<<<<<<
}
-Double_t AliTRDPIDResponse::ResolutiondEdxTR(const Double_t * xx, const Double_t * par)
+Double_t AliTRDPIDResponse::ResolutiondEdxTR(const Double_t * xx, const Float_t * par)
{
//
//resolution
return par[0]+par[1]*TMath::Power(ncls, par[2]);
}
-Double_t AliTRDPIDResponse::MeandEdxTR(const Double_t * xx, const Double_t * pin)
+Double_t AliTRDPIDResponse::MeandEdxTR(const Double_t * xx, const Float_t * pin)
{
//
//ALEPH+LOGISTIC parametrization for dEdx+TR, in unit of MIP
//npar = 8 = 3+5
//
- Double_t ptr[4]={0};
+ Float_t ptr[4]={0};
for(int ii=0; ii<3; ii++){
ptr[ii+1]=pin[ii];
}
return MeanTR(xx,ptr) + MeandEdx(xx,&(pin[3]));
}
-Double_t AliTRDPIDResponse::MeanTR(const Double_t * xx, const Double_t * par)
+Double_t AliTRDPIDResponse::MeanTR(const Double_t * xx, const Float_t * par)
{
//
//LOGISTIC parametrization for TR, in unit of MIP
return par[0]+tryield;
}
-Double_t AliTRDPIDResponse::MeandEdx(const Double_t * xx, const Double_t * par)
+Double_t AliTRDPIDResponse::MeandEdx(const Double_t * xx, const Float_t * par)
{
//
//ALEPH parametrization for dEdx
Double_t GetNumberOfSigmas(const AliVTrack *track, AliPID::EParticleType type) const;
Double_t GetSignalDelta( const AliVTrack* track, AliPID::EParticleType type, Bool_t ratio=kFALSE, Double_t *info=0x0) const;
- static Double_t MeandEdx(const Double_t * xx, const Double_t * par);
- static Double_t MeanTR(const Double_t * xx, const Double_t * par);
- static Double_t MeandEdxTR(const Double_t * xx, const Double_t * par);
- static Double_t ResolutiondEdxTR(const Double_t * xx, const Double_t * par);
+ static Double_t MeandEdx(const Double_t * xx, const Float_t * par);
+ static Double_t MeanTR(const Double_t * xx, const Float_t * par);
+ static Double_t MeandEdxTR(const Double_t * xx, const Float_t * par);
+ static Double_t ResolutiondEdxTR(const Double_t * xx, const Float_t * par);
Int_t GetResponse(Int_t n, const Double_t * const dedx, const Float_t * const p, Double_t prob[AliPID::kSPECIES],ETRDPIDMethod PIDmethod=kLQ1D, Bool_t kNorm=kTRUE) const;
inline ETRDNslices GetNumberOfSlices(ETRDPIDMethod PIDmethod=kLQ1D) const;
}
}
-const TVectorF AliTRDdEdxParams::GetParameter(const TVectorF par[], const Int_t itype)const
+const TVectorF& AliTRDdEdxParams::GetParameter(const TVectorF par[], const Int_t itype)const
{
//
//return parameter for particle itype from par[]
AliTRDdEdxParams(const TString name="name", const TString title="title");
void Print(Option_t* option = "") const;
- const TVectorF GetMeanParameter(const Int_t itype) const { return GetParameter(fMeanPar, itype);}
- const TVectorF GetSigmaParameter(const Int_t itype) const { return GetParameter(fSigmaPar, itype);}
+ const TVectorF& GetMeanParameter(const Int_t itype) const { return GetParameter(fMeanPar, itype);}
+ const TVectorF& GetSigmaParameter(const Int_t itype) const { return GetParameter(fSigmaPar, itype);}
void SetMeanParameter(const Int_t itype, const Int_t npar, const Float_t vals[]){ SetParameter(fMeanPar, itype, npar, vals); }
void SetSigmaParameter(const Int_t itype, const Int_t npar, const Float_t vals[]){ SetParameter(fSigmaPar, itype, npar, vals); }
private:
- const TVectorF GetParameter(const TVectorF par[], const Int_t itype) const;
+ const TVectorF& GetParameter(const TVectorF par[], const Int_t itype) const;
void SetParameter(TVectorF par[], const Int_t itype, const Int_t npar, const Float_t vals[]);
TVectorF fMeanPar[MAXNPAR];