]>
Commit | Line | Data |
---|---|---|
82915c95 | 1 | AliEmcalAodTrackFilterTask* 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 | } |