From 4fb49e4370a443bbd6f3f26b320c4ff8e9d554f0 Mon Sep 17 00:00:00 2001 From: hdalsgaa Date: Tue, 2 Jun 2009 23:01:41 +0000 Subject: [PATCH] analysis upgrade to take into account double hits in p+p collisions. Fix of warnings is coming soon --- .../AliFMDAnaCalibBackgroundCorrection.cxx | 22 ++++++++++-- .../AliFMDAnaCalibBackgroundCorrection.h | 6 +++- FMD/analysis/AliFMDAnaParameters.cxx | 12 +++++++ FMD/analysis/AliFMDAnaParameters.h | 1 + FMD/analysis/AliFMDAnalysisTaskDensity.cxx | 10 +++--- .../AliFMDAnalysisTaskGenerateBackground.cxx | 36 +++++++++++++------ 6 files changed, 69 insertions(+), 18 deletions(-) diff --git a/FMD/analysis/AliFMDAnaCalibBackgroundCorrection.cxx b/FMD/analysis/AliFMDAnaCalibBackgroundCorrection.cxx index f11acc98265..128262a6103 100644 --- a/FMD/analysis/AliFMDAnaCalibBackgroundCorrection.cxx +++ b/FMD/analysis/AliFMDAnaCalibBackgroundCorrection.cxx @@ -1,6 +1,7 @@ #include "AliFMDAnaCalibBackgroundCorrection.h" #include +#include #include ClassImp(AliFMDAnaCalibBackgroundCorrection) @@ -12,7 +13,8 @@ ClassImp(AliFMDAnaCalibBackgroundCorrection) AliFMDAnaCalibBackgroundCorrection::AliFMDAnaCalibBackgroundCorrection() : TObject(), fArray(), fAxis(), - fIsInit(kFALSE) + fIsInit(kFALSE), + fListOfDoubleHitCorrection() { @@ -22,7 +24,7 @@ AliFMDAnaCalibBackgroundCorrection::AliFMDAnaCalibBackgroundCorrection() : TObje //____________________________________________________________________ AliFMDAnaCalibBackgroundCorrection::AliFMDAnaCalibBackgroundCorrection(const AliFMDAnaCalibBackgroundCorrection& o) - : TObject(o), fArray(o.fArray), fAxis(o.fAxis), fIsInit(o.fIsInit) + : TObject(o), fArray(o.fArray), fAxis(o.fAxis), fIsInit(o.fIsInit), fListOfDoubleHitCorrection() { // Copy ctor } @@ -59,6 +61,22 @@ void AliFMDAnaCalibBackgroundCorrection::SetBgCorrection(Int_t det, } //____________________________________________________________________ +TH1F* AliFMDAnaCalibBackgroundCorrection::GetDoubleHitCorrection(Int_t det, + Char_t ring) { + + + TH1F* hCorrection = (TH1F*)fListOfDoubleHitCorrection.FindObject(Form("hDoubleHitCorrection_FMD%d%c")); + return hCorrection; +} + +//____________________________________________________________________ +void AliFMDAnaCalibBackgroundCorrection::SetDoubleHitCorrection(Int_t det, + Char_t ring, + TH1F* hCorrection) { + hCorrection->SetName(Form("hDoubleHitCorrection_FMD%d%c")); + fListOfDoubleHitCorrection.Add(hCorrection); +} +//____________________________________________________________________ void AliFMDAnaCalibBackgroundCorrection::SetRefAxis(TAxis* axis) { diff --git a/FMD/analysis/AliFMDAnaCalibBackgroundCorrection.h b/FMD/analysis/AliFMDAnaCalibBackgroundCorrection.h index f71f7bdbfd2..1131ed0304a 100644 --- a/FMD/analysis/AliFMDAnaCalibBackgroundCorrection.h +++ b/FMD/analysis/AliFMDAnaCalibBackgroundCorrection.h @@ -5,7 +5,9 @@ #include // #include #include +#include class TH2F; +class TH1F; class TBrowser; class AliFMDAnaCalibBackgroundCorrection : public TObject @@ -19,6 +21,8 @@ class AliFMDAnaCalibBackgroundCorrection : public TObject TH2F* GetBgCorrection(Int_t det, Char_t ring, Int_t vtxbin); void SetBgCorrection(Int_t det, Char_t ring, Int_t vtxbin, TH2F* hCorrection); + TH1F* GetDoubleHitCorrection(Int_t det, Char_t ring); + void SetDoubleHitCorrection(Int_t det, Char_t ring, TH1F* hCorrection); void SetRefAxis(TAxis* axis); Int_t GetNvtxBins(); Float_t GetVtxCutZ(); @@ -31,7 +35,7 @@ class AliFMDAnaCalibBackgroundCorrection : public TObject TObjArray fArray; TAxis fAxis; Bool_t fIsInit; - + TList fListOfDoubleHitCorrection; ClassDef(AliFMDAnaCalibBackgroundCorrection,1); }; diff --git a/FMD/analysis/AliFMDAnaParameters.cxx b/FMD/analysis/AliFMDAnaParameters.cxx index ed841df5da4..7eb6f1296a9 100644 --- a/FMD/analysis/AliFMDAnaParameters.cxx +++ b/FMD/analysis/AliFMDAnaParameters.cxx @@ -253,6 +253,18 @@ TH2F* AliFMDAnaParameters::GetBackgroundCorrection(Int_t det, return fBackground->GetBgCorrection(det,ring,vtxbin); } +//____________________________________________________________________ + +TH1F* AliFMDAnaParameters::GetDoubleHitCorrection(Int_t det, + Char_t ring) { + + if(!fIsInit) { + AliWarning("Not initialized yet. Call Init() to remedy"); + return 0; + } + + return fBackground->GetDoubleHitCorrection(det,ring); +} //_____________________________________________________________________ Float_t AliFMDAnaParameters::GetMaxR(Char_t ring) { Float_t radius = 0; diff --git a/FMD/analysis/AliFMDAnaParameters.h b/FMD/analysis/AliFMDAnaParameters.h index dae14d65b1b..51dd0b2d7b7 100644 --- a/FMD/analysis/AliFMDAnaParameters.h +++ b/FMD/analysis/AliFMDAnaParameters.h @@ -73,6 +73,7 @@ public: static const char* GetBackgroundPath() { return fgkBackgroundCorrection;} static const char* GetEdistPath() { return fgkEnergyDists;} TH2F* GetBackgroundCorrection(Int_t det, Char_t ring, Int_t vtxbin); + TH1F* GetDoubleHitCorrection(Int_t det, Char_t ring); Float_t GetPhiFromSector(UShort_t det, Char_t ring, UShort_t sec); Float_t GetEtaFromStrip(UShort_t det, Char_t ring, UShort_t sec, UShort_t strip, Float_t zvtx); Float_t GetStripLength(Char_t ring, UShort_t strip) ; diff --git a/FMD/analysis/AliFMDAnalysisTaskDensity.cxx b/FMD/analysis/AliFMDAnalysisTaskDensity.cxx index 17622861497..f277ce3f259 100644 --- a/FMD/analysis/AliFMDAnalysisTaskDensity.cxx +++ b/FMD/analysis/AliFMDAnalysisTaskDensity.cxx @@ -256,10 +256,12 @@ void AliFMDAnalysisTaskDensity::Exec(Option_t */*option*/) //std::cout<<"before "<GetUniqueID() == kTRUE) { - if(det == 3) - correction = correction / fFuncNeg->Eval(eta); - else - correction = correction / fFuncPos->Eval(eta); + TH1F* hDoubleHitCorrection = pars->GetDoubleHitCorrection(det,ring); + //if(det == 3) + if(hDoubleHitCorrection->GetBinContent(hDoubleHitCorrection->FindBin(eta)) != 0) + correction = correction / hDoubleHitCorrection->GetBinContent(hDoubleHitCorrection->FindBin(eta)); + //else + // correction = correction / pars->GetDoubleHitCorrection()->GetBinContent(pars->GetDoubleHitCorrection()->FindBin(eta)); } // std::cout<Sumw2(); + allHits->Sumw2(); + fListOfHits.Add(allHits); + fListOfHits.Add(doubleHits); + for(Int_t v=0; vSet(fNvtxBins,-1*fZvtxCut,fZvtxCut); - fListOfHits.Add(allHits); - fListOfHits.Add(doubleHits); + } //_____________________________________________________________________ void AliFMDAnalysisTaskGenerateBackground::Init() { - std::cout<<"Init"<Fill(eta,phi); Float_t nstrips = (ring =='O' ? 256 : 512); fHitsByStrip.operator()(det,ring,sec,strip) +=1; - TH1F* allHits = (TH1F*)fListOfHits.FindObject("allHits"); - TH1F* doubleHits = (TH1F*)fListOfHits.FindObject("DoubleHits"); + TH1F* allHits = (TH1F*)fListOfHits.FindObject(Form("allHits_FMD%d%c",det,ring)); + TH1F* doubleHits = (TH1F*)fListOfHits.FindObject(Form("DoubleHits_FMD%d%c",det,ring)); if(fHitsByStrip.operator()(det,ring,sec,strip) == 1) allHits->Fill(eta); @@ -216,6 +219,10 @@ void AliFMDAnalysisTaskGenerateBackground::GenerateCorrection() { for(Int_t iring = 0; iringSetDoubleHitCorrection(det,ring,doubleHits); + doubleHits->Divide(allHits); for(Int_t vertexBin=0;vertexBinSetTitle(hCorrection->GetName()); fListOfCorrection.Add(hCorrection); fBackground->SetBgCorrection(det,ring,vertexBin,hCorrection); + + } } @@ -251,6 +260,10 @@ void AliFMDAnalysisTaskGenerateBackground::ReadFromFile(const Char_t* filename, for(Int_t ring = 0;ringFindObject(Form("allHits_FMD%d%c",det,ringChar)); + TH1F* doubleHits = (TH1F*)listOfHits->FindObject(Form("DoubleHits_FMD%d%c",det,ringChar)); + fListOfHits.Add(allHits); + fListOfHits.Add(doubleHits); for(Int_t v=0; v