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