]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromAOD.C
update from Salvatore, Ruediger for some bug fixes
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetEmbeddingFromAOD.C
CommitLineData
b16bb001 1// $Id: AddTaskJetEmbeddingFromAOD.C $
2
3TObjArray* GenerateFileList(const char* list, Int_t nFiles);
4
5AliJetEmbeddingFromAODTask* 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
114TObjArray* 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}