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