]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetPreparationJSON.C
Create wrapper for JSON macro that calls traditional macro, and add development JSON...
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetPreparationJSON.C
1 // $Id$
2
3 AliAnalysisTaskSE* AddTaskJetPreparation(
4   const char*    periodstr          = "LHC11h",
5   const char*    pTracksName        = "PicoTracks",
6   const char*    usedMCParticles    = "MCParticlesSelected",
7   const char*    usedClusters       = "CaloClusters",
8   const char*    outClusName        = "CaloClustersCorr",
9   Double_t hadcorr                  = 2.0,
10   Double_t Eexcl                    = 0.00,
11   Double_t phiMatch                 = 0.03,
12   Double_t etaMatch                 = 0.015,
13   Double_t minPtEt                  = 0.15,
14   UInt_t   pSel                     = AliVEvent::kAny,
15   Bool_t   trackclus                = kTRUE,
16   Bool_t   doHistos                 = kFALSE,
17   Bool_t   makePicoTracks           = kTRUE,
18   Bool_t   makeTrigger              = kTRUE,
19   Bool_t   isEmcalTrain             = kFALSE,
20   Double_t trackeff                 = 1.0,
21   Bool_t   doAODTrackProp           = kTRUE,
22   Bool_t   modifyMatchObjs          = kTRUE,
23   Bool_t   doTriggerQA              = kFALSE
24 )
25 {
26   // Add task macros for all jet related helper tasks.
27
28   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
29   if (!mgr)
30   {
31     Error("AddTaskJetPreparation","No analysis manager found.");
32     return NULL;
33   }
34
35   AliVEventHandler *evhand = mgr->GetInputEventHandler();
36   if (!evhand) {
37     Error("AddTaskJetPreparation", "This task requires an input event handler");
38     return NULL;
39   }
40
41   // Set trackcuts according to period. Every period used should be defined here
42   TString period(periodstr);
43   TString clusterColName(usedClusters);
44   TString particleColName(usedMCParticles);
45   TString picoTracksName(pTracksName);
46
47   TString dType("ESD");
48   if (!evhand->InheritsFrom("AliESDInputHandler")) 
49     dType = "AOD";
50   if ((dType == "AOD") && (clusterColName == "CaloClusters"))
51     clusterColName = "caloClusters";
52   if ((dType == "ESD") && (clusterColName == "caloClusters"))
53     clusterColName = "CaloClusters";
54
55   //----------------------- Trigger Maker -----------------------------------------------------
56   if (makeTrigger) {
57     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMakerJSON.C");
58     AliEMCALConfiguration emctriggerconf("triggerMakerConf");
59     emctriggerconf.AddParam("doQA", new AliJSONBool(doTriggerQA));
60     AliEmcalTriggerMaker *emcalTriggers = AddTaskEmcalTriggerMakerJSON(emctriggerconf.CreateJSONString());
61     emcalTriggers->SelectCollisionCandidates(pSel);
62   }
63
64   //----------------------- Track Matching tasks -----------------------------------------------------
65   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMatchingChain.C");
66   AliEmcalClusTrackMatcherTask *emcalClus =  AddTaskMatchingChain(periodstr,pSel,
67                                                                   clusterColName,
68                                                                   trackeff,doAODTrackProp,
69                                                                   0.1,modifyMatchObjs,doHistos);
70   
71   //hard coded names of AliEmcalParticle strings to coincide with AddTaskClusTrackMatching
72   TString inputTracks = "AODFilterTracks";
73   if (dType == "ESD") inputTracks = "ESDFilterTracks";
74   TString emctracks = Form("EmcalTracks_%s",inputTracks.Data());
75   TString emcclusters = Form("EmcalClusters_%s",clusterColName.Data());
76   Printf("1-- inputTracks: %s, emcclusters: %s, emctracks: %s",inputTracks.Data(),emcclusters.Data(),emctracks.Data());
77   if(makePicoTracks) {
78     //----------------------- Produce PicoTracks -----------------------------------------------------
79     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
80     AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker(picoTracksName, inputTracks);
81     //    pTrackTask->SetTrackEfficiency(trackeff); //now done in Esd/AodFilter
82     pTrackTask->SelectCollisionCandidates(pSel);
83   }
84
85   //----------------------- Hadronic Correction -----------------------------------------------------
86   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskHadCorr.C"); 
87   AliHadCorrTask *hCorr = AddTaskHadCorr(emctracks,emcclusters,outClusName,hadcorr,
88                                          minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
89   hCorr->SelectCollisionCandidates(pSel);
90   if (isEmcalTrain) {
91     if (doHistos)
92       RequestMemory(hCorr,500*1024);
93   }
94
95   // Produce MC particles
96   if(particleColName != "") {
97     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
98     AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName, kFALSE, kFALSE);
99     mcPartTask->SelectCollisionCandidates(pSel);
100   }
101
102   // Return one task that represents the jet preparation on LEGO trains
103   return hCorr;
104 }