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