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