// $Id$
/*
* Example macro to run locally an analysis task for comparing the offline
* with the HLT esd tree.
*
* The output is a root file containing the histograms defined in the
* analysis task. There is one output file per detector.
*
* Usage:
*
* aliroot -b -q -l compare_HLT_offline_local.C'("phos")' 2>&1 | tee task.log
* aliroot -b -q -l compare_HLT_offline_local.C'("phos tpc")' 2>&1 | tee task.log
* aliroot -b -q -l compare_HLT_offline_local.C 2>&1 | tee task.log
*
*
* If no argument is specified, ALL detector tasks are run.
*
* @ingroup alihlt_tpc
* @author zbyin@mail.ccnu.edu.cn, Kalliopi.Kanaki@ift.uib.no
*/
void compare_HLT_offline_local(const char* detectorTask="all"){
TStopwatch timer;
timer.Start();
gSystem->Load("libTree.so");
gSystem->Load("libGeom.so");
gSystem->Load("libVMC.so");
gSystem->Load("libPhysics.so");
//----------- Loading the required libraries ---------//
gSystem->Load("libSTEERBase.so");
gSystem->Load("libESD.so");
gSystem->Load("libAOD.so");
gSystem->Load("libANALYSIS.so");
gSystem->Load("libANALYSISalice.so");
gSystem->Load("libHLTbase.so");
gROOT->ProcessLine(".include $ALICE_ROOT/include");
Bool_t bAll=kFALSE, bTPC=kFALSE, bPHOS=kFALSE, bITS=kFALSE, bGLOBAL=kFALSE;
TString allArgs = detectorTask;
TString argument;
TObjArray *pTokens = allArgs.Tokenize(" ");
if(pTokens){
for(int i=0; iGetEntries(); i++){
argument=((TObjString*)pTokens->At(i))->GetString();
if(argument.IsNull()) continue;
if(argument.CompareTo("tpc", TString::kIgnoreCase)==0){
bTPC = kTRUE;
continue;
}
if(argument.CompareTo("phos", TString::kIgnoreCase)==0){
bPHOS = kTRUE;
continue;
}
if(argument.CompareTo("its", TString::kIgnoreCase)==0){
bITS = kTRUE;
continue;
}
if(argument.CompareTo("global", TString::kIgnoreCase)==0){
bGLOBAL = kTRUE;
continue;
}
if(argument.CompareTo("all",TString::kIgnoreCase)==0){
bTPC = kTRUE;
bPHOS = kTRUE;
bITS = kTRUE;
bGLOBAL = kTRUE;
bAll = kTRUE;
continue;
}
else break;
}
}
//-------------- Compile the analysis tasks ---------- //
if(bTPC) gROOT->LoadMacro("AliAnalysisTaskHLTTPC.cxx+");
if(bPHOS) gROOT->LoadMacro("AliAnalysisTaskHLTPHOS.cxx+");
if(bITS) gROOT->LoadMacro("AliAnalysisTaskHLTITS.cxx+");
if(bGLOBAL) gROOT->LoadMacro("AliAnalysisTaskHLT.cxx+");
AliTagAnalysis *TagAna = new AliTagAnalysis("ESD");
//TagAna->ChainLocalTags("../Tags");
// AliRunTagCuts *runCuts = new AliRunTagCuts();
// AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
// AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
// AliEventTagCuts *evCuts = new AliEventTagCuts();
// evCuts->SetMultiplicityRange(11,12);
TChain *chain = 0x0;
//chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
chain = new TChain("esdTree");
//gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
//chain = CreateESDChain("esd_run84254.txt", 2);
//chain->Add("/afs/.alihlt.cern.ch/public/rec/79876/AliESDs.root");
//chain->Add("/opt/HLT-public/rec/83683/rec/09000083683000.10/AliESDs.root");
//chain->Add("/opt/HLT-public/rec/82762/ESDs/pass1/09000082762002.10/AliESDs.root");
//chain->Add("/opt/HLT-public/rec/82762/ESDs/pass1/09000082762004.10/AliESDs.root");
//chain->Add("/opt/HLT-public/rec/82762/ESDs/pass1/09000082762005.10/AliESDs.root");
//chain->Add("/opt/HLT-public/rec/82762/ESDs/pass1/09000082762006.10/AliESDs.root");
//chain->Add("/opt/HLT-public/rec/84254/alien/09000084254009.200/AliESDs.root");
//chain->Add("/opt/HLT-public/rec/84254/alien/09000084254009.40/AliESDs.root");
//chain->Add("/opt/HLT-public/rec/84254/alien/09000084254009.10/AliESDs.root");
chain->Add("~/7TeV/115322/10000115322040.110/AliESDs.root");
//chain->SetBranchStatus("*Calo*",0);
//-------- Make the analysis manager ---------------//
AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
AliESDInputHandler *esdH = new AliESDInputHandler;
esdH->SetReadHLT();
mgr->SetInputEventHandler(esdH);
mgr->SetNSysInfo(1000);
//-------------- define the tasks ------------//
if(bTPC){
AliAnalysisTaskHLTTPC *taskTPC = new AliAnalysisTaskHLTTPC("offhlt_comparison_TPC");
mgr->AddTask(taskTPC);
AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tpc_histograms", TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-TPC-comparison.root");
mgr->ConnectInput(taskTPC,0,mgr->GetCommonInputContainer());
//mgr->ConnectOutput (taskTPC, 0, mgr->GetCommonOutputContainer());
mgr->ConnectOutput(taskTPC,1,coutput1);
}
if(bPHOS){
AliAnalysisTaskHLTPHOS *taskPHOS = new AliAnalysisTaskHLTPHOS("offhlt_comparison_PHOS");
mgr->AddTask(taskPHOS);
AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("phos_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-PHOS-comparison.root");
mgr->ConnectInput(taskPHOS,0,mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskPHOS,1,coutput2);
}
if(bITS){
AliAnalysisTaskHLTITS *taskITS = new AliAnalysisTaskHLTITS("offhlt_comparison_ITS");
mgr->AddTask(taskITS);
AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("its_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-ITS-comparison.root");
mgr->ConnectInput(taskITS,0,mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskITS,1,coutput3);
}
if(bGLOBAL){
AliAnalysisTaskHLT *taskGLOBAL = new AliAnalysisTaskHLT("offhlt_comparison_GLOBAL");
mgr->AddTask(taskGLOBAL);
AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("global_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-GLOBAL-comparison.root");
mgr->ConnectInput(taskGLOBAL,0,mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskGLOBAL,1,coutput4);
}
if (!mgr->InitAnalysis()) return;
mgr->PrintStatus();
mgr->StartAnalysis("local",chain);
timer.Stop();
timer.Print();
}