From: jgrosseo Date: Thu, 14 Aug 2008 16:43:05 +0000 (+0000) Subject: run both tasks at the same time X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=7a1ac44bcae57807cc3b9ac99bbc41c526d8cdf0;p=u%2Fmrichter%2FAliRoot.git run both tasks at the same time --- diff --git a/PWG0/dNdEta/correct.C b/PWG0/dNdEta/correct.C index 459f4c20ac5..6be5adae832 100644 --- a/PWG0/dNdEta/correct.C +++ b/PWG0/dNdEta/correct.C @@ -1,6 +1,121 @@ +void loadlibs() +{ + gSystem->Load("libTree"); + gSystem->Load("libVMC"); + + gSystem->Load("libSTEERBase"); + gSystem->Load("libANALYSIS"); + gSystem->Load("libPWG0base"); +} + +void FinishAnalysisAll(const char* dataInput = "analysis_esd_raw.root", const char* dataOutput = "analysis_esd.root", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction") +{ + loadlibs(); + + AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder); + TFile::Open(correctionMapFile); + dNdEtaCorrection->LoadHistograms(); + + TFile* file = TFile::Open(dataInput); + + if (!file) + { + cout << "Error. File not found" << endl; + return; + } + + // Note: the last parameter does not define which analysis is going to happen, the histograms will be overwritten when loading from the f + dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaNSD", "dndetaNSD"); + fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); + fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kNSD, "ESD -> NSD"); + //fdNdEtaAnalysis->DrawHistograms(kTRUE); + TFile* file2 = TFile::Open(dataOutput, "RECREATE"); + fdNdEtaAnalysis->SaveHistograms(); + + file->cd(); + dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta"); + fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); + fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL, "ESD -> full inelastic"); + //fdNdEtaAnalysis->DrawHistograms(kTRUE); + file2->cd(); + fdNdEtaAnalysis->SaveHistograms(); + + file->cd(); + fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr"); + fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); + fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco, "ESD -> minimum bias"); + //fdNdEtaAnalysis->DrawHistograms(kTRUE); + file2->cd(); + fdNdEtaAnalysis->SaveHistograms(); + + file->cd(); + fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx"); + fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); + fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle, "ESD -> MB with vertex"); + //fdNdEtaAnalysis->DrawHistograms(kTRUE); + file2->cd(); + fdNdEtaAnalysis->SaveHistograms(); + + file->cd(); + fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks"); + fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); + fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone, "ESD raw with pt cut"); + //fdNdEtaAnalysis->DrawHistograms(kTRUE); + file2->cd(); + fdNdEtaAnalysis->SaveHistograms(); + + file->cd(); + fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracksAll", "dndetaTracksAll"); + fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); + fdNdEtaAnalysis->Finish(0, -1, AlidNdEtaCorrection::kNone, "ESD raw"); + //fdNdEtaAnalysis->DrawHistograms(kTRUE); + file2->cd(); + fdNdEtaAnalysis->SaveHistograms(); + + file2->Write(); + file2->Close(); +} + +void* FinishAnalysis(const char* analysisFile = "analysis_esd_raw.root", const char* analysisDir = "fdNdEtaAnalysisESD", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", Bool_t useUncorrected = kFALSE, Bool_t simple = kFALSE) +{ + loadlibs(); + + TFile* file = TFile::Open(analysisFile); + + dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir); + fdNdEtaAnalysis->LoadHistograms(); + + if (correctionMapFile) + { + AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder); + TFile::Open(correctionMapFile); + dNdEtaCorrection->LoadHistograms(); + + fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL); + //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kINEL); + //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kTrack2Particle); + } + else + fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone); + + fdNdEtaAnalysis->DrawHistograms(simple); + + TH1* hist = fdNdEtaAnalysis->GetdNdEtaHistogram(1); + Int_t binLeft = hist->GetXaxis()->FindBin(-0.5); + Int_t binRight = hist->GetXaxis()->FindBin(0.5); + Float_t value1 = hist->Integral(binLeft, binRight); + + hist = fdNdEtaAnalysis->GetdNdEtaHistogram(2); + Float_t value2 = hist->Integral(binLeft, binRight); + + if (value2 > 0) + printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2); + + return fdNdEtaAnalysis; +} + void correct() { - gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/dNdEta/run.C"); FinishAnalysisAll(); gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/dNdEta/drawPlots.C"); dNdEta(); diff --git a/PWG0/dNdEta/run.C b/PWG0/dNdEta/run.C index 5e5ca331da6..f96e5616202 100644 --- a/PWG0/dNdEta/run.C +++ b/PWG0/dNdEta/run.C @@ -1,33 +1,48 @@ +void Load(const char* taskName, Bool_t debug) +{ + TString compileTaskName; + compileTaskName.Form("%s.cxx+", taskName); + if (debug) + compileTaskName += "+g"; + + if (gProof) { + gProof->Load(compileTaskName); + } else + gROOT->Macro(compileTaskName); + + // Enable debug printouts + if (debug) + { + AliLog::SetClassDebugLevel(taskName, AliLog::kDebug+2); + } + else + AliLog::SetClassDebugLevel(taskName, AliLog::kWarning); +} + void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t aProof = kFALSE, Bool_t mc = kTRUE, const char* option = "") { // runWhat options: 0 = AlidNdEtaTask // 1 = AlidNdEtaCorrectionTask + // 2 = both // // aProof option: 0 no proof // 1 proof with chain // 2 proof with dataset TString taskName; - if (runWhat == 0) + if (runWhat == 0 || runWhat == 2) { - taskName = "AlidNdEtaTask"; + Printf("Running AlidNdEtaTask"); } - else if (runWhat == 1) + if (runWhat == 1 || runWhat == 2) { - taskName = "AlidNdEtaCorrectionTask"; + Printf("Running AlidNdEtaCorrectionTask"); if (!mc) { - Printf("%s needs MC. Exiting...", taskName.Data()); + Printf("AlidNdEtaCorrectionTask needs MC. Exiting..."); return; } } - else - { - Printf("Do not know what to run. Exiting..."); - return; - } - - Printf("Processing task: %s", taskName.Data()); if (nRuns < 0) nRuns = 1234567890; @@ -75,17 +90,6 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool // Create the analysis manager mgr = new AliAnalysisManager; - TString compileTaskName; - compileTaskName.Form("%s.cxx+", taskName.Data()); - if (aDebug) - compileTaskName += "+g"; - - // Create, add task - if (aProof) { - gProof->Load(compileTaskName); - } else - gROOT->Macro(compileTaskName); - AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD; AliPWG0Helper::Trigger trigger = AliPWG0Helper::kMB1; @@ -105,8 +109,12 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool esdTrackCuts->SetHistogramsOn(kTRUE); } - if (runWhat == 0) + cInput = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer); + + // Create, add task + if (runWhat == 0 || runWhat == 2) { + Load("AlidNdEtaTask", aDebug); task = new AlidNdEtaTask(option); if (mc) @@ -114,20 +122,41 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool //task->SetUseMCVertex(); //task->SetUseMCKine(); + //task->SetOnlyPrimaries(); + + task->SetTrigger(trigger); + task->SetAnalysisMode(analysisMode); + task->SetTrackCuts(esdTrackCuts); + + mgr->AddTask(task); + + // Attach input + mgr->ConnectInput(task, 0, cInput); + + // Attach output + cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer); + mgr->ConnectOutput(task, 0, cOutput); } - else if (runWhat == 1) + if (runWhat == 1 || runWhat == 2) { - task = new AlidNdEtaCorrectionTask(option); - - //task->SetOnlyPrimaries(); + Load("AlidNdEtaCorrectionTask", aDebug); + task2 = new AlidNdEtaCorrectionTask(option); + //task2->SetOnlyPrimaries(); + + task2->SetTrigger(trigger); + task2->SetAnalysisMode(analysisMode); + task2->SetTrackCuts(esdTrackCuts); + + mgr->AddTask(task2); + + // Attach input + mgr->ConnectInput(task2, 0, cInput); + + // Attach output + cOutput = mgr->CreateContainer("cOutput2", TList::Class(), AliAnalysisManager::kOutputContainer); + mgr->ConnectOutput(task2, 0, cOutput); } - task->SetTrigger(trigger); - task->SetAnalysisMode(analysisMode); - task->SetTrackCuts(esdTrackCuts); - - mgr->AddTask(task); - if (mc) { // Enable MC event handler AliMCEventHandler* handler = new AliMCEventHandler; @@ -140,22 +169,9 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool esdH->SetInactiveBranches("*"); mgr->SetInputEventHandler(esdH); - // Attach input - cInput = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer); - mgr->ConnectInput(task, 0, cInput); - - // Attach output - cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer); - mgr->ConnectOutput(task, 0, cOutput); - // Enable debug printouts if (aDebug) - { mgr->SetDebugLevel(2); - AliLog::SetClassDebugLevel(taskName, AliLog::kDebug+2); - } - else - AliLog::SetClassDebugLevel(taskName, AliLog::kWarning); // Run analysis mgr->InitAnalysis(); @@ -178,118 +194,3 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool } } -void loadlibs() -{ - gSystem->Load("libTree"); - gSystem->Load("libVMC"); - - gSystem->Load("libSTEERBase"); - gSystem->Load("libANALYSIS"); - gSystem->Load("libPWG0base"); -} - -void FinishAnalysisAll(const char* dataInput = "analysis_esd_raw.root", const char* dataOutput = "analysis_esd.root", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction") -{ - loadlibs(); - - AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder); - TFile::Open(correctionMapFile); - dNdEtaCorrection->LoadHistograms(); - - TFile* file = TFile::Open(dataInput); - - if (!file) - { - cout << "Error. File not found" << endl; - return; - } - - // Note: the last parameter does not define which analysis is going to happen, the histograms will be overwritten when loading from the f - dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaNSD", "dndetaNSD"); - fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); - fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kNSD, "ESD -> NSD"); - //fdNdEtaAnalysis->DrawHistograms(kTRUE); - TFile* file2 = TFile::Open(dataOutput, "RECREATE"); - fdNdEtaAnalysis->SaveHistograms(); - - file->cd(); - dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta"); - fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); - fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL, "ESD -> full inelastic"); - //fdNdEtaAnalysis->DrawHistograms(kTRUE); - file2->cd(); - fdNdEtaAnalysis->SaveHistograms(); - - file->cd(); - fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr"); - fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); - fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco, "ESD -> minimum bias"); - //fdNdEtaAnalysis->DrawHistograms(kTRUE); - file2->cd(); - fdNdEtaAnalysis->SaveHistograms(); - - file->cd(); - fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx"); - fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); - fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle, "ESD -> MB with vertex"); - //fdNdEtaAnalysis->DrawHistograms(kTRUE); - file2->cd(); - fdNdEtaAnalysis->SaveHistograms(); - - file->cd(); - fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks"); - fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); - fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone, "ESD raw with pt cut"); - //fdNdEtaAnalysis->DrawHistograms(kTRUE); - file2->cd(); - fdNdEtaAnalysis->SaveHistograms(); - - file->cd(); - fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracksAll", "dndetaTracksAll"); - fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD"); - fdNdEtaAnalysis->Finish(0, -1, AlidNdEtaCorrection::kNone, "ESD raw"); - //fdNdEtaAnalysis->DrawHistograms(kTRUE); - file2->cd(); - fdNdEtaAnalysis->SaveHistograms(); - - file2->Write(); - file2->Close(); -} - -void* FinishAnalysis(const char* analysisFile = "analysis_esd_raw.root", const char* analysisDir = "fdNdEtaAnalysisESD", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", Bool_t useUncorrected = kFALSE, Bool_t simple = kFALSE) -{ - loadlibs(); - - TFile* file = TFile::Open(analysisFile); - - dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir); - fdNdEtaAnalysis->LoadHistograms(); - - if (correctionMapFile) - { - AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder); - TFile::Open(correctionMapFile); - dNdEtaCorrection->LoadHistograms(); - - fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL); - //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kINEL); - //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kTrack2Particle); - } - else - fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone); - - fdNdEtaAnalysis->DrawHistograms(simple); - - TH1* hist = fdNdEtaAnalysis->GetdNdEtaHistogram(1); - Int_t binLeft = hist->GetXaxis()->FindBin(-0.5); - Int_t binRight = hist->GetXaxis()->FindBin(0.5); - Float_t value1 = hist->Integral(binLeft, binRight); - - hist = fdNdEtaAnalysis->GetdNdEtaHistogram(2); - Float_t value2 = hist->Integral(binLeft, binRight); - - if (value2 > 0) - printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2); - - return fdNdEtaAnalysis; -}