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