Implemented a remapper for parent identification in the particle tree when adding...
[u/mrichter/AliRoot.git] / PWGPP / runITSTPCalignment.C
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 }