1 const Bool_t kMC = kFALSE; //With real data kMC = kFALSE
2 const TString kInputData = "AOD";
3 const TString kJCORRANInputFormat = "AOD"; // ESD, AODout, AODin
5 //_____________________________________________________________________
7 // Load Custom Configuration and parameters
8 // override values with parameters
10 //==== Load common libraries
11 gSystem->Load("libCore");
12 gSystem->Load("libTree");
13 gSystem->Load("libGeom");
14 gSystem->Load("libVMC");
15 gSystem->Load("libXMLIO");
16 gSystem->Load("libPhysics");
17 gSystem->Load("libSTEERBase");
18 gSystem->Load("libESD");
19 gSystem->Load("libAOD");
20 gSystem->Load("libANALYSIS");
21 gSystem->Load("libANALYSISalice");
22 gSystem->Load("libEMCALUtils");
23 gSystem->Load("libPHOSUtils");
24 gSystem->Load("libPWG4PartCorrBase");
25 gSystem->Load("libPWG4PartCorrDep");
26 gSystem->Load("libPWGCFJCORRAN");
29 // SetupPar("PWG4JCORRAN");
31 // Use AliRoot includes to compile our task
32 gROOT->ProcessLine(".include $ALICE_ROOT/include");
33 gROOT->ProcessLine(".include $ALICE_ROOT/EMCAL");
34 gSystem->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/EMCAL -I$ALICE_ROOT/ANALYSIS ");
36 // Create and configure the alien handler plugin
37 gROOT->LoadMacro("CreateAlienHandler.C");
38 AliAnalysisGrid *alienHandler = CreateAlienHandler();
39 if (!alienHandler) return;
40 // Create the analysis manager
41 AliAnalysisManager *mgr = new AliAnalysisManager("JCHII");
43 // Connect plug-in to the analysis manager
44 mgr->SetGridHandler(alienHandler);
48 AliMCEventHandler* mcHandler = new AliMCEventHandler();
49 mcHandler->SetReadTR(kFALSE);//Do not search TrackRef file
50 mgr->SetMCtruthEventHandler(mcHandler);
53 if(kInputData == "ESD"){
55 AliESDInputHandler *esdHandler = new AliESDInputHandler();
56 mgr->SetInputEventHandler(esdHandler);
58 if(kInputData == "AOD"){
60 AliAODInputHandler *aodHandler = new AliAODInputHandler();
61 mgr->SetInputEventHandler(aodHandler);
64 //================================================
66 //================================================
69 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
70 AddTaskPIDResponse(kMC);
71 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
75 mgr->AddStatisticsTask();
78 gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskCentrality.C");
79 AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
80 //taskCentrality->SetPass(2);
82 //==== Physics Selection
83 gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
84 AliPhysicsSelectionTask *physSelTask = AddTaskPhysicsSelection(kMC, kTRUE);
85 physSelTask->SelectCollisionCandidates(AliVEvent::kMB);
87 //============================
89 //===========================
90 //==== Basic Track Cut
91 AliESDtrackCuts* fEsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
92 //http://aliceinfo.cern.ch/static/aliroot-new/html/roothtml/src/AliESDtrackCuts.cxx.html#DY4BnB
94 //==== Additional Track Filter ;
95 gROOT->ProcessLine(".L ./AddESDFilter.C");
96 AliAnalysisFilter *filter = AddESDFilter();
99 AliJCORRANTask *jctask = new AliJCORRANTask("PWG4JCORRANTask",kJCORRANInputFormat);
100 jctask->SetESDtrackCuts(fEsdTrackCuts);
101 jctask->SetRealOrMC(kMC);
102 jctask->SetOutputAODName("jcorran.root");
103 jctask->SetDebugLevel(0);
104 jctask->SetESDFilter( filter );
105 jctask->SetRunType("LHC11h");
106 jctask->SetStoreEventPlaneSource(true);
107 jctask->SetStoreTPCTrack(true);
110 jctask->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kHighMult); //Apply offline trigger selection by AliPhysicsSelectionTask
112 mgr->AddTask((AliAnalysisTask*) jctask);
114 //==== Create containers for input/output
115 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
116 AliAODHandler* aodoutHandler = new AliAODHandler();
117 aodoutHandler->SetCreateNonStandardAOD();
118 mgr->SetOutputEventHandler(aodoutHandler);
120 // Connect input/output
121 AliAnalysisDataContainer *runinfoOutput = mgr->CreateContainer("RunInfo", TList::Class(), AliAnalysisManager::kOutputContainer, "jcorran.root");
122 mgr->ConnectInput(jctask, 0, cinput);
123 mgr->ConnectOutput(jctask, 1, runinfoOutput );
126 //===============================
128 //===============================
130 // Enable debug printouts
131 mgr->SetDebugLevel(0);
133 if (!mgr->InitAnalysis())
137 // Start analysis in grid.
138 printf("********** LD_LIBRARY_PATH *******\n");
139 printf("%s\n", gSystem->Getenv("LD_LIBRARY_PATH"));
140 printf("**********************************\n");
143 // printf("%s\n", gSystem->Getenv("LD_LIBRARY_PATH"));
145 mgr->StartAnalysis("grid");
151 //========================================================================
153 //========================================================================
154 void SetupPar(char* pararchivename)
156 //Load par files, create analysis libraries
157 //For testing, if par file already decompressed and modified
158 //classes then do not decompress.
160 TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;
161 TString parpar(Form("%s.par", pararchivename)) ;
162 // create par file if it not exist
163 if ( gSystem->AccessPathName(parpar.Data()) ) {
164 gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;
165 TString processline(Form(".! make %s", parpar.Data())) ;
166 gROOT->ProcessLine(processline.Data()) ;
167 gSystem->ChangeDirectory(cdir) ;
168 processline = Form(".! mv /tmp/%s .", parpar.Data()) ;
169 gROOT->ProcessLine(processline.Data()) ;
171 // decompres par file
172 if ( gSystem->AccessPathName(pararchivename) ) {
173 TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
174 gROOT->ProcessLine(processline.Data());
177 TString ocwd = gSystem->WorkingDirectory();
178 gSystem->ChangeDirectory(pararchivename);
180 // check for BUILD.sh and execute
181 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
182 printf("*******************************\n");
183 printf("*** Building PAR archive ***\n");
184 cout<<pararchivename<<endl;
185 printf("*******************************\n");
187 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
188 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
192 // check for SETUP.C and execute
193 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
194 printf("*******************************\n");
195 printf("*** Setup PAR archive ***\n");
196 cout<<pararchivename<<endl;
197 printf("*******************************\n");
198 gROOT->Macro("PROOF-INF/SETUP.C");
201 gSystem->ChangeDirectory(ocwd.Data());
202 printf("Current dir: %s\n", ocwd.Data());
207 void LoadConf( TString filename ){
208 ifstream in(filename.Data());
211 str.ReplaceAll("\n", "");
214 gROOT->ProcessLine( str.Data() );