]>
Commit | Line | Data |
---|---|---|
4a84c20d | 1 | void 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 | //_________________________________________________// | |
14 | void 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 | //_________________________________________________// | |
100 | void 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 | //______________________________________________________________________________ | |
178 | Int_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 | } |