]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C
add optional parameter for task name
[u/mrichter/AliRoot.git] / PWG / EMCAL / macros / AddTaskEmcalPicoTrackMaker.C
1 // $Id$
2
3 AliEmcalPicoTrackMaker* AddTaskEmcalPicoTrackMaker(
4   const char *name         = "PicoTracks",
5   const char *inname       = "tracks",
6   const char *runperiod    = "",
7   Double_t ptmin           = 0,
8   Double_t ptmax           = 1000,
9   Double_t etamin          = -10,
10   Double_t etamax          = +10,
11   Double_t phimin          = -10,
12   Double_t phimax          = +10,
13   AliESDtrackCuts *cuts    = 0,
14   const char *taskName     = "AliEmcalPicoTrackMaker"
15 )
16 {  
17   // Get the pointer to the existing analysis manager via the static access method.
18   //==============================================================================
19   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20   if (!mgr)
21   {
22     ::Error("AddTaskEmcalPicoTrackMaker", "No analysis manager to connect to.");
23     return NULL;
24   }  
25   
26   // Check the analysis type using the event handlers connected to the analysis manager.
27   //==============================================================================
28   if (!mgr->GetInputEventHandler())
29   {
30     ::Error("AddTaskEmcalPicoTrackMaker", "This task requires an input event handler");
31     return NULL;
32   }
33   
34   //-------------------------------------------------------
35   // Init the task and do settings
36   //-------------------------------------------------------
37
38   AliEmcalPicoTrackMaker *eTask = new AliEmcalPicoTrackMaker(taskName);
39   eTask->SetTracksOutName(name);
40   eTask->SetTracksInName(inname);
41   eTask->SetTrackPtLimits(ptmin, ptmax);
42   eTask->SetTrackEtaLimits(etamin, etamax);
43   eTask->SetTrackPhiLimits(phimin, phimax);
44
45   TString runPeriod(runperiod);
46   Bool_t includeNoITS = kFALSE;
47   runPeriod.ToLower();
48   if (runPeriod == "lhc11h" || runPeriod == "lhc13b" || runPeriod == "lhc13c" || runPeriod == "lhc13d" || runPeriod == "lhc13e" || runPeriod == "lhc13f" || runPeriod == "lhc12g") {
49     eTask->SetAODfilterBits(256,512); // hybrid tracks for LHC11h
50     eTask->SetMC(kFALSE);
51   } else if (runPeriod == "lhc12a15e" || runPeriod == "lhc13b4" || runPeriod == "lhc13b4_fix" || runPeriod == "lhc12a15f") {
52     eTask->SetAODfilterBits(256,512); // hybrid tracks for LHC12a15e, LHC13b4, and LHC12a15f
53     eTask->SetMC(kTRUE);
54   } else if (runPeriod == "lhc11a") {
55     eTask->SetAODfilterBits(256,16); // hybrid tracks for LHC11a
56     eTask->SetMC(kFALSE);
57     includeNoITS = kTRUE;
58   } else if (runPeriod.Contains("lhc12a15a")) {
59     eTask->SetAODfilterBits(256,16); // hybrid tracks for LHC12a15a
60     eTask->SetMC(kTRUE);
61     includeNoITS = kTRUE;
62   } else if (runPeriod.Contains(":")) {
63     TObjArray *arr = runPeriod.Tokenize(":");
64     TString arg1(arr->At(0)->GetName());
65     TString arg2("-1");
66     if (arr->GetEntries()>1)
67       arg2 = arr->At(1)->GetName();
68     eTask->SetAODfilterBits(arg1.Atoi(),arg2.Atoi());
69     delete arr;
70   } else {
71     if (!runPeriod.IsNull())
72       ::Warning("Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.", runPeriod.Data());
73   }
74   eTask->SetESDtrackCuts(cuts);
75   eTask->SetIncludeNoITS(includeNoITS);
76
77   //-------------------------------------------------------
78   // Final settings, pass to manager and set the containers
79   //-------------------------------------------------------
80   mgr->AddTask(eTask);
81   
82   // Create containers for input/output
83   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
84   mgr->ConnectInput  (eTask, 0,  cinput1 );
85   
86   return eTask;
87 }