]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALJetTasks/macros/runJetAna.C
name of task
[u/mrichter/AliRoot.git] / PWGGA / EMCALJetTasks / macros / runJetAna.C
1 // $Id$
2
3 void runJetAna(
4   const char     *datatype     = "aod",            // aod, esd, sesd
5   const char     *runtype      = "local",          // local or grid (when local gridmode specifies input txt file)
6   const char     *gridmode     = "aod_files.txt",  // grid mode (can be "full", "test", "offline", "submit" or "terminate")
7   const char     *taskname     = "JetAna")         // name of grid generated macros
8 {
9
10   enum eDataType { kAod, kEsd, kSesd };
11   enum eRunType  { kLocal, kGrid };
12
13   eRunType rType = kLocal;
14   if (strcmp(runtype, "grid")==0) 
15     rType = kGrid;
16   eDataType dType = kAod;
17   if (strcmp(datatype, "esd")==0)
18     dType = kEsd;
19   else if (strcmp(datatype, "sesd")==0)
20     dType = kSesd;
21
22   // load the libraries
23   LoadLibs();
24    
25   // analysis manager
26   AliAnalysisManager* mgr = new AliAnalysisManager(taskname);
27
28   if (dType == kAod) {
29     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/train/AddAODHandler.C");
30     AliAODInputHandler* inH = AddAODHandler();
31   } else {
32     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/train/AddESDHandler.C");
33     AliESDInputHandler* inH = AddESDHandler();
34   }
35
36   if (0) {
37     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/train/AddAODOutputHandler.C");
38     AliAODHandler* aodoutHandler = AddAODOutputHandler();
39   }
40
41   // PSel task
42   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEmcalPhysicsSelection.C");
43   AliPhysicsSelectionTask *physSelTask = AddTaskEmcalPhysicsSelection(kTRUE, kTRUE, 
44                                                                       AliVEvent::kAnyINT /*| AliVEvent::kCentral| AliVEvent::kSemiCentral*/,
45                                                                       10,10);
46
47   // Setup task
48   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEmcalSetup.C");
49   AliEmcalSetupTask *setupTask = AddTaskEmcalSetup();
50
51   // Compatibility task (for skimmed ESD)
52   if (dType == kSesd) {
53     gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEmcalCompat.C");
54     AliEmcalCompatTask *comptask = AddTaskEmcalCompat();
55   }
56
57   // Centrality task
58   if (dType == kEsd) {
59     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
60     AliCentralitySelectionTask *centralityTask = AddTaskCentrality();
61   }
62
63   TString inputTracks("tracks");
64   if (dType == kEsd) {
65     inputTracks = "HybridTracks";
66
67     // Hybrid tracks maker for ESD
68     gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEmcalEsdTpcTrack.C");
69     AliEmcalEsdTpcTrackTask *hybTask = AddTaskEmcalEsdTpcTrack(inputTracks);
70
71     // Track propagator
72     gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEmcalTrackPropagator.C");
73     AliEmcalTrackPropagatorTask *propTask = AddTaskEmcalTrackPropagator(inputTracks);
74   }
75   else if (dType == kSesd) {
76     inputTracks = "Tracks";
77   }
78
79   // PicoTracks maker
80   TString tracksName("PicoTracks");
81   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEmcalPicoTrackMaker.C");
82   AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker(tracksName, inputTracks, "LHC11h");
83
84   // Cluster-track matcher
85   TString clusName("CaloClusters");
86   if (dType == kAod)
87     clusName = "caloClusters";
88   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEmcalClusTrackMatcher.C");
89   AliEmcalClusTrackMatcherTask *matcherTask = AddTaskEmcalClusTrackMatcher(tracksName, clusName);
90
91   // Hadronic correction task
92   TString clusNameCorr(Form("%sCorr",clusName.Data()));
93   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALJetTasks/macros/AddTaskHadCorr.C");
94   AliHadCorrTask *hcorr = AddTaskHadCorr(tracksName, clusName, clusNameCorr);
95
96   // Embedding task
97   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALJetTasks/macros/AddTaskJetEmbedding.C");
98   AliJetEmbeddingTask* jemb = AddTaskJetEmbedding(tracksName, clusNameCorr, "JetEmbeddingTask", 10, 10, -0.9, 0.9);
99
100   // Jet finder
101   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALJetTasks/macros/AddTaskEmcalJet.C");
102   AliEmcalJetTask *jetTask = AddTaskEmcalJet(tracksName, clusNameCorr);
103
104   // Scale task
105   gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALJetTasks/macros/AddTaskScale.C");
106   AliAnalysisTaskScale *scaleTask = AddTaskScale(tracksName, clusNameCorr);
107
108   if (1) {
109     UInt_t val = AliVEvent::kAny;
110     //val = AliVEvent::kAnyINT | AliVEvent::kCentral| AliVEvent::kSemiCentral;
111     //val = AliVEvent::kEMCEGA;
112     //val = AliVEvent::kEMCEJE;
113     val = AliEmcalPhysicsSelection::kEmcalHT;
114
115     TObjArray *toptasks = mgr->GetTasks();
116     for (Int_t i=0; i<toptasks->GetEntries(); ++i) {
117       AliAnalysisTaskSE *task = dynamic_cast<AliAnalysisTaskSE*>(toptasks->At(i));
118       if (!task)
119         continue;
120       TString name(task->ClassName());
121       if (name.Contains("PhysicsSelection"))
122         continue;
123       ::Info("setPSel", "Set physics selection for %s (%s)", task->GetName(), task->ClassName());
124       task->SelectCollisionCandidates(val);
125     }
126   }
127
128   mgr->SetDebugLevel(0);
129   mgr->SetUseProgressBar(1, 25);
130
131   if (!mgr->InitAnalysis()) 
132     return;
133   mgr->PrintStatus();
134   
135   if (rType == kGrid) {
136     mgr->StartAnalysis(gridmode);
137   } else {
138     const char *txtfile = gridmode;
139     if (dType == kAod) {
140       gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/CreateAODChain.C");
141       chain = CreateAODChain(txtfile, 5);
142     } else {
143       gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/CreateESDChain.C");
144       TChain* chain = CreateESDChain(txtfile, 5);
145     }
146     mgr->StartAnalysis("local", chain);
147   }
148
149   return;
150 }
151
152 void LoadLibs()
153 {
154   // load root libraries
155   gSystem->Load("libTree");
156   gSystem->Load("libVMC");
157   gSystem->Load("libGui");
158   gSystem->Load("libXMLParser");
159   gSystem->Load("libMinuit");
160   gSystem->Load("libMinuit2");
161   gSystem->Load("libProof");
162   gSystem->Load("libGeom");
163   gSystem->Load("libPhysics");
164
165   // load aliroot libraries
166   gSystem->Load("libSTEERBase");
167   gSystem->Load("libESD");
168   gSystem->Load("libAOD");
169   gSystem->Load("libOADB");
170   gSystem->Load("libANALYSIS");
171   gSystem->Load("libANALYSISalice");
172   gSystem->Load("libCDB");
173   gSystem->Load("libRAWDatabase");
174   gSystem->Load("libSTEER");
175   gSystem->Load("libCORRFW");
176   gSystem->Load("libEMCALUtils");
177   gSystem->Load("libPHOSUtils");
178   gSystem->Load("libPWGCaloTrackCorrBase");
179   gSystem->Load("libPWGGACaloTrackCorrelations");
180   gSystem->Load("libPWGGACaloTasks");
181   gSystem->Load("libPWGGAEMCALTasks");
182   gSystem->Load("libEMCALraw");
183   gSystem->Load("libEMCALbase");
184   gSystem->Load("libEMCALrec");
185   gSystem->Load("libTRDbase");
186   gSystem->Load("libVZERObase");
187   gSystem->Load("libVZEROrec");
188   gSystem->Load("libTENDER");   
189   gSystem->Load("libTENDERSupplies"); 
190  
191   // load fastjet libraries
192   gSystem->Load("libJETAN");
193   gSystem->Load("/usr/lib64/libCGAL.so");
194   gSystem->Load("$FASTJET/lib/libfastjet");
195   gSystem->Load("$FASTJET/lib/libsiscone");
196   gSystem->Load("$FASTJET/lib/libSISConePlugin");
197   gSystem->Load("libFASTJETAN");
198   gSystem->Load("libPWGGAEMCALJetTasks");
199 }
200
201 AliAnalysisGrid* CreateAlienHandler(const char *taskname, 
202                                     const char *gridmode, 
203                                     const char *proofcluster, 
204                                     const char *proofdataset)
205 {
206   // TODO
207   return 0;
208 }
209