2 // $Id: AliHLTJETAnalysisMerge.cxx $
3 //**************************************************************************
4 //* This file is property of and copyright by the ALICE HLT Project *
5 //* ALICE Experiment at CERN, All rights reserved. *
7 //* Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
8 //* for The ALICE HLT Project. *
10 //* Permission to use, copy, modify and distribute this software and its *
11 //* documentation strictly for non-commercial purposes is hereby granted *
12 //* without fee, provided that the above copyright notice appears in all *
13 //* copies and that both the copyright notice and this permission notice *
14 //* appear in the supporting documentation. The authors make no claims *
15 //* about the suitability of this software for any purpose. It is *
16 //* provided "as is" without express or implied warranty. *
17 //**************************************************************************
19 /** @file AliHLTJETAnalysisMerge.cxx
20 @author Jochen Thaeder
22 @brief Container merging analysis objects
25 // see header file for class documentation
27 // refer to README to build package
29 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
38 #include "AliHLTJETJets.h"
40 #include "AliHLTJETAnalysisMerge.h"
41 #include "AliHLTJETAnalysisJets.h"
43 /** ROOT macro for the implementation of ROOT specific class methods */
44 ClassImp(AliHLTJETAnalysisMerge)
47 * ---------------------------------------------------------------------------------
48 * Constructor / Destructor
49 * ---------------------------------------------------------------------------------
52 //##################################################################################
53 AliHLTJETAnalysisMerge::AliHLTJETAnalysisMerge() :
55 fAnalysisJetsArray(NULL) {
56 // see header file for class documentation
58 // refer to README to build package
60 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
64 //##################################################################################
65 AliHLTJETAnalysisMerge::~AliHLTJETAnalysisMerge() {
66 // see header file for class documentation
69 fCanvasArray->Clear();
74 if ( fAnalysisJetsArray ) {
75 fAnalysisJetsArray->Clear();
76 delete fAnalysisJetsArray;
78 fAnalysisJetsArray = NULL;
82 * ---------------------------------------------------------------------------------
84 * ---------------------------------------------------------------------------------
87 //##################################################################################
88 Int_t AliHLTJETAnalysisMerge::Initialize() {
89 // see header file for class documentation
93 fCanvasArray = new TObjArray();
94 fCanvasArray->SetOwner();
96 fAnalysisJetsArray = new TObjArray();
102 * ---------------------------------------------------------------------------------
104 * ---------------------------------------------------------------------------------
107 //##################################################################################
108 void AliHLTJETAnalysisMerge::AddJets( AliHLTJETAnalysisJets* jets ) {
109 // see header file for class documentation
111 fAnalysisJetsArray->Add( jets );
117 * ---------------------------------------------------------------------------------
119 * ---------------------------------------------------------------------------------
122 //##################################################################################
123 void AliHLTJETAnalysisMerge::CreateCanvas() {
124 // see header file for class documentation
126 CreateCanvasSpectra();
130 CreateCanvasMatched();
135 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
136 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
137 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
138 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
140 ////// PRIVATE //////
142 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
143 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
144 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
145 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
148 * ---------------------------------------------------------------------------------
150 * ---------------------------------------------------------------------------------
153 //##################################################################################
154 void AliHLTJETAnalysisMerge::CreateCanvasSpectra() {
155 // see header file for class documentation
157 TString canvasName = "JetSpectra";
159 AliHLTJETAnalysisJets* jets =
160 reinterpret_cast<AliHLTJETAnalysisJets*>((*fAnalysisJetsArray)[fAnalysisJetsArray->GetLast()]);
164 TCanvas* canvas = AddCanvas( Form("E_{t} ")+canvasName, 3, 3 );
166 DrawHistogram(canvas, 1, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
167 AliHLTJETAnalysisBase::kSpectraRecoAll),kTRUE, kFALSE);
168 DrawHistogram(canvas, 2, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
169 AliHLTJETAnalysisBase::kSpectraRecoMatched),kTRUE, kFALSE);
170 DrawHistogram(canvas, 3, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
171 AliHLTJETAnalysisBase::kSpectraRecoUnmatched),kTRUE, kFALSE);
173 DrawHistogram(canvas, 4, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
174 AliHLTJETAnalysisBase::kSpectraRecoLeadAll),kTRUE, kFALSE);
175 DrawHistogram(canvas, 5, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
176 AliHLTJETAnalysisBase::kSpectraRecoLeadMatched),kTRUE, kFALSE);
177 DrawHistogram(canvas, 6, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
178 AliHLTJETAnalysisBase::kSpectraRecoLeadUnmatched),kTRUE, kFALSE);
180 DrawHistogram(canvas, 7, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
181 AliHLTJETAnalysisBase::kSpectraPythiaAll),kTRUE, kFALSE);
182 DrawHistogram(canvas, 8, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
183 AliHLTJETAnalysisBase::kSpectraPythiaMatched),kTRUE, kFALSE);
184 DrawHistogram(canvas, 9, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEt,
185 AliHLTJETAnalysisBase::kSpectraPythiaUnmatched),kTRUE, kFALSE);
189 canvas = AddCanvas( Form("#eta ")+canvasName, 3, 3 );
191 DrawHistogram(canvas, 1, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
192 AliHLTJETAnalysisBase::kSpectraRecoAll),kTRUE, kFALSE);
193 DrawHistogram(canvas, 2, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
194 AliHLTJETAnalysisBase::kSpectraRecoMatched),kTRUE, kFALSE);
195 DrawHistogram(canvas, 3, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
196 AliHLTJETAnalysisBase::kSpectraRecoUnmatched),kTRUE, kFALSE);
198 DrawHistogram(canvas, 4, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
199 AliHLTJETAnalysisBase::kSpectraRecoLeadAll),kTRUE, kFALSE);
200 DrawHistogram(canvas, 5, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
201 AliHLTJETAnalysisBase::kSpectraRecoLeadMatched),kTRUE, kFALSE);
202 DrawHistogram(canvas, 6, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
203 AliHLTJETAnalysisBase::kSpectraRecoLeadUnmatched),kTRUE, kFALSE);
205 DrawHistogram(canvas, 7, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
206 AliHLTJETAnalysisBase::kSpectraPythiaAll),kTRUE, kFALSE);
207 DrawHistogram(canvas, 8, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
208 AliHLTJETAnalysisBase::kSpectraPythiaMatched),kTRUE, kFALSE);
209 DrawHistogram(canvas, 9, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraEta,
210 AliHLTJETAnalysisBase::kSpectraPythiaUnmatched),kTRUE, kFALSE);
214 canvas = AddCanvas( Form("#phi ")+canvasName, 3, 3);
216 DrawHistogram(canvas, 1, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
217 AliHLTJETAnalysisBase::kSpectraRecoAll),kTRUE, kFALSE);
218 DrawHistogram(canvas, 2, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
219 AliHLTJETAnalysisBase::kSpectraRecoMatched),kTRUE, kFALSE);
220 DrawHistogram(canvas, 3, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
221 AliHLTJETAnalysisBase::kSpectraRecoUnmatched),kTRUE, kFALSE);
223 DrawHistogram(canvas, 4, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
224 AliHLTJETAnalysisBase::kSpectraRecoLeadAll),kTRUE, kFALSE);
225 DrawHistogram(canvas, 5, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
226 AliHLTJETAnalysisBase::kSpectraRecoLeadMatched),kTRUE, kFALSE);
227 DrawHistogram(canvas, 6, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
228 AliHLTJETAnalysisBase::kSpectraRecoLeadUnmatched),kTRUE, kFALSE);
230 DrawHistogram(canvas, 7, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
231 AliHLTJETAnalysisBase::kSpectraPythiaAll),kTRUE, kFALSE);
232 DrawHistogram(canvas, 8, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
233 AliHLTJETAnalysisBase::kSpectraPythiaMatched),kTRUE, kFALSE);
234 DrawHistogram(canvas, 9, jets->GetHistogram(AliHLTJETAnalysisBase::kHistSpectraPhi,
235 AliHLTJETAnalysisBase::kSpectraPythiaUnmatched),kTRUE, kFALSE);
240 //##################################################################################
241 void AliHLTJETAnalysisMerge::CreateCanvasDelta() {
242 // see header file for class documentation
244 TString canvasName = "JetDelta";
246 AliHLTJETAnalysisJets* jets =
247 reinterpret_cast<AliHLTJETAnalysisJets*>((*fAnalysisJetsArray)[fAnalysisJetsArray->GetLast()]);
251 TCanvas* canvas = AddCanvas( Form("#DeltaE_{t} ")+canvasName, 2, 2 );
253 DrawHistogram(canvas, 1, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaEt,
254 AliHLTJETAnalysisBase::kDeltaAll),kTRUE, kFALSE);
255 DrawHistogram(canvas, 2, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaEt,
256 AliHLTJETAnalysisBase::kDeltaMatchedAll),kTRUE, kFALSE);
257 DrawHistogram(canvas, 3, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaEt,
258 AliHLTJETAnalysisBase::kDeltaLead),kTRUE, kFALSE);
259 DrawHistogram(canvas, 4, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaEt,
260 AliHLTJETAnalysisBase::kDeltaMatchedLead),kTRUE, kFALSE);
264 canvas = AddCanvas( Form("#Delta#eta} ")+canvasName, 2, 2 );
266 DrawHistogram(canvas, 1, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaEta,
267 AliHLTJETAnalysisBase::kDeltaAll),kTRUE, kFALSE);
268 DrawHistogram(canvas, 2, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaEta,
269 AliHLTJETAnalysisBase::kDeltaMatchedAll),kTRUE, kFALSE);
270 DrawHistogram(canvas, 3, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaEta,
271 AliHLTJETAnalysisBase::kDeltaLead),kTRUE, kFALSE);
272 DrawHistogram(canvas, 4, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaEta,
273 AliHLTJETAnalysisBase::kDeltaMatchedLead),kTRUE, kFALSE);
277 canvas = AddCanvas( Form("#Delta#phi ")+canvasName, 2, 2 );
279 DrawHistogram(canvas, 1, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaPhi,
280 AliHLTJETAnalysisBase::kDeltaAll),kTRUE, kFALSE);
281 DrawHistogram(canvas, 2, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaPhi,
282 AliHLTJETAnalysisBase::kDeltaMatchedAll),kTRUE, kFALSE);
283 DrawHistogram(canvas, 3, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaPhi,
284 AliHLTJETAnalysisBase::kDeltaLead),kTRUE, kFALSE);
285 DrawHistogram(canvas, 4, jets->GetHistogram(AliHLTJETAnalysisBase::kHistDeltaPhi,
286 AliHLTJETAnalysisBase::kDeltaMatchedLead),kTRUE, kFALSE);
288 // -- Delta Eta Delta Phi
289 // ------------------------
290 canvas = AddCanvas( Form("#Delta#eta#Delta#phi ")+canvasName, 2, 2 );
292 DrawHistogram(canvas, 1, jets->GetHistogram( AliHLTJETAnalysisBase::kHistDeltaEtaDeltaPhi,
293 AliHLTJETAnalysisBase::kDeltaAll ),kTRUE, kFALSE);
294 DrawHistogram(canvas, 2, jets->GetHistogram( AliHLTJETAnalysisBase::kHistDeltaEtaDeltaPhi,
295 AliHLTJETAnalysisBase::kDeltaMatchedAll ),kTRUE, kFALSE);
296 DrawHistogram(canvas, 3, jets->GetHistogram( AliHLTJETAnalysisBase::kHistDeltaEtaDeltaPhi,
297 AliHLTJETAnalysisBase::kDeltaLead ),kTRUE, kFALSE);
298 DrawHistogram(canvas, 4, jets->GetHistogram( AliHLTJETAnalysisBase::kHistDeltaEtaDeltaPhi,
299 AliHLTJETAnalysisBase::kDeltaMatchedLead ),kTRUE, kFALSE);
304 //##################################################################################
305 void AliHLTJETAnalysisMerge::CreateCanvasMatched() {
306 // see header file for class documentation
308 TString canvasName = "JetMatched";
310 AliHLTJETAnalysisJets* jets =
311 reinterpret_cast<AliHLTJETAnalysisJets*>((*fAnalysisJetsArray)[fAnalysisJetsArray->GetLast()]);
315 TCanvas* canvas = AddCanvas( Form("Correlations + Resolutions")+canvasName, 2, 3 );
317 DrawHistogram(canvas, 1, jets->GetHistogram(AliHLTJETAnalysisBase::kHistCorrelationsJetEt,
318 AliHLTJETAnalysisBase::kPlotAll),kTRUE, kFALSE);
319 DrawHistogram(canvas, 2, jets->GetHistogram(AliHLTJETAnalysisBase::kHistCorrelationsJetEt,
320 AliHLTJETAnalysisBase::kPlotLead),kTRUE, kFALSE);
322 DrawHistogram(canvas, 3, jets->GetHistogram(AliHLTJETAnalysisBase::kHistResolutionsJetEt,
323 AliHLTJETAnalysisBase::kPlotAll),kTRUE, kFALSE);
324 DrawHistogram(canvas, 4, jets->GetHistogram(AliHLTJETAnalysisBase::kHistResolutionsJetEt,
325 AliHLTJETAnalysisBase::kPlotLead),kTRUE, kFALSE);
327 DrawHistogram(canvas, 5, jets->GetHistogram(AliHLTJETAnalysisBase::kHistResolutionsDiJetEt,
328 AliHLTJETAnalysisBase::kPlotAll),kTRUE, kFALSE);
329 DrawHistogram(canvas, 6, jets->GetHistogram(AliHLTJETAnalysisBase::kHistResolutionsDiJetEt,
330 AliHLTJETAnalysisBase::kPlotLead),kTRUE, kFALSE);
336 * ---------------------------------------------------------------------------------
338 * ---------------------------------------------------------------------------------
341 //##################################################################################
342 TCanvas* AliHLTJETAnalysisMerge::AddCanvas( TString name, Int_t divideX=1, Int_t divideY=1 ) {
343 // see header file for class documentation
345 fCanvasArray->Add (new TCanvas(name, name, 10, 10, 1400, 800));
346 reinterpret_cast<TCanvas*>((*fCanvasArray)[fCanvasArray->GetLast()])->Divide(divideX,divideY);
348 return reinterpret_cast<TCanvas*>((*fCanvasArray)[fCanvasArray->GetLast()]);
351 //##################################################################################
352 void AliHLTJETAnalysisMerge::DrawHistogram( TCanvas* canvas, Int_t idx, TH1* hist,
353 Bool_t bScale=kFALSE, Bool_t bLogY=kFALSE) {
354 // see header file for class documentation
359 TVirtualPad* pad = canvas->cd(idx);
362 hist->Scale( 1./hist->GetBinWidth(0) );
364 if ( bLogY && hist->GetEntries() != 0 )
370 if ( !strcmp(hist->ClassName(),"TH2F") )