Fix Coverity leaks
[u/mrichter/AliRoot.git] / PWG1 / runITSTPCalignment.C
CommitLineData
4a84c20d 1void runITSTPCalignment( UInt_t saveinterval = 1000000 )
2{
3 TStopwatch timer;
4 timer.Start();
5
6 //runProof("/COMMON/COMMON/LHC09a4_run8100X#esdTree");
7 runLocal("AliESDs.root");
8
9 timer.Stop();
10 timer.Print();
11}
12
13//_________________________________________________//
14void runLocal(const char* filenamestr = "AliESDs.root" ) {
15
16 TString inputFilename(filenamestr);
17 TString outputArrayFilename = "ITSTPCalignmentArray.root";
18 TString outputHistFilename = "ITSTPCalignmentHist.root";
19
20 //____________________________________________________//
21 //_____________Setting up the par files_______________//
22 //____________________________________________________//
23 setupPar("STEERBase");
24 gSystem->Load("libSTEERBase.so");
25 setupPar("ESD");
26 gSystem->Load("libVMC.so");
27 gSystem->Load("libESD.so");
28 setupPar("AOD");
29 gSystem->Load("libAOD.so");
30 setupPar("ANALYSIS");
31 gSystem->Load("libANALYSIS.so");
32 setupPar("ANALYSISalice");
33 gSystem->Load("libANALYSISalice.so");
34 //____________________________________________________//
35
36 //add input files from dirs
37 TChain* chain = new TChain("esdTree");
38 chain->SetBranchStatus("*ESDfriend*",0);
39 TString workingDir = gSystem->pwd();
40 void* dirhandle = gSystem->OpenDirectory(workingDir.Data());
41 if (!dirhandle) return;
42 const char* filenamestr;
43 while ((filenamestr = gSystem->GetDirEntry(dirhandle)))
44 {
45 TString filename(filenamestr);
46 if (filename=="." || filename=="..") continue;
47 if (gSystem->cd(filename.Data()))
48 {
49 if (!gSystem->AccessPathName(inputFilename.Data()))//return value is here inverted!
50 {
51 TString inputESDfile(workingDir);
52 inputESDfile += "/";
53 inputESDfile += filename;
54 inputESDfile += "/";
55 inputESDfile += inputFilename;
56 chain->Add(inputESDfile.Data());
57 printf("found file: %s\n", inputESDfile.Data());
58 }
59 gSystem->cd(workingDir.Data());
60 }
61 }
62
63 //____________________________________________//
64 gROOT->LoadMacro("AliRelAlignerKalman.cxx++");
65 gROOT->LoadMacro("AliRelAlignerKalmanArray.cxx++");
66 gROOT->LoadMacro("AliAnalysisTaskITSTPCalignment.cxx++");
67
68 // analysis manager
69 AliAnalysisManager *mgr = new AliAnalysisManager("ITSTPCalignmentAnalysisManager");
70 AliVEventHandler* esdH = new AliESDInputHandler;
71 mgr->SetInputEventHandler(esdH);
72
73 //create the task
74 AliAnalysisTaskITSTPCalignment *taskITSTPCalignment =
75 new AliAnalysisTaskITSTPCalignment("TaskITSTPCalignment");
76 taskITSTPCalignment->SetDoQA(kTRUE);
77
78 mgr->AddTask(taskITSTPCalignment);
79
80 AliAnalysisDataContainer* cinput0 = mgr->GetCommonInputContainer();
81 AliAnalysisDataContainer* coutput0 = mgr->CreateContainer("outputArray",
82 AliRelAlignerKalmanArray::Class(),
83 AliAnalysisManager::kOutputContainer,
84 outputArrayFilename.Data());
85 AliAnalysisDataContainer* coutput1 = mgr->CreateContainer("outputList",
86 TList::Class(),
87 AliAnalysisManager::kOutputContainer,
88 outputHistFilename.Data());
89
90 mgr->ConnectInput(taskITSTPCalignment,0,cinput0);
91 mgr->ConnectOutput(taskITSTPCalignment,0,coutput0);
92 mgr->ConnectOutput(taskITSTPCalignment,1,coutput1);
93 if (!mgr->InitAnalysis()) return;
94 mgr->PrintStatus();
95
96 mgr->StartAnalysis("local",chain);
97}
98
99//_________________________________________________//
100void runInteractive(const char* collectionName = "tag.xml") {
101 gSystem->Load("libProofPlayer.so");
102
103 TString outputArrayFilename = "ITSTPCalignmentArray.root";
104 TString outputHistFilename = "ITSTPCalignmentHist.root";
105
106 printf("*** Connect to AliEn ***\n");
107 TGrid::Connect("alien://");
108
109 //____________________________________________________//
110 //_____________Setting up the par files_______________//
111 //____________________________________________________//
112 setupPar("STEERBase");
113 gSystem->Load("libSTEERBase.so");
114 setupPar("ESD");
115 gSystem->Load("libVMC.so");
116 gSystem->Load("libESD.so");
117 setupPar("AOD");
118 gSystem->Load("libAOD.so");
119 setupPar("ANALYSIS");
120 gSystem->Load("libANALYSIS.so");
121 setupPar("ANALYSISalice");
122 gSystem->Load("libANALYSISalice.so");
123 //____________________________________________________//
124
125 //____________________________________________//
126 AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
127
128 AliRunTagCuts *runCuts = new AliRunTagCuts();
129 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
130 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
131 AliEventTagCuts *evCuts = new AliEventTagCuts();
132
133 //grid tags
134 TAlienCollection* coll = TAlienCollection::Open(collectionName);
135 TGridResult* TagResult = coll->GetGridResult("",0,0);
136 tagAnalysis->ChainGridTags(TagResult);
137 TChain* chain = 0x0;
138 chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
139 chain->SetBranchStatus("*Calo*",0);
140
141 //____________________________________________//
142 gROOT->LoadMacro("AliRelAlignerKalman.cxx++");
143 gROOT->LoadMacro("AliRelAlignerKalmanArray.cxx++");
144 gROOT->LoadMacro("AliAnalysisTaskITSTPCalignment.cxx++");
145
146 // analysis manager
147 AliAnalysisManager *mgr = new AliAnalysisManager("ITSTPCalignmentAnalysisManager");
148 AliVEventHandler* esdH = new AliESDInputHandler;
149 mgr->SetInputEventHandler(esdH);
150
151 //create the task
152 AliAnalysisTaskITSTPCalignment *taskITSTPCalignment =
153 new AliAnalysisTaskITSTPCalignment("TaskITSTPCalignment");
154 taskITSTPCalignment->SetDoQA(kTRUE);
155
156 mgr->AddTask(taskITSTPCalignment);
157
158 AliAnalysisDataContainer* cinput0 = mgr->GetCommonInputContainer();
159 AliAnalysisDataContainer* coutput0 = mgr->CreateContainer("outputArray",
160 AliRelAlignerKalmanArray::Class(),
161 AliAnalysisManager::kOutputContainer,
162 outputArrayFilename.Data());
163 AliAnalysisDataContainer* coutput1 = mgr->CreateContainer("outputList",
164 TList::Class(),
165 AliAnalysisManager::kOutputContainer,
166 outputHistFilename.Data());
167
168 mgr->ConnectInput(taskITSTPCalignment,0,cinput0);
169 mgr->ConnectOutput(taskITSTPCalignment,0,coutput0);
170 mgr->ConnectOutput(taskITSTPCalignment,1,coutput1);
171 if (!mgr->InitAnalysis()) return;
172 mgr->PrintStatus();
173
174 mgr->StartAnalysis("local",chain);
175}
176
177//______________________________________________________________________________
178Int_t setupPar(const char* pararchivename) {
179 ///////////////////
180 // Setup PAR File//
181 ///////////////////
182 if (pararchivename) {
183 char processline[1024];
184 sprintf(processline,".! tar xvzf %s.par",pararchivename);
185 gROOT->ProcessLine(processline);
186 const char* ocwd = gSystem->WorkingDirectory();
187 gSystem->ChangeDirectory(pararchivename);
188
189 // check for BUILD.sh and execute
190 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
191 printf("*******************************\n");
192 printf("*** Building PAR archive ***\n");
193 printf("*******************************\n");
194
195 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
196 Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
197 return -1;
198 }
199 }
200 // check for SETUP.C and execute
201 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
202 printf("*******************************\n");
203 printf("*** Setup PAR archive ***\n");
204 printf("*******************************\n");
205 gROOT->Macro("PROOF-INF/SETUP.C");
206 }
207
208 gSystem->ChangeDirectory("../");
209 }
210 return 1;
211}