ATLAS Offline Software
MuonInsideOutAnalysisPlots.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
8 #include "TH1.h"
9 #include "TH2.h"
10 #include "TDirectory.h"
11 #include <string>
13 
14 namespace Muon {
15 
16  float mstau = 431000.;
17 
18  void ResPlots::book( const TString& prefix ) {
19  res = new TH1F(prefix+"res","res",100,-100.,100.);
20  pull = new TH1F(prefix+"pull","pull",100,-10.,10.);
21  exerr = new TH1F(prefix+"exerr","exerr",100,0,100.);
22  }
23  void ResPlots::fill( float res_, float pull_, float exerr_ ) {
24  res->Fill(res_);
25  pull->Fill(pull_);
26  exerr->Fill(exerr_);
27  }
28 
29  void ResPlotsPt::book( const TString& prefix ) {
30  res_p = new TH2F(prefix+"res_p","res_p",100,-100.,100.,100,0.,300.);
31  pull_p = new TH2F(prefix+"pull_p","pull_p",100,-10.,10.,100,0.,300.);
32  exerr_p = new TH2F(prefix+"exerr_p","exerr_p",100,0.,100.,100,0.,300.);
33  }
34  void ResPlotsPt::fill( float res_, float pull_, float exerr_, float p_ ) {
35  res_p->Fill(res_,p_);
36  pull_p->Fill(pull_,p_);
37  exerr_p->Fill(exerr_,p_);
38  }
39 
40  void ChamberResPlots::book( TDirectory* dir, const TString& prefix ) {
41  TDirectory* ndir = dir->mkdir(prefix+"Chamber");
42  ndir->cd();
45  for( unsigned int i=0;i<plots.size();++i ){
46  TString name = prefix + "chIndex_" + std::to_string(i).c_str() + "_";
47  plots[i].book(name);
48  plots_p[i].book(name);
49  }
50  dir->cd();
51  }
52 
53  void ChamberResPlots::fill( int chIndex_, float res_, float pull_, float exerr_, float p_ ) {
54  if( chIndex_ < 0 || chIndex_ >= MuonStationIndex::ChIndexMax ) return;
55 
56  plots[chIndex_].fill(res_,pull_,exerr_);
57  plots_p[chIndex_].fill(res_,pull_,exerr_,p_);
58 
59  }
60 
61 
62  void HitPlots::book( TDirectory* dir, const TString& prefix ) {
63  all.book(prefix);
64  all_p.book(prefix);
66  }
67 
68  void HitPlots::fill( const MuonValidationHitBlock& hits, int index, float p_ ) {
69  fill( (*hits.id.chIndex)[index], (*hits.residuals.residual)[index],
70  (*hits.residuals.pull)[index], (*hits.residuals.expos_err)[index], p_);
71  }
72 
73 
74  void HitPlots::fill( int chIndex_, float res_, float pull_, float exerr_, float p_ ) {
75  all.fill(res_,pull_,exerr_);
76  all_p.fill(res_,pull_,exerr_,p_);
77  chamber.fill(chIndex_,res_,pull_,exerr_,p_);
78  }
79 
80  void TimePlots::book( TDirectory*, const TString& prefix, int type ) {
81  type = type % 1000; // truncate anything above 1000
82  bool isMDT = (type == 1 || type == 10);
83  float tmin = -15;
84  float tmax = 15;
85  float timeRange = 5;
86  if( isMDT ){
87  tmin = -30;
88  tmax = 30;
89  if( type == 10 ) timeRange = 800;
90  }
91  time = new TH1F(prefix+"time","time",100,-20.,100.);
92  error = new TH1F(prefix+"error","error",100,0.,15.);
93  timeRes = new TH1F(prefix+"timeRes","timeRes",200,tmin,tmax);
94  timePull = new TH1F(prefix+"pullRes","pullRes",200,-7,7);
95  beta = new TH1F(prefix+"beta","beta",100,.0,2.);
96  betaRes = new TH1F(prefix+"betaRes","betaRes",200,-1.2,1.2);
97  betaPull = new TH1F(prefix+"betaPull","betaPull",200,-7,7);
98  invBetaRes = new TH1F(prefix+"invBetaRes","invBetaRes",200,-1.2,1.2);
99  invBetaPull = new TH1F(prefix+"invBetaPull","invBetaPull",200,-7,7);
100 
101 
102  if( type == 10 ){
103  timeResScat = new TH2F(prefix+"timeResScat","timeResScat",100,tmin,timeRange,100,tmin,tmax);
104  timePullScat = new TH2F(prefix+"pullResScat","pullResScat",100,tmin,timeRange,100,-7.,7.);
105 
106  error_time = new TH2F(prefix+"error_time","error_time",100,tmin,timeRange,100,0.,15.);
107  errorRT = new TH1F(prefix+"errorRT","errorRT",100,-20.,100.);
108  errorTrack = new TH1F(prefix+"errorTrack","errorTrack",100,-20.,100.);
109  errorRT_Track = new TH2F(prefix+"errorRT_Track","errorRT_Track",100,-20.,100.,100,-20.,100.);
110  timeResCor = new TH1F(prefix+"timeResCor","timeResCor",200,tmin,tmax);
111  timePullCor = new TH1F(prefix+"timePullCor","timePullCor",200,-7,7);
112  timeRes0_10 = new TH1F(prefix+"timeRes0_10","timeRes0_10",200,tmin,tmax);
113  timeRes10_70 = new TH1F(prefix+"timeRes10_70","timeRes10_70",200,tmin,tmax);
114  timeRes70_150 = new TH1F(prefix+"timeRes70_150","timeRes70_150",200,tmin,tmax);
115  timeRes150_350 = new TH1F(prefix+"timeRes150_350","timeRes150_350",200,tmin,tmax);
116  timeRes350_800 = new TH1F(prefix+"timeRes350_800","timeRes350_800",200,tmin,tmax);
117 
118  timePull0_10 = new TH1F(prefix+"timePull0_10","timePull0_10",200,-7,7);
119  timePull10_70 = new TH1F(prefix+"timePull10_70","timePull10_70",200,-7,7);
120  timePull70_150 = new TH1F(prefix+"timePull70_150","timePull70_150",200,-7,7);
121  timePull150_350 = new TH1F(prefix+"timePull150_350","timePull150_350",200,-7,7);
122  timePull350_800 = new TH1F(prefix+"timePull350_800","timePull350_800",200,-7,7);
123  }else if( type == 1 ){
124  timeResCor = new TH1F(prefix+"timeResLargeError","timeResLargeError",200,tmin,tmax);
125  timePullCor = new TH1F(prefix+"timePullLargError","timePullLargError",200,-7,7);
126  }
127  }
128 
129  void TimePlots::fill( const MuonValidationTimeBlock& times, int index, float betaTrack ) {
130  float dist = (*times.d)[index];
131  int type = (*times.type)[index];
132  float err = (*times.err)[index];
133  float t = (*times.time)[index];
134  MuonBetaCalculationUtils betaUtils(0.);
135  float tof = betaUtils.calculateTof(1.,dist);
136  float timeTrack = betaUtils.calculateTof(betaTrack,dist);
137  float t0_ = (*times.time)[index]+tof;
138  float betaMeas = betaUtils.calculateBeta(t0_,dist);
139  float betaError = betaUtils.calculateBetaError(t0_,err,dist);
140  float invBetaMeas = betaUtils.calculateInverseBeta(t0_,dist);
141  float invBetaError = betaUtils.calculateInverseBetaError(err,dist);
142  time->Fill(t);
143  error->Fill(err);
144  beta->Fill(betaMeas);
145  float res = t0_-timeTrack;
146  float pull = res/err;
147  if( type != 1 || err < 7 ){
148  timeRes->Fill(res);
149  timePull->Fill(pull);
150  }
151  float betaResidual = betaMeas-betaTrack;
152  betaRes->Fill(betaResidual);
153  betaPull->Fill(betaResidual/betaError);
154  float invBetaResidual = invBetaMeas-1./betaTrack;
155  invBetaRes->Fill(invBetaResidual);
156  invBetaPull->Fill(invBetaResidual/invBetaError);
157 
158  float fullTime = (*times.timeProp)[index];
159  if( type == 10 ){
160  error_time->Fill(fullTime,err);
161  timeResScat->Fill(fullTime,res);
162  timePullScat->Fill(fullTime,pull);
163  float errTrk = (*times.avTimeProp)[index];
164  errorTrack->Fill(errTrk);
165  float errRT = sqrt(err*err-errTrk*errTrk);
166  errorRT->Fill(errRT);
167  errorRT_Track->Fill(errRT,errTrk);
168  float rescor = res-(*times.timeCor)[index];
169  float pullcor = rescor/err;
170  timeResCor->Fill(rescor);
171  timePullCor->Fill(pullcor);
172  if( fullTime < 10 ) timeRes0_10->Fill(res);
173  else if( fullTime < 50 ) timeRes10_70->Fill(res);
174  else if( fullTime < 150 ) timeRes70_150->Fill(res);
175  else if( fullTime < 350 ) timeRes150_350->Fill(res);
176  else timeRes350_800->Fill(res);
177 
178  if( fullTime < 10 ) timePull0_10->Fill(pull);
179  else if( fullTime < 50 ) timePull10_70->Fill(pull);
180  else if( fullTime < 150 ) timePull70_150->Fill(pull);
181  else if( fullTime < 350 ) timePull150_350->Fill(pull);
182  else timePull350_800->Fill(pull);
183 
184  }else if( type == 1 && err > 7 ){
185  timeResCor->Fill(res);
186  timePullCor->Fill(pull);
187  }
188  }
189 
190  void HoughPlots::book( TDirectory* dir, const TString& prefix ) {
191 
192  max = new TH1F(prefix+"max","max",100,0.,30.);
193  max_pull = new TH2F(prefix+"max_pull","max_pull",100,0.,30.,100,-10.,10.);
194  all.book(prefix);
196  }
197 
198  void HoughPlots::fill( const MuonValidationHoughBlock& hough, int index, float p_ ) {
199  fill( (*hough.id.chIndex)[index], (*hough.residuals.residual)[index],
200  (*hough.residuals.pull)[index], (*hough.residuals.expos_err)[index], p_, (*hough.maximum)[index]);
201  }
202 
203  void HoughPlots::fill( int chIndex_, float res_, float pull_, float exerr_, float p_, float max_ ){
204  max->Fill(max_);
205  max_pull->Fill(max_,pull_);
206  all.fill(res_,pull_,exerr_);
207  chamber.fill(chIndex_,res_,pull_,exerr_,p_);
208  }
209 
210  void SegmentPlots::book( TDirectory* dir, const TString& prefix ){
211  t0 = new TH1F(prefix+"t0","t0",100,-20.,50.);
212  t0Trig = new TH1F(prefix+"t0Trig","t0Trig",100,-20.,50.);
213  beta = new TH1F(prefix+"beta","beta",100,.0,2.);
214  beta2 = new TH2F(prefix+"betaTrack","betaTrack",100,.0,2.,100,.0,2.);
215  betaTrig = new TH1F(prefix+"betaTrig","betaTrig",100,.0,2.);
216  t0Res = new TH1F(prefix+"t0Res","t0Res",200,-15,15);
217  t0ResTrig = new TH1F(prefix+"t0TrigRes","t0TrigRes",200,-15,15);
218  betaRes = new TH1F(prefix+"betaRes","betaRes",200,-1.2,1.2);
219  betaResTrig = new TH1F(prefix+"betaTrigRes","betaTrigRes",200,-1.2,1.2);
220  quality = new TH1F(prefix+"quality","quality",6,-0.5,5.5);
221  quality_chIndex = new TH2F(prefix+"quality_chIndex","quality_chIndex",6,-0.5,5.5,MuonStationIndex::ChIndexMax,-0.5,-0.5+MuonStationIndex::ChIndexMax);
222  quality_sector = new TH2F(prefix+"quality_sector","quality_sector",6,-0.5,5.5,16,0.5,16.5);
223 
224  allx.book(prefix+"x_");
225  chamberx.book(dir,prefix+"x_");
226 
227  ally.book(prefix+"y_");
228  chambery.book(dir,prefix+"y_");
229 
230  allxz.book(prefix+"xz_");
231  chamberxz.book(dir,prefix+"xz_");
232 
233  allyz.book(prefix+"yz_");
234  chamberyz.book(dir,prefix+"yz_");
235 
236  allcy.book(prefix+"cy_");
237  chambercy.book(dir,prefix+"cy_");
238  }
239 
240 
241  void SegmentPlots::fill( const MuonValidationSegmentBlock& segments, int index, float p_, float betaTrack ) {
242 
243  allx.fill( (*segments.xresiduals.residual)[index],
244  (*segments.xresiduals.pull)[index], (*segments.xresiduals.expos_err)[index]);
245  chamberx.fill( (*segments.id.chIndex)[index], (*segments.xresiduals.residual)[index],
246  (*segments.xresiduals.pull)[index], (*segments.xresiduals.expos_err)[index], p_);
247 
248  ally.fill( (*segments.yresiduals.residual)[index],
249  (*segments.yresiduals.pull)[index], (*segments.yresiduals.expos_err)[index]);
250  chambery.fill( (*segments.id.chIndex)[index], (*segments.yresiduals.residual)[index],
251  (*segments.yresiduals.pull)[index], (*segments.yresiduals.expos_err)[index], p_);
252 
253  allxz.fill( (*segments.angleXZ.residual)[index],
254  (*segments.angleXZ.pull)[index], (*segments.angleXZ.expos_err)[index]);
255  chamberxz.fill( (*segments.id.chIndex)[index], (*segments.angleXZ.residual)[index],
256  (*segments.angleXZ.pull)[index], (*segments.angleXZ.expos_err)[index], p_);
257 
258  allyz.fill( (*segments.angleYZ.residual)[index],
259  (*segments.angleYZ.pull)[index], (*segments.angleYZ.expos_err)[index]);
260  chamberyz.fill( (*segments.id.chIndex)[index], (*segments.angleYZ.residual)[index],
261  (*segments.angleYZ.pull)[index], (*segments.angleYZ.expos_err)[index], p_);
262 
263  allcy.fill( (*segments.combinedYZ.residual)[index],
264  (*segments.combinedYZ.pull)[index], (*segments.combinedYZ.expos_err)[index]);
265  chambercy.fill( (*segments.id.chIndex)[index], (*segments.combinedYZ.residual)[index],
266  (*segments.combinedYZ.pull)[index], (*segments.combinedYZ.expos_err)[index], p_);
267 
268  fill( (*segments.id.chIndex)[index], (*segments.id.sector)[index], (*segments.quality)[index] );
269 
270  float dist = sqrt( (*segments.r)[index]*(*segments.r)[index] + (*segments.z)[index]*(*segments.z)[index] );
271  MuonBetaCalculationUtils betaUtils(0.);
272  float tof = betaUtils.calculateTof(1.,dist);
273  float t0_ = (*segments.t0)[index]+tof;
274  float t0Trig_ = (*segments.t0Trig)[index]+tof;
275  float t0Track = betaUtils.calculateTof(betaTrack,dist);
276  float betaSeg = betaUtils.calculateBeta(t0_,dist);
277  float betaSegTrig = betaUtils.calculateBeta(t0Trig_,dist);
278  t0->Fill((*segments.t0)[index]);
279  t0Trig->Fill((*segments.t0Trig)[index]);
280  beta->Fill(betaSeg);
281  beta2->Fill(betaSeg,betaTrack);
282  betaTrig->Fill(betaSegTrig);
283  t0Res->Fill(t0_-t0Track);
284  t0ResTrig->Fill(t0Trig_-t0Track);
285  betaRes->Fill(betaSeg-betaTrack);
286  betaResTrig->Fill(betaSegTrig-betaTrack);
287  }
288 
289  void SegmentPlots::fill( int chIndex_, int sector_, int quality_ ){
290  quality->Fill(quality_);
291  quality_chIndex->Fill(quality_,chIndex_);
292  quality_sector->Fill(quality_,sector_);
293  }
294 
295  void BetaFitPlots::book( TDirectory* , const TString& prefix ) {
296  beta = new TH1F(prefix+"beta","beta",100,0,1.5);
297  chi2Ndof = new TH1F(prefix+"chi2Ndof","chi2Ndof",100,0,50.);
298  ndof = new TH1F(prefix+"ndof","ndof",51,-0.5,50.5);
299  res = new TH1F(prefix+"res","res",500,-1.,1.);
300  }
301 
302  void BetaFitPlots::fill( float beta_, float betaTruth_, float chi2_, int ndof_ ) {
303  beta->Fill(beta_);
304  if( ndof_ > 0 ) chi2Ndof->Fill(chi2_/ndof_);
305  ndof->Fill(ndof_);
306  res->Fill(beta_-betaTruth_);
307  }
308 
309  void BetaFitRegionPlots::book( TDirectory* dir, const TString& prefix, bool isBarrel ) {
310  mdt.book(dir,prefix+"mdt_");
311  mdtt.book(dir,prefix+"mdtt_");
312  mdtt_good.book(dir,prefix+"mdtt_good_");
313  if( isBarrel ){
314  rpc.book(dir,prefix+"rpc_");
315  rpct.book(dir,prefix+"rpcr_");
316  all.book(dir,prefix+"all_");
317  allt.book(dir,prefix+"allt_");
318  allt_good.book(dir,prefix+"allt_good_");
319  }
320  }
321 
323  void CandidatePlots::book( TDirectory* dir, const TString& prefix ) {
324  pt = new TH1F(prefix+"pt","pt",100,0,300.);
325  eta = new TH1F(prefix+"eta","eta",100,-3,3);
326  phi = new TH1F(prefix+"phi","phi",100,-3,3);
327  beta = new TH1F(prefix+"beta","beta",100,0,1);
328  nseg = new TH1F(prefix+"nseg","nseg",10,-0.5,9.5);
329 
330  betaCandidates.book(dir,prefix+"all_");
331  betaBestCandidate.book(dir,prefix+"best_");
332  }
333 
335  pt->Fill( (*tracks.pt)[index]*0.001 );
336  eta->Fill( (*tracks.eta)[index] );
337  phi->Fill( (*tracks.phi)[index] );
338  beta->Fill( (*tracks.truth.beta)[index] );
339  }
340 
341 
343  void StageSummaryPlots::book( TDirectory* dir, const TString& prefix ) {
344  etaMissed = new TH1F(prefix+"etaMissed","etaMissed",100,-3,3);
345  etaMissedCombined = new TH1F(prefix+"etaMissedCombined","etaMissedCombined",100,-3,3);
346  etaBetaMissed = new TH2F(prefix+"etaBetaMissed","etaBetaMissed",100,-3,3,100,0.,1.);
347  betaMissed = new TH1F(prefix+"betaMissed","betaMissed",100,0.,1.);
348  betaMissedCombined = new TH1F(prefix+"betaMissedCombined","betaMissedCombined",100,0.,1.);
349  ncandidates = new TH1F(prefix+"ncandidates","ncandidates",10,-0.5,9.5);
350  ncombinedCandidates = new TH1F(prefix+"ncombinedCandidates","ncombinedCandidates",10,-0.5,9.5);
351  allCandidates.book(dir,prefix+"allCandidates_");
352  tagCandidates.book(dir,prefix+"tagCandidates_");
353  combinedCandidates.book(dir,prefix+"combinedCandidates_");
354  }
355 
356  void TrackPlots::book( TDirectory* dir, const TString& prefix ) {
357  pt = new TH1F(prefix+"pt","pt",100,0,300.);
358  eta = new TH1F(prefix+"eta","eta",100,-3,3);
359  phi = new TH1F(prefix+"phi","phi",100,-3,3);
360  beta = new TH1F(prefix+"beta","beta",100,0,1);
361  pdg = new TH1F(prefix+"pdg","pdg",31,-15.5,15.5);
362  ntruth = new TH1F(prefix+"ntruth","ntruth",10,-0.5,9.5);
363  nseg = new TH1F(prefix+"nseg","nseg",10,-0.5,9.5);
364  nseg1 = new TH1F(prefix+"nseg1","nseg",10,-0.5,9.5);
365  nseg2 = new TH1F(prefix+"nseg2","nseg",10,-0.5,9.5);
366  nseg3 = new TH1F(prefix+"nseg3","nseg",10,-0.5,9.5);
367  nhough = new TH1F(prefix+"nhough","nhough",10,-0.5,9.5);
368  ntruth_seg = new TH2F(prefix+"ntruth_seg","ntruth_seg",10,-0.5,9.5,10,-0.5,9.5);
369  ntruth_seg1 = new TH2F(prefix+"ntruth_seg1","ntruth_seg",10,-0.5,9.5,10,-0.5,9.5);
370  ntruth_hough = new TH2F(prefix+"ntruth_hough","ntruth_hough",10,-0.5,9.5,10,-0.5,9.5);
371 
372  TDirectory* ldir = dir->mkdir("hits");
373  ldir->cd();
374  hits.book(ldir,prefix+"h_");
375 
376  ldir = dir->mkdir("hough");
377  ldir->cd();
378  hough.book(ldir,prefix+"ho_");
379 
380  ldir = dir->mkdir("segments");
381  ldir->cd();
382  segments.book(ldir,prefix+"s0_");
383  segments1.book(ldir,prefix+"s1_");
384  segments2.book(ldir,prefix+"s2_");
385  segments3.book(ldir,prefix+"s3_");
386 
387  ldir = dir->mkdir("times");
388  ldir->cd();
389  std::vector<int> types = { 1,2,10,12,1001,1010};
390  std::vector<std::string> typeNames = { "BarrelMDT","BarrelRPC","BarrelMDTT","BarrelRPCT","EndcapMDT","EndcapMDTT"};
391  for( unsigned int i=0;i<types.size();++i ){
392  auto type = types[i];
393  TString name = typeNames[i].c_str();
394  name += "_";
395  timePlots.push_back(TimePlots());
396  timePlots.back().book(ldir,name,type);
397  timePlots.back().typeIndex = type;
398  }
399 
400 
401  ldir = dir->mkdir("betaFits");
402  ldir->cd();
403  barrel.book(ldir,prefix+"barrel_",true);
404  endcap.book(ldir,prefix+"endcap_",false);
405 
406  ldir = dir->mkdir("candidates");
407  ldir->cd();
408  for( unsigned int i=0;i<4;++i ){
409  TString name = "stage";
410  name += i;
411  candidateStages.push_back(StageSummaryPlots());
412  candidateStages.back().book(ldir,name);
413  }
414  dir->cd();
415  }
416 
418  pt->Fill( (*tracks.pt)[index]*0.001 );
419  eta->Fill( (*tracks.eta)[index] );
420  phi->Fill( (*tracks.phi)[index] );
421  beta->Fill( (*tracks.truth.beta)[index] );
422  }
423 
424  void TrackPlots::fill( int ntruth_, int nseg_, int nseg1_, int nseg2_, int nseg3_, int nhough_ ) {
425  ntruth->Fill(ntruth_);
426  nseg->Fill(nseg_);
427  nseg1->Fill(nseg1_);
428  nseg2->Fill(nseg2_);
429  nseg3->Fill(nseg3_);
430  nhough->Fill(nhough_);
431  ntruth_seg->Fill(ntruth_,nseg_);
432  ntruth_seg1->Fill(ntruth_,nseg1_);
433  ntruth_hough->Fill(ntruth_,nhough_);
434  }
435 
436 
437  void MuonInsideOutAnalysisPlots::book( TDirectory* dir, const TString& prefix ) {
438  TDirectory* ndir = dir->mkdir("Muon");
439  ndir->cd();
440  muon.book(ndir,prefix);
441  ndir = dir->mkdir("Stau");
442  ndir->cd();
443  stau.book(ndir,prefix);
444  ndir = dir->mkdir("Rest");
445  ndir->cd();
446  rest.book(ndir,prefix);
447  dir->cd();
448  }
449 }
Muon::StageSummaryPlots::tagCandidates
CandidatePlots tagCandidates
Definition: MuonInsideOutAnalysisPlots.h:199
Muon::MuonValidationTrackParticleBlock::phi
std::vector< float > * phi
Definition: MuonInsideOutValidationNtuple.h:198
Muon::TimePlots::timePull350_800
TH1 * timePull350_800
Definition: MuonInsideOutAnalysisPlots.h:92
Muon::TimePlots::time
TH1 * time
Definition: MuonInsideOutAnalysisPlots.h:64
Muon::MuonValidationTrackParticleBlock::pt
std::vector< float > * pt
Definition: MuonInsideOutValidationNtuple.h:195
Muon::HitPlots::all
ResPlots all
Definition: MuonInsideOutAnalysisPlots.h:50
Muon::SegmentPlots::beta2
TH2 * beta2
Definition: MuonInsideOutAnalysisPlots.h:118
Muon::MuonValidationTrackParticleBlock::truth
MuonValidationTruthBlock truth
Definition: MuonInsideOutValidationNtuple.h:199
Muon::BetaFitRegionPlots::allt_good
BetaFitPlots allt_good
Definition: MuonInsideOutAnalysisPlots.h:169
Muon::SegmentPlots::t0
TH1 * t0
Definition: MuonInsideOutAnalysisPlots.h:115
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
Muon::SegmentPlots::quality_sector
TH2 * quality_sector
Definition: MuonInsideOutAnalysisPlots.h:126
Muon::TrackPlots::timePlots
std::vector< TimePlots > timePlots
Definition: MuonInsideOutAnalysisPlots.h:228
Muon::TimePlots::timeRes350_800
TH1 * timeRes350_800
Definition: MuonInsideOutAnalysisPlots.h:86
Muon::TimePlots::invBetaRes
TH1 * invBetaRes
Definition: MuonInsideOutAnalysisPlots.h:71
Muon::TimePlots
time plots
Definition: MuonInsideOutAnalysisPlots.h:62
Muon::TrackPlots::nseg1
TH1 * nseg1
Definition: MuonInsideOutAnalysisPlots.h:213
Muon::HitPlots::chamber
ChamberResPlots chamber
Definition: MuonInsideOutAnalysisPlots.h:52
Muon::SegmentPlots::allyz
ResPlots allyz
Definition: MuonInsideOutAnalysisPlots.h:137
Muon::BetaFitPlots::ndof
TH1 * ndof
Definition: MuonInsideOutAnalysisPlots.h:154
Muon::TimePlots::timeRes
TH1 * timeRes
Definition: MuonInsideOutAnalysisPlots.h:66
Muon::MuonBetaCalculationUtils::calculateBeta
float calculateBeta(float time, float dist)
Definition: MuonBetaCalculationUtils.h:21
Muon::TrackPlots::pdg
TH1 * pdg
Definition: MuonInsideOutAnalysisPlots.h:210
Muon::TrackPlots::barrel
BetaFitRegionPlots barrel
Definition: MuonInsideOutAnalysisPlots.h:237
Muon::StageSummaryPlots::betaMissedCombined
TH1 * betaMissedCombined
Definition: MuonInsideOutAnalysisPlots.h:192
Muon::TimePlots::timeResCor
TH1 * timeResCor
Definition: MuonInsideOutAnalysisPlots.h:80
Muon::MuonValidationTimeBlock
Block with timing information.
Definition: MuonInsideOutValidationNtuple.h:99
index
Definition: index.py:1
Muon::TrackPlots::fill
void fill(int ntruth_, int nseg_, int nseg1_, int nseg2_, int nseg3_, int nhough_)
Definition: MuonInsideOutAnalysisPlots.cxx:424
Muon::MuonInsideOutAnalysisPlots::book
void book(TDirectory *dir, const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:437
Muon::MuonValidationResidualBlock::pull
std::vector< float > * pull
Definition: MuonInsideOutValidationNtuple.h:180
Muon::SegmentPlots::allcy
ResPlots allcy
Definition: MuonInsideOutAnalysisPlots.h:140
Muon::TimePlots::timePullCor
TH1 * timePullCor
Definition: MuonInsideOutAnalysisPlots.h:81
Muon::StageSummaryPlots::etaBetaMissed
TH2 * etaBetaMissed
Definition: MuonInsideOutAnalysisPlots.h:194
Muon::TimePlots::timePull150_350
TH1 * timePull150_350
Definition: MuonInsideOutAnalysisPlots.h:91
Muon::ChamberResPlots::book
void book(TDirectory *dir, const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:40
Muon::TrackPlots::nseg2
TH1 * nseg2
Definition: MuonInsideOutAnalysisPlots.h:214
Muon::HoughPlots::all
ResPlots all
Definition: MuonInsideOutAnalysisPlots.h:104
Muon::BetaFitRegionPlots::mdt
BetaFitPlots mdt
Definition: MuonInsideOutAnalysisPlots.h:162
Muon::TimePlots::timeResScat
TH2 * timeResScat
Definition: MuonInsideOutAnalysisPlots.h:73
Muon::TimePlots::timeRes0_10
TH1 * timeRes0_10
Definition: MuonInsideOutAnalysisPlots.h:82
Muon::MuonValidationSegmentBlock::quality
std::vector< int > * quality
Definition: MuonInsideOutValidationNtuple.h:210
Muon::BetaFitRegionPlots::mdtt
BetaFitPlots mdtt
Definition: MuonInsideOutAnalysisPlots.h:163
Muon::TrackPlots::segments2
SegmentPlots segments2
Definition: MuonInsideOutAnalysisPlots.h:225
Muon::BetaFitRegionPlots::all
BetaFitPlots all
Definition: MuonInsideOutAnalysisPlots.h:167
Muon::ResPlotsPt::exerr_p
TH2 * exerr_p
Definition: MuonInsideOutAnalysisPlots.h:31
MuonInsideOutAnalysisPlots.h
Muon::MuonValidationSegmentBlock::combinedYZ
MuonValidationResidualBlock combinedYZ
Definition: MuonInsideOutValidationNtuple.h:227
Muon::BetaFitRegionPlots::rpc
BetaFitPlots rpc
Definition: MuonInsideOutAnalysisPlots.h:165
Muon::TrackPlots::endcap
BetaFitRegionPlots endcap
Definition: MuonInsideOutAnalysisPlots.h:238
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Muon::TrackPlots::ntruth
TH1 * ntruth
Definition: MuonInsideOutAnalysisPlots.h:211
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:45
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
Muon::ResPlots::fill
void fill(float res_, float pull_, float exerr_)
Definition: MuonInsideOutAnalysisPlots.cxx:23
Muon::SegmentPlots::book
void book(TDirectory *dir, const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:210
Muon::TimePlots::timePullScat
TH2 * timePullScat
Definition: MuonInsideOutAnalysisPlots.h:74
Muon::TimePlots::timeRes70_150
TH1 * timeRes70_150
Definition: MuonInsideOutAnalysisPlots.h:84
Muon::HoughPlots::max_pull
TH2 * max_pull
Definition: MuonInsideOutAnalysisPlots.h:102
Muon::BetaFitPlots::book
void book(TDirectory *dir, const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:295
Muon::MuonValidationTruthBlock::beta
std::vector< float > * beta
Definition: MuonInsideOutValidationNtuple.h:77
Muon::MuonValidationSegmentBlock::xresiduals
MuonValidationResidualBlock xresiduals
Definition: MuonInsideOutValidationNtuple.h:223
Muon::MuonValidationSegmentBlock::t0
std::vector< float > * t0
Definition: MuonInsideOutValidationNtuple.h:216
Muon::TimePlots::timePull70_150
TH1 * timePull70_150
Definition: MuonInsideOutAnalysisPlots.h:90
Muon::CandidatePlots::eta
TH1 * eta
Definition: MuonInsideOutAnalysisPlots.h:176
Muon::CandidatePlots::betaCandidates
BetaFitPlots betaCandidates
Definition: MuonInsideOutAnalysisPlots.h:181
Muon::CandidatePlots::fill
void fill(int ntruth_, int nseg_, int nseg1_, int nhough_)
Muon::MuonValidationHitBlock
Definition: MuonInsideOutValidationNtuple.h:245
Muon::TrackPlots::ntruth_seg1
TH2 * ntruth_seg1
Definition: MuonInsideOutAnalysisPlots.h:218
Muon::HoughPlots::chamber
ChamberResPlots chamber
Definition: MuonInsideOutAnalysisPlots.h:105
Muon::SegmentPlots::beta
TH1 * beta
Definition: MuonInsideOutAnalysisPlots.h:117
Muon::SegmentPlots::quality
TH1 * quality
Definition: MuonInsideOutAnalysisPlots.h:124
Muon::SegmentPlots::betaTrig
TH1 * betaTrig
Definition: MuonInsideOutAnalysisPlots.h:119
Muon::TimePlots::fill
void fill(const MuonValidationTimeBlock &times, int index, float betaTrack)
Definition: MuonInsideOutAnalysisPlots.cxx:129
Muon::TrackPlots::nhough
TH1 * nhough
Definition: MuonInsideOutAnalysisPlots.h:216
Muon::BetaFitRegionPlots::book
void book(TDirectory *dir, const TString &prefix, bool isBarrel)
Definition: MuonInsideOutAnalysisPlots.cxx:309
Muon::SegmentPlots::chambery
ChamberResPlots chambery
Definition: MuonInsideOutAnalysisPlots.h:132
Muon::SegmentPlots::chambercy
ChamberResPlots chambercy
Definition: MuonInsideOutAnalysisPlots.h:141
Muon::ChamberResPlots::fill
void fill(int chIndex_, float res_, float pull_, float exerr_, float p_)
Definition: MuonInsideOutAnalysisPlots.cxx:53
Muon::TrackPlots::phi
TH1 * phi
Definition: MuonInsideOutAnalysisPlots.h:208
Muon::MuonValidationIdBlock::chIndex
std::vector< int > * chIndex
Definition: MuonInsideOutValidationNtuple.h:63
Muon::TrackPlots::ntruth_hough
TH2 * ntruth_hough
Definition: MuonInsideOutAnalysisPlots.h:219
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:182
Muon::MuonValidationResidualBlock::residual
std::vector< float > * residual
Definition: MuonInsideOutValidationNtuple.h:179
lumiFormat.i
int i
Definition: lumiFormat.py:85
Muon::TimePlots::invBetaPull
TH1 * invBetaPull
Definition: MuonInsideOutAnalysisPlots.h:72
Muon::SegmentPlots::betaRes
TH1 * betaRes
Definition: MuonInsideOutAnalysisPlots.h:122
Muon::MuonValidationHoughBlock
Block with hough maxima information.
Definition: MuonInsideOutValidationNtuple.h:234
python.FPGATrackSimAnalysisConfig.hough
hough
Definition: FPGATrackSimAnalysisConfig.py:404
Muon::mstau
float mstau
Definition: MuonInsideOutAnalysisPlots.cxx:16
Muon::StageSummaryPlots::combinedCandidates
CandidatePlots combinedCandidates
Definition: MuonInsideOutAnalysisPlots.h:200
Muon::StageSummaryPlots::etaMissedCombined
TH1 * etaMissedCombined
Definition: MuonInsideOutAnalysisPlots.h:195
Muon::HoughPlots::fill
void fill(const MuonValidationHoughBlock &hough, int index, float p_)
Definition: MuonInsideOutAnalysisPlots.cxx:198
Muon::StageSummaryPlots
Definition: MuonInsideOutAnalysisPlots.h:190
Muon::StageSummaryPlots::etaMissed
TH1 * etaMissed
Definition: MuonInsideOutAnalysisPlots.h:193
Muon::TrackPlots::beta
TH1 * beta
Definition: MuonInsideOutAnalysisPlots.h:209
Muon::TimePlots::timePull10_70
TH1 * timePull10_70
Definition: MuonInsideOutAnalysisPlots.h:89
Muon::MuonValidationTrackParticleBlock::eta
std::vector< float > * eta
Definition: MuonInsideOutValidationNtuple.h:197
Muon::SegmentPlots::t0Trig
TH1 * t0Trig
Definition: MuonInsideOutAnalysisPlots.h:116
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
Muon::MuonValidationSegmentBlock::yresiduals
MuonValidationResidualBlock yresiduals
Definition: MuonInsideOutValidationNtuple.h:224
Muon::HitPlots::fill
void fill(const MuonValidationHitBlock &hits, int index, float p_)
Definition: MuonInsideOutAnalysisPlots.cxx:68
Muon::TimePlots::errorRT_Track
TH2 * errorRT_Track
Definition: MuonInsideOutAnalysisPlots.h:79
Muon::ResPlots::book
void book(const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:18
python.StandardJetMods.pull
pull
Definition: StandardJetMods.py:282
Muon::TimePlots::book
void book(TDirectory *dir, const TString &prefix, int type)
Definition: MuonInsideOutAnalysisPlots.cxx:80
Muon::MuonValidationResidualBlock::expos_err
std::vector< float > * expos_err
Definition: MuonInsideOutValidationNtuple.h:184
Muon::TrackPlots::hough
HoughPlots hough
Definition: MuonInsideOutAnalysisPlots.h:222
Muon::MuonValidationIdBlock::sector
std::vector< int > * sector
Definition: MuonInsideOutValidationNtuple.h:62
Muon::TrackPlots::segments
SegmentPlots segments
Definition: MuonInsideOutAnalysisPlots.h:223
Muon::MuonValidationTrackParticleBlock
Block with information on the incoming track particle.
Definition: MuonInsideOutValidationNtuple.h:192
Muon::ResPlots::exerr
TH1 * exerr
Definition: MuonInsideOutAnalysisPlots.h:21
Muon::MuonValidationSegmentBlock::angleYZ
MuonValidationResidualBlock angleYZ
Definition: MuonInsideOutValidationNtuple.h:226
Muon::TrackPlots::candidateStages
std::vector< StageSummaryPlots > candidateStages
Definition: MuonInsideOutAnalysisPlots.h:240
Muon::StageSummaryPlots::ncombinedCandidates
TH1 * ncombinedCandidates
Definition: MuonInsideOutAnalysisPlots.h:197
Muon::MuonInsideOutAnalysisPlots::rest
TrackPlots rest
Definition: MuonInsideOutAnalysisPlots.h:250
Muon::SegmentPlots::allx
ResPlots allx
Definition: MuonInsideOutAnalysisPlots.h:128
Muon::StageSummaryPlots::ncandidates
TH1 * ncandidates
Definition: MuonInsideOutAnalysisPlots.h:196
Muon::TrackPlots::pt
TH1 * pt
Definition: MuonInsideOutAnalysisPlots.h:206
Muon::TimePlots::timeRes150_350
TH1 * timeRes150_350
Definition: MuonInsideOutAnalysisPlots.h:85
Muon::CandidatePlots::beta
TH1 * beta
Definition: MuonInsideOutAnalysisPlots.h:178
Muon::TrackPlots::book
void book(TDirectory *dir, const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:356
beamspotman.dir
string dir
Definition: beamspotman.py:623
Muon::MuonValidationSegmentBlock::z
std::vector< float > * z
Definition: MuonInsideOutValidationNtuple.h:215
Muon::SegmentPlots::quality_chIndex
TH2 * quality_chIndex
Definition: MuonInsideOutAnalysisPlots.h:125
Muon::BetaFitRegionPlots::mdtt_good
BetaFitPlots mdtt_good
Definition: MuonInsideOutAnalysisPlots.h:164
Muon::SegmentPlots::t0ResTrig
TH1 * t0ResTrig
Definition: MuonInsideOutAnalysisPlots.h:121
Muon::CandidatePlots::book
void book(TDirectory *dir, const TString &prefix)
candidate based plots
Definition: MuonInsideOutAnalysisPlots.cxx:323
Muon::HoughPlots::book
void book(TDirectory *dir, const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:190
Muon::ResPlotsPt::res_p
TH2 * res_p
Definition: MuonInsideOutAnalysisPlots.h:29
Muon::MuonValidationSegmentBlock
Block with segment information.
Definition: MuonInsideOutValidationNtuple.h:206
Muon::TrackPlots::ntruth_seg
TH2 * ntruth_seg
Definition: MuonInsideOutAnalysisPlots.h:217
Muon::HitPlots::all_p
ResPlotsPt all_p
Definition: MuonInsideOutAnalysisPlots.h:51
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
Muon::BetaFitRegionPlots::allt
BetaFitPlots allt
Definition: MuonInsideOutAnalysisPlots.h:168
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
Muon::TrackPlots::eta
TH1 * eta
Definition: MuonInsideOutAnalysisPlots.h:207
Muon::TimePlots::errorRT
TH1 * errorRT
Definition: MuonInsideOutAnalysisPlots.h:77
Muon::SegmentPlots::allxz
ResPlots allxz
Definition: MuonInsideOutAnalysisPlots.h:134
Muon::TrackPlots::segments3
SegmentPlots segments3
Definition: MuonInsideOutAnalysisPlots.h:226
MuonBetaCalculationUtils.h
Muon::TrackPlots::nseg3
TH1 * nseg3
Definition: MuonInsideOutAnalysisPlots.h:215
Muon::MuonInsideOutAnalysisPlots::muon
TrackPlots muon
Definition: MuonInsideOutAnalysisPlots.h:248
Muon::TrackPlots::segments1
SegmentPlots segments1
Definition: MuonInsideOutAnalysisPlots.h:224
Muon::BetaFitPlots::beta
TH1 * beta
Definition: MuonInsideOutAnalysisPlots.h:152
Muon::MuonStationIndex::ChIndexMax
@ ChIndexMax
Definition: MuonStationIndex.h:19
Muon::ResPlotsPt::pull_p
TH2 * pull_p
Definition: MuonInsideOutAnalysisPlots.h:30
Muon::MuonBetaCalculationUtils::calculateInverseBetaError
float calculateInverseBetaError(float error, float dist)
Definition: MuonBetaCalculationUtils.h:33
Muon::MuonInsideOutAnalysisPlots::stau
TrackPlots stau
Definition: MuonInsideOutAnalysisPlots.h:249
Muon::StageSummaryPlots::betaMissed
TH1 * betaMissed
Definition: MuonInsideOutAnalysisPlots.h:191
Muon::TimePlots::timePull
TH1 * timePull
Definition: MuonInsideOutAnalysisPlots.h:67
Muon::TimePlots::betaPull
TH1 * betaPull
Definition: MuonInsideOutAnalysisPlots.h:70
Muon::StageSummaryPlots::allCandidates
CandidatePlots allCandidates
Definition: MuonInsideOutAnalysisPlots.h:198
Muon::SegmentPlots::fill
void fill(int chIndex_, int sector_, int quality_)
Definition: MuonInsideOutAnalysisPlots.cxx:289
Muon::TimePlots::betaRes
TH1 * betaRes
Definition: MuonInsideOutAnalysisPlots.h:69
DeMoScan.index
string index
Definition: DeMoScan.py:364
Muon::MuonValidationSegmentBlock::t0Trig
std::vector< float > * t0Trig
Definition: MuonInsideOutValidationNtuple.h:218
Muon::MuonValidationSegmentBlock::r
std::vector< float > * r
Definition: MuonInsideOutValidationNtuple.h:214
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Muon::MuonValidationSegmentBlock::id
MuonValidationIdBlock id
Definition: MuonInsideOutValidationNtuple.h:220
Muon::MuonBetaCalculationUtils::calculateInverseBeta
float calculateInverseBeta(float time, float dist)
Definition: MuonBetaCalculationUtils.h:29
Muon::BetaFitRegionPlots::rpct
BetaFitPlots rpct
Definition: MuonInsideOutAnalysisPlots.h:166
Muon::TimePlots::timePull0_10
TH1 * timePull0_10
Definition: MuonInsideOutAnalysisPlots.h:88
Muon::ChamberResPlots::plots_p
std::vector< ResPlotsPt > plots_p
Definition: MuonInsideOutAnalysisPlots.h:41
Muon::TimePlots::beta
TH1 * beta
Definition: MuonInsideOutAnalysisPlots.h:68
Muon::CandidatePlots::pt
TH1 * pt
Definition: MuonInsideOutAnalysisPlots.h:175
python.LArCondContChannels.isBarrel
isBarrel
Definition: LArCondContChannels.py:659
Muon::BetaFitPlots::fill
void fill(float beta_, float betaTruth_, float chi2_, int ndof_)
Definition: MuonInsideOutAnalysisPlots.cxx:302
Muon::TimePlots::errorTrack
TH1 * errorTrack
Definition: MuonInsideOutAnalysisPlots.h:78
Muon::CandidatePlots::phi
TH1 * phi
Definition: MuonInsideOutAnalysisPlots.h:177
Muon::ResPlotsPt::book
void book(const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:29
Muon::TrackPlots::hits
HitPlots hits
Definition: MuonInsideOutAnalysisPlots.h:221
Muon::SegmentPlots::chamberxz
ChamberResPlots chamberxz
Definition: MuonInsideOutAnalysisPlots.h:135
Muon::SegmentPlots::chamberyz
ChamberResPlots chamberyz
Definition: MuonInsideOutAnalysisPlots.h:138
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
Muon::TrackPlots::nseg
TH1 * nseg
Definition: MuonInsideOutAnalysisPlots.h:212
Muon::MuonBetaCalculationUtils::calculateBetaError
float calculateBetaError(float time, float error, float dist)
Definition: MuonBetaCalculationUtils.h:25
Muon::CandidatePlots::nseg
TH1 * nseg
Definition: MuonInsideOutAnalysisPlots.h:179
Muon::SegmentPlots::betaResTrig
TH1 * betaResTrig
Definition: MuonInsideOutAnalysisPlots.h:123
MuonStationIndex.h
Muon::StageSummaryPlots::book
void book(TDirectory *dir, const TString &prefix)
candidates based plots
Definition: MuonInsideOutAnalysisPlots.cxx:343
Muon::CandidatePlots::betaBestCandidate
BetaFitPlots betaBestCandidate
Definition: MuonInsideOutAnalysisPlots.h:182
Muon::ChamberResPlots::plots
std::vector< ResPlots > plots
Definition: MuonInsideOutAnalysisPlots.h:40
Muon::MuonValidationSegmentBlock::angleXZ
MuonValidationResidualBlock angleXZ
Definition: MuonInsideOutValidationNtuple.h:225
Muon::SegmentPlots::ally
ResPlots ally
Definition: MuonInsideOutAnalysisPlots.h:131
Muon::SegmentPlots::t0Res
TH1 * t0Res
Definition: MuonInsideOutAnalysisPlots.h:120
RunTileMonitoring.typeNames
typeNames
Definition: RunTileMonitoring.py:285
error
Definition: IImpactPoint3dEstimator.h:70
Muon::ResPlots::pull
TH1 * pull
Definition: MuonInsideOutAnalysisPlots.h:20
Muon::SegmentPlots::chamberx
ChamberResPlots chamberx
Definition: MuonInsideOutAnalysisPlots.h:129
Muon::MuonBetaCalculationUtils
Definition: MuonBetaCalculationUtils.h:12
Muon::ResPlotsPt::fill
void fill(float res_, float pull_, float exerr_, float pt)
Definition: MuonInsideOutAnalysisPlots.cxx:34
Muon::HoughPlots::max
TH1 * max
Definition: MuonInsideOutAnalysisPlots.h:101
Muon::MuonBetaCalculationUtils::calculateTof
float calculateTof(float beta, float dist)
Definition: MuonBetaCalculationUtils.h:37
Muon::BetaFitPlots::chi2Ndof
TH1 * chi2Ndof
Definition: MuonInsideOutAnalysisPlots.h:153
Muon::TimePlots::error_time
TH1 * error_time
Definition: MuonInsideOutAnalysisPlots.h:76
plot_times.times
def times(fn)
Definition: plot_times.py:11
Muon::TimePlots::timeRes10_70
TH1 * timeRes10_70
Definition: MuonInsideOutAnalysisPlots.h:83
Muon::HitPlots::book
void book(TDirectory *dir, const TString &prefix)
Definition: MuonInsideOutAnalysisPlots.cxx:62