]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromAOD.C
Add possibility to enable trigger patch QA in the jet preparation
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetEmbeddingFromAOD.C
1 // $Id$
2
3 TObjArray* GenerateFileList(const char* list, Int_t nFiles);
4
5 AliJetEmbeddingFromAODTask* AddTaskJetEmbeddingFromAOD(
6   const char     *tracksName    = "Tracks",
7   const char     *clusName      = "",
8   const char     *cellsName     = "EMCALCells",
9   const char     *MCPartName    = "",
10   const char     *fileList      = "files.txt",
11   const char     *aodTreeName   = "aodTree",
12   const char     *aodTracksName = "tracks",
13   const char     *aodClusName   = "",
14   const char     *aodCellsName  = "emcalCells",
15   const char     *aodMCPartName = "",
16   const char     *runperiod     = "lhc11h",
17   Bool_t          includeNoITS  = kFALSE,
18   Double_t        minCent       = 0,
19   Double_t        maxCent       = 10,
20   UInt_t          mask          = AliVEvent::kAny,
21   const Bool_t    copyArray     = kTRUE,  
22   const Bool_t    makeQA        = kFALSE,
23   Int_t           nFiles        = 1234567890,
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);
50   jetEmb->SetClusName(clusName);
51   jetEmb->SetCellsName(cellsName);
52   jetEmb->SetMCParticlesName(MCPartName);
53   jetEmb->SetFileList(GenerateFileList(fileList, nFiles));
54   jetEmb->SetAODTreeName(aodTreeName);
55   jetEmb->SetAODTracksName(aodTracksName);
56   jetEmb->SetAODClusName(aodClusName);
57   jetEmb->SetAODCellsName(aodCellsName);
58   jetEmb->SetAODMCParticlesName(aodMCPartName);
59   jetEmb->SetCentralityRange(minCent, maxCent);
60   jetEmb->SetTriggerMask(mask);
61   jetEmb->SetCopyArray(copyArray);
62   jetEmb->SetNClusters(1);
63   jetEmb->SetMarkMC(0);
64
65   jetEmb->SetIncludeNoITS(includeNoITS);
66   TString runPeriod(runperiod);
67   runPeriod.ToLower();
68   if (runPeriod == "lhc11h" || runPeriod == "lhc12a15e") {
69     jetEmb->SetAODfilterBits(256,512); // hybrid tracks for LHC11h and LHC12a15e
70   }
71   else if (runPeriod == "lhc11a" || runPeriod == "lhc12a15a") {
72     jetEmb->SetAODfilterBits(256,16); // hybrid tracks for LHC11a and LHC12a15a
73   }
74   else {
75     if (!runPeriod.IsNull())
76       ::Warning("Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.", runPeriod.Data());
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
101 TObjArray* 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 }