From 5fbd0b17f8078b292206ec26213e026687f6306f Mon Sep 17 00:00:00 2001 From: jgrosseo Date: Fri, 2 Jun 2006 12:27:45 +0000 Subject: [PATCH] o) splitted analysis and correction of dneta --- PWG0/dNdEta/AlidNdEtaAnalysisESDSelector.cxx | 18 +---- PWG0/dNdEta/AlidNdEtaAnalysisMCSelector.cxx | 2 +- PWG0/dNdEta/AlidNdEtaAnalysisSelector.cxx | 8 +-- PWG0/dNdEta/CreatedNdEta.C | 25 +++++++ PWG0/dNdEta/dNdEtaAnalysis.cxx | 71 ++++++-------------- PWG0/dNdEta/dNdEtaAnalysis.h | 4 +- PWG0/dNdEta/testAnalysis2.C | 3 + 7 files changed, 54 insertions(+), 77 deletions(-) create mode 100644 PWG0/dNdEta/CreatedNdEta.C diff --git a/PWG0/dNdEta/AlidNdEtaAnalysisESDSelector.cxx b/PWG0/dNdEta/AlidNdEtaAnalysisESDSelector.cxx index e35a86adf33..12d5655bf1e 100644 --- a/PWG0/dNdEta/AlidNdEtaAnalysisESDSelector.cxx +++ b/PWG0/dNdEta/AlidNdEtaAnalysisESDSelector.cxx @@ -13,7 +13,6 @@ #include #include "esdTrackCuts/AliESDtrackCuts.h" -#include "dNdEtaCorrection.h" #include "dNdEtaAnalysis.h" ClassImp(AlidNdEtaAnalysisESDSelector) @@ -48,14 +47,10 @@ void AlidNdEtaAnalysisESDSelector::SlaveBegin(TTree * tree) if (fChain) { fEsdTrackCuts = dynamic_cast (fChain->GetUserInfo()->FindObject("AliESDtrackCuts")); - fdNdEtaCorrection = dynamic_cast (fChain->GetUserInfo()->FindObject("dndeta_correction")); } if (!fEsdTrackCuts) AliDebug(AliLog::kError, "ERROR: Could not read EsdTrackCuts from user info."); - - if (!fdNdEtaCorrection) - AliDebug(AliLog::kError, "ERROR: Could not read dNdEtaCorrection from user info."); } Bool_t AlidNdEtaAnalysisESDSelector::Process(Long64_t entry) @@ -94,12 +89,6 @@ Bool_t AlidNdEtaAnalysisESDSelector::Process(Long64_t entry) return kFALSE; } - if (!fdNdEtaCorrection) - { - AliDebug(AliLog::kError, "fdNdEtaCorrection not available"); - return kFALSE; - } - // ######################################################## // get the EDS vertex const AliESDVertex* vtxESD = fESD->GetVertex(); @@ -143,9 +132,7 @@ Bool_t AlidNdEtaAnalysisESDSelector::Process(Long64_t entry) Float_t theta = vector.Theta(); Float_t eta = -TMath::Log(TMath::Tan(theta/2.)); - Float_t correction = fdNdEtaCorrection->GetCorrection(vtx[2], eta); - - fdNdEtaAnalysis->FillTrack(vtx[2], eta, correction); + fdNdEtaAnalysis->FillTrack(vtx[2], eta); } // end of track loop @@ -161,7 +148,4 @@ void AlidNdEtaAnalysisESDSelector::WriteObjects() if (fEsdTrackCuts) fEsdTrackCuts->SaveHistograms("esd_tracks_cuts"); - - if (fdNdEtaCorrection) - fdNdEtaCorrection->SaveHistograms(); } diff --git a/PWG0/dNdEta/AlidNdEtaAnalysisMCSelector.cxx b/PWG0/dNdEta/AlidNdEtaAnalysisMCSelector.cxx index 5b511787501..8ff4d27abe7 100644 --- a/PWG0/dNdEta/AlidNdEtaAnalysisMCSelector.cxx +++ b/PWG0/dNdEta/AlidNdEtaAnalysisMCSelector.cxx @@ -105,7 +105,7 @@ Bool_t AlidNdEtaAnalysisMCSelector::Process(Long64_t entry) AliDebug(AliLog::kDebug+1, Form("Accepted primary %d, unique ID: %d", i_mc, particle->GetUniqueID())); - fdNdEtaAnalysis->FillTrack(vtxMC[2], particle->Eta(), 1); + fdNdEtaAnalysis->FillTrack(vtxMC[2], particle->Eta()); fVertex->Fill(particle->Vx(), particle->Vy(), particle->Vz()); fPartEta->Fill(particle->Eta()); diff --git a/PWG0/dNdEta/AlidNdEtaAnalysisSelector.cxx b/PWG0/dNdEta/AlidNdEtaAnalysisSelector.cxx index 2d47ae58928..743a515f642 100644 --- a/PWG0/dNdEta/AlidNdEtaAnalysisSelector.cxx +++ b/PWG0/dNdEta/AlidNdEtaAnalysisSelector.cxx @@ -15,14 +15,12 @@ #include #include "dNdEtaAnalysis.h" -#include "dNdEtaCorrection.h" ClassImp(AlidNdEtaAnalysisSelector) AlidNdEtaAnalysisSelector::AlidNdEtaAnalysisSelector() : AliSelector(), - fdNdEtaAnalysis(0), - fdNdEtaCorrection(0) + fdNdEtaAnalysis(0) { // // Constructor. Initialization of pointers @@ -84,14 +82,10 @@ void AlidNdEtaAnalysisSelector::Terminate() return; } - fdNdEtaAnalysis->Finish(fdNdEtaCorrection); - TFile* fout = new TFile("out.root","RECREATE"); WriteObjects(); fout->Write(); fout->Close(); - - fdNdEtaAnalysis->DrawHistograms(); } void AlidNdEtaAnalysisSelector::WriteObjects() diff --git a/PWG0/dNdEta/CreatedNdEta.C b/PWG0/dNdEta/CreatedNdEta.C new file mode 100644 index 00000000000..d176a839959 --- /dev/null +++ b/PWG0/dNdEta/CreatedNdEta.C @@ -0,0 +1,25 @@ +// this macro combines the correction and the analysis and draws them + +void CreatedNdEta(Bool_t correct = kTRUE) +{ + gSystem->Load("libPWG0base"); + + dNdEtaCorrection* dNdEtaCorrection = 0; + if (correct) + { + dNdEtaCorrection = new dNdEtaCorrection(); + dNdEtaCorrection->LoadHistograms("correction_map.root","dndeta_correction"); + dNdEtaCorrection->RemoveEdges(2, 0, 2); + } + + fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta"); + + TFile::Open("out.root"); + fdNdEtaAnalysis->LoadHistograms(); + + fdNdEtaAnalysis->Finish(dNdEtaCorrection); + + fdNdEtaAnalysis->DrawHistograms(); +} + + diff --git a/PWG0/dNdEta/dNdEtaAnalysis.cxx b/PWG0/dNdEta/dNdEtaAnalysis.cxx index 38d878de605..761d2192020 100644 --- a/PWG0/dNdEta/dNdEtaAnalysis.cxx +++ b/PWG0/dNdEta/dNdEtaAnalysis.cxx @@ -26,7 +26,6 @@ TNamed(name, title) hEtaVsVtx->SetYTitle("#eta"); hEtaVsVtxUncorrected = dynamic_cast (hEtaVsVtx->Clone(Form("%s_eta_vs_vtx_uncorrected", name))); - hEtaVsVtxCheck = dynamic_cast (hEtaVsVtx->Clone(Form("%s_eta_vs_vtx_check", name))); hVtx = hEtaVsVtx->ProjectionX(Form("%s_vtx", name)); for (Int_t i=0; iFill(vtx,eta); - hEtaVsVtxCheck->Fill(vtx, eta, c); } //____________________________________________________________________ @@ -82,39 +80,6 @@ void dNdEtaAnalysis::Finish(dNdEtaCorrection* correction) } } - // normalize with n events (per vtx) -/* for (Int_t iVtx=0; iVtx<=hVtx->GetNbinsX(); iVtx++) { - Float_t nEvents = hVtx->GetBinContent(iVtx); - Float_t nEventsError = hVtx->GetBinError(iVtx); - - if (nEvents==0) continue; - - for (Int_t iEta=0; iEta<=hEtaVsVtx->GetNbinsY(); iEta++) { - Float_t value = hEtaVsVtx->GetBinContent(iVtx, iEta) / nEvents; - if (value==0) continue; - Float_t error = hEtaVsVtx->GetBinError(iVtx, iEta)/nEvents; - error = TMath::Sqrt(TMath::Power(hEtaVsVtx->GetBinError(iVtx, iEta)/ - hEtaVsVtx->GetBinContent(iVtx, iEta),2) + - TMath::Power(nEventsError/nEvents,2)); - hEtaVsVtx->SetBinContent(iVtx, iEta, value); - hEtaVsVtx->SetBinError(iVtx, iEta, error); - } - - //debug - for (Int_t iEta=0; iEta<=hEtaVsVtxCheck->GetNbinsY(); iEta++) { - Float_t value = hEtaVsVtxCheck->GetBinContent(iVtx, iEta) / nEvents; - if (value==0) continue; - Float_t error = hEtaVsVtxCheck->GetBinError(iVtx, iEta)/nEvents; - error = TMath::Sqrt(TMath::Power(hEtaVsVtxCheck->GetBinError(iVtx, iEta)/ - hEtaVsVtxCheck->GetBinContent(iVtx, iEta),2) + - TMath::Power(nEventsError/nEvents,2)); - hEtaVsVtxCheck->SetBinContent(iVtx, iEta, value); - hEtaVsVtxCheck->SetBinError(iVtx, iEta, error); - } - }*/ - - // then take the wieghted average for each eta - // is this the right way to do it??? for (Int_t iEta=0; iEta<=hEtaVsVtx->GetNbinsY(); iEta++) { // do we have several histograms for different vertex positions? @@ -167,7 +132,7 @@ dNdEtaAnalysis::SaveHistograms() { gDirectory->mkdir(GetName()); gDirectory->cd(GetName()); - + hEtaVsVtx ->Write(); hEtaVsVtxUncorrected->Write(); hVtx ->Write(); @@ -177,34 +142,40 @@ dNdEtaAnalysis::SaveHistograms() { gDirectory->cd("../"); } +void dNdEtaAnalysis::LoadHistograms() +{ + gDirectory->cd(GetName()); + + hEtaVsVtx = dynamic_cast (gDirectory->Get(hEtaVsVtx->GetName())); + hEtaVsVtxUncorrected = dynamic_cast (gDirectory->Get(hEtaVsVtxUncorrected->GetName())); + + hVtx = dynamic_cast (gDirectory->Get(hVtx->GetName())); + + for (Int_t i=0; i (gDirectory->Get(hdNdEta[i]->GetName())); + + gDirectory->cd("../"); +} + //____________________________________________________________________ void dNdEtaAnalysis::DrawHistograms() { - TCanvas* canvas = new TCanvas("dNdEtaAnalysis", "dNdEtaAnalysis", 1200, 800); - canvas->Divide(3, 2); + TCanvas* canvas = new TCanvas("dNdEtaAnalysis", "dNdEtaAnalysis", 800, 800); + canvas->Divide(2, 2); canvas->cd(1); if (hEtaVsVtx) hEtaVsVtx->Draw("COLZ"); canvas->cd(2); - if (hEtaVsVtxCheck) - hEtaVsVtxCheck->Draw("COLZ"); - - canvas->cd(3); if (hEtaVsVtxUncorrected) hEtaVsVtxUncorrected->Draw("COLZ"); - canvas->cd(4); - TH2F* clone = (TH2F*) hEtaVsVtxCheck->Clone("clone"); - clone->Divide(hEtaVsVtx); - clone->Draw("COLZ"); - - canvas->cd(5); + canvas->cd(3); if (hVtx) hVtx->Draw(); - canvas->cd(6); + canvas->cd(4); if (hdNdEta[0]) hdNdEta[0]->Draw(); diff --git a/PWG0/dNdEta/dNdEtaAnalysis.h b/PWG0/dNdEta/dNdEtaAnalysis.h index ef90a1358fa..61d623c02ce 100644 --- a/PWG0/dNdEta/dNdEtaAnalysis.h +++ b/PWG0/dNdEta/dNdEtaAnalysis.h @@ -32,12 +32,13 @@ public: dNdEtaAnalysis(Char_t* name, Char_t* title); - void FillTrack(Float_t vtx, Float_t eta, Float_t c); + void FillTrack(Float_t vtx, Float_t eta); void FillEvent(Float_t vtx); void Finish(dNdEtaCorrection* correction); void DrawHistograms(); + void LoadHistograms(); void SaveHistograms(); virtual Long64_t Merge(TCollection* list); @@ -49,7 +50,6 @@ public: protected: TH2F* hEtaVsVtx; - TH2F* hEtaVsVtxCheck; TH2F* hEtaVsVtxUncorrected; TH1D* hVtx; TH1D* hdNdEta[kVertexBinning]; diff --git a/PWG0/dNdEta/testAnalysis2.C b/PWG0/dNdEta/testAnalysis2.C index 3f19677a93b..266fce801e2 100644 --- a/PWG0/dNdEta/testAnalysis2.C +++ b/PWG0/dNdEta/testAnalysis2.C @@ -9,6 +9,7 @@ // #include "../CreateESDChain.C" +#include "CreatedNdEta.C" testAnalysis2(Char_t* dataDir, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE) { @@ -54,4 +55,6 @@ testAnalysis2(Char_t* dataDir, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFAL timer.Stop(); timer.Print(); + + CreatedNdEta(aMC ? kFALSE : kTRUE); } -- 2.31.1