]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
post pid corrections TF1->TH1
authorjbook <jbook>
Thu, 20 Feb 2014 15:12:56 +0000 (16:12 +0100)
committerjbook <jbook@cern.ch>
Thu, 20 Feb 2014 15:12:56 +0000 (16:12 +0100)
PWGDQ/dielectron/AliDielectron.cxx
PWGDQ/dielectron/AliDielectron.h
PWGDQ/dielectron/AliDielectronPID.cxx
PWGDQ/dielectron/AliDielectronPID.h

index 4da00d580792b3f8dc8b703c62361cacafbafe61..a3932d0c4454e8987454e7aaaeec90db2978114f 100644 (file)
@@ -1393,7 +1393,10 @@ void AliDielectron::SetCentroidCorrFunction(TF1 *fun, UInt_t varx, UInt_t vary,
   fun->GetHistogram()->GetXaxis()->SetUniqueID(varx);
   fun->GetHistogram()->GetYaxis()->SetUniqueID(vary);
   fun->GetHistogram()->GetZaxis()->SetUniqueID(varz);
-  fPostPIDCntrdCorr=fun;
+  // clone temporare histogram since otherwise it will not be streamed to file!
+  TString key = Form("cntrd%d%d%d",varx,vary,varz);
+  fPostPIDCntrdCorr = (TH1*)fun->GetHistogram()->Clone(key.Data());
+  fPostPIDCntrdCorr->GetListOfFunctions()->AddAt(fun,0);
 }
 //______________________________________________
 void AliDielectron::SetWidthCorrFunction(TF1 *fun, UInt_t varx, UInt_t vary, UInt_t varz)
@@ -1401,8 +1404,12 @@ void AliDielectron::SetWidthCorrFunction(TF1 *fun, UInt_t varx, UInt_t vary, UIn
   fun->GetHistogram()->GetXaxis()->SetUniqueID(varx);
   fun->GetHistogram()->GetYaxis()->SetUniqueID(vary);
   fun->GetHistogram()->GetZaxis()->SetUniqueID(varz);
-  fPostPIDWdthCorr=fun;
+  // clone temporare histogram since otherwise it will not be streamed to file!
+  TString key = Form("wdth%d%d%d",varx,vary,varz);
+  fPostPIDWdthCorr = (TH1*)fun->GetHistogram()->Clone(key.Data());
+  fPostPIDWdthCorr->GetListOfFunctions()->AddAt(fun,0);
 }
+
 //______________________________________________
 THnBase* AliDielectron::InitEffMap(TString filename)
 {
@@ -1416,6 +1423,6 @@ THnBase* AliDielectron::InitEffMap(TString filename)
   if(!hFnd || !hGen) return 0x0;
 
   hFnd->Divide(hGen);
-  printf("[I] AliDielectron::InitLegEffMap efficiency maps %s loaded! \n",filename.Data());
+  printf("[I] AliDielectron::InitEffMap efficiency maps %s with %d dimensions loaded! \n",filename.Data(),hFnd->GetNdimensions());
   return ((THnBase*) hFnd->Clone("effMap"));
 }
index a36552544483067d6c7407b2eb1d949b72f375a7..63ef7b2b4f508f0d53bcbf3ddd59609eeab2d84d 100644 (file)
@@ -144,8 +144,8 @@ private:
 
   Bool_t fCutQA;                    // monitor cuts
   AliDielectronCutQA *fQAmonitor;   // monitoring of cuts
-  TF1 *fPostPIDCntrdCorr;   // post pid correction object for centroids
-  TF1 *fPostPIDWdthCorr;    // post pid correction object for widths
+  TH1 *fPostPIDCntrdCorr;   // post pid correction object for centroids
+  TH1 *fPostPIDWdthCorr;    // post pid correction object for widths
   THnBase *fLegEffMap;      // single electron efficiency map
   THnBase *fPairEffMap;      // pair efficiency map
   AliAnalysisFilter fEventFilter;    // Event cuts
@@ -230,7 +230,7 @@ private:
   AliDielectron(const AliDielectron &c);
   AliDielectron &operator=(const AliDielectron &c);
   
-  ClassDef(AliDielectron,10);
+  ClassDef(AliDielectron,11);
 };
 
 inline void AliDielectron::InitPairCandidateArrays()
