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