]>
Commit | Line | Data |
---|---|---|
f3050824 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | /* $Id:$ */ | |
6ef5bfa4 | 17 | |
f3050824 | 18 | #include <TROOT.h> |
f3050824 | 19 | #include <TChain.h> |
20 | #include <TFile.h> | |
21 | #include <TList.h> | |
f3050824 | 22 | #include <TMath.h> |
ddbad1f5 | 23 | #include <TProfile.h> |
6ef5bfa4 | 24 | #include <TTree.h> |
00a1afbd | 25 | #include <TVector3.h> |
26 | #include <TH1F.h> | |
f3050824 | 27 | |
00a1afbd | 28 | #include "AliAnalyseUE.h" |
ddbad1f5 | 29 | #include "AliHistogramsUE.h" |
f3050824 | 30 | #include "AliAnalysisTaskUE.h" |
00a1afbd | 31 | #include "AliHistogramsUE.h" |
32 | ||
f3050824 | 33 | #include "AliAnalysisManager.h" |
34 | #include "AliMCEventHandler.h" | |
f3050824 | 35 | |
623ed0a0 | 36 | #include "AliAnalysisHelperJetTasks.h" |
00a1afbd | 37 | #include "AliAODHandler.h" |
38 | #include "AliAODInputHandler.h" | |
39 | #include "AliGenPythiaEventHeader.h" | |
f3050824 | 40 | #include "AliLog.h" |
00a1afbd | 41 | #include "AliInputEventHandler.h" |
f3050824 | 42 | |
ddbad1f5 | 43 | |
00a1afbd | 44 | //////////////////////////////////////////////////////////////////////// |
45 | // | |
f3050824 | 46 | // Analysis class for Underlying Event studies |
47 | // | |
48 | // Look for correlations on the tranverse regions to | |
49 | // the leading charged jet | |
50 | // | |
02480db2 | 51 | // This class needs as input AOD with track and Jets. |
52 | // The output is a list of histograms | |
f3050824 | 53 | // |
54 | // AOD can be either connected to the InputEventHandler | |
55 | // for a chain of AOD files | |
56 | // or | |
57 | // to the OutputEventHandler | |
58 | // for a chain of ESD files, so this case class should be | |
59 | // in the train after the Jet finder | |
60 | // | |
61 | // Arian.Abrahantes.Quintana@cern.ch | |
62 | // Ernesto.Lopez.Torres@cern.ch | |
ddbad1f5 | 63 | // vallero@physi.uni-heidelberg.de |
f3050824 | 64 | // |
00a1afbd | 65 | //////////////////////////////////////////////////////////////////////// |
f3050824 | 66 | |
f3050824 | 67 | ClassImp( AliAnalysisTaskUE) |
68 | ||
00a1afbd | 69 | // Define global pointer |
70 | AliAnalysisTaskUE* AliAnalysisTaskUE::fgTaskUE=NULL; | |
f3050824 | 71 | |
72 | //____________________________________________________________________ | |
73 | AliAnalysisTaskUE:: AliAnalysisTaskUE(const char* name): | |
94ee88d4 | 74 | AliAnalysisTask(name,""), |
ddbad1f5 | 75 | fHistosUE(0x0), |
00a1afbd | 76 | fAnaUE(0x0), |
6ef5bfa4 | 77 | fAOD(0x0), |
00a1afbd | 78 | fAODBranch("jets"), |
79 | fDebug(0), | |
ddbad1f5 | 80 | fListOfHistos(0x0), |
81 | //Configuration | |
6ef5bfa4 | 82 | fBinsPtInHist(30), |
baf36668 | 83 | fIsNorm2Area(kTRUE), |
00a1afbd | 84 | fMaxJetPtInHist(300.), |
85 | fMinJetPtInHist(0.), | |
623ed0a0 | 86 | fConstrainDistance(kTRUE), |
87 | fMinDistance(0.2), | |
88 | fSimulateChJetPt(kFALSE), | |
89 | fUseAliStack(kTRUE), | |
00a1afbd | 90 | fUseMCParticleBranch(kFALSE), |
94ee88d4 | 91 | fnTracksVertex(3), // QA tracks pointing to principal vertex (= 3 default) |
92 | fZVertex(5.), | |
6ef5bfa4 | 93 | fAnaType(1), |
623ed0a0 | 94 | fConePosition(1), |
00a1afbd | 95 | fConeRadius(0.7), |
96 | fFilterBit(0xFF), | |
97 | fJetsOnFly(kFALSE), | |
98 | fRegionType(1), | |
9d9a3c85 | 99 | fUseChargeHadrons(kFALSE), |
00a1afbd | 100 | fUseChPartJet(kFALSE), |
6ef5bfa4 | 101 | fUsePositiveCharge(kTRUE), |
00a1afbd | 102 | fUseSingleCharge(kFALSE), |
6ef5bfa4 | 103 | fOrdering(1), |
623ed0a0 | 104 | fChJetPtMin(5.0), |
6ef5bfa4 | 105 | fJet1EtaCut(0.2), |
106 | fJet2DeltaPhiCut(2.616), // 150 degrees | |
107 | fJet2RatioPtCut(0.8), | |
108 | fJet3PtCut(15.), | |
6ef5bfa4 | 109 | fTrackEtaCut(0.9), |
00a1afbd | 110 | fTrackPtCut(0.), |
ddbad1f5 | 111 | //For MC |
00a1afbd | 112 | fAvgTrials(1) |
f3050824 | 113 | { |
114 | // Default constructor | |
115 | // Define input and output slots here | |
116 | // Input slot #0 works with a TChain | |
117 | DefineInput(0, TChain::Class()); | |
118 | // Output slot #0 writes into a TList container | |
119 | DefineOutput(0, TList::Class()); | |
94ee88d4 | 120 | |
f3050824 | 121 | } |
122 | ||
00a1afbd | 123 | //____________________________________________________________________ |
124 | AliAnalysisTaskUE:: AliAnalysisTaskUE(const AliAnalysisTaskUE & original): | |
125 | AliAnalysisTask(), | |
ddbad1f5 | 126 | fHistosUE(original.fHistosUE), |
00a1afbd | 127 | fAnaUE(original.fAnaUE), |
128 | fAOD(original.fAOD), | |
129 | fAODBranch(original.fAODBranch), | |
130 | fDebug(original.fDebug), | |
131 | fListOfHistos(original.fListOfHistos), | |
ddbad1f5 | 132 | //Configuration |
00a1afbd | 133 | fBinsPtInHist(original.fBinsPtInHist), |
134 | fIsNorm2Area(original.fIsNorm2Area), | |
135 | fMaxJetPtInHist(original.fMaxJetPtInHist), | |
136 | fMinJetPtInHist(original.fMinJetPtInHist), | |
137 | fConstrainDistance(original.fConstrainDistance), | |
138 | fMinDistance(original.fMinDistance), | |
139 | fSimulateChJetPt(original.fSimulateChJetPt), | |
140 | fUseAliStack(original.fUseAliStack), | |
141 | fUseMCParticleBranch(original.fUseMCParticleBranch), | |
142 | fnTracksVertex(original.fnTracksVertex), // QA tracks pointing to principal vertex (= 3 default) | |
143 | fZVertex(original.fZVertex), | |
144 | fAnaType(original.fAnaType), | |
145 | fConePosition(original.fConePosition), | |
146 | fConeRadius(original.fConeRadius), | |
147 | fFilterBit(original.fFilterBit), | |
148 | fJetsOnFly(original.fJetsOnFly), | |
149 | fRegionType(original.fRegionType), | |
150 | fUseChargeHadrons(original.fUseChargeHadrons), | |
151 | fUseChPartJet(original.fUseChPartJet), | |
152 | fUsePositiveCharge(original.fUsePositiveCharge), | |
153 | fUseSingleCharge(original.fUseSingleCharge), | |
154 | fOrdering(original.fOrdering), | |
155 | fChJetPtMin(original.fChJetPtMin), | |
156 | fJet1EtaCut(original.fJet1EtaCut), | |
157 | fJet2DeltaPhiCut(original.fJet2DeltaPhiCut), // 150 degrees | |
158 | fJet2RatioPtCut(original.fJet2RatioPtCut), | |
159 | fJet3PtCut(original.fJet3PtCut), | |
160 | fTrackEtaCut(original.fTrackEtaCut), | |
161 | fTrackPtCut(original.fTrackPtCut), | |
ddbad1f5 | 162 | //For MC |
00a1afbd | 163 | fAvgTrials(original.fAvgTrials) |
164 | { | |
165 | // Copy constructor | |
166 | } | |
167 | ||
168 | ||
169 | //______________________________________________________________ | |
170 | AliAnalysisTaskUE & AliAnalysisTaskUE::operator = (const AliAnalysisTaskUE & /*source*/) | |
171 | { | |
172 | // assignment operator | |
173 | return *this; | |
174 | } | |
175 | ||
623ed0a0 | 176 | //______________________________________________________________ |
177 | Bool_t AliAnalysisTaskUE::Notify() | |
178 | { | |
179 | // | |
180 | // Implemented Notify() to read the cross sections | |
181 | // and number of trials from pyxsec.root | |
519378fb | 182 | // Copy from AliAnalysisTaskJFSystematics |
856f9829 | 183 | fAvgTrials = 1; |
623ed0a0 | 184 | TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree(); |
519378fb | 185 | Float_t xsection = 0; |
00a1afbd | 186 | Float_t trials = 1; |
623ed0a0 | 187 | if(tree){ |
00a1afbd | 188 | TFile *curfile = tree->GetCurrentFile(); |
189 | if (!curfile) { | |
190 | Error("Notify","No current file"); | |
191 | return kFALSE; | |
192 | } | |
193 | ||
194 | AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,trials); | |
195 | ||
ddbad1f5 | 196 | fHistosUE->GetXsec()->Fill("<#sigma>",xsection); |
9d9a3c85 | 197 | |
00a1afbd | 198 | // construct average trials |
199 | Float_t nEntries = (Float_t)tree->GetTree()->GetEntries(); | |
200 | if(trials>=nEntries && nEntries>0.)fAvgTrials = trials/nEntries; | |
201 | } | |
c4396fd4 | 202 | |
623ed0a0 | 203 | return kTRUE; |
204 | } | |
205 | ||
f3050824 | 206 | //____________________________________________________________________ |
207 | void AliAnalysisTaskUE::ConnectInputData(Option_t* /*option*/) | |
208 | { | |
6ef5bfa4 | 209 | // Connect the input data |
f3050824 | 210 | |
3a9d4bcf | 211 | // We need AODs with tracks and jets. |
212 | // Since AODs can either be connected to the InputEventHandler | |
213 | // or to the OutputEventHandler ( the AOD is created by a previus task in the train ) | |
6ef5bfa4 | 214 | // we need to check where it is and get the pointer to AODEvent in the right way |
f3050824 | 215 | |
00a1afbd | 216 | // Delta AODs are also accepted |
c4396fd4 | 217 | |
218 | ||
219 | if (fDebug > 1) AliInfo("ConnectInputData() "); | |
f3050824 | 220 | |
221 | TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler(); | |
222 | ||
c4396fd4 | 223 | if( handler && handler->InheritsFrom("AliAODInputHandler") ) { // input AOD |
00a1afbd | 224 | fAOD = ((AliAODInputHandler*)handler)->GetEvent(); |
225 | if(!fJetsOnFly){ | |
226 | if (fDebug > 1) AliInfo(" ==== Tracks and Jets from AliAODInputHandler"); | |
227 | }else{ | |
ddbad1f5 | 228 | if (fDebug > 1) AliInfo(" ==== Tracks from AliAODInputHandler / Jets on-the-fly"); |
00a1afbd | 229 | } |
230 | } else { //output AOD | |
231 | handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler(); | |
232 | if( handler && handler->InheritsFrom("AliAODHandler") ) { | |
233 | fAOD = ((AliAODHandler*)handler)->GetAOD(); | |
234 | if (!fJetsOnFly){ | |
235 | if (fDebug > 1) AliInfo(" ==== Tracks and Jets from AliAODHandler"); | |
236 | } else { | |
237 | if (fDebug > 1) AliInfo(" ==== Tracks from AliAODHandler / Jets on-the-fly"); | |
238 | } | |
239 | }else { | |
240 | AliFatal("I can't get any AOD Event Handler"); | |
241 | return; | |
242 | } | |
243 | } | |
244 | ||
245 | fAnaUE->Initialize( *this ); | |
ddbad1f5 | 246 | |
f3050824 | 247 | } |
248 | ||
249 | //____________________________________________________________________ | |
250 | void AliAnalysisTaskUE::CreateOutputObjects() | |
251 | { | |
6ef5bfa4 | 252 | // Create the output container |
00a1afbd | 253 | |
f3050824 | 254 | if (fDebug > 1) AliInfo("CreateOutPutData()"); |
00a1afbd | 255 | |
256 | //Initialize AliAnalysisUE, a class implementing the main analysis algorithms | |
257 | fAnaUE = new AliAnalyseUE(); | |
ddbad1f5 | 258 | fHistosUE = new AliHistogramsUE(); |
259 | ||
260 | if (fListOfHistos != NULL){ | |
261 | delete fListOfHistos; | |
262 | fListOfHistos = NULL; | |
263 | } | |
264 | if (!fListOfHistos){ | |
265 | fListOfHistos = new TList(); | |
266 | fListOfHistos->SetOwner(kTRUE); | |
267 | } | |
00a1afbd | 268 | |
269 | //Initialize output histograms | |
ddbad1f5 | 270 | fHistosUE->CreateHistograms(fListOfHistos,fBinsPtInHist, fMinJetPtInHist, fMaxJetPtInHist, fTrackEtaCut); |
271 | AddSettingsTree(); | |
1e996f55 | 272 | |
ddbad1f5 | 273 | PostData(0,fListOfHistos); |
f3050824 | 274 | } |
275 | ||
f3050824 | 276 | //____________________________________________________________________ |
277 | void AliAnalysisTaskUE::Exec(Option_t */*option*/) | |
278 | { | |
00a1afbd | 279 | // Trigger selection ************************************************ |
280 | AliInputEventHandler* inputHandler = (AliInputEventHandler*) | |
216601f0 | 281 | ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler()); |
3a9d4bcf | 282 | if (!fAnaUE->TriggerSelection(inputHandler)) return; |
283 | ||
284 | // Vertex selection ************************************************* | |
285 | if(!fAnaUE->VertexSelection(fAOD,fnTracksVertex,fZVertex)) return; | |
286 | //if(!fAnaUE->VertexSelectionOld(fAOD)) return; // temporary to compare with old task and to have same cuts for MC !!! | |
00a1afbd | 287 | |
288 | // Execute analysis for current event ****************************** | |
289 | ||
6ef5bfa4 | 290 | if ( fDebug > 3 ) AliInfo( " Processing event..." ); |
00a1afbd | 291 | |
519378fb | 292 | // fetch the pythia header info and get the trials |
293 | AliMCEventHandler* mcHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()); | |
294 | Float_t nTrials = 1; | |
c4396fd4 | 295 | if (mcHandler) { |
00a1afbd | 296 | AliMCEvent* mcEvent = mcHandler->MCEvent(); |
297 | if (mcEvent) { | |
298 | AliGenPythiaEventHeader* pythiaGenHeader = AliAnalysisHelperJetTasks::GetPythiaEventHeader(mcEvent); | |
299 | if(pythiaGenHeader){ | |
300 | nTrials = pythiaGenHeader->Trials(); | |
301 | } | |
302 | } | |
303 | } | |
ddbad1f5 | 304 | fHistosUE->GetTrials()->Fill("#sum{ntrials}",fAvgTrials); |
00a1afbd | 305 | |
306 | //analyse the event | |
02480db2 | 307 | AnalyseUE(); |
ddbad1f5 | 308 | |
309 | PostData(0,fListOfHistos); | |
f3050824 | 310 | } |
f3050824 | 311 | |
ddbad1f5 | 312 | //____________________________________________________________________ |
313 | void AliAnalysisTaskUE::AddSettingsTree() | |
314 | { | |
315 | //Write settings to output list | |
316 | TTree *settingsTree = new TTree("UEAnalysisSettings","Analysis Settings in UE estimation"); | |
317 | settingsTree->Branch("fFilterBit", &fFilterBit,"FilterBit/I"); | |
318 | settingsTree->Branch("fConeRadius", &fConeRadius,"Rad/D"); | |
319 | settingsTree->Branch("fJet1EtaCut", &fJet1EtaCut, "LeadJetEtaCut/D"); | |
320 | settingsTree->Branch("fJet2DeltaPhiCut", &fJet2DeltaPhiCut, "DeltaPhi/D"); | |
321 | settingsTree->Branch("fJet2RatioPtCut", &fJet2RatioPtCut, "Jet2Ratio/D"); | |
322 | settingsTree->Branch("fJet3PtCut", &fJet3PtCut, "Jet3PtCut/D"); | |
323 | settingsTree->Branch("fTrackPtCut", &fTrackPtCut, "TrackPtCut/D"); | |
324 | settingsTree->Branch("fTrackEtaCut", &fTrackEtaCut, "TrackEtaCut/D"); | |
325 | settingsTree->Branch("fAnaType", &fAnaType, "Ana/I"); | |
326 | settingsTree->Branch("fRegionType", &fRegionType,"Reg/I"); | |
327 | settingsTree->Branch("fOrdering", &fOrdering,"OrderMeth/I"); | |
328 | settingsTree->Branch("fUseChPartJet", &fUseChPartJet,"UseChPart/O"); | |
329 | settingsTree->Branch("fUseChargeHadrons", &fUseChargeHadrons,"UseChHadrons/O"); | |
330 | settingsTree->Branch("fUseSingleCharge", &fUseSingleCharge,"UseSingleCh/O"); | |
331 | settingsTree->Branch("fUsePositiveCharge", &fUsePositiveCharge,"UsePositiveCh/O"); | |
332 | settingsTree->Fill(); | |
333 | fListOfHistos->Add(settingsTree); | |
334 | } | |
335 | ||
f3050824 | 336 | //____________________________________________________________________ |
337 | void AliAnalysisTaskUE::AnalyseUE() | |
338 | { | |
00a1afbd | 339 | |
6ef5bfa4 | 340 | |
00a1afbd | 341 | // Get jets and order by pT |
342 | TVector3 jetVect[3]; | |
ddbad1f5 | 343 | *jetVect = fAnaUE->GetOrderedClusters(fAODBranch, fUseChPartJet, fChJetPtMin ); |
c4396fd4 | 344 | |
00a1afbd | 345 | if( jetVect[0].Pt() < 0. ) { |
346 | if( fDebug > 1 ) AliInfo("\n Skipping Event, not jet found..."); | |
347 | return; | |
348 | } else { | |
349 | if (fDebug >1 ) AliInfo(Form("\n Pt Leading Jet = %6.1f eta=%5.3f ", jetVect[0].Pt(), jetVect[0].Eta() )); | |
350 | } | |
c4396fd4 | 351 | |
3a9d4bcf | 352 | // Select events according to analysis type *********************************** |
00a1afbd | 353 | if ( ! (fAnaUE->AnaTypeSelection(jetVect))) return; |
02480db2 | 354 | |
00a1afbd | 355 | // Find max and min regions with real tracks |
356 | if (!fUseMCParticleBranch){ | |
357 | // Primary vertex distribution | |
358 | AliAODVertex* vertex = (AliAODVertex*)fAOD->GetPrimaryVertex(); | |
ddbad1f5 | 359 | fHistosUE->FillHistogram("hVertexMult",vertex->GetNContributors()); |
00a1afbd | 360 | |
361 | // Fill leading "jet" histogram | |
ddbad1f5 | 362 | fHistosUE->FillHistogram("hEleadingPt",jetVect[0].Pt()); |
02480db2 | 363 | |
3a9d4bcf | 364 | fAnaUE->FindMaxMinRegions( jetVect, fConePosition, 0, 0 ); |
baf36668 | 365 | |
00a1afbd | 366 | }else { |
6ef5bfa4 | 367 | |
623ed0a0 | 368 | // this is the part we only use when we have MC information |
369 | // More than a test for values of it also resumes the reconstruction efficiency of jets | |
370 | // As commented bellow if available for the data, we try to pair reconstructed jets with simulated ones | |
371 | // afterwards we kept angular variables of MC jet to perform UE analysis over MC particles | |
372 | // TODO: Handle Multiple jet environment. 06/2009 just suited for inclusive jet condition ( fAnaType = 1 ) | |
6ef5bfa4 | 373 | |
623ed0a0 | 374 | AliMCEventHandler* mcHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()); |
375 | if (!mcHandler) { | |
376 | Printf("ERROR: Could not retrieve MC event handler"); | |
377 | return; | |
378 | } | |
379 | ||
380 | AliMCEvent* mcEvent = mcHandler->MCEvent(); | |
381 | if (!mcEvent) { | |
382 | Printf("ERROR: Could not retrieve MC event"); | |
383 | return; | |
384 | } | |
385 | AliGenPythiaEventHeader* pythiaGenHeader = AliAnalysisHelperJetTasks::GetPythiaEventHeader(mcEvent); | |
386 | if(!pythiaGenHeader){ | |
387 | return; | |
388 | } | |
f3050824 | 389 | |
00a1afbd | 390 | fAnaUE->AnalyseMC(jetVect,mcEvent,pythiaGenHeader, fConePosition, fUseAliStack, fConstrainDistance, fMinDistance); |
623ed0a0 | 391 | |
f3050824 | 392 | } |
f3050824 | 393 | |
00a1afbd | 394 | fAnaUE->FillRegions(fIsNorm2Area, jetVect); |
6ef5bfa4 | 395 | |
f3050824 | 396 | } |
397 | ||
398 | //____________________________________________________________________ | |
00a1afbd | 399 | AliAnalysisTaskUE* AliAnalysisTaskUE::Instance() |
400 | { | |
f3050824 | 401 | |
00a1afbd | 402 | //Create instance |
403 | if (fgTaskUE) { | |
404 | return fgTaskUE; | |
405 | } else { | |
406 | fgTaskUE = new AliAnalysisTaskUE(); | |
407 | return fgTaskUE; | |
408 | } | |
02480db2 | 409 | } |
6ef5bfa4 | 410 | |
ddbad1f5 | 411 | |
6ef5bfa4 | 412 | //____________________________________________________________________ |
00a1afbd | 413 | void AliAnalysisTaskUE::Terminate(Option_t */*option*/) |
6ef5bfa4 | 414 | { |
94ee88d4 | 415 | |
00a1afbd | 416 | // Terminate analysis |
6ef5bfa4 | 417 | |
3a9d4bcf | 418 | if (!gROOT->IsBatch()){ |
00a1afbd | 419 | fListOfHistos = dynamic_cast<TList*> (GetOutputData(0)); |
420 | if (!fListOfHistos){ | |
421 | AliError("Histogram List is not available"); | |
422 | return; | |
3a9d4bcf | 423 | } |
00a1afbd | 424 | //call class AliHistogramsUE |
425 | AliHistogramsUE *histos=new AliHistogramsUE(fListOfHistos); | |
426 | histos->DrawUE(0); | |
6ef5bfa4 | 427 | } else { |
00a1afbd | 428 | AliInfo(" Batch mode, not histograms will be shown..."); |
6ef5bfa4 | 429 | } |
00a1afbd | 430 | |
6ef5bfa4 | 431 | if( fDebug > 1 ) |
432 | AliInfo("End analysis"); | |
00a1afbd | 433 | |
6ef5bfa4 | 434 | } |
f3050824 | 435 | |
6ef5bfa4 | 436 | void AliAnalysisTaskUE::WriteSettings() |
1e996f55 | 437 | { |
00a1afbd | 438 | |
439 | //Print analysis settings on screen | |
440 | if (fDebug > 5){ | |
6ef5bfa4 | 441 | AliInfo(" All Analysis Settings in Saved Tree"); |
ddbad1f5 | 442 | fListOfHistos = dynamic_cast<TList*> (GetOutputData(0)); |
443 | if (!fListOfHistos){ | |
444 | AliError("Histogram List is not available"); | |
445 | return; | |
446 | } | |
447 | TTree *tree = (TTree*)(fListOfHistos->FindObject("UEAnalysisSettings")); | |
448 | tree->Scan(); | |
449 | } | |
6ef5bfa4 | 450 | } |