3 * Example macro to run locally an analysis task for comparing the offline
4 * with the HLT esd tree.
6 * The output is a root file containing the histograms defined in the
7 * analysis task. There is one output file per detector.
11 * aliroot -b -q -l compare_HLT_offline_local.C'("/home/blabla/AliESDs.root","phos")' 2>&1 | tee task.log
12 * aliroot -b -q -l compare_HLT_offline_local.C'("/home/blabla/AliESDs.root","phos tpc global")' 2>&1 | tee task.log
13 * aliroot -q compare-HLT-offline-local.C'("alien:///alice/data/2010/LHC10b/000115322/ESDs/pass1/10000115322040.20/AliESDs.root","global")' 2>&1 | tee log
16 * If alien:// is contained in the name of the file, then the macro connects to the grid to access the file.
19 * @author zbyin@mail.ccnu.edu.cn, Kalliopi.Kanaki@ift.uib.no
22 void compare_HLT_offline_local(TString file, const char* detectorTask="global"){
27 gSystem->Load("libTree.so");
28 gSystem->Load("libGeom.so");
29 gSystem->Load("libVMC.so");
30 gSystem->Load("libPhysics.so");
32 //----------- Loading the required libraries ---------//
34 gSystem->Load("libSTEERBase.so");
35 gSystem->Load("libESD.so");
36 gSystem->Load("libAOD.so");
37 gSystem->Load("libANALYSIS.so");
38 gSystem->Load("libANALYSISalice.so");
39 gSystem->Load("libHLTbase.so");
40 gROOT->ProcessLine(".include $ALICE_ROOT/include");
43 Bool_t bTPC=kFALSE, bPHOS=kFALSE, bITS=kFALSE, bGLOBAL=kFALSE;
45 TString allArgs = detectorTask;
48 TObjArray *pTokens = allArgs.Tokenize(" ");
50 for(int i=0; i<pTokens->GetEntries(); i++){
51 argument=((TObjString*)pTokens->At(i))->GetString();
52 if(argument.IsNull()) continue;
54 if(argument.CompareTo("tpc", TString::kIgnoreCase)==0){
58 if(argument.CompareTo("phos", TString::kIgnoreCase)==0){
62 if(argument.CompareTo("its", TString::kIgnoreCase)==0){
66 if(argument.CompareTo("global", TString::kIgnoreCase)==0){
70 if(argument.CompareTo("all",TString::kIgnoreCase)==0){
82 //-------------- Compile the analysis tasks ---------- //
83 if(bTPC) gROOT->LoadMacro("AliAnalysisTaskHLTTPC.cxx+");
84 if(bPHOS) gROOT->LoadMacro("AliAnalysisTaskHLTPHOS.cxx+");
85 if(bITS) gROOT->LoadMacro("AliAnalysisTaskHLTITS.cxx+");
86 if(bGLOBAL) gROOT->LoadMacro("AliAnalysisTaskHLT.cxx+");
88 if(!AliAnalysisGrid::CreateToken()) return NULL;
90 if(file.Contains("alien")) TGrid::Connect("alien://");
92 TChain *chain = new TChain("esdTree");
95 //chain->Add("alien:///alice/data/2010/LHC10b/000115322/ESDs/pass1/10000115322040.20/AliESDs.root");
98 //-------- Make the analysis manager ---------------//
100 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
101 AliESDInputHandler *esdH = new AliESDInputHandler;
103 esdH->SetReadFriends(kFALSE);
104 mgr->SetInputEventHandler(esdH);
105 mgr->SetNSysInfo(1000);
107 //-------------- define the tasks ------------//
110 AliAnalysisTaskHLTTPC *taskTPC = new AliAnalysisTaskHLTTPC("offhlt_comparison_TPC");
111 mgr->AddTask(taskTPC);
112 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tpc_histograms", TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-TPC-comparison.root");
113 mgr->ConnectInput(taskTPC,0,mgr->GetCommonInputContainer());
114 mgr->ConnectOutput(taskTPC,1,coutput1);
118 AliAnalysisTaskHLTPHOS *taskPHOS = new AliAnalysisTaskHLTPHOS("offhlt_comparison_PHOS");
119 mgr->AddTask(taskPHOS);
120 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("phos_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-PHOS-comparison.root");
121 mgr->ConnectInput(taskPHOS,0,mgr->GetCommonInputContainer());
122 mgr->ConnectOutput(taskPHOS,1,coutput2);
126 AliAnalysisTaskHLTITS *taskITS = new AliAnalysisTaskHLTITS("offhlt_comparison_ITS");
127 mgr->AddTask(taskITS);
128 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("its_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-ITS-comparison.root");
129 mgr->ConnectInput(taskITS,0,mgr->GetCommonInputContainer());
130 mgr->ConnectOutput(taskITS,1,coutput3);
134 AliAnalysisTaskHLT *taskGLOBAL = new AliAnalysisTaskHLT("offhlt_comparison_GLOBAL");
135 mgr->AddTask(taskGLOBAL);
136 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("global_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-GLOBAL-comparison.root");
137 mgr->ConnectInput(taskGLOBAL,0,mgr->GetCommonInputContainer());
138 mgr->ConnectOutput(taskGLOBAL,1,coutput4);
141 if (!mgr->InitAnalysis()) return;
143 mgr->StartAnalysis("local",chain);