AliPhysics  8b695ca (8b695ca)
plotOCDB_Temperature.C
Go to the documentation of this file.
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include <TCanvas.h>
3 #include <TDatime.h>
4 #include <TFile.h>
5 #include <TGrid.h>
6 #include <TH2F.h>
7 #include <TLegend.h>
8 #include <TLine.h>
9 #include <TMap.h>
10 #include <TNtuple.h>
11 #include <TObjArray.h>
12 #include <TProfile.h>
13 #include "TInfo.h"
14 
15 class TDraw : public TNamed {
16  public:
17  TDraw(const char *name, const char *fname="tempinfo.root");
18  virtual ~TDraw() {;}
19  TObjArray *GetArray() { return fArr; }
20  void Compute();
21  void DrawAll();
22  TCanvas *DrawTSensorsPerSM(Int_t type, Int_t sm) const;
23  TCanvas *DrawTPerSM(Int_t type=3) const;
24  TCanvas *DrawT2D(Int_t type=3) const;
25  TCanvas *DrawOccRun() const;
26  TCanvas *DrawOccSensor2D() const;
27  TCanvas *DrawOcc2D() const;
28  Double_t GetMaxT(Int_t type=3) const;
29  Double_t GetMinT(Int_t type=3) const;
30  Double_t GetMaxTperS(Int_t ns, Int_t type=3) const;
31  Double_t GetMinTperS(Int_t ns, Int_t type=3) const;
33  Int_t GetBad(Int_t ns) const { return fBad.At(ns); }
34  Int_t GetNBad() const;
35  Int_t GetNRuns() const { return fArr->GetEntries(); }
36  Int_t GetNRunsValid(Int_t ns) const;
37  Int_t GetRunNo(Int_t run) const { return (static_cast<TInfo*>(fArr->At(run)))->GetRunNo(); }
38  TH1 *GetOccRun() const;
39  TH1 *GetOccSensor() const;
40  TH2 *GetOccSensor2D() const;
41  TH2 *GetOcc2D() const;
42  TH1 *GetT(Int_t nsensor, Int_t type=3) const;
43  TH1 *GetTSM(Int_t sm, Int_t type=3) const;
44  TH2 *GetT2D(Int_t type=3) const;
45  Bool_t IsGood(Int_t ns) const { return (fBad.At(ns)==0); }
46  void Print(Option_t *opt="") const;
47  void SetPrint(Bool_t b=1) { fDoPrint=b; }
48  void SetBad(Int_t ns, Bool_t b) { fBad.SetAt(ns,b); }
49  protected:
50  TH2 *GetMask() const;
51  TObjArray *fArr; // array with info
52  Bool_t fDoPrint; // if true then print canvases
53  TArrayI fBad; // list of bad channels
54  Double_t fMinFrac; // minimum fraction
55  ClassDef(TDraw, 1); // Temperature draw class
56 };
57 #endif
58 
59 TDraw::TDraw(const char *name, const char *fname) : TNamed(name,fname), fArr(0), fDoPrint(0), fBad(TInfo::NSensors()), fMinFrac(0.8)
60 {
61  TFile *inf = TFile::Open("tempinfo.root");
62  fArr = dynamic_cast<TObjArray*>(inf->Get(Form("temperatures_%s",name)));
63  delete inf;
64  fBad.SetAt(1,26);
65  fBad.SetAt(1,40);
66  fBad.SetAt(1,43);
67  fBad.SetAt(1,44);
68  fBad.SetAt(1,45);
69  fBad.SetAt(1,84);
70  fBad.SetAt(1,85);
71  fBad.SetAt(1,86);
72  fBad.SetAt(1,87);
73  fBad.SetAt(1,92);
74  fBad.SetAt(1,93);
75  fBad.SetAt(1,94);
76  fBad.SetAt(1,95);
77  fBad.SetAt(1,117);
78  fBad.SetAt(1,135);
79  fBad.SetAt(1,140);
80  fBad.SetAt(1,147);
81  fBad.SetAt(1,148);
82  fBad.SetAt(1,149);
83  fBad.SetAt(1,150);
84  fBad.SetAt(1,151);
85  fBad.SetAt(1,156);
86  fBad.SetAt(1,157);
87  fBad.SetAt(1,158);
88  fBad.SetAt(1,159);
89 }
90 
92 {
93  const Int_t nbad = GetNBad();
94  cout << "Known bad sensors: " << nbad << " (";
95  for (Int_t ns=0,first=0;ns<TInfo::NSensors();++ns) {
96  if (IsGood(ns))
97  continue;
98  if (first==0) {
99  cout << ns;
100  first = 1;
101  } else
102  cout << ", " << ns;
103  }
104  cout << ")" << endl;
105 
106  const Int_t rns=fArr->GetEntries();
107  for (Int_t i=0;i<rns;++i) {
108  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
109  if (!tinfo)
110  continue;
111  if (tinfo->GetNFaulty()!=nbad) {
112  cout << "Setting nfaulty to " << nbad << " for run " << i << endl;
113  tinfo->SetNFaulty(nbad);
114  }
115  Double_t frac = tinfo->Fraction();
116  if (frac<fMinFrac)
117  cout << "Run " << i << " with run number " << tinfo->GetRunNo() << " below threshold: " << frac << endl;
118  }
119 
120  for (Int_t ns=0;ns<TInfo::NSensors();++ns) {
121  Double_t frac=GetFraction(ns);
122  if (!IsGood(ns)) {
123  if (frac>0) {
124  cout << "Sensor " << ns << " marked bad, but has fraction: " << frac << endl;
125  }
126  continue;
127  }
128  if (frac<fMinFrac)
129  cout << "Sensor " << ns << " below threshold: " << frac << endl;
130  }
131 }
132 
134 {
135  TString cname(Form("cTempAll_%s",GetName()));
136  TCanvas *c1 = DrawOccRun();
137  c1->Print(Form("%s.pdf[",cname.Data()));
138  c1->Print(Form("%s.pdf",cname.Data()));
139  TCanvas *c2=DrawOccSensor2D();
140  c2->Print(Form("%s.pdf",cname.Data()));
141  TCanvas *c3=DrawTPerSM(3);
142  c3->Print(Form("%s.pdf",cname.Data()));
143  for (Int_t i=0; i < 20; i++){
144  TCanvas* c5 = DrawTSensorsPerSM(3,i);
145  c5->Print(Form("%s.pdf",cname.Data()));
146  delete c5;
147  }
148 
149  TString lab(Form("cTemp2D_%s_%s",TInfo::Type(3),GetName()));
150  TCanvas *c4 = new TCanvas(lab,lab,1200,800);
151  const Int_t rns=fArr->GetEntries();
152  Double_t min=-1;
153  Double_t max=30;
154  for (Int_t i=0;i<rns;++i) {
155  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
156  if (!tinfo)
157  continue;
158  TH2 *h=tinfo->GetHist(3);
159  h->SetMinimum(min);
160  h->SetMaximum(max);
161  h->Draw("colz,text");
162  TH2 *hm = GetMask();
163  hm->DrawCopy("box,same");
164  c4->Print(Form("%s.pdf",cname.Data()));
165  }
166  c4->Print(Form("%s.pdf]",cname.Data()));
167 }
168 
169 TCanvas *TDraw::DrawOccRun() const
170 {
171  TString lab(Form("cOccRun_%s",GetName()));
172  TCanvas *c = new TCanvas(lab,lab,1200,800);
173  TH1 *h = GetOccRun();
174  h->SetMinimum(0);
175  h->SetMaximum(1);
176  h->Draw("P");
177  TLine *l = new TLine(0,fMinFrac,GetNRuns(),fMinFrac);
178  l->SetLineColor(2);
179  l->SetLineWidth(2);
180  l->SetLineStyle(9);
181  l->Draw();
182  if (fDoPrint)
183  c->Print(Form("%s.pdf",c->GetName()));
184  return c;
185 }
186 
187 TCanvas *TDraw::DrawOccSensor2D() const
188 {
189  TString lab(Form("cOccSensor2D_%s",GetName()));
190  TCanvas *c = new TCanvas(lab,lab,1200,800);
191  TH2 *h2 = GetOccSensor2D();
192  h2->Draw("colz,text");
193  if (fDoPrint)
194  c->Print(Form("%s.pdf",c->GetName()));
195  return c;
196 }
197 
198 TCanvas *TDraw::DrawOcc2D() const
199 {
200  TString lab(Form("cOcc2D_%s",GetName()));
201  TCanvas *c = new TCanvas(lab,lab);
202  TH2 *h = GetOcc2D();
203  h->Draw("colz");
204  if (fDoPrint)
205  c->Print(Form("%s.pdf",c->GetName()));
206  return c;
207 }
208 
209 TCanvas *TDraw::DrawTSensorsPerSM(Int_t type, Int_t sm) const
210 {
211  TString lab(Form("cTemp_%s_%s_%d",TInfo::Type(type),GetName(),sm));
212  TCanvas *c = new TCanvas(lab,lab,1200,800);
213  Double_t max=GetMaxT(type),maxp=-100;
214  Double_t min=GetMinT(type),minp=+100;
215  TLegend *leg = new TLegend(0.92,0.1,0.99,0.99);
216  TObjArray arr;
217 
218  TH1 *hAv=GetTSM(sm,type);
219  hAv->SetMarkerStyle(20);
220  hAv->SetMarkerSize(1.4);
221  hAv->SetMarkerColor(kBlack);
222  hAv->SetLineColor(kBlack);
223  hAv->SetLineWidth(3);
224  hAv->SetName(Form("sm%d",sm));
225  arr.Add(hAv);
226  leg->AddEntry(hAv,hAv->GetName(),"p");
227 
228  for (Int_t i=0;i<8;++i) {
229  TH1 *h=GetT(sm*8+i,type);
230  Int_t col=i+2;
231  h->SetMarkerStyle(24+(i%2));
232  h->SetMarkerSize(1.2);
233  h->SetMarkerColor(col);
234  h->SetLineColor(col);
235  h->SetLineWidth(3);
236  h->SetName(Form("sensor%d",i));
237  //h->Draw("same, p, hist");
238 
239  if (h->GetMaximum()>-1){
240  arr.Add(h);
241  Double_t minh=h->GetMinimum(-1);
242  if (minh<minp) minp=minh;
243  Double_t maxh=h->GetMaximum();
244  if (maxh>maxp) maxp=maxh;
245  leg->AddEntry(h,h->GetName(),"p");
246  }
247  }
248  minp=0.9*minp; maxp=1.1*maxp;
249  TH2 *h2f = new TH2F("h2f",";run idx;T",1,0,GetNRuns(),1,minp,maxp);
250  h2f->SetTitle(Form("T per sensor in SM%d: run %d to %d, min=%.1f, max=%.1f",sm,GetRunNo(0), GetRunNo(GetNRuns()-1), min, max));
251  h2f->SetStats(0);
252  h2f->Draw();
253  leg->Draw();
254  for (Int_t i=0;i<arr.GetEntries();++i)
255  arr.At(i)->Draw("same, p, hist");
256  c->SetGridx(1);
257  c->SetGridy(1);
258  if (fDoPrint)
259  c->Print(Form("%s.pdf",c->GetName()));
260  return c;
261 }
262 
263 TCanvas *TDraw::DrawTPerSM(Int_t type) const
264 {
265  TString lab(Form("cTemp_%s_%s",TInfo::Type(type),GetName()));
266  TCanvas *c = new TCanvas(lab,lab,1200,800);
267  Double_t max=GetMaxT(type),maxp=-100;
268  Double_t min=GetMinT(type),minp=+100;
269  TLegend *leg = new TLegend(0.92,0.1,0.99,0.99);
270  TObjArray arr;
271  for (Int_t i=0;i<20;++i) {
272  TH1 *h=GetTSM(i,type);
273  Int_t col=i+1;
274  switch (i) {
275  case 9: col=kOrange+2; break;
276  case 10: col=kOrange+10; break;
277  case 11: col=kMagenta+2; break;
278  case 12: col=kCyan+2; break;
279  case 13: col=kYellow+2; break;
280  case 14: col=kGray+2; break;
281  case 15: col=kOrange-2; break;
282  case 16: col=kViolet+2; break;
283  case 17: col=kRed-2; break;
284  case 18: col=kGreen+2; break;
285  case 19: col=kGray+2; break;
286  }
287  h->SetMarkerStyle(20+(i%2));
288  h->SetMarkerSize(1.2);
289  h->SetMarkerColor(col);
290  h->SetLineColor(col);
291  h->SetLineWidth(3);
292  h->SetName(Form("SM%d",i));
293  //h->Draw("same, p, hist");
294  arr.Add(h);
295  Double_t minh=h->GetMinimum();
296  if (minh<minp) minp=minh;
297  Double_t maxh=h->GetMaximum();
298  if (maxh>maxp) maxp=maxh;
299  leg->AddEntry(h,h->GetName(),"p");
300  }
301  minp=0.9*minp; maxp=1.1*maxp;
302  TH2 *h2f = new TH2F("h2f",";run idx;T",1,0,GetNRuns(),1,minp,maxp);
303  h2f->SetTitle(Form("Average T per SM: run %d to %d, min=%.1f, max=%.1f",GetRunNo(0), GetRunNo(GetNRuns()-1), min, max));
304  h2f->SetStats(0);
305  h2f->Draw();
306  leg->Draw();
307  for (Int_t i=0;i<arr.GetEntries();++i)
308  arr.At(i)->Draw("same, p, hist");
309  c->SetGridx(1);
310  c->SetGridy(1);
311  if (fDoPrint)
312  c->Print(Form("%s.pdf",c->GetName()));
313  return c;
314 }
315 
316 TCanvas *TDraw::DrawT2D(Int_t type) const
317 {
318  TString lab(Form("cTemp2D%s_%s",TInfo::Type(type),GetName()));
319  TCanvas *c = new TCanvas(lab,lab);
320  TH2 *h = GetT2D(type);
321  h->Draw("colz");
322  if (fDoPrint)
323  c->Print(Form("%s.pdf",c->GetName()));
324  return c;
325 }
326 
328 {
329  static TH2F *h = 0;
330  if (h==0) {
331  h = new TH2F("hBadMask",";col;rows",8,-0.5,7.5,20,-0.5,19.5);
332  h->SetDirectory(0);
333  h->SetStats(0);
334  h->SetLineColor(0);
335  h->SetMaximum(0);
336  h->SetMinimum(-1);
337  for (Int_t i=0;i<TInfo::NSensors();++i) {
338  Double_t bin = TInfo::GetBin(i);
339  if (!IsGood(i))
340  h->SetBinContent(bin,-1);
341  else
342  h->SetBinContent(bin,-100);
343  }
344  }
345  return h;
346 }
347 
349 {
350  const Int_t rns=fArr->GetEntries();
351  TH1F *ret = new TH1F("hOccRun",Form(";run idx;fraction"),rns,0,rns);
352  ret->SetTitle(Form("Fraction of all sensors per run: run %d to %d, min.fraction=%.1f",GetRunNo(0), GetRunNo(GetNRuns()-1), fMinFrac));
353  ret->SetDirectory(0);
354  ret->SetStats(0);
355  ret->SetMarkerStyle(20);
356  ret->SetMarkerSize(1);
357  Int_t r1,r2=0;
358  for (Int_t i=0;i<rns;++i) {
359  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
360  if (!tinfo)
361  continue;
362  Double_t val=tinfo->Fraction();
363  ret->SetBinContent(i+1,val);
364  }
365  return ret;
366 }
367 
369 {
370  const Int_t rns=fArr->GetEntries();
371  TProfile *ret = new TProfile("hOccSensor",Form(";sensor id;fraction"),TInfo::NSensors(),0,TInfo::NSensors());
372  ret->SetDirectory(0);
373  ret->SetStats(0);
374  ret->SetMarkerStyle(20);
375  ret->SetMarkerSize(1);
376  for (Int_t i=0;i<rns;++i) {
377  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
378  if (!tinfo)
379  continue;
380  for (Int_t j=0;j<TInfo::NSensors();++j) {
381  Int_t val=tinfo->IsValid(j);
382  ret->Fill(j,val);
383  }
384  }
385  return ret;
386 }
387 
389 {
390  TH2F *hOcc2D = new TH2F("hOccSensor2D",";col;rows",8,-0.5,7.5,20,-0.5,19.5);
391  hOcc2D->SetTitle(Form("Fraction of all runs per sensor: run %d to %d, min.fraction=%.1f",GetRunNo(0), GetRunNo(GetNRuns()-1), fMinFrac));
392  hOcc2D->SetDirectory(0);
393  hOcc2D->SetStats(0);
394  hOcc2D->SetMinimum(-1);
395  hOcc2D->SetMaximum(+1);
396  for (Int_t ns=0;ns<TInfo::NSensors();++ns) {
397  Double_t frac = GetFraction(ns);
398  Int_t bin = TInfo::GetBin(ns);
399  if (!IsGood(ns))
400  frac = -1;
401  hOcc2D->SetBinContent(bin,frac);
402  }
403  return hOcc2D;
404 }
405 
407 {
408  const Int_t rns=fArr->GetEntries();
409  TH2F *ret = new TH2F("h2focc",Form("%s;run idx;sensor idx",GetName()),rns,0,rns,TInfo::NSensors(),0,TInfo::NSensors());
410  ret->SetDirectory(0);
411  ret->SetStats(0);
412  for (Int_t i=0;i<rns;++i) {
413  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
414  if (!tinfo)
415  continue;
416  for (Int_t j=0;j<TInfo::NSensors();++j) {
417  Int_t val=tinfo->IsValid(j);
418  ret->SetBinContent(ret->FindBin(i,j),val);
419  }
420  }
421  return ret;
422 }
423 
425 {
426  Double_t ret=-1e9;
427  const Int_t rns=fArr->GetEntries();
428  for (Int_t i=0;i<rns;++i) {
429  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
430  if (!tinfo)
431  continue;
432  Double_t v=tinfo->AbsMaxT(type);
433  if (v>ret)
434  ret=v;
435  }
436  return ret;
437 }
438 
440 {
441  Double_t ret=-1e9;
442  const Int_t rns=fArr->GetEntries();
443  for (Int_t i=0;i<rns;++i) {
444  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
445  if (!tinfo)
446  continue;
447  if (!tinfo->IsValid(ns))
448  continue;
449  Double_t v=tinfo->T(ns,type);
450  if (v>ret)
451  ret=v;
452  }
453  return ret;
454 }
455 
457 {
458  Double_t ret=1e9;
459  const Int_t rns=fArr->GetEntries();
460  for (Int_t i=0;i<rns;++i) {
461  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
462  if (!tinfo)
463  continue;
464  Double_t v=tinfo->AbsMinT(type);
465  if (v<ret)
466  ret=v;
467  }
468  return ret;
469 }
470 
472 {
473  Double_t ret=1e9;
474  const Int_t rns=fArr->GetEntries();
475  for (Int_t i=0;i<rns;++i) {
476  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
477  if (!tinfo)
478  continue;
479  if (!tinfo->IsValid(ns))
480  continue;
481  Double_t v=tinfo->T(ns,type);
482  if (v<ret)
483  ret=v;
484  }
485  return ret;
486 }
487 
489 {
490  Int_t ret=0;
491  const Int_t nbad = fBad.GetSize();
492  for (Int_t ns=0,first=0;ns<nbad;++ns) {
493  if (IsGood(ns))
494  continue;
495  ++ret;
496  }
497  return ret;
498 }
499 
500 TH1 *TDraw::GetTSM(Int_t sm, Int_t type) const
501 {
502  const Int_t rns=fArr->GetEntries();
503  TProfile *ret = new TProfile(Form("h%d%d",sm,type),Form(";run idx"),rns,0,rns);
504  ret->SetDirectory(0);
505  ret->SetStats(0);
506  for (Int_t i=0;i<rns;++i) {
507  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
508  if (!tinfo)
509  continue;
510  Double_t val = tinfo->AvgTempSM(sm);
511  cout << i << "\t" << sm << "\t" << val << endl;
512  ret->Fill(i,val);
513  }
514  return ret;
515 }
516 
517 TH1 *TDraw::GetT(Int_t nsensor, Int_t type) const
518 {
519  const Int_t rns=fArr->GetEntries();
520  TProfile *ret = new TProfile(Form("h%d%d",nsensor,type),Form(";run idx"),rns,0,rns);
521  ret->SetDirectory(0);
522  ret->SetStats(0);
523  for (Int_t i=0;i<rns;++i) {
524  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
525  if (!tinfo)
526  continue;
527  Double_t val = -1;
528  if (tinfo->IsValid(nsensor))
529  val = tinfo->T(nsensor,type);
530  ret->Fill(i,val);
531  }
532  return ret;
533 }
534 
535 TH2 *TDraw::GetT2D(Int_t type) const
536 {
537  const Int_t rns=fArr->GetEntries();
538  TString title=TInfo::Type(type);
539  TH2F *ret = new TH2F(Form("h2f_%d",type),Form("%s: %s;run idx;sensor idx",GetName(),title.Data()),rns,0,rns,TInfo::NSensors(),0,TInfo::NSensors());
540  ret->SetDirectory(0);
541  ret->SetStats(0);
542  for (Int_t i=0;i<rns;++i) {
543  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
544  if (!tinfo)
545  continue;
546  for (Int_t j=0;j<TInfo::NSensors();++j) {
547  if (!tinfo->IsValid(j))
548  continue;
549  Double_t val = tinfo->T(j,type);
550  ret->SetBinContent(ret->FindBin(i,j),val);
551  }
552  }
553  return ret;
554 }
555 
557 {
558  Int_t ret = 0;
559  const Int_t rns=fArr->GetEntries();
560  for (Int_t i=0;i<rns;++i) {
561  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
562  if (!tinfo)
563  continue;
564  ret += tinfo->IsValid(ns);
565  }
566  return ret;
567 }
568 
570 {
571  const Int_t rns=fArr->GetEntries();
572  cout << "Period: " << GetName() << " with " << rns << " runs" << endl;
573  if (strlen(opt)>0)
574  for (Int_t ns=0;ns<TInfo::NSensors();++ns)
575  cout << "Channel " << ns << " " << GetFraction(ns) << endl;
576  for (Int_t i=0;i<rns;++i) {
577  TInfo *tinfo = dynamic_cast<TInfo*>(fArr->At(i));
578  if (!tinfo)
579  continue;
580  cout << "-> " << i << ": run=" << tinfo->GetRunNo() << " frac=" << tinfo->Fraction() << " minT=" << tinfo->AbsMinT()<< " maxT=" << tinfo->AbsMaxT() << endl;
581  if (strlen(opt)>0)
582  tinfo->Print();
583  }
584 }
585 
586 void plotT_period(const char *period, Bool_t doprint=0)
587 {
588  TDraw d(period);
589  d.SetPrint(doprint);
590  d.Compute();
591  d.Print();
592  if (0) {
593  d.DrawOccRun();
594  d.DrawOccSensor2D();
595  d.DrawT2D(3);
596  d.DrawTPerSM(3);
597  for (Int_t i = 0; i < 20; i++)
598  d.DrawTSensorsPerSM(3,i);
599  } else
600  d.DrawAll();
601 }
602 
603 void plotOCDB_Temperature(const char *period="lhc18d")
604 {
605  plotT_period(period);
606 }
607 
TH2 * GetOccSensor2D() const
double Double_t
Definition: External.C:58
void plotT_period(const char *period, Bool_t doprint=0)
TCanvas * DrawTPerSM(Int_t type=3) const
Int_t GetBad(Int_t ns) const
Definition: External.C:236
const char * title
Definition: MakeQAPdf.C:27
Bool_t fDoPrint
Definition: TInfo.h:10
static Int_t NSensors()
Definition: TInfo.h:49
Int_t GetNFaulty() const
Definition: TInfo.h:28
TH1 * GetOccSensor() const
TH1 * GetOccRun() const
Float_t AbsMaxT(Int_t t=2) const
Definition: TInfo.cxx:23
Int_t GetNBad() const
static Int_t GetBin(Int_t ns)
Definition: TInfo.cxx:99
TCanvas * c
Definition: TestFitELoss.C:172
TObjArray * fArr
Int_t GetNRuns() const
TCanvas * DrawT2D(Int_t type=3) const
TH2 * GetMask() const
Double_t GetMinTperS(Int_t ns, Int_t type=3) const
void SetNFaulty(Int_t n)
Definition: TInfo.h:43
Double_t GetMinT(Int_t type=3) const
int Int_t
Definition: External.C:63
virtual ~TDraw()
Bool_t IsGood(Int_t ns) const
void SetBad(Int_t ns, Bool_t b)
Bool_t IsValid(Int_t ns) const
Definition: TInfo.h:31
TH1 * GetT(Int_t nsensor, Int_t type=3) const
void SetPrint(Bool_t b=1)
Double_t fMinFrac
Double_t GetFraction(Int_t ns) const
void plotOCDB_Temperature(const char *period="lhc18d")
Float_t AvgTempSM(Int_t sm, Int_t type=3) const
Definition: TInfo.cxx:36
TH2 * GetHist(Int_t type=1) const
Definition: TInfo.cxx:51
TCanvas * DrawTSensorsPerSM(Int_t type, Int_t sm) const
Int_t GetNRunsValid(Int_t ns) const
void Compute()
TObjArray * GetArray()
TCanvas * DrawOccRun() const
void Print(Option_t *option="") const
Definition: TInfo.cxx:71
Double_t GetMaxTperS(Int_t ns, Int_t type=3) const
TH2 * GetOcc2D() const
void Print(Option_t *opt="") const
TArrayI fBad
Definition: External.C:220
Float_t T(Int_t ns, Int_t t) const
Definition: TInfo.cxx:80
TDraw(const char *name, const char *fname="tempinfo.root")
TCanvas * DrawOccSensor2D() const
TH2 * GetT2D(Int_t type=3) const
TH1 * GetTSM(Int_t sm, Int_t type=3) const
const char Option_t
Definition: External.C:48
Float_t AbsMinT(Int_t t=1) const
Definition: TInfo.cxx:10
Double_t Fraction() const
Definition: TInfo.h:29
bool Bool_t
Definition: External.C:53
static const char * Type(Int_t t)
Definition: TInfo.cxx:323
Int_t GetRunNo() const
Definition: TInfo.h:27
TCanvas * DrawOcc2D() const
Definition: External.C:196
Int_t GetRunNo(Int_t run) const
Double_t GetMaxT(Int_t type=3) const