+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;
if (aProof)
{
- TProof::Open("lxb6046");
+ TProof::Open("alicecaf");
//gProof->SetParallel(1);
// Enable the needed package
}
else
{
- gProof->UploadPackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-14-Release/AF-v4-14");
- gProof->EnablePackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-14-Release/AF-v4-14");
+ gProof->UploadPackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-16-Release/AF-v4-16");
+ gProof->EnablePackage("AF-v4-16");
}
gProof->UploadPackage("$ALICE_ROOT/PWG0base");
}
else
{
+ gSystem->AddIncludePath("-I${ALICE_ROOT}/include/ -I${ALICE_ROOT}/PWG0/ -I${ALICE_ROOT}/PWG0/dNdEta/");
gSystem->Load("libVMC");
gSystem->Load("libTree");
+ gSystem->Load("libProof");
gSystem->Load("libSTEERBase");
gSystem->Load("libESD");
gSystem->Load("libAOD");
// 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);
+ // Add ESD handler
+ AliESDInputHandler* esdH = new AliESDInputHandler;
+ esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDVZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks Kinks Cascades AliESDTZERO ALIESDACORDE MuonTracks TrdTracks CaloClusters");
+ mgr->SetInputEventHandler(esdH);
AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD;
AliPWG0Helper::Trigger trigger = AliPWG0Helper::kMB1;
esdTrackCuts->SetHistogramsOn(kTRUE);
}
- if (runWhat == 0)
+ cInput = mgr->GetCommonInputContainer();
+
+ // Create, add task
+ if (runWhat == 0 || runWhat == 2)
{
+ Load("AlidNdEtaTask", aDebug);
task = new AlidNdEtaTask(option);
if (mc)
task->SetReadMC();
+ // syst. error flags
//task->SetUseMCVertex();
//task->SetUseMCKine();
+ //task->SetOnlyPrimaries();
+ //task->SetFillPhi();
+
+ task->SetTrigger(trigger);
+ task->SetAnalysisMode(analysisMode);
+ task->SetTrackCuts(esdTrackCuts);
+ task->SetDeltaPhiCut(0.05);
+
+ 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);
+ Load("AlidNdEtaCorrectionTask", aDebug);
+ task2 = new AlidNdEtaCorrectionTask(option);
- //task->SetOnlyPrimaries();
- }
+ // syst. error flags
+ //task2->SetFillPhi();
+ //task2->SetOnlyPrimaries();
+
+ task2->SetTrigger(trigger);
+ task2->SetAnalysisMode(analysisMode);
+ task2->SetTrackCuts(esdTrackCuts);
+ //task2->SetDeltaPhiCut(0.05);
- task->SetTrigger(trigger);
- task->SetAnalysisMode(analysisMode);
- task->SetTrackCuts(esdTrackCuts);
+ mgr->AddTask(task2);
- mgr->AddTask(task);
+ // Attach input
+ mgr->ConnectInput(task2, 0, cInput);
+
+ // Attach output
+ cOutput = mgr->CreateContainer("cOutput2", TList::Class(), AliAnalysisManager::kOutputContainer);
+ mgr->ConnectOutput(task2, 0, cOutput);
+ }
if (mc) {
// Enable MC event handler
mgr->SetMCtruthEventHandler(handler);
}
- // Add ESD handler
- AliESDInputHandler* esdH = new AliESDInputHandler;
- 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();
mgr->StartAnalysis("proof", data, nRuns, offset);
}
+ else if (aProof == 3)
+ {
+ gROOT->ProcessLine(".L CreateChainFromDataSet.C");
+ ds = gProof->GetDataSet(data)->GetStagedSubset();
+ chain = CreateChainFromDataSet(ds);
+ mgr->StartAnalysis("local", chain, nRuns, offset);
+ }
else
{
// Create chain of input files
gROOT->LoadMacro("../CreateESDChain.C");
+
chain = CreateESDChain(data, nRuns, offset);
//chain = CreateChain("TE", data, nRuns, offset);
}
}
-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;
-}