]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetEmbeddingFromPYTHIA.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetEmbeddingFromPYTHIA.C
1 // $Id$
2
3 THashTable* GenerateFileTable(const char* list);
4
5 AliJetEmbeddingFromPYTHIATask* AddTaskJetEmbeddingFromPYTHIA(
6   const char     *tracksName    = "Tracks",
7   const char     *clusName      = "",
8   const char     *cellsName     = "EMCALCells",
9   const char     *MCPartName    = "",
10   const char     *simpath       = "alien:///alice/sim/2012/LHC12a15e_fix/%d/%d/AOD149/%04d/AliAOD.root",
11   Int_t           nPtHard       = 0,
12   Double_t       *ptHardScaling = 0,
13   const char     *aodTreeName   = "aodTree",
14   const char     *aodTracksName = "tracks",
15   const char     *aodClusName   = "",
16   const char     *aodCellsName  = "emcalCells",
17   const char     *aodMCPartName = "mcparticles",
18   const char     *runperiod     = "lhc12a15e",
19   Bool_t          includeNoITS  = kFALSE,
20   Double_t        minCent       = -1,
21   Double_t        maxCent       = -1,
22   UInt_t          mask          = 0,
23   Double_t        minJetPt      = 0,
24   const Bool_t    copyArray     = kFALSE,  
25   const Bool_t    makeQA        = kFALSE,
26   const char     *fileTable     = "",
27   const char     *taskName      = "JetEmbeddingFromPYTHIATask"
28 )
29 {  
30   // Get the pointer to the existing analysis manager via the static access method.
31   //==============================================================================
32   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
33   if (!mgr)
34   {
35     ::Error("AddTaskJetEmbeddingFromPYTHIA", "No analysis manager to connect to.");
36     return NULL;
37   }  
38   
39   // Check the analysis type using the event handlers connected to the analysis manager.
40   //==============================================================================
41   if (!mgr->GetInputEventHandler())
42   {
43     ::Error("AddTaskJetEmbeddingFromPYTHIA", "This task requires an input event handler");
44     return NULL;
45   }
46   
47   //-------------------------------------------------------
48   // Init the task and do settings
49   //-------------------------------------------------------
50
51   AliJetEmbeddingFromPYTHIATask *jetEmb = new AliJetEmbeddingFromPYTHIATask(taskName,makeQA);
52   jetEmb->SetTracksName(tracksName);
53   jetEmb->SetClusName(clusName);
54   jetEmb->SetCellsName(cellsName);
55   jetEmb->SetMCParticlesName(MCPartName);
56   jetEmb->SetAODTreeName(aodTreeName);
57   jetEmb->SetAODTracksName(aodTracksName);
58   jetEmb->SetAODClusName(aodClusName);
59   jetEmb->SetAODCellsName(aodCellsName);
60   jetEmb->SetAODMCParticlesName(aodMCPartName);
61   jetEmb->SetCentralityRange(minCent, maxCent);
62   jetEmb->SetTriggerMask(mask);
63   jetEmb->SetCopyArray(copyArray);
64   jetEmb->SetJetMinPt(minJetPt);
65   jetEmb->SetNClusters(1);
66   jetEmb->SetMarkMC(0);
67
68   if (strcmp(fileTable, "") != 0)
69     jetEmb->SetFileTable(GenerateFileTable(fileTable));
70
71   jetEmb->SetIncludeNoITS(includeNoITS);
72   TString runPeriod(runperiod);
73   runPeriod.ToLower();
74   if (runPeriod == "lhc12a15e") {
75     jetEmb->SetAODfilterBits(256,512);
76   }
77   else if (runPeriod == "lhc12a15a") {
78     jetEmb->SetAODfilterBits(256,16);
79   }
80   else {
81     if (!runPeriod.IsNull())
82       ::Warning("AddTaskJetEmbeddingFromPYTHIA","Run period %s not known. It will use IsHybridGlobalConstrainedGlobal.", runPeriod.Data());
83   }
84
85   jetEmb->SetPYTHIAPath(simpath);
86
87   if (nPtHard == 0 || ptHardScaling == 0) { // the pt hard bin scaling was not provided, use the default for LHC12a15e_fix AOD149
88     ::Warning("AddTaskJetEmbeddingFromPYTHIA","The pT hard bin scaling has not been provided, will use the default for LHC12a15e_fix AOD149!", runPeriod.Data());
89     nPtHard = 11;
90     ptHardScaling = new Double_t[nPtHard];
91     ptHardScaling [0]  = 0;
92     ptHardScaling [1]  = 5.135193e-05;
93     ptHardScaling [2]  = 5.859497e-06;
94     ptHardScaling [3]  = 4.444755e-07;
95     ptHardScaling [4]  = 4.293118e-08;
96     ptHardScaling [5]  = 5.154750e-09;
97     ptHardScaling [6]  = 6.958612e-10;
98     ptHardScaling [7]  = 1.149828e-10;
99     ptHardScaling [8]  = 2.520137e-11;
100     ptHardScaling [9]  = 6.222240e-12;
101     ptHardScaling [10] = 2.255832e-12;
102   }
103   jetEmb->SetPtHardBinScaling(nPtHard, ptHardScaling);
104
105   //-------------------------------------------------------
106   // Final settings, pass to manager and set the containers
107   //-------------------------------------------------------
108
109   mgr->AddTask(jetEmb);
110     
111   // Create containers for input/output
112   mgr->ConnectInput(jetEmb, 0, mgr->GetCommonInputContainer());
113
114   if (makeQA) {
115     TString contName = taskName;
116     contName += "_histos";
117     AliAnalysisDataContainer *outc = mgr->CreateContainer(contName,
118                                                           TList::Class(),
119                                                           AliAnalysisManager::kOutputContainer,
120                                                           "AnalysisResults.root");
121     mgr->ConnectOutput(jetEmb, 1, outc);
122   }
123
124   return jetEmb;
125 }
126
127 THashTable* GenerateFileTable(const char* list)
128 {
129   THashTable *table = new THashTable();
130
131   TString myList = list;
132   if (myList.Contains("alien:///")) {
133     TFile::Cp(myList,"file:./list.txt");
134     myList = "./list.txt";
135   }
136
137   // Open the input stream
138   ifstream in;
139   in.open(myList.Data());
140
141   // Read the input list of files and add them to the chain
142   TString line;
143   while (in.good()) {
144     in >> line;
145
146     if (line.Length() == 0)
147       continue;
148
149     TObjString *aodFile = new TObjString(line);
150     table->Add(aodFile);
151   }
152
153   return table;
154 }