.so cleanup: more less-obvious cleanup
[u/mrichter/AliRoot.git] / PWGPP / macros / taskComp.C
1 /*
2
3   Sequence hot to se the PWGPP analysis tasks:
4   
5
6   //1. Load libraries if needed:
7   //
8   gSystem->Load("/usr/local/grid/XRootd/GSI/lib/libXrdClient");  
9   gSystem->Load("libANALYSIS");
10   gSystem->Load("libANALYSISalice");
11   gSystem->Load("libPWG0base");
12   gSystem->Load("libPWG0dep");
13   gSystem->Load("libPWGPP");
14
15   AliLog::SetGlobalLogLevel(AliLog::kError);
16
17   //2. Make a chain e.g.:
18   //
19   gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
20   gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
21   AliXRDPROOFtoolkit tool; 
22   TChain * chainEsd = tool.MakeChain("esd.txt","esdTree",0,5);
23   chainEsd->Lookup();
24   //
25
26  
27   //3. Make a analysis manager with attached task:
28   .L $ALICE_ROOT/PWGPP/macros/taskComp.C
29   Init();
30   AliAnalysisManager *mgr = MakeManager();
31   
32   //4. Process task localy
33   //
34   mgr->SetNSysInfo(100);
35   mgr->SetDebugLevel(1);
36   mgr->StartAnalysis("local",chainEsd);
37
38   //
39   //4. Process task on proof
40   //
41   TProof::Open("");
42   .L /u/miranov/macros/ProofEnableAliRoot.C
43   ProofEnableAliRoot("/usr/local/grid/AliRoot/HEAD0108");
44   gProof->Exec("gSystem->Load(\"libANALYSIS\")",kTRUE);
45   gProof->Exec("gSystem->Load(\"libAOD\")",kTRUE);
46   gProof->Exec("gSystem->Load(\"libANALYSISalice\")",kTRUE);
47   gProof->Exec("gSystem->Load(\"libPWG0base\")",kTRUE);
48   gProof->Exec("gSystem->Load(\"libPWG0dep\")",kTRUE);
49   gProof->Exec("gSystem->Load(\"libPWGPP\")",kTRUE);
50   
51   TString path=gSystem->pwd();
52   TString execCDB="gROOT->Macro(\"";
53   execCDB+=path+"/ConfigOCDB.C\"\)";
54   gProof->Exec(execCDB->Data(),kFALSE);
55
56   mgr->StartAnalysis("proof",chainEsd);
57   //5. Get debug stream - if speciefied  
58   TFile f("mcTaskDebug.root");
59   TTree *treeCMP = (TTree*)f.Get("RC");
60
61   //6. Read the analysis object
62   TFile f("Output.root");
63   TObjArray * array = (TObjArray*)f.Get("AliComparisonRes");
64   AliComparisonRes * compObj = (AliComparisonRes*)array->FindObject("AliComparisonRes");
65   //
66   //7. Get debug streamer on PROOF
67   gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
68   gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
69   AliXRDPROOFtoolkit tool; 
70   TChain * chainTr = tool.MakeChain("cmp.txt","RC",0,1000000);
71   chainTr->Lookup();
72   chainTr->SetProof(kTRUE);
73   TChain * chainTPC = tool.MakeChain("tpc.txt","Crefit",0,50);
74   chainTPC->Lookup();
75   chainTr->SetProof(kTRUE);
76
77   TChain * chainTracking = tool.MakeChain("mctracking.txt","MCupdate",0,50);
78   chainTracking->Lookup();
79   chainTracking->SetProof(kTRUE);
80
81
82
83   TFile f("mcTaskDebug.root");
84   TTree *treeCMP = (TTree*)f.Get("RC");
85
86 */
87
88
89
90 void AddComparison( AliGenInfoTask * task);
91
92 void Init(){
93   //
94   // Init mag field and the geo manager
95   // 
96   TGeoManager::Import("/u/miranov/proof/geometry.root");
97   AliGeomManager::LoadGeometry("/u/miranov/proof/geometry.root");
98   
99   TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 1., 1., AliMagF::k5kG));
100
101
102 }
103
104 AliAnalysisManager *  MakeManager(){
105   //
106   //
107   //
108   AliAnalysisManager *mgr = new AliAnalysisManager("AnalysisComponentManager");
109   mgr->SetDebugLevel(1);  
110   cout << "Creating ESD event handler" << endl; 
111   AliESDInputHandler* esdH = new AliESDInputHandler();
112   // set the ESDfriend branch active (my modification of AliESDInputHandler)
113   esdH->SetActiveBranches("ESDfriend");
114   mgr->SetInputEventHandler(esdH); 
115   
116   AliMCEventHandler* mcHandler = new AliMCEventHandler();
117   mgr->SetMCtruthEventHandler(mcHandler);
118   //
119
120
121   AliGenInfoTask *genTask = new AliGenInfoTask("genTask");
122   genTask->SetStreamLevel(10);
123   genTask->SetDebugLevel(10); 
124   genTask->SetDebugOuputhPath(Form("%s/",gSystem->pwd()));
125
126  //  //AddComparison(genTask);
127 //   mgr->AddTask(genTask);
128 //   //
129 //   //
130 //   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
131 //   mgr->ConnectInput(genTask,0,cinput1);
132 //   //
133 //   AliAnalysisDataContainer *coutput1
134 //     =mgr->CreateContainer("AliComparisonRes",TObjArray::Class(),
135 //                         AliAnalysisManager::kOutputContainer,
136 //                        "Output.root");
137 //   mgr->ConnectOutput(genTask,0,coutput1);
138
139   
140
141   //
142   // TPC PID task
143   //
144   AliTPCtaskPID *pidTask = new AliTPCtaskPID("pidTask");
145   mgr->AddTask(pidTask);
146   AliAnalysisDataContainer *cinput2 = mgr->GetCommonInputContainer();
147   mgr->ConnectInput(pidTask,0,cinput2);
148   //
149   AliAnalysisDataContainer *coutput2
150     =mgr->CreateContainer("tpcTaskPID", TObjArray::Class(),
151                           AliAnalysisManager::kOutputContainer,
152                           "OutputPID.root");
153   mgr->ConnectOutput(pidTask,0,coutput2);
154
155   //
156   // TPC QA task
157   //
158   AliTPCtaskQA *qaTask = new AliTPCtaskQA("qaTask");
159   mgr->AddTask(qaTask);
160   AliAnalysisDataContainer *cinput3 = mgr->GetCommonInputContainer();
161   mgr->ConnectInput(qaTask,0,cinput3);
162   //
163   AliAnalysisDataContainer *coutput3
164     =mgr->CreateContainer("tpcTaskQA", TObjArray::Class(),
165                           AliAnalysisManager::kOutputContainer,
166                           "OutputQA.root");
167   mgr->ConnectOutput(qaTask,0,coutput3);
168   //
169   //
170   //
171   AliMCTrackingTestTask *mcTracking = new  AliMCTrackingTestTask("mcTracking");
172   mcTracking->SetStreamLevel(10);
173   mcTracking->SetDebugLevel(10);
174   mgr->AddTask(mcTracking);
175   mcTracking->SetDebugOuputhPath(gSystem->pwd());
176   AliAnalysisDataContainer *cinput4 = mgr->GetCommonInputContainer();
177   mgr->ConnectInput(mcTracking,0,cinput4);
178   //
179   AliAnalysisDataContainer *coutput4
180     =mgr->CreateContainer("mcTask", TObjArray::Class(),
181                           AliAnalysisManager::kOutputContainer,
182                           "OutputMC.root");
183   mgr->ConnectOutput(mcTracking,0,coutput4);
184
185
186
187   //
188   if (!mgr->InitAnalysis()) return 0;
189   return mgr;
190 }
191
192 void AddComparison( AliGenInfoTask * task){
193   
194   // Create ESD track reconstruction cuts
195   AliRecInfoCuts *pRecInfoCuts = new AliRecInfoCuts(); 
196   if(pRecInfoCuts) {
197     pRecInfoCuts->SetPtRange(0.15,200.0);
198     pRecInfoCuts->SetMaxAbsTanTheta(1.0);
199     pRecInfoCuts->SetMinNClustersTPC(10);
200     pRecInfoCuts->SetMinNClustersITS(2);
201     pRecInfoCuts->SetMinTPCsignalN(50);
202
203         pRecInfoCuts->SetHistogramsOn(kFALSE); 
204   } else {
205     AliDebug(AliLog::kError, "ERROR: Cannot create AliRecInfoCuts object");
206   }
207
208   // Create MC track reconstruction cuts
209   AliMCInfoCuts  *pMCInfoCuts = new AliMCInfoCuts();
210   if(pMCInfoCuts) {
211     pMCInfoCuts->SetMinRowsWithDigits(50);
212     pMCInfoCuts->SetMaxR(0.001);  
213     pMCInfoCuts->SetMaxVz(0.001); 
214     pMCInfoCuts->SetRangeTPCSignal(0.5,1.4); 
215   } else {
216     AliDebug(AliLog::kError, "ERROR: Cannot AliMCInfoCuts object");
217   }
218
219   //
220   // Create comparison objects and set cuts 
221   //
222
223   // Resolution
224   AliComparisonRes *pCompRes = new AliComparisonRes("AliComparisonRes","AliComparisonRes"); 
225   if(!pCompRes) {
226     AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonRes object");
227   }
228   pCompRes->SetAliRecInfoCuts(pRecInfoCuts);
229   pCompRes->SetAliMCInfoCuts(pMCInfoCuts);
230
231   // Efficiency
232   AliComparisonEff *pCompEff =  new AliComparisonEff("AliComparisonEff","AliComparisonEff");
233   if(!pCompEff) {
234     AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonEff object");
235   }
236   pCompEff->SetAliRecInfoCuts(pRecInfoCuts);
237   pCompEff->SetAliMCInfoCuts(pMCInfoCuts);
238
239   // dE/dx
240   AliComparisonDEdx *pCompDEdx = new AliComparisonDEdx("AliComparisonDEdx","AliComparisonDEdx");
241   if(!pCompDEdx) {
242     AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonDEdx object");
243   }
244   pCompDEdx->SetAliRecInfoCuts(pRecInfoCuts);
245   pCompDEdx->SetAliMCInfoCuts(pMCInfoCuts);
246   pCompDEdx->SetMCPtMin(0.5);
247   pCompDEdx->SetMCAbsTanThetaMax(0.5);
248   pCompDEdx->SetMCPdgCode(pMCInfoCuts->GetPiP()); // only pi+ particles
249
250   // DCA
251   AliComparisonDCA *pCompDCA = new AliComparisonDCA("AliComparisonDCA","AliComparisonDCA");
252   if(!pCompDCA) {
253     AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonDCA object");
254   }
255   pCompDCA->SetAliRecInfoCuts(pRecInfoCuts);
256   pCompDCA->SetAliMCInfoCuts(pMCInfoCuts);
257   //
258   //
259   //
260   task->AddComparisonObject( pCompRes );
261   task->AddComparisonObject( pCompEff );
262   task->AddComparisonObject( pCompDEdx );
263   task->AddComparisonObject( pCompDCA );  
264 }
265
266
267