]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromAOD.C
preparing jet v2 task for train run
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetEmbeddingFromAOD.C
CommitLineData
40d44b3b 1// $Id$
b16bb001 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",
9adcb46d 17 Bool_t includeNoITS = kFALSE,
b16bb001 18 Double_t minCent = 0,
19 Double_t maxCent = 10,
20 UInt_t mask = AliVEvent::kAny,
2103dc6a 21 const Bool_t copyArray = kTRUE,
b16bb001 22 const Bool_t makeQA = kFALSE,
2103dc6a 23 Int_t nFiles = 1234567890,
b16bb001 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);
787a3c4f 50 jetEmb->SetClusName(clusName);
b16bb001 51 jetEmb->SetCellsName(cellsName);
787a3c4f 52 jetEmb->SetMCParticlesName(MCPartName);
b16bb001 53 jetEmb->SetFileList(GenerateFileList(fileList, nFiles));
54 jetEmb->SetAODTreeName(aodTreeName);
55 jetEmb->SetAODTracksName(aodTracksName);
787a3c4f 56 jetEmb->SetAODClusName(aodClusName);
b16bb001 57 jetEmb->SetAODCellsName(aodCellsName);
787a3c4f 58 jetEmb->SetAODMCParticlesName(aodMCPartName);
b16bb001 59 jetEmb->SetCentralityRange(minCent, maxCent);
60 jetEmb->SetTriggerMask(mask);
b16bb001 61 jetEmb->SetCopyArray(copyArray);
507f74bc 62 jetEmb->SetNClusters(1);
fde82e42 63 jetEmb->SetMarkMC(0);
b16bb001 64
65 jetEmb->SetIncludeNoITS(includeNoITS);
66 TString runPeriod(runperiod);
67 runPeriod.ToLower();
8159f4cd 68 if (runPeriod == "lhc11h" || runPeriod == "lhc12a15e") {
69 jetEmb->SetAODfilterBits(256,512); // hybrid tracks for LHC11h and LHC12a15e
b16bb001 70 }
8159f4cd 71 else if (runPeriod == "lhc11a" || runPeriod == "lhc12a15a") {
72 jetEmb->SetAODfilterBits(256,16); // hybrid tracks for LHC11a and LHC12a15a
b16bb001 73 }
74 else {
8159f4cd 75 if (!runPeriod.IsNull())
76 ::Warning("Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.", runPeriod.Data());
b16bb001 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
101TObjArray* 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}