*
* Usage:
* <pre>
- * aliroot -q compare-HLT-offline-grid.C'("000115322","/alice/data/2010/LHC10b","ESDcomparison","output","full","global")' 2>&1 | tee log
+ * aliroot -q compare-HLT-offline-grid.C'("000115322","/alice/data/2010/LHC10b","ESDcomparison","output","full","global")'
* </pre>
* - run number
* - GRID input directory, where you define in which LHC period the run number belongs to
- * - GRID working directory, where the .xml, .jdl and the task are uploaded (you have to create it yourself in advance)
- * - GRID output directory with respect to the working one, where the output files of the task are located (you have to create it yourself in advance)
+ * - GRID working directory, where the .xml, .jdl and the task are uploaded
+ * - GRID output directory with respect to the working one, where the output files of the task are located
* - run in full mode, i.e. completely on the GRID with all the chunks of the run processed
* - specify the analysis task you want to run
+ * - specify the path where the task is located, by default it takes $ALICE_ROOT/HLT/QA/tasks
+ * - specify the beam type
+ * - specify which THnSparse objects you want to have filled
+ * - specify whether you are interested only in HLT triggered events
+ * - specify how many events you want to analyze
*
* @ingroup alihlt_qa
- * @author zbyin@mail.ccnu.edu.cn, Kalliopi.Kanaki@ift.uib.no
+ * @author Hege.Erdal@student.uib.no, Kalliopi.Kanaki@ift.uib.no
*/
-void compare_HLT_offline_grid(TString runNumber, TString dataDir, TString gridWorkingDir, TString gridOutputDir, const char* mode = "full", const char* detectorTask="global"){
+void compare_HLT_offline_grid( TString runNumber
+ ,TString dataDir
+ ,TString gridWorkingDir
+ ,TString gridOutputDir
+ ,const char* mode = "full"
+ ,const char* detectorTask="global"
+ ,TString taskFolder="$ALICE_ROOT/HLT/QA/tasks/"
+ ,TString beamType="p-p"
+ ,TString options="event-off event-hlt track-off track-hlt"
+ ,bool fUseHLTTrigger=kFALSE
+ ,Long64_t nEvents=1234567890
+ )
+{
TStopwatch timer;
timer.Start();
gSystem->Load("libANALYSIS");
gSystem->Load("libANALYSISalice");
gSystem->Load("libHLTbase");
- gROOT->ProcessLine(".include $ALICE_ROOT/include");
+ gROOT->ProcessLine(".include $ALICE_ROOT/include");
+ gSystem->AddIncludePath("-I$ALICE_ROOT/HLT/BASE -I. -I$ALICE_ROOT/STEER -I$ALICE_ROOT/ANALYSIS");
+ //gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
- Bool_t bAll=kFALSE, bTPC=kFALSE, bPHOS=kFALSE, bITS=kFALSE, bGLOBAL=kFALSE;
+ Bool_t bTPC=kFALSE, bPHOS=kFALSE, bEMCAL=kFALSE, bGLOBAL=kFALSE, bD0=kFALSE, bCB=kFALSE;
TString allArgs = detectorTask;
TString argument;
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;
+ }
+ if(argument.CompareTo("emcal", TString::kIgnoreCase)==0){
+ bEMCAL = 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;
- }
+ }
+ if(argument.CompareTo("D0", TString::kIgnoreCase)==0){
+ bD0 = kTRUE;
+ continue;
+ }
+ if(argument.CompareTo("cb", TString::kIgnoreCase)==0){
+ bCB = kTRUE;
+ continue;
+ }
else break;
}
}
esdH->SetReadFriends(kFALSE);
mgr->SetInputEventHandler(esdH);
mgr->SetNSysInfo(1000);
-
+
+ //To use Physics Selection
+ //AliPhysicsSelectionTask *physSelTask = AddTaskPhysicsSelection(kFALSE,kTRUE);
+
// Create and configure the alien handler plugin
- gROOT->LoadMacro("CreateAlienHandler.C");
+ gROOT->LoadMacro("$ALICE_ROOT/HLT/QA/tasks/macros/CreateAlienHandler.C");
AliAnalysisGrid *alienHandler = CreateAlienHandler(runNumber, dataDir, gridWorkingDir, gridOutputDir, mode, detectorTask);
if (!alienHandler) return;
mgr->SetGridHandler(alienHandler);
//-------------- Compile the analysis tasks ---------- //
- if(bTPC) gROOT->LoadMacro("AliAnalysisTaskHLTTPC.cxx+");
- if(bPHOS) {
- AliHLTSystem * pHLT = AliHLTPluginBase::GetInstance();
- pHLT->LoadComponentLibraries("libHLTbase");
- pHLT->LoadComponentLibraries("libAliHLTUtil");
- pHLT->LoadComponentLibraries("libAliHLTGlobal");
- gROOT->LoadMacro("AliAnalysisTaskHLTCalo.cxx+");
- gROOT->LoadMacro("AliAnalysisTaskHLTPHOS.cxx+");
+ if(bPHOS && bEMCAL) {
+ gSystem->Load("libHLTbase");
+ gSystem->Load("libAliHLTUtil");
+ gSystem->Load("libAliHLTGlobal");
+ TString strTask1("AliAnalysisTaskHLTCalo.cxx+");
+ TString strTask2("AliAnalysisTaskHLTPHOS.cxx+");
+ TString strTask3("AliAnalysisTaskHLTEMCAL.cxx+");
+ gROOT->LoadMacro(taskFolder+strTask1);
+ gROOT->LoadMacro(taskFolder+strTask2);
+ gROOT->LoadMacro(taskFolder+strTask3);
}
- if(bITS) gROOT->LoadMacro("AliAnalysisTaskHLTITS.cxx+");
- if(bGLOBAL) gROOT->LoadMacro("AliAnalysisTaskHLT.cxx+");
-
+ else if(bPHOS) {
+ gSystem->Load("libHLTbase");
+ gSystem->Load("libAliHLTUtil");
+ gSystem->Load("libAliHLTGlobal");
+ TString strTask1("AliAnalysisTaskHLTCalo.cxx+");
+ TString strTask2("AliAnalysisTaskHLTPHOS.cxx+");
+ gROOT->LoadMacro(taskFolder+strTask1);
+ gROOT->LoadMacro(taskFolder+strTask2);
+ }
+ else if(bEMCAL) {
+ gSystem->Load("libHLTbase");
+ gSystem->Load("libAliHLTUtil");
+ gSystem->Load("libAliHLTGlobal");
+ TString strTask1("AliAnalysisTaskHLTCalo.cxx+");
+ TString strTask2("AliAnalysisTaskHLTEMCAL.cxx+");
+ gROOT->LoadMacro(taskFolder+strTask1);
+ gROOT->LoadMacro(taskFolder+strTask2);
+ }
+ if(bGLOBAL){
+ TString strTask("AliAnalysisTaskHLT.cxx+");
+ gROOT->LoadMacro(taskFolder+strTask);
+ }
+ if(bD0){
+ TString strTask("AliAnalysisTaskD0Trigger.cxx+");
+ gROOT->LoadMacro(taskFolder+strTask);
+ }
+ if(bCB){
+ TString strTask("AliAnalysisTaskHLTCentralBarrel.cxx+");
+ gROOT->LoadMacro(taskFolder+strTask);
+ }
//-------------- 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,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");
+ AliAnalysisDataContainer *coutputPHOS = mgr->CreateContainer("phos_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-PHOS-comparison.root");
mgr->ConnectInput(taskPHOS,0,mgr->GetCommonInputContainer());
- mgr->ConnectOutput(taskPHOS,1,coutput2);
+ mgr->ConnectOutput(taskPHOS,1,coutputPHOS);
}
-
- 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(bEMCAL){
+ AliAnalysisTaskHLTEMCAL *taskEMCAL = new AliAnalysisTaskHLTEMCAL("offhlt_comparison_EMCAL");
+ mgr->AddTask(taskEMCAL);
+ AliAnalysisDataContainer *coutputEMCAL = mgr->CreateContainer("emcal_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-EMCAL-comparison.root");
+ mgr->ConnectInput(taskEMCAL,0,mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(taskEMCAL,1,coutputEMCAL);
}
-
+
if(bGLOBAL){
AliAnalysisTaskHLT *taskGLOBAL = new AliAnalysisTaskHLT("offhlt_comparison_GLOBAL");
+ taskGLOBAL->SetUseHLTTriggerDecision(fUseHLTTrigger);
+ if(fUseHLTTrigger==kTRUE) printf("\n\nOnly HLT triggered events will be used to fill the distributions for task %s.\n\n", taskGLOBAL->GetName());
+ //taskGLOBAL->SelectCollisionCandidates();
mgr->AddTask(taskGLOBAL);
- AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("global_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-GLOBAL-comparison.root");
+ if(fUseHLTTrigger==kFALSE)
+ AliAnalysisDataContainer *coutputGLOBAL = mgr->CreateContainer("global_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-GLOBAL-comparison.root");
+ else
+ AliAnalysisDataContainer *coutputGLOBAL = mgr->CreateContainer("global_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-GLOBAL-comparison_triggered.root");
mgr->ConnectInput(taskGLOBAL,0,mgr->GetCommonInputContainer());
- mgr->ConnectOutput(taskGLOBAL,1,coutput4);
+ mgr->ConnectOutput(taskGLOBAL,1,coutputGLOBAL);
+ }
+ if(bD0){
+ float cuts[7]={0.5,0.04,0.7,0.8,0.05,-0.00025,0.7};
+ AliAnalysisTaskD0Trigger *taskD0 = new AliAnalysisTaskD0Trigger("offhlt_comparison_D0_Trigger",cuts);
+ mgr->AddTask(taskD0);
+ AliAnalysisDataContainer *coutputD0 = mgr->CreateContainer("D0_histograms",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-D0-comparison.root");
+ mgr->ConnectInput(taskD0,0,mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(taskD0,1,coutputD0);
+ }
+ if(bCB){
+ AliAnalysisTaskHLTCentralBarrel *taskCB = new AliAnalysisTaskHLTCentralBarrel("offhlt_comparison_CB");
+ mgr->AddTask(taskCB);
+ taskCB->SetBeamType(beamType);
+ if(beamType.Contains("Pb-Pb")){
+ gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskCentrality.C");
+ AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
+ taskCentrality->SetPass(1);
+ }
+ taskCB->SetOptions(options);
+ AliAnalysisDataContainer *coutputCB = mgr->CreateContainer("esd_thnsparse",TList::Class(), AliAnalysisManager::kOutputContainer, "HLT-OFFLINE-CentralBarrel-comparison.root");
+ mgr->ConnectInput(taskCB,0,mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(taskCB,1,coutputCB);
}
-
// Enable debug printouts
mgr->SetDebugLevel(2);
if (!mgr->InitAnalysis()) return;
mgr->PrintStatus();
- mgr->StartAnalysis("grid");
+ mgr->StartAnalysis("grid", nEvents);
timer.Stop();
timer.Print();
}
+
+void compare_HLT_offline_grid(){
+ cout << " " << endl;
+ cout << " Usage examples:" << endl;
+ cout << " compare-HLT-offline-grid.C'(runNumber, dataDir, gridWorkingDir, gridOutputDir, mode, taskOption, taskFolder, beamType, THnSparse_names, fUseHLTTrigger)'" << endl;
+ cout << " compare-HLT-offline-grid.C'(\"000115322\",\"/alice/data/2010/LHC10b\",\"ESDcomparison\",\"output\",\"full\",\"global\",\"./\",\"p-p\",\"event-off event-hlt track-off track-hlt\",kTRUE)'" << endl;
+ cout << " " << endl;
+}