void AnalysisTrainFromStandardToMuonAODLocal(char* filein= "AliAODs.root",
char* fileout= "AliMuonAOD.root",
char* dirChain= ".",
char* dirData= ".",
Int_t nev=123456789){
// Macro to produce a MUON-AOD, i.e. a replica of the standard AOD, containing only events
// where at least one muon is present
//
// - The input files are the standard AOD and the AOD.tag.root files
// - The AOD.tag file can be:
// 1) the one previously created together with the AOD file (i.e. from
// AnalysisTrainMuonLocal.C)
// 2) created on the fly with this macro
// - The selection of the muon events is based on the AOD tags
// - The content of the MUON-AOD can be defined by the user with some settings as
// SetNeedsTracksBranchReplication(), SetNeedsVerticesBranchReplication()
// (defined in STEER/AliAODHandler.h)...
gSystem->Load("libTree.so");
gSystem->Load("libGeom.so");
gSystem->Load("libVMC.so");
gSystem->Load("libPhysics.so");
gSystem->Load("libSTEER.so"); // for aliroot based analysis
gSystem->Load("libPWGmuon.so"); // for aliroot based analysis
// Load par files, if the analysis is par based
// SetupPar("STEERBase");
// SetupPar("ESD");
// SetupPar("AOD");
// SetupPar("ANALYSIS");
// SetupPar("ANALYSISalice");
// SetupPar("PWG3muon");
// Uncomment the following lines if the AOD tag file has to be created on the fly
// printf("Creating AOD Tags on the fly\n");
// AliAODTagCreator *t = new AliAODTagCreator();
// t->SetStorage(0);
// t->ReadLocalCollection(dirData);
AliTagAnalysis *TagAna = new AliTagAnalysis("AOD");
// Define tag cuts to select events containing at least one muon in the dimuon spectrometer
printf("Defining Tags cuts to select events containing at least one muon in the dimuon spectrometer\n");
AliRunTagCuts *runCuts = new AliRunTagCuts();
AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
AliEventTagCuts *evCuts = new AliEventTagCuts();
evCuts->SetNFWMuonRange(1,10);
// Create the chain of interesting events
TChain* chain = 0x0;
TagAna->ChainLocalTags(dirChain);
TagAna->SetType("AOD");
chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
Info("AnalysisTrainFromStandardToMuonAOD",Form("CHAIN HAS %d ENTRIES",(Int_t)chain->GetEntries()));
// Define aod input handler
AliAODInputHandler* aodInputHandler = new AliAODInputHandler();
// Define aod output handler
AliAODHandler* aodOutputHandler = new AliAODHandler();
// Create non standard AOD
aodOutputHandler->SetCreateNonStandardAOD();
// Select the branches to be replicated in the MUON-AOD
aodOutputHandler->SetNeedsHeaderReplication();
aodOutputHandler->SetNeedsTracksBranchReplication();
aodOutputHandler->SetNeedsVerticesBranchReplication();
aodOutputHandler->SetNeedsV0sBranchReplication();
aodOutputHandler->SetNeedsTrackletsBranchReplication();
aodOutputHandler->SetNeedsPMDClustersBranchReplication();
aodOutputHandler->SetNeedsJetsBranchReplication();
aodOutputHandler->SetNeedsFMDClustersBranchReplication();
aodOutputHandler->SetNeedsCaloClustersBranchReplication();
aodOutputHandler->SetOutputFileName(fileout);
// Define the analysis manager
AliAnalysisManager *mgr = new AliAnalysisManager("AOD Manager", "AOD Manager");
mgr->SetInputEventHandler(aodInputHandler);
mgr->SetOutputEventHandler(aodOutputHandler);
//mgr->SetDebugLevel(10);
AliAnalysisTaskFromStandardToMuonAOD *aodfilter = new AliAnalysisTaskFromStandardToMuonAOD("AOD Filter");
mgr->AddTask(aodfilter);
// Create containers for input/output
AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer();
mgr->ConnectInput(aodfilter,0,cinput1);
mgr->ConnectOutput(aodfilter,0,coutput1);
// Run the analysis
printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());
mgr->InitAnalysis();
mgr->PrintStatus();
mgr->StartAnalysis("local",chain,nev);
}
Int_t setupPar(const char* pararchivename) {
///////////////////
// Setup PAR File//
///////////////////
if (pararchivename) {
char processline[1024];
sprintf(processline,".! tar xvzf %s.par",pararchivename);
gROOT->ProcessLine(processline);
const char* ocwd = gSystem->WorkingDirectory();
gSystem->ChangeDirectory(pararchivename);
// 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("runAnalysis","Cannot Build the PAR Archive! - Abort!");
return -1;
}
}
// 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 1;
}
//______________________________________________________________________________
void SetupPar(char* pararchivename)
{
if (pararchivename) {
char processline[1024];
sprintf(processline,".! tar xvzf %s.par",pararchivename);
gROOT->ProcessLine(processline);
TString ocwd = gSystem->WorkingDirectory();
gSystem->ChangeDirectory(pararchivename);
// 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 -1;
}
}
// 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(ocwd.Data());
printf("Current dir: %s\n", ocwd.Data());
}
}
AnalysisTrainFromStandardToMuonAODLocal.C:1 AnalysisTrainFromStandardToMuonAODLocal.C:2 AnalysisTrainFromStandardToMuonAODLocal.C:3 AnalysisTrainFromStandardToMuonAODLocal.C:4 AnalysisTrainFromStandardToMuonAODLocal.C:5 AnalysisTrainFromStandardToMuonAODLocal.C:6 AnalysisTrainFromStandardToMuonAODLocal.C:7 AnalysisTrainFromStandardToMuonAODLocal.C:8 AnalysisTrainFromStandardToMuonAODLocal.C:9 AnalysisTrainFromStandardToMuonAODLocal.C:10 AnalysisTrainFromStandardToMuonAODLocal.C:11 AnalysisTrainFromStandardToMuonAODLocal.C:12 AnalysisTrainFromStandardToMuonAODLocal.C:13 AnalysisTrainFromStandardToMuonAODLocal.C:14 AnalysisTrainFromStandardToMuonAODLocal.C:15 AnalysisTrainFromStandardToMuonAODLocal.C:16 AnalysisTrainFromStandardToMuonAODLocal.C:17 AnalysisTrainFromStandardToMuonAODLocal.C:18 AnalysisTrainFromStandardToMuonAODLocal.C:19 AnalysisTrainFromStandardToMuonAODLocal.C:20 AnalysisTrainFromStandardToMuonAODLocal.C:21 AnalysisTrainFromStandardToMuonAODLocal.C:22 AnalysisTrainFromStandardToMuonAODLocal.C:23 AnalysisTrainFromStandardToMuonAODLocal.C:24 AnalysisTrainFromStandardToMuonAODLocal.C:25 AnalysisTrainFromStandardToMuonAODLocal.C:26 AnalysisTrainFromStandardToMuonAODLocal.C:27 AnalysisTrainFromStandardToMuonAODLocal.C:28 AnalysisTrainFromStandardToMuonAODLocal.C:29 AnalysisTrainFromStandardToMuonAODLocal.C:30 AnalysisTrainFromStandardToMuonAODLocal.C:31 AnalysisTrainFromStandardToMuonAODLocal.C:32 AnalysisTrainFromStandardToMuonAODLocal.C:33 AnalysisTrainFromStandardToMuonAODLocal.C:34 AnalysisTrainFromStandardToMuonAODLocal.C:35 AnalysisTrainFromStandardToMuonAODLocal.C:36 AnalysisTrainFromStandardToMuonAODLocal.C:37 AnalysisTrainFromStandardToMuonAODLocal.C:38 AnalysisTrainFromStandardToMuonAODLocal.C:39 AnalysisTrainFromStandardToMuonAODLocal.C:40 AnalysisTrainFromStandardToMuonAODLocal.C:41 AnalysisTrainFromStandardToMuonAODLocal.C:42 AnalysisTrainFromStandardToMuonAODLocal.C:43 AnalysisTrainFromStandardToMuonAODLocal.C:44 AnalysisTrainFromStandardToMuonAODLocal.C:45 AnalysisTrainFromStandardToMuonAODLocal.C:46 AnalysisTrainFromStandardToMuonAODLocal.C:47 AnalysisTrainFromStandardToMuonAODLocal.C:48 AnalysisTrainFromStandardToMuonAODLocal.C:49 AnalysisTrainFromStandardToMuonAODLocal.C:50 AnalysisTrainFromStandardToMuonAODLocal.C:51 AnalysisTrainFromStandardToMuonAODLocal.C:52 AnalysisTrainFromStandardToMuonAODLocal.C:53 AnalysisTrainFromStandardToMuonAODLocal.C:54 AnalysisTrainFromStandardToMuonAODLocal.C:55 AnalysisTrainFromStandardToMuonAODLocal.C:56 AnalysisTrainFromStandardToMuonAODLocal.C:57 AnalysisTrainFromStandardToMuonAODLocal.C:58 AnalysisTrainFromStandardToMuonAODLocal.C:59 AnalysisTrainFromStandardToMuonAODLocal.C:60 AnalysisTrainFromStandardToMuonAODLocal.C:61 AnalysisTrainFromStandardToMuonAODLocal.C:62 AnalysisTrainFromStandardToMuonAODLocal.C:63 AnalysisTrainFromStandardToMuonAODLocal.C:64 AnalysisTrainFromStandardToMuonAODLocal.C:65 AnalysisTrainFromStandardToMuonAODLocal.C:66 AnalysisTrainFromStandardToMuonAODLocal.C:67 AnalysisTrainFromStandardToMuonAODLocal.C:68 AnalysisTrainFromStandardToMuonAODLocal.C:69 AnalysisTrainFromStandardToMuonAODLocal.C:70 AnalysisTrainFromStandardToMuonAODLocal.C:71 AnalysisTrainFromStandardToMuonAODLocal.C:72 AnalysisTrainFromStandardToMuonAODLocal.C:73 AnalysisTrainFromStandardToMuonAODLocal.C:74 AnalysisTrainFromStandardToMuonAODLocal.C:75 AnalysisTrainFromStandardToMuonAODLocal.C:76 AnalysisTrainFromStandardToMuonAODLocal.C:77 AnalysisTrainFromStandardToMuonAODLocal.C:78 AnalysisTrainFromStandardToMuonAODLocal.C:79 AnalysisTrainFromStandardToMuonAODLocal.C:80 AnalysisTrainFromStandardToMuonAODLocal.C:81 AnalysisTrainFromStandardToMuonAODLocal.C:82 AnalysisTrainFromStandardToMuonAODLocal.C:83 AnalysisTrainFromStandardToMuonAODLocal.C:84 AnalysisTrainFromStandardToMuonAODLocal.C:85 AnalysisTrainFromStandardToMuonAODLocal.C:86 AnalysisTrainFromStandardToMuonAODLocal.C:87 AnalysisTrainFromStandardToMuonAODLocal.C:88 AnalysisTrainFromStandardToMuonAODLocal.C:89 AnalysisTrainFromStandardToMuonAODLocal.C:90 AnalysisTrainFromStandardToMuonAODLocal.C:91 AnalysisTrainFromStandardToMuonAODLocal.C:92 AnalysisTrainFromStandardToMuonAODLocal.C:93 AnalysisTrainFromStandardToMuonAODLocal.C:94 AnalysisTrainFromStandardToMuonAODLocal.C:95 AnalysisTrainFromStandardToMuonAODLocal.C:96 AnalysisTrainFromStandardToMuonAODLocal.C:97 AnalysisTrainFromStandardToMuonAODLocal.C:98 AnalysisTrainFromStandardToMuonAODLocal.C:99 AnalysisTrainFromStandardToMuonAODLocal.C:100 AnalysisTrainFromStandardToMuonAODLocal.C:101 AnalysisTrainFromStandardToMuonAODLocal.C:102 AnalysisTrainFromStandardToMuonAODLocal.C:103 AnalysisTrainFromStandardToMuonAODLocal.C:104 AnalysisTrainFromStandardToMuonAODLocal.C:105 AnalysisTrainFromStandardToMuonAODLocal.C:106 AnalysisTrainFromStandardToMuonAODLocal.C:107 AnalysisTrainFromStandardToMuonAODLocal.C:108 AnalysisTrainFromStandardToMuonAODLocal.C:109 AnalysisTrainFromStandardToMuonAODLocal.C:110 AnalysisTrainFromStandardToMuonAODLocal.C:111 AnalysisTrainFromStandardToMuonAODLocal.C:112 AnalysisTrainFromStandardToMuonAODLocal.C:113 AnalysisTrainFromStandardToMuonAODLocal.C:114 AnalysisTrainFromStandardToMuonAODLocal.C:115 AnalysisTrainFromStandardToMuonAODLocal.C:116 AnalysisTrainFromStandardToMuonAODLocal.C:117 AnalysisTrainFromStandardToMuonAODLocal.C:118 AnalysisTrainFromStandardToMuonAODLocal.C:119 AnalysisTrainFromStandardToMuonAODLocal.C:120 AnalysisTrainFromStandardToMuonAODLocal.C:121 AnalysisTrainFromStandardToMuonAODLocal.C:122 AnalysisTrainFromStandardToMuonAODLocal.C:123 AnalysisTrainFromStandardToMuonAODLocal.C:124 AnalysisTrainFromStandardToMuonAODLocal.C:125 AnalysisTrainFromStandardToMuonAODLocal.C:126 AnalysisTrainFromStandardToMuonAODLocal.C:127 AnalysisTrainFromStandardToMuonAODLocal.C:128 AnalysisTrainFromStandardToMuonAODLocal.C:129 AnalysisTrainFromStandardToMuonAODLocal.C:130 AnalysisTrainFromStandardToMuonAODLocal.C:131 AnalysisTrainFromStandardToMuonAODLocal.C:132 AnalysisTrainFromStandardToMuonAODLocal.C:133 AnalysisTrainFromStandardToMuonAODLocal.C:134 AnalysisTrainFromStandardToMuonAODLocal.C:135 AnalysisTrainFromStandardToMuonAODLocal.C:136 AnalysisTrainFromStandardToMuonAODLocal.C:137 AnalysisTrainFromStandardToMuonAODLocal.C:138 AnalysisTrainFromStandardToMuonAODLocal.C:139 AnalysisTrainFromStandardToMuonAODLocal.C:140 AnalysisTrainFromStandardToMuonAODLocal.C:141 AnalysisTrainFromStandardToMuonAODLocal.C:142 AnalysisTrainFromStandardToMuonAODLocal.C:143 AnalysisTrainFromStandardToMuonAODLocal.C:144 AnalysisTrainFromStandardToMuonAODLocal.C:145 AnalysisTrainFromStandardToMuonAODLocal.C:146 AnalysisTrainFromStandardToMuonAODLocal.C:147 AnalysisTrainFromStandardToMuonAODLocal.C:148 AnalysisTrainFromStandardToMuonAODLocal.C:149 AnalysisTrainFromStandardToMuonAODLocal.C:150 AnalysisTrainFromStandardToMuonAODLocal.C:151 AnalysisTrainFromStandardToMuonAODLocal.C:152 AnalysisTrainFromStandardToMuonAODLocal.C:153 AnalysisTrainFromStandardToMuonAODLocal.C:154 AnalysisTrainFromStandardToMuonAODLocal.C:155 AnalysisTrainFromStandardToMuonAODLocal.C:156 AnalysisTrainFromStandardToMuonAODLocal.C:157 AnalysisTrainFromStandardToMuonAODLocal.C:158 AnalysisTrainFromStandardToMuonAODLocal.C:159 AnalysisTrainFromStandardToMuonAODLocal.C:160 AnalysisTrainFromStandardToMuonAODLocal.C:161 AnalysisTrainFromStandardToMuonAODLocal.C:162 AnalysisTrainFromStandardToMuonAODLocal.C:163 AnalysisTrainFromStandardToMuonAODLocal.C:164 AnalysisTrainFromStandardToMuonAODLocal.C:165 AnalysisTrainFromStandardToMuonAODLocal.C:166 AnalysisTrainFromStandardToMuonAODLocal.C:167 AnalysisTrainFromStandardToMuonAODLocal.C:168 AnalysisTrainFromStandardToMuonAODLocal.C:169 AnalysisTrainFromStandardToMuonAODLocal.C:170 AnalysisTrainFromStandardToMuonAODLocal.C:171 AnalysisTrainFromStandardToMuonAODLocal.C:172 AnalysisTrainFromStandardToMuonAODLocal.C:173 AnalysisTrainFromStandardToMuonAODLocal.C:174