return;
}
fMapElectronCutLow[fNcuts]=histLow;
+ // fill used variables into map
+ for(Int_t idim=0; idim<fMapElectronCutLow[fNcuts]->GetNdimensions(); idim++) {
+ TString vari(fMapElectronCutLow[fNcuts]->GetAxis(idim)->GetName());
+ fUsedVars->SetBitNumber(AliDielectronVarManager::GetValueType(vari.Data()), kTRUE);
+ }
AddCut(det,type,0.,nSigmaUp,min,max,exclude,pidBitType,var);
}
//______________________________________________
pid->SetTPCsignal(origdEdx/GetEtaCorr(aodTrack)/fgCorrdEdx);
}
}
-
+
+ // check for corrections and add their variables to the fill map
+ if(fgFunCntrdCorr) {
+ fUsedVars->SetBitNumber(fgFunCntrdCorr->GetXaxis()->GetUniqueID(), kTRUE);
+ fUsedVars->SetBitNumber(fgFunCntrdCorr->GetYaxis()->GetUniqueID(), kTRUE);
+ fUsedVars->SetBitNumber(fgFunCntrdCorr->GetZaxis()->GetUniqueID(), kTRUE);
+ }
+ if(fgFunWdthCorr) {
+ fUsedVars->SetBitNumber(fgFunWdthCorr->GetXaxis()->GetUniqueID(), kTRUE);
+ fUsedVars->SetBitNumber(fgFunWdthCorr->GetYaxis()->GetUniqueID(), kTRUE);
+ fUsedVars->SetBitNumber(fgFunWdthCorr->GetZaxis()->GetUniqueID(), kTRUE);
+ }
+
//Fill values
Double_t values[AliDielectronVarManager::kNMaxValues];
AliDielectronVarManager::SetFillMap(fUsedVars);
// get array of values for the corresponding dimensions using axis names
for(Int_t idim=0; idim<fMapElectronCutLow[icut]->GetNdimensions(); idim++) {
vals[idim] = values[AliDielectronVarManager::GetValueType(fMapElectronCutLow[icut]->GetAxis(idim)->GetName())];
+ // printf(" \t %s %.3f ",fMapElectronCutLow[icut]->GetAxis(idim)->GetName(),vals[idim]);
}
// find bin for values (w/o creating it in case it is not filled)
Long_t bin = fMapElectronCutLow[icut]->GetBin(vals,kFALSE);
if(bin>0) lowElectronCut=fMapElectronCutLow[icut]->GetBinContent(bin);
else lowElectronCut=100;
- //printf("low cut %.3f \t for %d dimensional cut map \n",lowElectronCut,fMapElectronCutLow[icut]->GetNdimensions());
+ // printf(" low cut %.3f (%ld) \n", lowElectronCut,bin);
delete [] vals;
}
if (fgdEdxRunCorr){
fgCorrdEdx=fgdEdxRunCorr->Eval(run);
if (run<fgdEdxRunCorr->GetX()[0]) fgCorrdEdx=fgdEdxRunCorr->GetY()[0];
- if (run>fgdEdxRunCorr->GetX()[fgFitCorr->GetN()-1]) fgCorrdEdx=fgdEdxRunCorr->GetY()[fgdEdxRunCorr->GetN()-1];
+ if (run>fgdEdxRunCorr->GetX()[fgdEdxRunCorr->GetN()-1]) fgCorrdEdx=fgdEdxRunCorr->GetY()[fgdEdxRunCorr->GetN()-1];
}
}
AliDielectronVarManager::FillVarVParticle(track,values);
TF1 *fun = (TF1*)hist->GetListOfFunctions()->At(0);
- Int_t dim=fun->GetNdim();
+ Int_t dim=(fun?fun->GetNdim():hist->GetDimension());
Double_t var[3] = {0.,0.,0.};
if(dim>0) var[0] = values[hist->GetXaxis()->GetUniqueID()];
if(dim>1) var[1] = values[hist->GetYaxis()->GetUniqueID()];
if(dim>2) var[2] = values[hist->GetZaxis()->GetUniqueID()];
- Double_t corr = fun->Eval(var[0],var[1],var[2]);
+ Double_t corr = 0.0;
+ if(fun) corr = fun->Eval(var[0],var[1],var[2]);
+ else corr = hist->GetBinContent( hist->FindFixBin(var[0],var[1],var[2]) );
+ // for(Int_t i=0;i<dim;i++) printf("%d:%.3f ",i,var[i]);
// printf("%d-dim CORR value: %f (track %p) \n",dim,corr,track);
return corr;
}