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)
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)
{
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"));
}
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
AliDielectron(const AliDielectron &c);
AliDielectron &operator=(const AliDielectron &c);
- ClassDef(AliDielectron,10);
+ ClassDef(AliDielectron,11);
};
inline void AliDielectron::InitPairCandidateArrays()
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() :
}
//______________________________________________
-Double_t AliDielectronPID::GetPIDCorr(const AliVTrack *track, TF1 *fun)
+Double_t AliDielectronPID::GetPIDCorr(const AliVTrack *track, TH1 *hist)
{
//
// return correction value
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;
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); }
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);