1 void runProtonAnalysisQA(const char *analysisType = "TPC") {
2 //Macro to run the proton QA analysis tested for local, proof & GRID.
3 //Proof: Takes three arguments, the number of events, the dataset name
4 // and the analysis type
5 //Interactive: Takes two arguments, the name of the collection file with
6 // the event list for each file and the analysis type
7 //Analysis type can be one of the three: "TPC", "Hybrid", "Global"
11 runProof(200000,"/COMMON/COMMON/LHC08c11_10TeV_0.5T",analysisType);
12 //runInteractive("wn.xml",analysisType);
18 //_________________________________________________//
19 void runInteractive(const char *collectionfile,
20 const char *analysisType) {
21 TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
22 outputFilename1 += ".root"; //main QA file
23 TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
24 outputFilename2 += ".root"; //MC process QA
25 TString outputFilename3 = "Protons.QA.Histograms.";
26 outputFilename3 += analysisType;
27 outputFilename3 += ".root"; //Accepted cut distributions
28 TString outputFilename4 = "Protons.Efficiency.";
29 outputFilename4 += analysisType;
30 outputFilename4 += ".root"; //Reco and PID efficiency
32 TGrid::Connect("alien://");
35 setupPar("STEERBase");
36 gSystem->Load("libSTEERBase.so");
38 gSystem->Load("libESD.so");
40 gSystem->Load("libAOD.so");
42 gSystem->Load("libANALYSIS.so");
43 setupPar("ANALYSISalice");
44 gSystem->Load("libANALYSISalice.so");
46 gSystem->Load("libCORRFW.so");
47 setupPar("PWG2spectra");
48 gSystem->Load("libPWG2spectra.so");
50 gROOT->LoadMacro("AliAnalysisTaskProtonsQA.cxx+");
51 //____________________________________________//
53 AliTagAnalysis *analysis = new AliTagAnalysis();
55 chain = analysis->GetChainFromCollection(collectionfile,"esdTree");
57 //____________________________________________//
58 // Make the analysis manager
59 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
60 AliVEventHandler* esdH = new AliESDInputHandler;
61 mgr->SetInputEventHandler(esdH);
62 AliMCEventHandler *mc = new AliMCEventHandler();
63 mgr->SetMCtruthEventHandler(mc);
65 //____________________________________________//
67 AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
68 taskProtonsQA->SetTriggerMode(AliAnalysisTaskProtonsQA::kMB2);
69 switch(analysisType) {
71 taskProtonsQA->SetAnalysisMode(AliAnalysisTaskProtonsQA::kTPC);
74 taskProtonsQA->SetAnalysisMode(AliAnalysisTaskProtonsQA::kHybrid);
77 taskProtonsQA->SetAnalysisMode(AliAnalysisTaskProtonsQA::kGlobal);
82 taskProtonsQA->SetAcceptedVertexDiamond(5.,5.,15.);
83 mgr->AddTask(taskProtonsQA);
85 // Create containers for input/output
86 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
88 AliAnalysisManager::kInputContainer);
89 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList",
91 AliAnalysisManager::kOutputContainer,
92 outputFilename1.Data());
93 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList",
95 AliAnalysisManager::kOutputContainer,
96 outputFilename2.Data());
97 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList",
99 AliAnalysisManager::kOutputContainer,
100 outputFilename2.Data());
101 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList",
103 AliAnalysisManager::kOutputContainer,
104 outputFilename3.Data());
105 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("acceptedDCAList",
107 AliAnalysisManager::kOutputContainer,
108 outputFilename3.Data());
109 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("efficiencyList",
111 AliAnalysisManager::kOutputContainer,
112 outputFilename4.Data());
114 //____________________________________________//
115 mgr->ConnectInput(taskProtonsQA,0,cinput1);
116 mgr->ConnectOutput(taskProtonsQA,0,coutput1);
117 mgr->ConnectOutput(taskProtonsQA,1,coutput2);
118 mgr->ConnectOutput(taskProtonsQA,2,coutput3);
119 mgr->ConnectOutput(taskProtonsQA,3,coutput4);
120 mgr->ConnectOutput(taskProtonsQA,4,coutput5);
121 mgr->ConnectOutput(taskProtonsQA,5,coutput6);
122 if (!mgr->InitAnalysis()) return;
124 mgr->StartAnalysis("local",chain);
127 //_________________________________________________//
128 void runProof(Int_t stats = 0,
129 const char* dataset = 0x0,
130 const char *analysisType) {
131 TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
132 outputFilename1 += ".root"; //main QA file
133 TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
134 outputFilename2 += ".root"; //MC process QA
135 TString outputFilename3 = "Protons.QA.Histograms.";
136 outputFilename3 += analysisType;
137 outputFilename3 += ".root"; //Accepted cut distributions
138 TString outputFilename4 = "Protons.Efficiency.";
139 outputFilename4 += analysisType;
140 outputFilename4 += ".root"; //Reco and PID efficiency
142 printf("****** Connect to PROOF *******\n");
143 TProof::Open("alicecaf.cern.ch");
144 gProof->SetParallel();
146 // Enable the Analysis Package
147 gProof->UploadPackage("STEERBase.par");
148 gProof->EnablePackage("STEERBase");
149 gProof->UploadPackage("ESD.par");
150 gProof->EnablePackage("ESD");
151 gProof->UploadPackage("AOD.par");
152 gProof->EnablePackage("AOD");
153 gProof->UploadPackage("ANALYSIS.par");
154 gProof->EnablePackage("ANALYSIS");
155 gProof->UploadPackage("ANALYSISalice.par");
156 gProof->EnablePackage("ANALYSISalice");
157 gProof->UploadPackage("CORRFW.par");
158 gProof->EnablePackage("CORRFW");
159 gProof->UploadPackage("PWG2spectra.par");
160 gProof->EnablePackage("PWG2spectra");
162 gProof->Load("AliAnalysisTaskProtonsQA.cxx++");
164 //____________________________________________//
165 // Make the analysis manager
166 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
167 AliVEventHandler* esdH = new AliESDInputHandler;
168 mgr->SetInputEventHandler(esdH);
169 AliMCEventHandler *mc = new AliMCEventHandler();
170 mgr->SetMCtruthEventHandler(mc);
172 //____________________________________________//
174 AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
175 taskProtonsQA->SetTriggerMode(AliAnalysisTaskProtonsQA::kMB2);
176 switch(analysisType) {
178 taskProtonsQA->SetAnalysisMode(AliAnalysisTaskProtonsQA::kTPC);
181 taskProtonsQA->SetAnalysisMode(AliAnalysisTaskProtonsQA::kHybrid);
184 taskProtonsQA->SetAnalysisMode(AliAnalysisTaskProtonsQA::kGlobal);
189 taskProtonsQA->SetAcceptedVertexDiamond(5.,5.,15.);
190 mgr->AddTask(taskProtonsQA);
192 // Create containers for input/output
193 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
195 AliAnalysisManager::kInputContainer);
196 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList",
198 AliAnalysisManager::kOutputContainer,
199 outputFilename1.Data());
200 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList",
202 AliAnalysisManager::kOutputContainer,
203 outputFilename2.Data());
204 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList",
206 AliAnalysisManager::kOutputContainer,
207 outputFilename2.Data());
208 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList",
210 AliAnalysisManager::kOutputContainer,
211 outputFilename3.Data());
212 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("acceptedDCAList",
214 AliAnalysisManager::kOutputContainer,
215 outputFilename3.Data());
216 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("efficiencyList",
218 AliAnalysisManager::kOutputContainer,
219 outputFilename4.Data());
221 //____________________________________________//
222 mgr->ConnectInput(taskProtonsQA,0,cinput1);
223 mgr->ConnectOutput(taskProtonsQA,0,coutput1);
224 mgr->ConnectOutput(taskProtonsQA,1,coutput2);
225 mgr->ConnectOutput(taskProtonsQA,2,coutput3);
226 mgr->ConnectOutput(taskProtonsQA,3,coutput4);
227 mgr->ConnectOutput(taskProtonsQA,4,coutput5);
228 mgr->ConnectOutput(taskProtonsQA,5,coutput6);
229 if (!mgr->InitAnalysis()) return;
233 mgr->StartAnalysis("proof",dataset,stats);
235 // You should get this macro and the txt file from:
236 // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
237 gROOT->LoadMacro("CreateESDChain.C");
239 chain = CreateESDChain("ESD82XX_30K.txt",stats);
240 chain->SetBranchStatus("*Calo*",0);
242 mgr->StartAnalysis("proof",chain);
243 //mgr->StartAnalysis("local",chain);
247 //_________________________________________________//
248 Int_t setupPar(const char* pararchivename) {
252 if (pararchivename) {
253 char processline[1024];
254 sprintf(processline,".! tar xvzf %s.par",pararchivename);
255 //gROOT->ProcessLine(processline);
256 const char* ocwd = gSystem->WorkingDirectory();
257 gSystem->ChangeDirectory(pararchivename);
259 // check for BUILD.sh and execute
260 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
261 printf("*******************************\n");
262 printf("*** Building PAR archive ***\n");
263 printf("*******************************\n");
265 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
266 Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
270 // check for SETUP.C and execute
271 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
272 printf("*******************************\n");
273 printf("*** Setup PAR archive ***\n");
274 printf("*******************************\n");
275 gROOT->Macro("PROOF-INF/SETUP.C");
278 gSystem->ChangeDirectory("../");