]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromPYTHIA.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetEmbeddingFromPYTHIA.C
CommitLineData
40d44b3b 1// $Id$
a6e51e61 2
2103dc6a 3THashTable* GenerateFileTable(const char* list);
4
a6e51e61 5AliJetEmbeddingFromPYTHIATask* AddTaskJetEmbeddingFromPYTHIA(
6 const char *tracksName = "Tracks",
7 const char *clusName = "",
8 const char *cellsName = "EMCALCells",
9 const char *MCPartName = "",
78638322 10 const char *simpath = "alien:///alice/sim/2012/LHC12a15e_fix/%d/%d/AOD149/%04d/AliAOD.root",
b271ae58 11 Int_t nPtHard = 0,
a6e51e61 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,
aa451750 22 UInt_t mask = 0,
4358e58a 23 Double_t minJetPt = 0,
245f5c0f 24 const Bool_t copyArray = kFALSE,
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())
b271ae58 82 ::Warning("AddTaskJetEmbeddingFromPYTHIA","Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.", runPeriod.Data());
a6e51e61 83 }
84
85 jetEmb->SetPYTHIAPath(simpath);
86
b271ae58 87 if (nPtHard == 0 || ptHardScaling == 0) { // the pt hard bin scaling was not provided, use the default for LHC12a15e_fix AOD149
88 ::Warning("AddTaskJetEmbeddingFromPYTHIA","The pT hard bin scaling has not been provided, will use the default for LHC12a15e_fix AOD149!", runPeriod.Data());
89 nPtHard = 11;
90 ptHardScaling = new Double_t[nPtHard];
91 ptHardScaling [0] = 0;
92 ptHardScaling [1] = 5.135193e-05;
93 ptHardScaling [2] = 5.859497e-06;
94 ptHardScaling [3] = 4.444755e-07;
95 ptHardScaling [4] = 4.293118e-08;
96 ptHardScaling [5] = 5.154750e-09;
97 ptHardScaling [6] = 6.958612e-10;
98 ptHardScaling [7] = 1.149828e-10;
99 ptHardScaling [8] = 2.520137e-11;
100 ptHardScaling [9] = 6.222240e-12;
101 ptHardScaling [10] = 2.255832e-12;
a6e51e61 102 }
b271ae58 103 jetEmb->SetPtHardBinScaling(nPtHard, ptHardScaling);
a6e51e61 104
105 //-------------------------------------------------------
106 // Final settings, pass to manager and set the containers
107 //-------------------------------------------------------
108
109 mgr->AddTask(jetEmb);
110
111 // Create containers for input/output
112 mgr->ConnectInput(jetEmb, 0, mgr->GetCommonInputContainer());
113
ca5c29fa 114 if (makeQA) {
115 TString contName = taskName;
116 contName += "_histos";
117 AliAnalysisDataContainer *outc = mgr->CreateContainer(contName,
118 TList::Class(),
119 AliAnalysisManager::kOutputContainer,
120 "AnalysisResults.root");
121 mgr->ConnectOutput(jetEmb, 1, outc);
122 }
123
a6e51e61 124 return jetEmb;
125}
2103dc6a 126
127THashTable* GenerateFileTable(const char* list)
128{
129 THashTable *table = new THashTable();
130
131 TString myList = list;
132 if (myList.Contains("alien:///")) {
133 TFile::Cp(myList,"file:./list.txt");
134 myList = "./list.txt";
135 }
136
137 // Open the input stream
138 ifstream in;
139 in.open(myList.Data());
140
141 // Read the input list of files and add them to the chain
142 TString line;
143 while (in.good()) {
144 in >> line;
145
146 if (line.Length() == 0)
147 continue;
148
149 TObjString *aodFile = new TObjString(line);
150 table->Add(aodFile);
151 }
152
153 return table;
154}