#include "AliLog.h"
#include "AliTRDdEdxParams.h"
ClassImp(AliTRDdEdxParams);
AliTRDdEdxParams::AliTRDdEdxParams(const TString name, const TString title): TNamed(name,title)
{
}
Int_t AliTRDdEdxParams::GetIter(const Int_t itype, const Int_t nch, const Int_t ncls) const
{
Int_t itNch = -999, itNcls = -999;
if(nch==6){
itNch = 0;
}
else{
itNch = 1;
}
if(nch!=0 && ncls/nch>=18){
itNcls = 0;
}
else{
itNcls = 1;
}
const Int_t finaliter = itype*2*2 + itNch*2 + itNcls;
if(finaliter<0 || finaliter>= MAXSIZE){
AliError(Form("out of range itype %d nch %d ncls %d\n", itype, nch, ncls));
}
return finaliter;
}
const TVectorF& AliTRDdEdxParams::GetParameter(const TVectorF par[], const Int_t itype, const Int_t nch, const Int_t ncls)const
{
const Int_t iter = GetIter(itype, nch, ncls);
return par[iter];
}
void AliTRDdEdxParams::SetParameter(TVectorF par[], const Int_t itype, const Int_t nch, const Int_t ncls, const Int_t npar, const Float_t vals[])
{
const Int_t iter = GetIter(itype, nch, ncls);
TVectorF p2(npar, vals);
par[iter].ResizeTo(p2);
par[iter] = p2;
}
void AliTRDdEdxParams::Print(Option_t* option) const
{
TObject::Print(option);
printf("\n======================= Mean ========================\n");
for(Int_t ii=0; ii<MAXSIZE; ii++){
printf("%d: Nrows() %d\n",ii, fMeanPar[ii].GetNrows());
if(fMeanPar[ii].GetNrows()) fMeanPar[ii].Print();
}
printf("\n======================= Sigma ========================\n");
for(Int_t ii=0; ii<MAXSIZE; ii++){
printf("%d: Nrows() %d\n",ii, fSigmaPar[ii].GetNrows());
if(fSigmaPar[ii].GetNrows()) fSigmaPar[ii].Print();
}
printf("AliTRDdEdxParams::Print done.\n\n");
}