index 930e318f6af498fc7f7622e2b4456e0721558d8f..bb3b49de08e8e8e6206c66d65336927b88abfabb 100644 (file)
@@ -51,8 +51,8 @@ TGraph  *AliDielectronPID::fgFitCorr=0x0;
 Double_t AliDielectronPID::fgCorr=0.0;
 Double_t AliDielectronPID::fgCorrdEdx=1.0;
 TF1     *AliDielectronPID::fgFunEtaCorr=0x0;
-TF1     *AliDielectronPID::fgFunCntrdCorr=0x0;
-TF1     *AliDielectronPID::fgFunWdthCorr=0x0;
+TH1     *AliDielectronPID::fgFunCntrdCorr=0x0;
+TH1     *AliDielectronPID::fgFunWdthCorr=0x0;
 TGraph  *AliDielectronPID::fgdEdxRunCorr=0x0;
 
 AliDielectronPID::AliDielectronPID() :
@@ -701,7 +701,7 @@ Double_t AliDielectronPID::GetEtaCorr(const AliVTrack *track)
 }
 
 //______________________________________________
-Double_t AliDielectronPID::GetPIDCorr(const AliVTrack *track, TF1 *fun)
+Double_t AliDielectronPID::GetPIDCorr(const AliVTrack *track, TH1 *hist)
 {
   //
   // return correction value
@@ -712,11 +712,13 @@ Double_t AliDielectronPID::GetPIDCorr(const AliVTrack *track, TF1 *fun)
   Double_t values[AliDielectronVarManager::kNMaxValues];
   AliDielectronVarManager::FillVarVParticle(track,values);
 
+  TF1 *fun = (TF1*)hist->GetListOfFunctions()->At(0);
   Int_t dim=fun->GetNdim();
+
   Double_t var[3] = {0.,0.,0.};
-  if(dim>0) var[0] = values[fun->GetHistogram()->GetXaxis()->GetUniqueID()];
-  if(dim>1) var[1] = values[fun->GetHistogram()->GetYaxis()->GetUniqueID()];
-  if(dim>2) var[2] = values[fun->GetHistogram()->GetZaxis()->GetUniqueID()];
+  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]);
   //  printf("%d-dim CORR value: %f (track %p) \n",dim,corr,track);
   return corr;
index de018e8baa3318369d2f1cb1644bb1894a813911..e422d038b588ac0c132dedd36ef70d5184c31e06 100644 (file)
@@ -84,11 +84,9 @@ public:
   static TGraph *GetCorrGraphdEdx()  { return fgdEdxRunCorr; }
 
   static void SetEtaCorrFunction(TF1 *fun) {fgFunEtaCorr=fun;}
-  static void SetCentroidCorrFunction(TF1 *fun) { fgFunCntrdCorr=fun; }
-  static void SetWidthCorrFunction(TF1 *fun) { fgFunWdthCorr=fun; }
+  static void SetCentroidCorrFunction(TH1 *fun) { fgFunCntrdCorr=fun; }
+  static void SetWidthCorrFunction(TH1 *fun) { fgFunWdthCorr=fun; }
   static TF1* GetEtaCorrFunction() { return fgFunEtaCorr; }
-  static TF1* GetCentroidCorrFunction() { return fgFunCntrdCorr; }
-  static TF1* GetWidthCorrFunction() { return fgFunWdthCorr; }
 
   static Double_t GetEtaCorr(const AliVTrack *track);
   static Double_t GetCntrdCorr(const AliVTrack *track) { return (fgFunCntrdCorr ? GetPIDCorr(track,fgFunCntrdCorr) : 0.0); }
@@ -122,11 +120,11 @@ private:
   static Double_t fgCorrdEdx;     //!dEdx correction value for current run. Set if fgFitCorr is set and SetCorrVal(run)
                                   // was called
   static TF1    *fgFunEtaCorr;    //function for eta correction of electron sigma
-  static TF1    *fgFunCntrdCorr;  //function for correction of electron sigma (centroid)
-  static TF1    *fgFunWdthCorr;   //function for correction of electron sigma (width)
+  static TH1    *fgFunCntrdCorr;  //function for correction of electron sigma (centroid)
+  static TH1    *fgFunWdthCorr;   //function for correction of electron sigma (width)
   static TGraph *fgdEdxRunCorr;   //run by run correction for dEdx
 
-  static Double_t GetPIDCorr(const AliVTrack *track, TF1 *fun);
+  static Double_t GetPIDCorr(const AliVTrack *track, TH1 *hist);
   
   THnBase* fMapElectronCutLow[kNmaxPID];  //map for the electron lower cut in units of n-sigma widths 1 centered to zero
   Bool_t IsSelectedITS(AliVTrack * const part, Int_t icut);