//--------------------------------------------------------------------------
// Base macro for submitting single muon analysis.
//
// In case it is not run with full aliroot, it needs to have in the working directory:
// - STEERBase.par
// - ESD.par
// - AOD.par
// - ANALYSIS.par
// - ANALYSISalice.par
// - PWG3muon.par
//
// The inputPath is either:
// - The directory containing the AOD file in local mode
// - The xml file with the list AODs in the alien catalogue in grid mode
// - The proof dataset in proof mode
//
// The macro reads AODs and outputs file:
// - outputDir/singleMuAnalysis.root
//--------------------------------------------------------------------------
enum analysisMode {kMlocal, kMgridInteractive, kMgridBatch, kMproof};
TString modeName[4] = {"local", "local", "grid", "proof"};
void RunSingleMuonAnalysisFromAOD(Int_t mode=kMlocal, Char_t *inputPath=".", Char_t *outputDir=".", Char_t *aodFilename = "AliAODs.root", Long64_t nRuns = -1, Long64_t offset = 0) {
TStopwatch timer;
timer.Start();
// Check if user is running root or aliroot
TString checkString = gSystem->Getenv("ALICE_ROOT");
checkString.Append("/lib/tgt_linux/libSTEERBase.so");
TString foundLib = gSystem->GetLibraries(checkString.Data());
Bool_t isFullAliroot = (foundLib.Length()==0) ? kFALSE : kTRUE;
// Load libraries
gSystem->Load("libTree");
gSystem->Load("libGeom");
gSystem->Load("libVMC");
if(mode==kMproof)
TProof::Open("alicecaf.cern.ch");
if(isFullAliroot){
gSystem->Load("libANALYSIS");
gSystem->Load("libANALYSISalice");
gSystem->Load("libSTEERBase");
gSystem->Load("libAOD");
gSystem->Load("libESD");
gSystem->Load("${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/libPWGmuon.so");
}
else {
const Int_t nNeededPar = 6;
TString parList[nNeededPar] = {"STEERBase", "ESD", "AOD", "ANALYSIS", "ANALYSISalice", "PWG3muon"};
if(mode==kMproof){
gProof->UploadPackage("AF-v4-15");
gProof->EnablePackage("AF-v4-15");
if(!SetupPar("PWG3muon")) return;
}
else {
for(Int_t ipar=0; ipar<nNeededPar; ipar++){
if(!SetupPar(parList[ipar].Data())) return;
}
}
}
// Connect to alien
//
if(mode==kMgridInteractive || mode==kMgridBatch)
TGrid::Connect("alien://");
TString outFileName("singleMuAnalysis.root");
outFileName.Prepend(Form("%s/",outputDir));
// Get the chain.
TChain* chain = 0x0;
if(mode!=kMproof) chain = CreateChain(mode, inputPath, aodFilename);
//____________________________________________//
// Make the analysis manager
AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
AliVEventHandler* aodH = new AliAODInputHandler;
mgr->SetInputEventHandler(aodH);
//____________________________________________//
// Single muon task
AliAnalysisTaskSingleMu *task1 = new AliAnalysisTaskSingleMu("SingleMu");
mgr->AddTask(task1);
// Create containers for input/output
AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree1", TTree::Class(),AliAnalysisManager::kOutputContainer,outFileName.Data());
//____________________________________________//
mgr->ConnectInput(task1,0,cinput1);
mgr->ConnectOutput(task1,0,coutput1);
if (!mgr->InitAnalysis()) return;
mgr->PrintStatus();
if(mode==kMproof)
mgr->StartAnalysis(modeName[mode].Data(), inputPath, nRuns, offset);
else
mgr->StartAnalysis(modeName[mode].Data(),chain);
timer.Stop();
timer.Print();
}
//______________________________________________________________________________
Bool_t SetupPar(char* pararchivename)
{
if (pararchivename) {
FileStat_t fs;
char pararchivenameFull[1024];
sprintf(pararchivenameFull, "%s.par", pararchivename);
if(gSystem->GetPathInfo(pararchivenameFull, fs)){
Error("SetupPar", "PAR Archive %s not found!\nPlease either copy it in the current directory\nor run full aliroot", pararchivenameFull);
return kFALSE;
}
char processline[1024];
sprintf(processline,".! tar xvzf %s.par",pararchivename);
gROOT->ProcessLine(processline);
const char* ocwd = gSystem->WorkingDirectory();
gSystem->ChangeDirectory(pararchivename);
printf("Current directory = %s\n",gSystem->pwd());
// check for BUILD.sh and execute
if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
printf("*******************************\n");
printf("*** Building PAR archive ***\n");
printf("*******************************\n");
if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
Error("runProcess","Cannot Build the PAR Archive! - Abort!");
return kFALSE;
}
}
// check for SETUP.C and execute
if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
printf("*******************************\n");
printf("*** Setup PAR archive ***\n");
printf("*******************************\n");
gROOT->Macro("PROOF-INF/SETUP.C");
}
gSystem->ChangeDirectory("../");
return kTRUE;
}
return kFALSE;
}
//______________________________________________________________________________
TChain* CreateChain(Int_t mode, Char_t* inputPath, Char_t* aodFilename = "AliAOD.root")
{
printf("*******************************\n");
printf("*** Getting the Chain ***\n");
printf("*******************************\n");
TChain *chain = 0x0;
if(mode==kMgridInteractive || mode==kMgridBatch){
AliTagAnalysis *analysis = new AliTagAnalysis();
chain = analysis->GetChainFromCollection(inputPath,"aodTree");
}
else{
chain = new TChain("aodTree");
TString inFileName(aodFilename);
inFileName.Prepend(Form("%s/",inputPath));
chain->Add(inFileName);
}
//if (chain) chain->ls();
return chain;
}
RunSingleMuonAnalysisFromAOD.C:1 RunSingleMuonAnalysisFromAOD.C:2 RunSingleMuonAnalysisFromAOD.C:3 RunSingleMuonAnalysisFromAOD.C:4 RunSingleMuonAnalysisFromAOD.C:5 RunSingleMuonAnalysisFromAOD.C:6 RunSingleMuonAnalysisFromAOD.C:7 RunSingleMuonAnalysisFromAOD.C:8 RunSingleMuonAnalysisFromAOD.C:9 RunSingleMuonAnalysisFromAOD.C:10 RunSingleMuonAnalysisFromAOD.C:11 RunSingleMuonAnalysisFromAOD.C:12 RunSingleMuonAnalysisFromAOD.C:13 RunSingleMuonAnalysisFromAOD.C:14 RunSingleMuonAnalysisFromAOD.C:15 RunSingleMuonAnalysisFromAOD.C:16 RunSingleMuonAnalysisFromAOD.C:17 RunSingleMuonAnalysisFromAOD.C:18 RunSingleMuonAnalysisFromAOD.C:19 RunSingleMuonAnalysisFromAOD.C:20 RunSingleMuonAnalysisFromAOD.C:21 RunSingleMuonAnalysisFromAOD.C:22 RunSingleMuonAnalysisFromAOD.C:23 RunSingleMuonAnalysisFromAOD.C:24 RunSingleMuonAnalysisFromAOD.C:25 RunSingleMuonAnalysisFromAOD.C:26 RunSingleMuonAnalysisFromAOD.C:27 RunSingleMuonAnalysisFromAOD.C:28 RunSingleMuonAnalysisFromAOD.C:29 RunSingleMuonAnalysisFromAOD.C:30 RunSingleMuonAnalysisFromAOD.C:31 RunSingleMuonAnalysisFromAOD.C:32 RunSingleMuonAnalysisFromAOD.C:33 RunSingleMuonAnalysisFromAOD.C:34 RunSingleMuonAnalysisFromAOD.C:35 RunSingleMuonAnalysisFromAOD.C:36 RunSingleMuonAnalysisFromAOD.C:37 RunSingleMuonAnalysisFromAOD.C:38 RunSingleMuonAnalysisFromAOD.C:39 RunSingleMuonAnalysisFromAOD.C:40 RunSingleMuonAnalysisFromAOD.C:41 RunSingleMuonAnalysisFromAOD.C:42 RunSingleMuonAnalysisFromAOD.C:43 RunSingleMuonAnalysisFromAOD.C:44 RunSingleMuonAnalysisFromAOD.C:45 RunSingleMuonAnalysisFromAOD.C:46 RunSingleMuonAnalysisFromAOD.C:47 RunSingleMuonAnalysisFromAOD.C:48 RunSingleMuonAnalysisFromAOD.C:49 RunSingleMuonAnalysisFromAOD.C:50 RunSingleMuonAnalysisFromAOD.C:51 RunSingleMuonAnalysisFromAOD.C:52 RunSingleMuonAnalysisFromAOD.C:53 RunSingleMuonAnalysisFromAOD.C:54 RunSingleMuonAnalysisFromAOD.C:55 RunSingleMuonAnalysisFromAOD.C:56 RunSingleMuonAnalysisFromAOD.C:57 RunSingleMuonAnalysisFromAOD.C:58 RunSingleMuonAnalysisFromAOD.C:59 RunSingleMuonAnalysisFromAOD.C:60 RunSingleMuonAnalysisFromAOD.C:61 RunSingleMuonAnalysisFromAOD.C:62 RunSingleMuonAnalysisFromAOD.C:63 RunSingleMuonAnalysisFromAOD.C:64 RunSingleMuonAnalysisFromAOD.C:65 RunSingleMuonAnalysisFromAOD.C:66 RunSingleMuonAnalysisFromAOD.C:67 RunSingleMuonAnalysisFromAOD.C:68 RunSingleMuonAnalysisFromAOD.C:69 RunSingleMuonAnalysisFromAOD.C:70 RunSingleMuonAnalysisFromAOD.C:71 RunSingleMuonAnalysisFromAOD.C:72 RunSingleMuonAnalysisFromAOD.C:73 RunSingleMuonAnalysisFromAOD.C:74 RunSingleMuonAnalysisFromAOD.C:75 RunSingleMuonAnalysisFromAOD.C:76 RunSingleMuonAnalysisFromAOD.C:77 RunSingleMuonAnalysisFromAOD.C:78 RunSingleMuonAnalysisFromAOD.C:79 RunSingleMuonAnalysisFromAOD.C:80 RunSingleMuonAnalysisFromAOD.C:81 RunSingleMuonAnalysisFromAOD.C:82 RunSingleMuonAnalysisFromAOD.C:83 RunSingleMuonAnalysisFromAOD.C:84 RunSingleMuonAnalysisFromAOD.C:85 RunSingleMuonAnalysisFromAOD.C:86 RunSingleMuonAnalysisFromAOD.C:87 RunSingleMuonAnalysisFromAOD.C:88 RunSingleMuonAnalysisFromAOD.C:89 RunSingleMuonAnalysisFromAOD.C:90 RunSingleMuonAnalysisFromAOD.C:91 RunSingleMuonAnalysisFromAOD.C:92 RunSingleMuonAnalysisFromAOD.C:93 RunSingleMuonAnalysisFromAOD.C:94 RunSingleMuonAnalysisFromAOD.C:95 RunSingleMuonAnalysisFromAOD.C:96 RunSingleMuonAnalysisFromAOD.C:97 RunSingleMuonAnalysisFromAOD.C:98 RunSingleMuonAnalysisFromAOD.C:99 RunSingleMuonAnalysisFromAOD.C:100 RunSingleMuonAnalysisFromAOD.C:101 RunSingleMuonAnalysisFromAOD.C:102 RunSingleMuonAnalysisFromAOD.C:103 RunSingleMuonAnalysisFromAOD.C:104 RunSingleMuonAnalysisFromAOD.C:105 RunSingleMuonAnalysisFromAOD.C:106 RunSingleMuonAnalysisFromAOD.C:107 RunSingleMuonAnalysisFromAOD.C:108 RunSingleMuonAnalysisFromAOD.C:109 RunSingleMuonAnalysisFromAOD.C:110 RunSingleMuonAnalysisFromAOD.C:111 RunSingleMuonAnalysisFromAOD.C:112 RunSingleMuonAnalysisFromAOD.C:113 RunSingleMuonAnalysisFromAOD.C:114 RunSingleMuonAnalysisFromAOD.C:115 RunSingleMuonAnalysisFromAOD.C:116 RunSingleMuonAnalysisFromAOD.C:117 RunSingleMuonAnalysisFromAOD.C:118 RunSingleMuonAnalysisFromAOD.C:119 RunSingleMuonAnalysisFromAOD.C:120 RunSingleMuonAnalysisFromAOD.C:121 RunSingleMuonAnalysisFromAOD.C:122 RunSingleMuonAnalysisFromAOD.C:123 RunSingleMuonAnalysisFromAOD.C:124 RunSingleMuonAnalysisFromAOD.C:125 RunSingleMuonAnalysisFromAOD.C:126 RunSingleMuonAnalysisFromAOD.C:127 RunSingleMuonAnalysisFromAOD.C:128 RunSingleMuonAnalysisFromAOD.C:129 RunSingleMuonAnalysisFromAOD.C:130 RunSingleMuonAnalysisFromAOD.C:131 RunSingleMuonAnalysisFromAOD.C:132 RunSingleMuonAnalysisFromAOD.C:133 RunSingleMuonAnalysisFromAOD.C:134 RunSingleMuonAnalysisFromAOD.C:135 RunSingleMuonAnalysisFromAOD.C:136 RunSingleMuonAnalysisFromAOD.C:137 RunSingleMuonAnalysisFromAOD.C:138 RunSingleMuonAnalysisFromAOD.C:139 RunSingleMuonAnalysisFromAOD.C:140 RunSingleMuonAnalysisFromAOD.C:141 RunSingleMuonAnalysisFromAOD.C:142 RunSingleMuonAnalysisFromAOD.C:143 RunSingleMuonAnalysisFromAOD.C:144 RunSingleMuonAnalysisFromAOD.C:145 RunSingleMuonAnalysisFromAOD.C:146 RunSingleMuonAnalysisFromAOD.C:147 RunSingleMuonAnalysisFromAOD.C:148 RunSingleMuonAnalysisFromAOD.C:149 RunSingleMuonAnalysisFromAOD.C:150 RunSingleMuonAnalysisFromAOD.C:151 RunSingleMuonAnalysisFromAOD.C:152 RunSingleMuonAnalysisFromAOD.C:153 RunSingleMuonAnalysisFromAOD.C:154 RunSingleMuonAnalysisFromAOD.C:155 RunSingleMuonAnalysisFromAOD.C:156 RunSingleMuonAnalysisFromAOD.C:157 RunSingleMuonAnalysisFromAOD.C:158 RunSingleMuonAnalysisFromAOD.C:159 RunSingleMuonAnalysisFromAOD.C:160 RunSingleMuonAnalysisFromAOD.C:161 RunSingleMuonAnalysisFromAOD.C:162 RunSingleMuonAnalysisFromAOD.C:163 RunSingleMuonAnalysisFromAOD.C:164 RunSingleMuonAnalysisFromAOD.C:165 RunSingleMuonAnalysisFromAOD.C:166 RunSingleMuonAnalysisFromAOD.C:167 RunSingleMuonAnalysisFromAOD.C:168 RunSingleMuonAnalysisFromAOD.C:169 RunSingleMuonAnalysisFromAOD.C:170 RunSingleMuonAnalysisFromAOD.C:171