]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/AliDielectronVarManager.h
protection empty bins
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronVarManager.h
index e7886de771aa96aafe0526ae30ff9468a973322d..66dff99df9dd64435361f33e9b4835c01f66cc82 100644 (file)
@@ -441,7 +441,7 @@ public:
   static void InitAODpidUtil(Int_t type=0);
   static void InitEstimatorAvg(const Char_t* filename);
   static void InitTRDpidEffHistograms(const Char_t* filename);
-  static Bool_t InitEffMap(const Char_t* filename);
+  static void SetLegEffMap(THnBase *map) { fgEffMap=map; }
   static void SetVZEROCalibrationFile(const Char_t* filename) {fgVZEROCalibrationFile = filename;}
   
   static void SetVZERORecenteringFile(const Char_t* filename) {fgVZERORecenteringFile = filename;}
@@ -1553,7 +1553,7 @@ inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPa
     Fill(leg1, valuesLeg1);
     Fill(leg2, valuesLeg2);
     values[AliDielectronVarManager::kPairEff] = valuesLeg1[AliDielectronVarManager::kLegEff] *valuesLeg2[AliDielectronVarManager::kLegEff];
-    values[AliDielectronVarManager::kOneOverPairEff] = (values[AliDielectronVarManager::kPairEff]>0.0 ? 1./values[AliDielectronVarManager::kPairEff] : 0.0);
+    values[AliDielectronVarManager::kOneOverPairEff] = (values[AliDielectronVarManager::kPairEff]>0.0 ? 1./values[AliDielectronVarManager::kPairEff] : 1.0);
 
   }
   values[AliDielectronVarManager::kRndmPair] = gRandom->Rndm();
@@ -1843,7 +1843,7 @@ inline void AliDielectronVarManager::FillVarVEvent(const AliVEvent *event, Doubl
                                                                     values[AliDielectronVarManager::kv0C3rpH2]) ); 
 
   Double_t ZDCqvec[3][2];
-  memset(ZDCqvec, 0, sizeof(ZDCqvec));
+  memset(ZDCqvec, 999, sizeof(ZDCqvec));
   GetZDCRP(event, ZDCqvec);
 
   values[AliDielectronVarManager::kZDCArpH1] = TMath::ATan2(ZDCqvec[0][1], ZDCqvec[0][0]);
@@ -2219,26 +2219,6 @@ inline void AliDielectronVarManager::InitTRDpidEffHistograms(const Char_t* filen
   }
 }
 
-inline Bool_t AliDielectronVarManager::InitEffMap(const Char_t* filename) {
-  //
-  // init an efficiency object for on-the-fly correction calculations
-  //
-  fgEffMap=0x0;
-  TFile* file=TFile::Open(filename);
-  if(!file) return 0;
-  THnBase *hGen = (THnBase*) file->Get("hGenerated");
-  THnBase *hFnd = (THnBase*) file->Get("hFound");
-  if(!hFnd || !hGen) return 0;
-
-  fgEffMap  = (THnBase*) hFnd->Clone("effMap");
-  fgEffMap->Reset();
-  fgEffMap->Sumw2();
-  fgEffMap->Divide(hFnd, hGen);//, 1, 1, "");  //assume uncorrelated err, otherwise give option "B"
-  printf("[I] AliDielectronVarManager::InitEffMap efficiency maps loaded! \n");
-  return 1;
-  
-}
-
 inline Double_t AliDielectronVarManager::GetSingleLegEff(Double_t * const values) {
   //
   // get the single leg efficiency for a given particle
@@ -2250,12 +2230,13 @@ inline Double_t AliDielectronVarManager::GetSingleLegEff(Double_t * const values
   for(Int_t idim=0; idim<dim; idim++) {
     UInt_t var = GetValueType(fgEffMap->GetAxis(idim)->GetName());
     idx[idim] = fgEffMap->GetAxis(idim)->FindBin(values[var]);
-    /* if(idx[idim] < 0 || idx[idim]>fgEffMap->GetAxis(idim)->GetNbins()) */
+    if(idx[idim] < 0 || idx[idim]>fgEffMap->GetAxis(idim)->GetNbins()) return 0.0;
     /*   printf(" [E] AliDielectronVarManager::GetSingleLegEff values %f for %s not found in axis range \n",values[var],fgEffMap->GetAxis(idim)->GetName()); */
     //    printf(" (%d,%f,%s) \t",idx[idim],values[var],fgEffMap->GetAxis(idim)->GetName());
   }
   //  printf(" bin content %f+-%f \n",fgEffMap->GetBinContent(idx), fgEffMap->GetBinError(idx));
-  if(fgEffMap->GetBinContent(idx)<0.01 || fgEffMap->GetBinError(idx)/fgEffMap->GetBinContent(idx)>0.2) return 0.0;
+  //  if(fgEffMap->GetBinContent(idx)<0.01) return 0.0;
+  //  if(fgEffMap->GetBinError(idx)/fgEffMap->GetBinContent(idx)>0.2) return 0.0;
   return (fgEffMap->GetBinContent(idx));
 }
 
@@ -2327,7 +2308,7 @@ inline void AliDielectronVarManager::InitZDCRecenteringHistograms(Int_t runNo) {
 
   TFile file(fgZDCRecenteringFile.Data());
   if (!file.IsOpen()) return;
-  cout << fgZDCRecenteringFile << endl;
+
   fgZDCRecentering[0][0] = (TProfile3D*)file.Get(Form("RUN%06d_QxA_Recent", runNo));
   fgZDCRecentering[0][1] = (TProfile3D*)file.Get(Form("RUN%06d_QyA_Recent", runNo));
   fgZDCRecentering[1][0] = (TProfile3D*)file.Get(Form("RUN%06d_QxC_Recent", runNo));
@@ -2579,6 +2560,7 @@ inline void AliDielectronVarManager::GetZDCRP(const AliVEvent* event, Double_t q
                                { 20, 0.04, 0.08},   //    vertex x nbin, min, max
                                { 20, 0.25, 0.29} }; //    vertex y nbin, min, max
 
+  if(!event->GetZDCData()) return;
   AliVZDC* aliZDC = event->GetZDCData();
   ZDCTEnergy[Aside] = (Double_t *)aliZDC -> GetZNATowerEnergy();
   ZDCTEnergy[Cside] = (Double_t *)aliZDC -> GetZNCTowerEnergy();