* Example macro to run locally an analysis task for comparing the offline
* with the HLT esd tree.
*
- * Its output is a root file containing the histograms defined in the
- * analysis task.
+ * The output is a root file containing the histograms defined in the
+ * analysis task. There is one output file per detector.
*
* Usage:
* <pre>
- * aliroot -b -q -l compare_HLT_offline_local.C 2>&1 | tee task.log
+ * aliroot -b -q -l compare_HLT_offline_local.C'("/home/blabla/AliESDs.root","phos")' 2>&1 | tee task.log
+ * aliroot -b -q -l compare_HLT_offline_local.C'("/home/blabla/AliESDs.root","phos tpc global")' 2>&1 | tee task.log
+ * aliroot -q compare-HLT-offline-local.C'("alien:///alice/data/2010/LHC10b/000115322/ESDs/pass1/10000115322040.20/AliESDs.root","global")' 2>&1 | tee log
* </pre>
+ *
+ * If alien:// is contained in the name of the file, then the macro connects to the grid to access the file.
*
- * @ingroup alihlt_tpc
+ * @ingroup alihlt_qa
* @author zbyin@mail.ccnu.edu.cn, Kalliopi.Kanaki@ift.uib.no
*/
-void compare_HLT_offline_local(){
+void compare_HLT_offline_local(TString file, const char* detectorTask="global"){
+
+ cout <<"balle"<<endl;
TStopwatch timer;
timer.Start();
gSystem->Load("libANALYSIS.so");
gSystem->Load("libANALYSISalice.so");
gSystem->Load("libHLTbase.so");
+
gROOT->ProcessLine(".include $ALICE_ROOT/include");
-
- //-------------- Compile the analysis task ---------- //
- gROOT->LoadMacro("AliAnalysisTaskHLTTPC.cxx+");
+ Bool_t bTPC=kFALSE, bPHOS=kFALSE, bITS=kFALSE, bGLOBAL=kFALSE, bEMCAL = kFALSE;
+
+ TString allArgs = detectorTask;
+ TString argument;
+
+ TObjArray *pTokens = allArgs.Tokenize(" ");
+ if(pTokens){
+ for(int i=0; i<pTokens->GetEntries(); i++){
+ argument=((TObjString*)pTokens->At(i))->GetString();
+ if(argument.IsNull()) continue;
-
- AliTagAnalysis *TagAna = new AliTagAnalysis("ESD");
- //TagAna->ChainLocalTags("../Tags");
+ if(argument.CompareTo("tpc", TString::kIgnoreCase)==0){
+ bTPC = kTRUE;
+ continue;
+ }
+ if(argument.CompareTo("phos", TString::kIgnoreCase)==0){
+ bPHOS = kTRUE;
+ continue;
+ }
+ else if(argument.CompareTo("emcal", TString::kIgnoreCase)==0){
+ bEMCAL = kTRUE;
+ continue;
+ }
-// AliRunTagCuts *runCuts = new AliRunTagCuts();
-// AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
-// AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
-// AliEventTagCuts *evCuts = new AliEventTagCuts();
-// evCuts->SetMultiplicityRange(11,12);
+ 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;
+ bEMCAL = kTRUE;
+ bITS = kTRUE;
+ bGLOBAL = kTRUE;
+ continue;
+ }
+ else break;
+ }
+ }
+
-
- 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);
+ //-------------- Compile the analysis tasks ---------- //
+ if(bTPC) gROOT->LoadMacro("AliAnalysisTaskHLTTPC.cxx+");
- //chain->Add("/afs/.alihlt.cern.ch/public/rec/79876/AliESDs.root");
- //chain->Add("/opt/HLT-public/rec/83683/rec/09000083683000.10/AliESDs.root");
+ if(bPHOS) {
+ AliHLTSystem * pHLT = AliHLTPluginBase::GetInstance();
+ pHLT->LoadComponentLibraries("libHLTbase");
+ pHLT->LoadComponentLibraries("libAliHLTUtil");
+ pHLT->LoadComponentLibraries("libAliHLTGlobal");
+ gROOT->LoadMacro("AliAnalysisTaskHLTCalo.cxx+");
+ gROOT->LoadMacro("AliAnalysisTaskHLTPHOS.cxx+");
+ }
- //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");
+ if(bEMCAL) {
+ AliHLTSystem * pHLT = AliHLTPluginBase::GetInstance();
+ pHLT->LoadComponentLibraries("libHLTbase");
+ pHLT->LoadComponentLibraries("libAliHLTUtil");
+ pHLT->LoadComponentLibraries("libAliHLTGlobal");
+ gROOT->LoadMacro("AliAnalysisTaskHLTCalo.cxx+");
+ gROOT->LoadMacro("AliAnalysisTaskHLTEMCAL.cxx+");
+ }
- //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);
+ if(bITS) gROOT->LoadMacro("AliAnalysisTaskHLTITS.cxx+");
+ if(bGLOBAL) gROOT->LoadMacro("AliAnalysisTaskHLT.cxx+");
+
+ //if(!AliAnalysisGrid::CreateToken()) return NULL;
+
+ if(file.Contains("alien")) TGrid::Connect("alien://");
+ TChain *chain = new TChain("esdTree");
+ chain->Add(file);
+ //chain->Add("alien:///alice/data/2010/LHC10b/000115322/ESDs/pass1/10000115322040.20/AliESDs.root");
+ //chain->Add("...");
+
//-------- Make the analysis manager ---------------//
AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
AliESDInputHandler *esdH = new AliESDInputHandler;
esdH->SetReadHLT();
+ esdH->SetReadFriends(kFALSE);
mgr->SetInputEventHandler(esdH);
mgr->SetNSysInfo(1000);
//-------------- define the tasks ------------//
- AliAnalysisTaskHLTTPC *task1 = new AliAnalysisTaskHLTTPC("offhlt_comparison_TPC");
- mgr->AddTask(task1);
+ 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,1,coutput1);
+ }
- AliAnalysisTaskHLTPHOS *taskPHOS = new AliAnalysisTaskHLTPHOS("offhlt_comparison_PHOS");
- mgr->AddTask(taskPHOS);
+ 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);
+ }
- AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tpc_histograms", TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-TPC-comparison.root");
- AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("phos_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-PHOS-comparison.root");
-
- mgr->ConnectInput(task1,0,mgr->GetCommonInputContainer());
- //mgr->ConnectOutput (task1, 0, mgr->GetCommonOutputContainer());
- mgr->ConnectOutput(task1,1,coutput1);
-
- mgr->ConnectInput(taskPHOS,0,mgr->GetCommonInputContainer());
- mgr->ConnectOutput(taskPHOS,1,coutput2);
+ if(bEMCAL){
+ AliAnalysisTaskHLTEMCAL *taskEMCAL = new AliAnalysisTaskHLTEMCAL("offhlt_comparison_EMCAL");
+ mgr->AddTask(taskEMCAL);
+ AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("emcal_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-EMCAL-comparison.root");
+ mgr->ConnectInput(taskEMCAL,0,mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(taskEMCAL,1,coutput5);
+ }
+ 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();