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