]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromAOD.C
from Ruediger
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetEmbeddingFromAOD.C
1 // $Id: AddTaskJetEmbeddingFromAOD.C  $
2
3 TObjArray* GenerateFileList(const char* list, Int_t nFiles);
4
5 AliJetEmbeddingFromAODTask* 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);
67   jetEmb->SetMarkMC(-1);
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
105 TObjArray* 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 }