]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetPreparation.C
Charged jets (pPb): Enhanced macro
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetPreparation.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/AddTaskEmcalTriggerMaker.C");
58     /*
59      * Parameters (with default values):
60      *   triggersOutName      (const char *)       = "EmcalTriggers",
61      *   triggerSetupOutName  (const char *)       = "EmcalTriggerSetup",
62      *   cellsName            (const char *)       = 0,
63      *   triggersName         (const char *)       = 0,
64      *   taskName             (const char *)       = "AliEmcalTriggerMaker",
65      *   jetLowA              (int)                = 0,
66      *   jetLowB              (int)                = 0,
67      *   jetLowC              (int)                = 0,
68      *   jetHighA             (int)                = 0,
69      *   jetHighB             (int)                = 0,
70      *   jetHighC             (int)                = 0,
71      *   doQA                 (bool)               = kFALSE
72      */
73     AliEmcalTriggerMaker *emcalTriggers = AddTaskEmcalTriggerMaker("EmcalTriggers", "EmcalTriggerSetup", 0, 0, "AliEmcalTriggerMaker", 0, 0, 0, 0, 0, 0, doTriggerQA);
74     emcalTriggers->SelectCollisionCandidates(pSel);
75   }
76
77   //----------------------- Track Matching tasks -----------------------------------------------------
78   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMatchingChain.C");
79   AliEmcalClusTrackMatcherTask *emcalClus =  AddTaskMatchingChain(periodstr,pSel,
80                                                                   clusterColName,
81                                                                   trackeff,doAODTrackProp,
82                                                                   0.1,modifyMatchObjs,doHistos);
83   
84   //hard coded names of AliEmcalParticle strings to coincide with AddTaskClusTrackMatching
85   TString inputTracks = "AODFilterTracks";
86   if (dType == "ESD") inputTracks = "ESDFilterTracks";
87   TString emctracks = Form("EmcalTracks_%s",inputTracks.Data());
88   TString emcclusters = Form("EmcalClusters_%s",clusterColName.Data());
89   Printf("1-- inputTracks: %s, emcclusters: %s, emctracks: %s",inputTracks.Data(),emcclusters.Data(),emctracks.Data());
90   if(makePicoTracks) {
91     //----------------------- Produce PicoTracks -----------------------------------------------------
92     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
93     AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker(picoTracksName, inputTracks);
94     //    pTrackTask->SetTrackEfficiency(trackeff); //now done in Esd/AodFilter
95     pTrackTask->SelectCollisionCandidates(pSel);
96   }
97
98   //----------------------- Hadronic Correction -----------------------------------------------------
99   gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskHadCorr.C"); 
100   AliHadCorrTask *hCorr = AddTaskHadCorr(emctracks,emcclusters,outClusName,hadcorr,
101                                          minPtEt,phiMatch,etaMatch,Eexcl,trackclus,doHistos);
102   hCorr->SelectCollisionCandidates(pSel);
103   if (isEmcalTrain) {
104     if (doHistos)
105       RequestMemory(hCorr,500*1024);
106   }
107
108   // Produce MC particles
109   if(particleColName != "") {
110     gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskMCTrackSelector.C");
111     AliEmcalMCTrackSelector *mcPartTask = AddTaskMCTrackSelector(particleColName, kFALSE, kFALSE);
112     mcPartTask->SelectCollisionCandidates(pSel);
113   }
114
115   // Return one task that represents the jet preparation on LEGO trains
116   return hCorr;
117 }