]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/AliDielectronPID.cxx
including switch to set on/off iso-track core removal, cleaning and bug fix
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronPID.cxx
index cb5f1bfaacd4e934c06c39b5e12866aa2bd46413..4f029b6f98c5fca60ab9f3d85380734443b6d260 100644 (file)
@@ -244,6 +244,11 @@ void AliDielectronPID::AddCut(DetType det, AliPID::EParticleType type, THnBase *
     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);
 }
 //______________________________________________
@@ -320,13 +325,6 @@ Bool_t AliDielectronPID::IsSelected(TObject* track)
     fUsedVars->SetBitNumber(fgFunWdthCorr->GetYaxis()->GetUniqueID(), kTRUE);
     fUsedVars->SetBitNumber(fgFunWdthCorr->GetZaxis()->GetUniqueID(), kTRUE);
   }
-  for(UChar_t icut=0; icut<fNcuts; ++icut) {
-    if(!fMapElectronCutLow[icut]) continue;
-    for(Int_t idim=0; idim<fMapElectronCutLow[icut]->GetNdimensions(); idim++) {
-      TString var(fMapElectronCutLow[icut]->GetAxis(idim)->GetName());
-      fUsedVars->SetBitNumber(AliDielectronVarManager::GetValueType(var.Data()), kTRUE);
-    }
-  }
 
   //Fill values
   Double_t values[AliDielectronVarManager::kNMaxValues];
@@ -712,7 +710,7 @@ void AliDielectronPID::SetCorrVal(Double_t run)
   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];
   }
 }
 
@@ -739,13 +737,16 @@ Double_t AliDielectronPID::GetPIDCorr(const AliVTrack *track, TH1 *hist)
   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;
 }