]>
Commit | Line | Data |
---|---|---|
6e463db3 | 1 | AliAnalysisTask *AddTask_lowmass_lowmasspp(){ |
2 | ||
3 | ||
4 | //get the current analysis manager | |
5 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
6 | if (!mgr) { | |
7 | Error("AddTask_lowmass", "No analysis manager found."); | |
8 | return 0; | |
9 | } | |
10 | ||
11 | ||
12 | Bool_t RunEMCtrigger = 0; | |
13 | Bool_t RunHighMulttrigger = 0; | |
14 | Bool_t RunMBtrigger = 1; | |
15 | ||
16 | //Do we have an MC handler? | |
17 | Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0); | |
18 | ||
19 | ||
20 | ||
21 | //Get the current train configuration | |
22 | ||
23 | //Directories for GSI train: | |
24 | TString configBasePath("$TRAIN_ROOT/lowmass_LOWMASS/"); | |
25 | TString trainRoot=gSystem->Getenv("TRAIN_ROOT"); | |
26 | ||
27 | //Base Directory for GRID / LEGO Train | |
28 | if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/"; | |
29 | ||
30 | TString configFile("Config_lowmasspp.C"); | |
31 | TString configFilePath(configBasePath+configFile); | |
32 | ||
33 | ||
34 | if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data())) | |
35 | gROOT->LoadMacro(configFilePath.Data()); | |
36 | ||
37 | ||
38 | if(RunMBtrigger){ | |
39 | //create task and add it to the manager (MB) | |
40 | AliAnalysisTaskMultiDielectron *taskMB = new AliAnalysisTaskMultiDielectron("MultiDieMB"); | |
41 | if (!hasMC) taskMB->UsePhysicsSelection(); | |
42 | taskMB->SelectCollisionCandidates(AliVEvent::kMB); | |
43 | taskMB->SetRejectPileup(); | |
44 | } | |
45 | ||
46 | if(RunHighMulttrigger){ | |
47 | //create task and add it to the manager (HighMult) | |
48 | AliAnalysisTaskMultiDielectron *taskHighMult = new AliAnalysisTaskMultiDielectron("MultiDieHighMult"); | |
49 | if (!hasMC) taskHighMult->UsePhysicsSelection(); | |
50 | taskHighMult->SelectCollisionCandidates(AliVEvent::kHighMult); | |
51 | taskHighMult->SetRejectPileup(); | |
52 | } | |
53 | ||
54 | if(RunEMCtrigger){ | |
55 | //create task and add it to the manager (EMC1) | |
56 | AliAnalysisTaskMultiDielectron *taskEMC1 = new AliAnalysisTaskMultiDielectron("MultiDieEMC1"); | |
57 | if (!hasMC) taskEMC1->UsePhysicsSelection(); | |
58 | taskEMC1->SelectCollisionCandidates(AliVEvent::kEMC1); | |
59 | taskEMC1->SetRejectPileup(); | |
60 | } | |
61 | ||
62 | //Add event filter | |
63 | AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0"); | |
64 | eventCuts->SetRequireVertex(); | |
65 | eventCuts->SetVertexZ(-10.,10.); | |
66 | eventCuts->SetMinVtxContributors(1); | |
67 | ||
68 | if(RunMBtrigger)taskMB->SetEventFilter(eventCuts); | |
69 | if(RunHighMulttrigger) taskHighMult->SetEventFilter(eventCuts); | |
70 | if(RunEMCtrigger) taskEMC1->SetEventFilter(eventCuts); | |
71 | ||
72 | if(RunMBtrigger) mgr->AddTask(taskMB); | |
73 | if(RunHighMulttrigger)mgr->AddTask(taskHighMult); | |
74 | if(RunEMCtrigger)mgr->AddTask(taskEMC1); | |
75 | ||
76 | ||
77 | //add dielectron analysis with different cuts to the task | |
78 | for (Int_t i=0; i<nDie; ++i){ //nDie defined in config file | |
79 | if(RunMBtrigger){ | |
80 | //MB | |
81 | AliDielectron *diel_lowMB = Config_lowmasspp(i); | |
82 | if(!diel_lowMB)continue; | |
83 | taskMB->AddDielectron(diel_lowMB); | |
84 | } | |
85 | if(RunHighMulttrigger){ | |
86 | //HighMult | |
87 | AliDielectron *diel_lowHighMult = Config_lowmasspp(i); | |
88 | if(!diel_lowHighMult)continue; | |
89 | taskHighMult->AddDielectron(diel_lowHighMult); | |
90 | } | |
91 | if(RunEMCtrigger){ | |
92 | //EMC1 | |
93 | AliDielectron *diel_lowEMC1 = Config_lowmasspp(i); | |
94 | if(!diel_lowEMC1)continue; | |
95 | taskEMC1->AddDielectron(diel_lowEMC1); | |
96 | } | |
97 | ||
98 | }//loop | |
99 | if(RunMBtrigger){ | |
100 | //create output container | |
101 | AliAnalysisDataContainer *coutput1 = | |
102 | mgr->CreateContainer("tree_lowmass", | |
103 | TTree::Class(), | |
104 | AliAnalysisManager::kExchangeContainer, | |
105 | "default"); | |
106 | ||
107 | AliAnalysisDataContainer *cOutputHist1 = | |
108 | mgr->CreateContainer("Histos_diel_lowmass", | |
109 | TList::Class(), | |
110 | AliAnalysisManager::kOutputContainer, | |
111 | "lowmass_lowmass.root"); | |
112 | ||
113 | AliAnalysisDataContainer *cOutputHist2 = | |
114 | mgr->CreateContainer("CF_diel_lowmass", | |
115 | TList::Class(), | |
116 | AliAnalysisManager::kOutputContainer, | |
117 | "lowmass_lowmass.root"); | |
118 | ||
119 | AliAnalysisDataContainer *cOutputHist3 = | |
120 | mgr->CreateContainer("lowmass_lowmass_EventStat", | |
121 | TList::Class(), | |
122 | AliAnalysisManager::kOutputContainer, | |
123 | "lowmass_lowmass.root"); | |
124 | ||
125 | mgr->ConnectInput(taskMB, 0, mgr->GetCommonInputContainer()); | |
126 | mgr->ConnectOutput(taskMB, 0, coutput1 ); | |
127 | mgr->ConnectOutput(taskMB, 1, cOutputHist1); | |
128 | mgr->ConnectOutput(taskMB, 2, cOutputHist2); | |
129 | mgr->ConnectOutput(taskMB, 3, cOutputHist3); | |
130 | } | |
131 | if(RunHighMulttrigger){ | |
132 | //create output container (HighMult) | |
133 | AliAnalysisDataContainer *coutputHighMult1 = | |
134 | mgr->CreateContainer("tree_lowmassHighMult", | |
135 | TTree::Class(), | |
136 | AliAnalysisManager::kExchangeContainer, | |
137 | "default"); | |
138 | ||
139 | AliAnalysisDataContainer *cOutputHistHighMult1 = | |
140 | mgr->CreateContainer("Histos_diel_lowmassHighMult", | |
141 | TList::Class(), | |
142 | AliAnalysisManager::kOutputContainer, | |
143 | "lowmass_lowmassHighMult.root"); | |
144 | ||
145 | AliAnalysisDataContainer *cOutputHistHighMult2 = | |
146 | mgr->CreateContainer("CF_diel_lowmassHighMult", | |
147 | TList::Class(), | |
148 | AliAnalysisManager::kOutputContainer, | |
149 | "lowmass_lowmassHighMult.root"); | |
150 | ||
151 | AliAnalysisDataContainer *cOutputHistHighMult3 = | |
152 | mgr->CreateContainer("lowmass_lowmass_EventStatHighMult", | |
153 | TList::Class(), | |
154 | AliAnalysisManager::kOutputContainer, | |
155 | "lowmass_lowmassHighMult.root"); | |
156 | } | |
157 | ||
158 | if(RunEMCtrigger){ | |
159 | ||
160 | //create output container (EMC1) | |
161 | AliAnalysisDataContainer *coutputEMC11 = | |
162 | mgr->CreateContainer("tree_lowmassEMC1", | |
163 | TTree::Class(), | |
164 | AliAnalysisManager::kExchangeContainer, | |
165 | "default"); | |
166 | ||
167 | AliAnalysisDataContainer *cOutputHistEMC11 = | |
168 | mgr->CreateContainer("Histos_diel_lowmassEMC1", | |
169 | TList::Class(), | |
170 | AliAnalysisManager::kOutputContainer, | |
171 | "lowmass_lowmassEMC1.root"); | |
172 | ||
173 | AliAnalysisDataContainer *cOutputHistEMC12 = | |
174 | mgr->CreateContainer("CF_diel_lowmassEMC1", | |
175 | TList::Class(), | |
176 | AliAnalysisManager::kOutputContainer, | |
177 | "lowmass_lowmassEMC1.root"); | |
178 | ||
179 | AliAnalysisDataContainer *cOutputHistEMC13 = | |
180 | mgr->CreateContainer("lowmass_lowmass_EventStatEMC1", | |
181 | TList::Class(), | |
182 | AliAnalysisManager::kOutputContainer, | |
183 | "lowmass_lowmassEMC1.root"); | |
184 | } | |
185 | ||
186 | //questionable regarding variable visibility | |
187 | if(RunHighMulttrigger){ | |
188 | mgr->ConnectInput(taskHighMult, 0, mgr->GetCommonInputContainer()); | |
189 | mgr->ConnectOutput(taskHighMult, 0, coutputHighMult1 ); | |
190 | mgr->ConnectOutput(taskHighMult, 1, cOutputHistHighMult1); | |
191 | mgr->ConnectOutput(taskHighMult, 2, cOutputHistHighMult2); | |
192 | mgr->ConnectOutput(taskHighMult, 3, cOutputHistHighMult3); | |
193 | } | |
194 | if(RunEMCtrigger){ | |
195 | mgr->ConnectInput(taskEMC1, 0, mgr->GetCommonInputContainer()); | |
196 | mgr->ConnectOutput(taskEMC1, 0, coutputEMC11 ); | |
197 | mgr->ConnectOutput(taskEMC1, 1, cOutputHistEMC11); | |
198 | mgr->ConnectOutput(taskEMC1, 2, cOutputHistEMC12); | |
199 | mgr->ConnectOutput(taskEMC1, 3, cOutputHistEMC13); | |
200 | } | |
201 | ||
202 | ||
203 | return taskMB; | |
204 | ||
205 | } |