]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/EMCAL/macros/AddTaskEmcalAodTrackFilter.C
update filter bits AOD filter task (D. Lodato)
[u/mrichter/AliRoot.git] / PWG / EMCAL / macros / AddTaskEmcalAodTrackFilter.C
CommitLineData
82915c95 1AliEmcalAodTrackFilterTask* AddTaskEmcalAodTrackFilter(
33a8056d 2 const char *name = "FilterTracks",
fb99243d
CL
3 const char *inname = "tracks",
4 const char *runperiod = "",
33a8056d 5 const char *taskName = "AliEmcalAodTrackFilterTask"
fb99243d
CL
6)
7{
8 // Get the pointer to the existing analysis manager via the static access method.
9 //==============================================================================
10 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
11 if (!mgr)
12 {
13 ::Error("AddTaskAodTrackFilter", "No analysis manager to connect to.");
14 return NULL;
15 }
16
17 // Check the analysis type using the event handlers connected to the analysis manager.
18 //==============================================================================
19 if (!mgr->GetInputEventHandler())
20 {
21 ::Error("AddTaskAodTrackFilter", "This task requires an input event handler");
22 return NULL;
23 }
24
25 TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
26 if (inputDataType != "AOD")) {
391fc823 27 ::Info("AddTaskEmcalAodTpcTrack", "This task is only needed for AOD analysis. No task added.");
fb99243d
CL
28 return NULL;
29 }
30
31 //-------------------------------------------------------
32 // Init the task and do settings
33 //-------------------------------------------------------
34
33a8056d 35 AliEmcalAodTrackFilterTask *aodTask = new AliEmcalAodTrackFilterTask(taskName);
36 aodTask->SetTracksOutName(name);
37 aodTask->SetTracksInName(inname);
38 aodTask->SetMC(kFALSE);
fb99243d 39
fb99243d 40 Bool_t includeNoITS = kFALSE;
507ffd10 41 Bool_t doProp = kFALSE;
42 TString runPeriod(runperiod);
fb99243d 43 runPeriod.ToLower();
2933f0df 44 if (runPeriod == "lhc10d" || runPeriod == "lhc10e" || runPeriod == "lhc10h" ||
45 runPeriod == "lhc11h" || runPeriod == "lhc12a" || runPeriod == "lhc12b" ||
46 runPeriod == "lhc12c" || runPeriod == "lhc12d" || runPeriod == "lhc12e" ||
47 runPeriod == "lhc12f" || runPeriod == "lhc12g" || runPeriod == "lhc12h" ||
48 runPeriod == "lhc12i" || runPeriod == "lhc13b" || runPeriod == "lhc13c" ||
49 runPeriod == "lhc13d" || runPeriod == "lhc13e" || runPeriod == "lhc13f" ||
50 runPeriod == "lhc13g"
afb6291b 51 ) {
33a8056d 52 aodTask->SetAODfilterBits(256,512); // hybrid tracks
2933f0df 53 if (runPeriod == "lhc10d" || runPeriod == "lhc10e" || runPeriod == "lhc10h")
fb99243d 54 includeNoITS = kTRUE;
2933f0df 55 else if (runPeriod == "lhc11h") // fix cascade bug in LHC11h AOD145
56 aodTask->SetAttemptProp(kTRUE);
888dd480 57 } else if (runPeriod == "lhc12a15e" || runPeriod.Contains("lhc12a17") || runPeriod == "lhc13b4" ||
58 runPeriod == "lhc13b4_fix" || runPeriod == "lhc13b4_plus" || runPeriod.Contains("lhc14a1")
2933f0df 59 ) {
33a8056d 60 aodTask->SetAODfilterBits(256,512); // hybrid tracks
61 aodTask->SetMC(kTRUE);
c650e515 62 } else if (runPeriod == "lhc11a" || runPeriod == "lhc10hold") {
526d523f 63 aodTask->SetAODfilterBits(256,16); // hybrid tracks
fb99243d 64 includeNoITS = kTRUE;
d3aeff66 65 } else if(runPeriod == "lhc11d") {
322f926b 66 aodTask->SetAODfilterBits(256,16); // hybrid tracks (MV: not 100% sure)
67 includeNoITS = kFALSE;
888dd480 68 } else if (runPeriod.Contains("lhc12a15a") || runPeriod == "lhc12a15f" || runPeriod == "lhc12a15g") {
526d523f 69 aodTask->SetAODfilterBits(256,16); // hybrid tracks
33a8056d 70 aodTask->SetMC(kTRUE);
fb99243d
CL
71 includeNoITS = kTRUE;
72 } else if (runPeriod.Contains(":")) {
73 TObjArray *arr = runPeriod.Tokenize(":");
74 TString arg1(arr->At(0)->GetName());
75 TString arg2("-1");
76 if (arr->GetEntries()>1)
77 arg2 = arr->At(1)->GetName();
33a8056d 78 if (arr->GetEntries()>2) {
79 TString arg3 = arr->At(2)->GetName();
80 if (arg3.Contains("includeNoITS=kTRUE"))
81 includeNoITS=kTRUE;
82 if (arg3.Contains("doProp=kTRUE"))
83 doProp=kTRUE;
84 }
85 aodTask->SetAODfilterBits(arg1.Atoi(),arg2.Atoi());
fb99243d
CL
86 delete arr;
87 } else {
88 if (!runPeriod.IsNull())
89 ::Warning("Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.", runPeriod.Data());
90 }
33a8056d 91 aodTask->SetIncludeNoITS(includeNoITS);
92 aodTask->SetDoPropagation(doProp);
fb99243d
CL
93
94 //-------------------------------------------------------
95 // Final settings, pass to manager and set the containers
96 //-------------------------------------------------------
33a8056d 97 mgr->AddTask(aodTask);
fb99243d
CL
98
99 // Create containers for input/output
507ffd10 100 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
101 mgr->ConnectInput(aodTask, 0, cinput1 );
fb99243d 102
33a8056d 103 return aodTask;
fb99243d 104}