]>
Commit | Line | Data |
---|---|---|
b16bb001 | 1 | // $Id: AddTaskJetEmbeddingFromAOD.C $ |
2 | ||
3 | TObjArray* GenerateFileList(const char* list, Int_t nFiles); | |
4 | ||
5 | AliJetEmbeddingFromAODTask* AddTaskJetEmbeddingFromAOD( | |
6 | const char *tracksName = "Tracks", | |
7 | const char *cellsName = "EMCALCells", | |
8 | const char *fileList = "files.txt", | |
9 | const char *aodTreeName = "aodTree", | |
10 | const char *aodTracksName = "tracks", | |
11 | const char *aodCellsName = "emcalCells", | |
12 | const char *runperiod = "", | |
13 | Bool_t includeNoITS = kTRUE, | |
14 | Double_t minCent = 0, | |
15 | Double_t maxCent = 10, | |
16 | UInt_t mask = AliVEvent::kAny, | |
17 | const Int_t nTracks = 1234567890, | |
18 | const Int_t nCells = 1234567890, | |
19 | const Bool_t copyArray = kTRUE, | |
20 | const Int_t nFiles = 1234567890, | |
21 | const Bool_t makeQA = kFALSE, | |
22 | const Double_t minPt = 0, | |
23 | const Double_t maxPt = 1000, | |
24 | const Double_t minEta = -0.9, | |
25 | const Double_t maxEta = 0.9, | |
26 | const Double_t minPhi = 0, | |
27 | const Double_t maxPhi = TMath::Pi() * 2, | |
28 | const char *taskName = "JetEmbeddingFromAODTask" | |
29 | ) | |
30 | { | |
31 | // Get the pointer to the existing analysis manager via the static access method. | |
32 | //============================================================================== | |
33 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
34 | if (!mgr) | |
35 | { | |
36 | ::Error("AddTaskJetEmbeddingFromAOD", "No analysis manager to connect to."); | |
37 | return NULL; | |
38 | } | |
39 | ||
40 | // Check the analysis type using the event handlers connected to the analysis manager. | |
41 | //============================================================================== | |
42 | if (!mgr->GetInputEventHandler()) | |
43 | { | |
44 | ::Error("AddTaskJetEmbeddingFromAOD", "This task requires an input event handler"); | |
45 | return NULL; | |
46 | } | |
47 | ||
48 | //------------------------------------------------------- | |
49 | // Init the task and do settings | |
50 | //------------------------------------------------------- | |
51 | ||
52 | AliJetEmbeddingFromAODTask *jetEmb = new AliJetEmbeddingFromAODTask(taskName,makeQA); | |
53 | jetEmb->SetTracksName(tracksName); | |
54 | jetEmb->SetCellsName(cellsName); | |
55 | jetEmb->SetFileList(GenerateFileList(fileList, nFiles)); | |
56 | jetEmb->SetAODTreeName(aodTreeName); | |
57 | jetEmb->SetAODTracksName(aodTracksName); | |
58 | jetEmb->SetAODCellsName(aodCellsName); | |
59 | jetEmb->SetCentralityRange(minCent, maxCent); | |
60 | jetEmb->SetTriggerMask(mask); | |
61 | jetEmb->SetNCells(nCells); | |
62 | jetEmb->SetNTracks(nTracks); | |
63 | jetEmb->SetCopyArray(copyArray); | |
64 | jetEmb->SetEtaRange(minEta, maxEta); | |
65 | jetEmb->SetPhiRange(minPhi, maxPhi); | |
66 | jetEmb->SetPtRange(minPt, maxPt); | |
f660c2d6 | 67 | jetEmb->SetMarkMC(-1); |
b16bb001 | 68 | |
69 | jetEmb->SetIncludeNoITS(includeNoITS); | |
70 | TString runPeriod(runperiod); | |
71 | runPeriod.ToLower(); | |
72 | if (runPeriod == "lhc11h") { | |
73 | jetEmb->SetAODfilterBits(256,512); // hybrid tracks for LHC11h | |
74 | } | |
75 | else if (runPeriod == "lhc11a" || runPeriod == "lhc12a15a" || runPeriod == "lhc12a15e") { | |
76 | jetEmb->SetAODfilterBits(256,16); // hybrid tracks for LHC11a, LHC12a15a and LHC12a15e | |
77 | } | |
78 | else { | |
79 | if (runPeriod.IsNull()) | |
80 | ::Warning("Run period %s not known. It will use IsHybridGlobalConstrainedGlobal."); | |
81 | } | |
82 | ||
83 | //------------------------------------------------------- | |
84 | // Final settings, pass to manager and set the containers | |
85 | //------------------------------------------------------- | |
86 | ||
87 | mgr->AddTask(jetEmb); | |
88 | ||
89 | // Create containers for input/output | |
90 | mgr->ConnectInput(jetEmb, 0, mgr->GetCommonInputContainer()); | |
91 | ||
92 | if (makeQA) { | |
93 | TString contName = taskName; | |
94 | contName += "_histos"; | |
95 | AliAnalysisDataContainer *outc = mgr->CreateContainer(contName, | |
96 | TList::Class(), | |
97 | AliAnalysisManager::kOutputContainer, | |
98 | "AnalysisResults.root"); | |
99 | mgr->ConnectOutput(jetEmb, 1, outc); | |
100 | } | |
101 | ||
102 | return jetEmb; | |
103 | } | |
104 | ||
105 | TObjArray* GenerateFileList(const char* list, Int_t nFiles) | |
106 | { | |
107 | TObjArray *array = new TObjArray(9999); | |
108 | ||
109 | TString myList = list; | |
110 | if (myList.Contains("alien:///")) { | |
111 | TFile::Cp(myList,"file:./list.txt"); | |
112 | myList = "./list.txt"; | |
113 | } | |
114 | ||
115 | // Open the input stream | |
116 | ifstream in; | |
117 | in.open(myList.Data()); | |
118 | ||
119 | Int_t count = 0; | |
120 | ||
121 | // Read the input list of files and add them to the chain | |
122 | TString line; | |
123 | while (in.good()) { | |
124 | if (nFiles != 1234567890) { | |
125 | if (count >= nFiles) | |
126 | break; | |
127 | } | |
128 | ||
129 | in >> line; | |
130 | ||
131 | if (line.Length() == 0) | |
132 | continue; | |
133 | ||
134 | TObjString *aodFile = new TObjString(line); | |
135 | array->Add(aodFile); | |
136 | ||
137 | count++; | |
138 | } | |
139 | ||
140 | return array; | |
141 | } |