]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muondep/AliAnalysisTaskMuonTrackingEff.cxx
Added method to set only covariance matrix
[u/mrichter/AliRoot.git] / PWG3 / muondep / AliAnalysisTaskMuonTrackingEff.cxx
CommitLineData
128a8042 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//Class to calculate the intrinsic efficiency of the detection elements of the
17//MUON tracking chambers in function of the position in the detection element.
18//Author: Nicolas LE BRIS - SUBATECH Nantes
19
20
21//ROOT includes
128a8042 22#include <TChain.h>
23#include <TFile.h>
128a8042 24#include <TClonesArray.h>
25#include <TH2F.h>
26
27//ANALYSIS includes
28#include "AliAnalysisManager.h"
128a8042 29
30//STEER includes
31#include "AliESDEvent.h"
32#include "AliESDMuonTrack.h"
33#include "AliESDInputHandler.h"
f7a1cc68 34#include "AliMagF.h"
128a8042 35#include "AliTracker.h"
36#include "AliAnalysisManager.h"
fc7a3fd3 37#include "AliGeomManager.h"
38
128a8042 39
27f15548 40//PWG3/muondep includes
128a8042 41#include "AliAnalysisTaskMuonTrackingEff.h"
42#include "AliCheckMuonDetEltResponse.h"
43
44//MUON includes
128a8042 45#include "AliMUONTrackExtrap.h"
27f15548 46#include "AliMUONGeometryTransformer.h"
128a8042 47
48ClassImp(AliAnalysisTaskMuonTrackingEff)
49
27f15548 50const Int_t AliAnalysisTaskMuonTrackingEff::fgkTotNbrOfDetectionElt = 156;
51const Int_t AliAnalysisTaskMuonTrackingEff::fgkTotNbrOfChamber = 10;
128a8042 52
53//________________________________________________________________________
54AliAnalysisTaskMuonTrackingEff::AliAnalysisTaskMuonTrackingEff()
0246246b 55 :
0246246b 56 AliAnalysisTask(),
0246246b 57 fESD(0x0),
fc7a3fd3 58 fTransformer(0x0),
0246246b 59 fDetEltEffHistList(0x0),
60 fDetEltTDHistList(0x0),
61 fDetEltTTHistList(0x0),
62 fChamberEffHistList(0x0),
63 fChamberTDHistList(0x0),
ce1b0b6f 64 fChamberTTHistList(0x0),
6db6876c 65 fChamberEff(0x0),
ce1b0b6f 66 fIsCosmicData(kFALSE)
128a8042 67{
665701ae 68/// Default constructor
69}
70//________________________________________________________________________
71AliAnalysisTaskMuonTrackingEff::AliAnalysisTaskMuonTrackingEff(const AliAnalysisTaskMuonTrackingEff& src)
0246246b 72 :
0246246b 73 AliAnalysisTask(src),
0246246b 74 fESD(0x0),
fc7a3fd3 75 fTransformer(0x0),
0246246b 76 fDetEltEffHistList(0x0),
77 fDetEltTDHistList(0x0),
78 fDetEltTTHistList(0x0),
79 fChamberEffHistList(0x0),
80 fChamberTDHistList(0x0),
ce1b0b6f 81 fChamberTTHistList(0x0),
6db6876c 82 fChamberEff(0x0),
ce1b0b6f 83 fIsCosmicData(kFALSE)
665701ae 84{
85 /// copy ctor
86 src.Copy(*this);
87}
88//________________________________________________________________________
89AliAnalysisTaskMuonTrackingEff& AliAnalysisTaskMuonTrackingEff::operator=(const AliAnalysisTaskMuonTrackingEff& src)
90{
91 /// assignement operator
92 if ( this != &src )
93 {
94 src.Copy(*this);
95 }
96 return *this;
128a8042 97}
128a8042 98
99//________________________________________________________________________
100AliAnalysisTaskMuonTrackingEff::AliAnalysisTaskMuonTrackingEff(const char* name,
0246246b 101 Bool_t isCosmic)
102 :
0246246b 103 AliAnalysisTask(name, "AnalysisTaskESD"),
0246246b 104 fESD(0x0),
fc7a3fd3 105 fTransformer(0x0),
0246246b 106 fDetEltEffHistList(0x0),
107 fDetEltTDHistList(0x0),
108 fDetEltTTHistList(0x0),
109 fChamberEffHistList(0x0),
110 fChamberTDHistList(0x0),
ce1b0b6f 111 fChamberTTHistList(0x0),
6db6876c 112 fChamberEff(0x0),
ce1b0b6f 113 fIsCosmicData(kFALSE)
128a8042 114{
115//Constructor
116//-----------
fc7a3fd3 117
118 fIsCosmicData = isCosmic;
119
120//Load the geometry
121 if (!AliGeomManager::GetGeometry())
122 AliGeomManager::LoadGeometry();
123 fTransformer = new AliMUONGeometryTransformer();
124 fTransformer->LoadGeometryData();
125
0246246b 126
128a8042 127//Define detection element efficiency histograms
128//----------------------------------------------
129
27f15548 130 fDetEltEffHistList = new TClonesArray("TH2F",fgkTotNbrOfDetectionElt + 3); //!<+3 for: 1.the total efficiency chamber by chamber histogram.
128a8042 131 //!< 2.the total number of tracks detected by the tracking system.
132 //!< 3.the number of track used for the efficiency calculation chamber by chamber
27f15548 133 fDetEltTDHistList = new TClonesArray("TH2F",fgkTotNbrOfDetectionElt + 1);
134 fDetEltTTHistList = new TClonesArray("TH2F",fgkTotNbrOfDetectionElt + 1);
128a8042 135
0246246b 136
27f15548 137 fChamberEffHistList = new TClonesArray("TH1F", fgkTotNbrOfChamber + 3);
138 fChamberTDHistList = new TClonesArray("TH1F", fgkTotNbrOfChamber + 1);
139 fChamberTTHistList = new TClonesArray("TH1F", fgkTotNbrOfChamber + 1);
fc7a3fd3 140
0246246b 141
142
27f15548 143 for (Int_t i = 0; i<fgkTotNbrOfDetectionElt; ++i)
128a8042 144 {
145 Int_t iDetElt = 0;
146 if (i<16) iDetElt = 100*(i/4+1) + i - int(i/4)*4;
147 else if (i<52) iDetElt = 100*((i-16)/18+5) + i - (int((i-16)/18)*18 + 16);
148 if (i>51) iDetElt = 100*((i-52)/26+7) + i - (int((i-52)/26)*26 + 52);
149
150 Char_t histName[255];
151 Char_t histTitle[255];
152
153 sprintf(histName,"Eff_detEltNbr%d",iDetElt);
154 sprintf(histTitle,"detEltNbr %d",iDetElt);
155 if(i<16) new((*fDetEltEffHistList)[i]) TH2F(histName,histTitle,12,-10,110,12,-10,110);//!<Stations 1 & 2.
156 else new((*fDetEltEffHistList)[i]) TH2F(histName,histTitle,28,-140,140,8,-40,40); //!<Stations 3 -> 5.
157
158 sprintf(histName,"TD_detEltNbr%d",iDetElt);
159 if(i<16) new((*fDetEltTDHistList)[i]) TH2F(histName,histTitle,12,-10,110,12,-10,110);//!<Stations 1 & 2.
160 else new((*fDetEltTDHistList)[i]) TH2F(histName,histTitle,28,-140,140,8,-40,40); //!<Stations 3 -> 5.
161
162 sprintf(histName,"TT_detEltNbr%d",iDetElt);
163 if(i<16) new((*fDetEltTTHistList)[i]) TH2F(histName,histTitle,12,-10,110,12,-10,110); //!<Stations 1 & 2.
164 else new((*fDetEltTTHistList)[i]) TH2F(histName,histTitle,28,-140,140,8,-40,40); //!<Stations 3 -> 5.
165
166 ((TH2F*) fDetEltEffHistList->UncheckedAt(i)) -> GetXaxis() -> SetTitle("X (cm)");
167 ((TH2F*) fDetEltEffHistList->UncheckedAt(i)) -> GetYaxis() -> SetTitle("Y (cm)");
168 ((TH2F*) fDetEltEffHistList->UncheckedAt(i)) -> GetZaxis() -> SetTitle("Efficiency (%)");
169 ((TH2F*) fDetEltEffHistList->UncheckedAt(i)) -> GetXaxis() -> SetTitleOffset(1.8);
170 ((TH2F*) fDetEltEffHistList->UncheckedAt(i)) -> GetYaxis() -> SetTitleOffset(1.8);
171 ((TH2F*) fDetEltEffHistList->UncheckedAt(i)) -> GetZaxis() -> SetTitleOffset(1.2);
172 ((TH2F*) fDetEltEffHistList->UncheckedAt(i)) -> SetOption("LEGO");
173 }
174
27f15548 175 for (Int_t j = 0; j < fgkTotNbrOfChamber; j++)
0246246b 176 {
177 Char_t histName[255];
178 Char_t histTitle[255];
179
180
181 sprintf(histName,"Eff_ChamberNbr%d",j+1);
182 sprintf(histTitle,"ChamberNbr %d",j+1);
183 if (j<4) new ((*fChamberEffHistList)[j]) TH1F(histName, histTitle, 4, 0.0, 4.0);
184 else if (j<6) new ((*fChamberEffHistList)[j]) TH1F(histName, histTitle, 18, 0.0, 18.0);
185 if (j>=6) new ((*fChamberEffHistList)[j]) TH1F(histName, histTitle, 26, 0.0, 26.0);
186
187 sprintf(histName,"TD_ChamberNbr%d",j+1);
188 if (j<4) new ((*fChamberTDHistList)[j]) TH1F(histName, histTitle, 4, 0.0, 4.0);
189 else if (j<6) new ((*fChamberTDHistList)[j]) TH1F(histName, histTitle, 18, 0.0, 18.0);
190 if (j>=6) new ((*fChamberTDHistList)[j]) TH1F(histName, histTitle, 26, 0.0, 26.0);
191
192 sprintf(histName,"TT_ChamberNbr%d",j+1);
193 if (j<4) new ((*fChamberTTHistList)[j]) TH1F(histName, histTitle, 4, 0.0, 4.0);
194 else if (j<6) new ((*fChamberTTHistList)[j]) TH1F(histName, histTitle, 18, 0.0, 18.0);
195 if (j>=6) new ((*fChamberTTHistList)[j]) TH1F(histName, histTitle, 26, 0.0, 26.0);
196
197 ((TH1F*) fChamberEffHistList->UncheckedAt(j)) -> GetXaxis() -> SetTitle("DetElement");
198 ((TH1F*) fChamberEffHistList->UncheckedAt(j)) -> GetYaxis() -> SetTitle("Efficiency (%)");
199 ((TH1F*) fChamberEffHistList->UncheckedAt(j)) -> GetXaxis() -> SetTitleOffset(1.8);
200 ((TH1F*) fChamberEffHistList->UncheckedAt(j)) -> GetYaxis() -> SetTitleOffset(1.8);
201 ((TH1F*) fChamberEffHistList->UncheckedAt(j)) -> Sumw2();
202 }
203
27f15548 204 new((*fDetEltTDHistList )[fgkTotNbrOfDetectionElt]) TH2F("TD_Chamber" ,"TD_Chamber" ,10,0,10,1,0,1); //!<Detected tracks.
205 new((*fDetEltTTHistList )[fgkTotNbrOfDetectionElt]) TH2F("TT_Chamber" ,"TT_Chamber" ,10,0,10,1,0,1); //!<Tracks total number.
206 new((*fDetEltEffHistList)[fgkTotNbrOfDetectionElt]) TH2F("fChamberEff","fChamberEff",10,0,10,1,0,1); //!<Chamber efficiency.
207
208 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt)) -> GetXaxis() -> SetTitle("Chamber number");
209 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt)) -> GetYaxis() -> SetTitle("");
210 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt)) -> GetZaxis() -> SetTitle("Efficiency (%)");
211 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt)) -> GetXaxis() -> SetTitleOffset(1.8);
212 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt)) -> GetYaxis() -> SetTitleOffset(1.8);
213 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt)) -> GetZaxis() -> SetTitleOffset(1.2);
214 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt)) -> SetOption("LEGO");
128a8042 215
216 new((*fDetEltEffHistList)[157]) TH2F("TT_Chamber" ,"TT_Chamber" ,10,0,10,1,0,1); //!<Tracks total number by chamber.
217
27f15548 218 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 1)) -> GetXaxis() -> SetTitle("Chamber number");
219 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 1)) -> GetYaxis() -> SetTitle("");
220 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 1)) -> GetZaxis() -> SetTitle("Number of tracks");
221 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 1)) -> GetXaxis() -> SetTitleOffset(1.8);
222 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 1)) -> GetYaxis() -> SetTitleOffset(1.8);
223 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 1)) -> GetZaxis() -> SetTitleOffset(1.2);
224 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 1)) -> SetOption("LEGO");
128a8042 225
226 new((*fDetEltEffHistList)[158]) TH2F("Total_Number_of_Tracks" ,"Total_Number_of_Tracks" ,1,0,1,1,0,1); //!<Tracks total number.
227
27f15548 228 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 2)) -> GetXaxis() -> SetTitle("");
229 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 2)) -> GetYaxis() -> SetTitle("");
230 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 2)) -> GetZaxis() -> SetTitle("Number of tracks");
231 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 2)) -> GetXaxis() -> SetTitleOffset(1.8);
232 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 2)) -> GetYaxis() -> SetTitleOffset(1.8);
233 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 2)) -> GetZaxis() -> SetTitleOffset(1.2);
234 ((TH2F*) fDetEltEffHistList->UncheckedAt(fgkTotNbrOfDetectionElt + 2)) -> SetOption("LEGO");
128a8042 235
0246246b 236
27f15548 237 new((*fChamberTDHistList )[fgkTotNbrOfChamber]) TH1F("TD_Chamber_2" ,"TD_Chamber_2" ,10,0,10); //!<Detected tracks.
238 new((*fChamberTTHistList )[fgkTotNbrOfChamber]) TH1F("TT_Chamber_2" ,"TT_Chamber_2" ,10,0,10); //!<Tracks total number.
239 new((*fChamberEffHistList)[fgkTotNbrOfChamber]) TH1F("fChamberEff_2","fChamberEff_2",10,0,10); //!<Chamber efficiency.
0246246b 240
27f15548 241 ((TH1F*) fChamberTDHistList->UncheckedAt(fgkTotNbrOfChamber)) -> Sumw2();
242 ((TH1F*) fChamberTTHistList->UncheckedAt(fgkTotNbrOfChamber)) -> Sumw2();
0246246b 243
27f15548 244 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber)) -> GetXaxis() -> SetTitle("Chamber number");
245 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber)) -> GetYaxis() -> SetTitle("");
246 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber)) -> GetXaxis() -> SetTitleOffset(1.8);
247 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber)) -> GetYaxis() -> SetTitleOffset(1.8);
248 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber)) -> Sumw2();
249 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber)) -> SetOption("");
0246246b 250
251 new((*fChamberEffHistList)[11]) TH1F("TT_Chamber_2" ,"TT_Chamber_2" ,10,0,10); //!<Tracks total number by chamber.
252
27f15548 253 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 1)) -> GetXaxis() -> SetTitle("Chamber number");
254 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 1)) -> GetYaxis() -> SetTitle("");
255 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 1)) -> GetXaxis() -> SetTitleOffset(1.8);
256 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 1)) -> GetYaxis() -> SetTitleOffset(1.8);
257 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 1)) -> Sumw2();
258 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 1)) -> SetOption("");
0246246b 259
260 new((*fChamberEffHistList)[12]) TH1F("Total_Number_of_Tracks_2" ,"Total_Number_of_Tracks_2" ,1,0,1); //!<Tracks total number.
261
27f15548 262 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 2)) -> GetXaxis() -> SetTitle("");
263 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 2)) -> GetYaxis() -> SetTitle("");
264 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 2)) -> GetXaxis() -> SetTitleOffset(1.8);
265 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 2)) -> GetYaxis() -> SetTitleOffset(1.8);
266 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 2)) -> Sumw2();
267 ((TH1F*) fChamberEffHistList->UncheckedAt(fgkTotNbrOfChamber + 2)) -> SetOption("");
0246246b 268
6db6876c 269
270
6db6876c 271
fc7a3fd3 272
128a8042 273//Define input & output
274//---------------------
275
276// -Input slot 0 works with a TChain:
277 DefineInput(0, TChain::Class());
278
5982d2f7 279// -Output slots 0 to 5 writes into a TClonesArray:
128a8042 280 DefineOutput(0, TClonesArray::Class());
0246246b 281 DefineOutput(1, TClonesArray::Class());
282 DefineOutput(2, TClonesArray::Class());
283 DefineOutput(3, TClonesArray::Class());
5982d2f7 284 DefineOutput(4, TClonesArray::Class());
285 DefineOutput(5, TClonesArray::Class());
128a8042 286}
287
288
289
290//______________________________________________________________________________
291AliAnalysisTaskMuonTrackingEff::~AliAnalysisTaskMuonTrackingEff()
292{
293// Destructor.
fc7a3fd3 294 delete fTransformer;
295 delete fDetEltEffHistList;
296 delete fDetEltTDHistList;
297 delete fDetEltTTHistList;
298 delete fChamberEffHistList;
299 delete fChamberTDHistList;
300 delete fChamberTTHistList;
301 delete fChamberEff;
128a8042 302}
303
304
305
306//________________________________________________________________________
307void AliAnalysisTaskMuonTrackingEff::CreateOutputObjects()
308{
309 OpenFile(0);
310}
311
312
313
314//________________________________________________________________________
315void AliAnalysisTaskMuonTrackingEff::ConnectInputData(Option_t */*option*/)
316
317{
f7a1cc68 318 //Set Field Map for track extrapolation
319 AliMUONTrackExtrap::SetField();
128a8042 320
f7a1cc68 321 //Connect input
128a8042 322 AliESDInputHandler* esdHandler = (AliESDInputHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
323 if (!esdHandler)
324 {
325 Printf("ERROR: Could not get ESDInputHandler");
326 }
327 else fESD = esdHandler->GetEvent();
328}
329
330
331//________________________________________________________________________
332void AliAnalysisTaskMuonTrackingEff::Exec(Option_t */*option*/)
333{
334//Execute analysis for current event
6db6876c 335 if (fChamberEff == 0x0)
336 fChamberEff = new AliCheckMuonDetEltResponse(fTransformer, fESD, fDetEltTDHistList, fDetEltTTHistList, fChamberTDHistList, fChamberTTHistList);
337 fChamberEff->CheckDetEltResponse();
128a8042 338
128a8042 339 for( Int_t i = 0; i<156; ++i)
340 {
341 ((TH2F*) fDetEltEffHistList->UncheckedAt(i))-> Divide( (TH2F*) fDetEltTDHistList->UncheckedAt(i),
342 (TH2F*) fDetEltTTHistList->UncheckedAt(i), 100., 1.);
343 }
344
0246246b 345 for (Int_t j = 0; j < 10; j++)
346 {
347 ((TH1F*) fChamberEffHistList->UncheckedAt(j))-> Divide( (TH1F*) fChamberTDHistList->UncheckedAt(j),
348 (TH1F*) fChamberTTHistList->UncheckedAt(j), 100., 1.);
349 }
350
351
128a8042 352 ((TH2F*) fDetEltEffHistList->UncheckedAt(156))-> Divide( (TH2F*) fDetEltTDHistList->UncheckedAt(156),
353 (TH2F*) fDetEltTTHistList->UncheckedAt(156), 100., 1.);
354
355
356 ((TH2F*) fDetEltEffHistList->UncheckedAt(157))-> Add ( (TH2F*) fDetEltTTHistList ->UncheckedAt(156),
357 (TH2F*) fDetEltEffHistList->UncheckedAt(157), 1., 0.);
358
359
20e837dc 360 ((TH2F*) fDetEltEffHistList->UncheckedAt(158))-> Fill(0., 0., ((Double_t)fESD -> GetNumberOfMuonTracks()));
128a8042 361
362
0246246b 363 ((TH1F*) fChamberEffHistList->UncheckedAt(10))-> Divide( (TH1F*) fChamberTDHistList->UncheckedAt(10),
364 (TH1F*) fChamberTTHistList->UncheckedAt(10), 100., 1.);
365
366
367 ((TH1F*) fChamberEffHistList->UncheckedAt(11))-> Add ( (TH1F*) fChamberTTHistList ->UncheckedAt(10),
368 (TH1F*) fChamberEffHistList->UncheckedAt(11), 1., 0.);
369
370
fc7a3fd3 371 ((TH1F*) fChamberEffHistList->UncheckedAt(12))-> Fill(0., ((Double_t)fChamberEff -> GetNbrUsableTracks()));
372 fChamberEff->SetNbrUsableTracks(0);
373 //((TH1F*) fChamberEffHistList->UncheckedAt(12))-> Fill(0., ((Double_t)fESD -> GetNumberOfMuonTracks()));
0246246b 374
375 ComputeErrors();
376
128a8042 377//Post the output data:
0246246b 378 PostData(0, fDetEltTDHistList);
379 PostData(1, fDetEltTTHistList);
380 PostData(2, fDetEltEffHistList);
381 PostData(3, fChamberTDHistList);
382 PostData(4, fChamberTTHistList);
383 PostData(5, fChamberEffHistList);
128a8042 384}
385
386
387
388//________________________________________________________________________
389void AliAnalysisTaskMuonTrackingEff::Terminate(Option_t */*option*/)
390{
391//Terminate analysis
392
393}
0246246b 394
395
396//________________________________________________________________________
397void AliAnalysisTaskMuonTrackingEff::ComputeErrors()
398{
399 // Compute error on the efficiency
400 // eff = Ntd/Ntt
401 // error = max {1/Ntt, sqrt(eff*(1-eff)/Ntt)}
402
fc7a3fd3 403 for (Int_t ii = 0; ii <= 10; ii++)
0246246b 404 {
405 Int_t NumberOfBins = ((TH1F*) fChamberEffHistList->UncheckedAt(ii))->GetNbinsX();
a12be0d1 406 for (Int_t jj = 1; jj <= NumberOfBins; jj++)
0246246b 407 {
408 Double_t Ntd = ((TH1F*) fChamberTDHistList->UncheckedAt(ii))->GetBinContent(jj);
409 Double_t Ntt = ((TH1F*) fChamberTTHistList->UncheckedAt(ii))->GetBinContent(jj);
410
411 if (Ntt > 0.0 && Ntd > 0.0)
412 {
413 Double_t eff = ((TH1F*) fChamberEffHistList->UncheckedAt(ii))->GetBinContent(jj)/100.0;
414 Double_t err1 = 1.0/Ntt;
415 Double_t err2 = TMath::Sqrt(eff*(1.0 - eff)/Ntt);
416 Double_t error = TMath::Max(err1, err2);
417
418 ((TH1F*) fChamberEffHistList->UncheckedAt(ii))->SetBinError(jj, error*100.0);
419 }
420 }
421 }
422}