]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/macros/runBalanceFunctionInpp.C
e8ccee532d2e5ee66c6a994b4c8c1e2917e4d950
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / runBalanceFunctionInpp.C
1 enum analysisModes {mLocal,mLocalPAR,mPROOF,mGrid,mGridPAR};\r
2 enum analysisTypes {mESD,mAOD,mMC,mMCESD};\r
3 \r
4 //\r
5 class AliAnalysisGrid;\r
6 class AliAnalysisTaskBF;\r
7 class AliBalance;\r
8 \r
9 //________________________________________________________________________//\r
10 void runBalanceFunctionInpp(Int_t mode = mLocal, \r
11                             Int_t type = mAOD,\r
12                             Bool_t DATA = kFALSE) {\r
13   // Time:\r
14   TStopwatch timer;\r
15   timer.Start();\r
16   \r
17   //Check analysis mode\r
18   if((mode < 0) || (mode > 4)) {\r
19     Printf("Analysis mode not recognized!");\r
20     Printf("You can select out of 0: local, 1: local with par files, 2: proof, 3: grid, 4: grid with par files");\r
21     return;\r
22   }\r
23   \r
24   //Check analysis type\r
25   if((type < 0) || (type > 3)) {\r
26     Printf("Analysis type not recognized!");\r
27     Printf("You can select out of 0: ESD, 1: AOD, 2: MC (stack), 3: MC (from the ESD)");\r
28     return;\r
29   }\r
30   \r
31   // Load needed libraries:\r
32   LoadLibraries(mode);\r
33   \r
34  // Create and configure the AliEn plug-in:\r
35   if(mode == mGrid || mode == mGridPAR) {\r
36     gROOT->LoadMacro("CreateAlienHandler.C");\r
37     AliAnalysisGrid *alienHandler = CreateAlienHandler(runListFileName);  \r
38     if (!alienHandler) return;\r
39   }\r
40   // Chains:   \r
41   if(mode == mLocal || mode == mLocalPAR) {\r
42     TChain* chain = 0x0;\r
43     if((type == mESD)||(type == mMCESD))  \r
44       chain = new TChain("esdTree");\r
45     else if(type == mAOD)\r
46       chain = new TChain("aodTree");\r
47     else if(type == mMC)\r
48       chain = new TChain("TE");\r
49 \r
50     TString filename;\r
51     for(Int_t i = 1; i < 20; i++) {\r
52       filename = "/data/alice2/pchrist/pp/LHC10c/0.9TeV/Data/";\r
53       filename += "Set"; filename += i; \r
54       if((type == mESD)||(type == mMCESD))  \r
55         filename += "/AliESDs.root";\r
56       else if(type == mAOD)\r
57         filename += "/AliAOD.root";\r
58       else if(type == mMC)\r
59         filename += "/galice.root";\r
60 \r
61       chain->Add(filename.Data());\r
62     }\r
63   }\r
64   //Proof\r
65   if(mode == mPROOF) {\r
66     gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));\r
67   }\r
68   \r
69   // analysis manager\r
70   AliAnalysisManager* mgr = new AliAnalysisManager("balanceFunctionManager");\r
71   if(mode == mGrid || mode == mGridPAR)\r
72     mgr->SetGridHandler(alienHandler);\r
73     \r
74   // input handler (ESD or AOD)\r
75   AliVEventHandler* inputH = NULL;\r
76   if((type == mESD)||(type == mMCESD))  \r
77     inputH = new AliESDInputHandler();\r
78   else if(type == mAOD)\r
79     inputH = new AliAODInputHandler();\r
80   mgr->SetInputEventHandler(inputH);\r
81     \r
82   // mc event handler\r
83   if((type == mMC) || (type == mMCESD)) {\r
84     AliMCEventHandler* mchandler = new AliMCEventHandler();\r
85     // Not reading track references\r
86     mchandler->SetReadTR(kFALSE);\r
87     mgr->SetMCtruthEventHandler(mchandler);\r
88   }   \r
89 \r
90   if(type != mAOD){\r
91     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");\r
92     AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();\r
93   }\r
94 \r
95   //Add the BF task (all centralities)\r
96   gROOT->LoadMacro("AddTaskBalanceFunctionInpp.C"); \r
97   AddTaskBalanceFunctionInpp();\r
98 \r
99   // enable debug printouts\r
100   mgr->SetDebugLevel(2);\r
101   mgr->SetUseProgressBar(1,100);\r
102   if (!mgr->InitAnalysis()) return;\r
103   mgr->PrintStatus();\r
104   \r
105   // start analysis\r
106   if(mode == mLocal || mode == mLocalPAR) \r
107     mgr->StartAnalysis("local",chain);\r
108   else if(mode == mPROOF) \r
109     mgr->StartAnalysis("proof",dataDir,nRuns,offset);\r
110   else if(mode == mGrid || mode == mGridPAR) \r
111     mgr->StartAnalysis("grid");\r
112 \r
113   // Print real and CPU time used for analysis:  \r
114   timer.Stop();\r
115   timer.Print();\r
116 }\r
117 \r
118 //=============================================================//\r
119 void LoadLibraries(const analysisModes mode) {  \r
120   //--------------------------------------\r
121   // Load the needed libraries most of them already loaded by aliroot\r
122   //--------------------------------------\r
123   gSystem->Load("libCore.so");        \r
124   gSystem->Load("libGeom.so");\r
125   gSystem->Load("libVMC.so");\r
126   gSystem->Load("libPhysics.so");\r
127   gSystem->Load("libTree.so");\r
128 \r
129   //----------------------------------------------------------\r
130   // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< \r
131   //----------------------------------------------------------\r
132   if (mode==mLocal || mode==mGrid || mode == mGridPAR) {\r
133     //--------------------------------------------------------\r
134     // If you want to use already compiled libraries \r
135     // in the aliroot distribution\r
136     //--------------------------------------------------------\r
137     gSystem->Load("libSTEERBase.so");\r
138     gSystem->Load("libESD.so");\r
139     gSystem->Load("libAOD.so");\r
140     gSystem->Load("libANALYSIS.so");\r
141     gSystem->Load("libANALYSISalice.so");\r
142     gSystem->Load("libPWGCFebye.so");\r
143     // Use AliRoot includes to compile our task\r
144     gROOT->ProcessLine(".include $ALICE_ROOT/include");\r
145   }\r
146   \r
147   else if (mode == mLocalPAR) {\r
148     //--------------------------------------------------------\r
149     //If you want to use root and par files from aliroot\r
150     //--------------------------------------------------------  \r
151     SetupPar("STEERBase");\r
152     SetupPar("ESD");\r
153     SetupPar("AOD");\r
154     SetupPar("ANALYSIS");\r
155     SetupPar("ANALYSISalice");\r
156     SetupPar("PWGCFebye");\r
157 }\r
158   \r
159   //---------------------------------------------------------\r
160   // <<<<<<<<<< PROOF mode >>>>>>>>>>>>\r
161   //---------------------------------------------------------\r
162   else if (mode==mPROOF) {\r
163     // Connect to proof\r
164     printf("*** Connect to PROOF ***\n");\r
165     gEnv->SetValue("XSec.GSI.DelegProxy","2");\r
166     // Put appropriate username here\r
167     TProof::Open("alice-caf.cern.ch");\r
168     //TProof::Open("skaf.saske.sk");\r
169     //TProof::Open("prf000-iep-grid.saske.sk");\r
170 \r
171     gProof->EnablePackage("VO_ALICE@AliRoot::v4-21-12-AN");\r
172   }  \r
173   \r
174 } // end of void LoadLibraries(const anaModes mode)\r
175 \r
176 //======================================================================//\r
177 void SetupPar(char* pararchivename) {\r
178   //Load par files, create analysis libraries\r
179   //For testing, if par file already decompressed and modified\r
180   //classes then do not decompress.\r
181   \r
182   TString cdir(Form("%s", gSystem->WorkingDirectory() )) ; \r
183   TString parpar(Form("%s.par", pararchivename)) ; \r
184   if ( gSystem->AccessPathName(parpar.Data()) ) {\r
185     gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;\r
186     TString processline(Form(".! make %s", parpar.Data())) ; \r
187     gROOT->ProcessLine(processline.Data()) ;\r
188     gSystem->ChangeDirectory(cdir) ; \r
189     processline = Form(".! mv /tmp/%s .", parpar.Data()) ;\r
190     gROOT->ProcessLine(processline.Data()) ;\r
191   } \r
192   if ( gSystem->AccessPathName(pararchivename) ) {  \r
193     TString processline = Form(".! tar xvzf %s",parpar.Data()) ;\r
194     gROOT->ProcessLine(processline.Data());\r
195   }\r
196   \r
197   TString ocwd = gSystem->WorkingDirectory();\r
198   gSystem->ChangeDirectory(pararchivename);\r
199   \r
200   // check for BUILD.sh and execute\r
201   if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {\r
202     printf("*******************************\n");\r
203     printf("*** Building PAR archive    ***\n");\r
204     cout<<pararchivename<<endl;\r
205     printf("*******************************\n");\r
206     if (gSystem->Exec("PROOF-INF/BUILD.sh")) {\r
207       Error("runProcess","Cannot Build the PAR Archive! - Abort!");\r
208       return -1;\r
209     }\r
210   }\r
211   // check for SETUP.C and execute\r
212   if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {\r
213     printf("*******************************\n");\r
214     printf("*** Setup PAR archive       ***\n");\r
215     cout<<pararchivename<<endl;\r
216     printf("*******************************\n");\r
217     gROOT->Macro("PROOF-INF/SETUP.C");\r
218   }\r
219   \r
220   gSystem->ChangeDirectory(ocwd.Data());\r
221   printf("Current dir: %s\n", ocwd.Data());\r
222 \r
223 } // end of void SetupPar(char* pararchivename) \r