]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/QA/tasks/macros/compare-HLT-offline-local.C
-Added base Calo QA class.
[u/mrichter/AliRoot.git] / HLT / QA / tasks / macros / compare-HLT-offline-local.C
index de5a001c9aa27574ba13ed5f9288aa23e0314daf..c7dfd870b23879c3c836731a40b0ade91152d594 100644 (file)
@@ -3,19 +3,25 @@
  * 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();
@@ -33,73 +39,139 @@ void compare_HLT_offline_local(){
   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();