AliRoot Core  ee782a0 (ee782a0)
MUONStatusMap.C
Go to the documentation of this file.
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 /* $Id$ */
17 
23 
24 #if !defined(__CINT__) || defined(__MAKECINT__)
25 #include "AliCDBManager.h"
26 #include "AliCDBEntry.h"
27 #include "AliLog.h"
28 #include "AliMpCDB.h"
29 #include "AliMpDEManager.h"
30 #include "AliMUONCDB.h"
31 #include "AliMUONCalibrationData.h"
32 #include "AliMUONPadStatusMaker.h"
34 #include "AliMUONRecoParam.h"
35 #include "AliMUONVCalibParam.h"
36 #include "AliMUONVStore.h"
37 #include "AliMpConstants.h"
38 #include "AliMpDDLStore.h"
39 #include "AliMpDetElement.h"
40 #include "AliMpManuIterator.h"
41 #include "Riostream.h"
42 #include "TAxis.h"
43 #include "TCanvas.h"
44 #include "TLegend.h"
45 #include "TFile.h"
46 #include "TGraph.h"
47 #include "TBox.h"
48 #include "TH2F.h"
49 #include "TLine.h"
50 #include "TStyle.h"
51 #include "TText.h"
52 #include <vector>
53 #endif
54 
55 namespace
56 {
57  Int_t NTOTALNUMBEROFPADS(1064008);
58 }
59 
60 //______________________________________________________________________________
61 void ReadIntegers(const char* filename, std::vector<int>& integers)
62 {
65  ifstream in(gSystem->ExpandPathName(filename));
66  int i;
67 
68  char line[10000];
69 
70  in.getline(line,10000,'\n');
71 
72  TString sline(line);
73 
74  if (sline.Contains(","))
75  {
76  TObjArray* a = sline.Tokenize(",");
77  TIter next(a);
78  TObjString* s;
79  while ( ( s = static_cast<TObjString*>(next()) ) )
80  {
81  integers.push_back(s->String().Atoi());
82  }
83  }
84  else
85  {
86  integers.push_back(sline.Atoi());
87 
88  while ( in >> i )
89  {
90  integers.push_back(i);
91  }
92  }
93 
94  std::sort(integers.begin(),integers.end());
95 }
96 
97 
98 //______________________________________________________________________________
100  AliMUONVStore*& vstatusMap,
101  const char* cdbStorage = "alien://folder=/alice/data/2011/OCDB",
102  Int_t runNumber=145292)
103 {
104 
107 
109 
111 
113 
114  AliMUONPadStatusMaker statusMaker(cd);
115 
116  statusMaker.SetLimits(*recoParam);
117 
118  UInt_t mask = recoParam->PadGoodnessMask();
119 
120  statusMaker.Report(mask);
121 
122  vstatus = static_cast<AliMUONVStore*>(statusMaker.StatusStore()->Clone());
123 
124  const Bool_t deferredInitialization = kFALSE;
125 
126  AliMUONPadStatusMapMaker statusMapMaker(cd,mask,deferredInitialization);
127 
128  vstatusMap = static_cast<AliMUONVStore*>(statusMapMaker.StatusMap()->Clone());
129 }
130 
131 //______________________________________________________________________________
133  Int_t& nbadped,
134  Int_t& nbadhv,
135  Int_t& nbadlv,
136  Int_t& nbadocc,
137  Int_t& nmissing,
138  Int_t& nreco,
139  Int_t chamber=-1)
140 {
141  if (!AliCDBManager::Instance()->IsDefaultStorageSet())
142  {
143 // AliCDBManager::Instance()->SetDefaultStorage("alien://folder=/alice/data/2011/OCDB?cacheFold=/local/cdb");
145  }
146 
147  AliCDBManager::Instance()->SetRun(runNumber);
148 
150 
151  AliMUONCalibrationData cd(runNumber,true);
152 
153  AliMUONPadStatusMaker statusMaker(cd);
154 
156 
157  statusMaker.SetLimits(*recoParam);
158 
160  Int_t detElemId, manuId;
161 
162  Int_t pedCheck = (
168 
169  Int_t hvCheck = (
175 
176 
177  Int_t occCheck = (
179  );
180 
181  Int_t lvCheck = ( AliMUONPadStatusMaker::kLVTooLow );
182 
183  Int_t ntotal(0);
184  Int_t nbad(0);
185  nbadped=0;
186  nbadocc=0;
187  nbadhv=0;
188  nbadlv=0;
189  nmissing=0;
190  nreco=0;
191 
192  while ( it.Next(detElemId,manuId) )
193  {
195 
196  if ( chamber >= 0 && AliMpDEManager::GetChamberId(detElemId) != chamber ) continue;
197 
198  for ( Int_t manuChannel = 0; manuChannel < AliMpConstants::ManuNofChannels(); ++manuChannel )
199  {
200  if ( de->IsConnectedChannel(manuId,manuChannel) )
201  {
202  ++ntotal;
203 
204  UInt_t status = statusMaker.PadStatus(detElemId, manuId, manuChannel);
205 
206  if (!status) continue;
207 
208  bool bad(false);
209 
210  if ( status & AliMUONPadStatusMaker::BuildStatus(pedCheck,0,0,0) )
211  {
212  ++nbadped;
213  bad=true;
214  }
215 
216  if ( status & AliMUONPadStatusMaker::BuildStatus(0,hvCheck,0,0) )
217  {
218  ++nbadhv;
219  bad=true;
220  }
221 
222  if ( status & AliMUONPadStatusMaker::BuildStatus(0,0,lvCheck,0) )
223  {
224  ++nbadlv;
225  bad=true;
226  }
227 
228  if ( status & AliMUONPadStatusMaker::BuildStatus(0,0,0,occCheck) )
229  {
230  ++nbadocc;
231  bad=true;
232  }
233 
234  if ( status & recoParam->PadGoodnessMask() )
235  {
236  ++nreco;
237  }
238 
240  {
241  bad=true;
242  ++nmissing;
243  }
244 
245  if (bad) ++nbad;
246  }
247  }
248  }
249 
250  if ( chamber<0 && ntotal!=NTOTALNUMBEROFPADS)
251  {
252  cerr << Form("ERROR ! NOT THE EXPECTED NUMBER OF CHANNELS (%d vs 1064008) FOR RUN %09d",
253  ntotal,runNumber) << endl;
254  }
255  else
256  {
257  cout << Form("Chamber %d - %d channels",chamber,ntotal) << endl;
258  cout << Form("nbadped %5d nbadhv %5d nbadlv %5d nbadocc %5d nmissing %5d nreco %5d",
259  nbadped,nbadhv,nbadlv,nbadocc,nmissing,nreco) << endl;
260  }
261 
263 
264  return nbad;
265 }
266 
267 //______________________________________________________________________________
268 void Draw(TFile* f, const char* gname, TLegend* l, Bool_t normalized)
269 {
270  if (!f) return;
271 
272  TGraph* g = static_cast<TGraph*>(f->Get(gname));
273 
274  if (!g) return;
275 
276  if ( normalized )
277  {
278  g = static_cast<TGraph*>(g->Clone());
279  for ( Int_t i = 0; i < g->GetN(); ++i )
280  {
281  Double_t y = g->GetY()[i];
282  g->SetPoint(i,g->GetX()[i],y/NTOTALNUMBEROFPADS);
283  }
284  }
285 
286  g->Draw("lp");
287  g->GetXaxis()->SetNdivisions(505);
288  g->GetXaxis()->SetNoExponent();
289 
290  if (l) l->AddEntry(g,gname,"LP");
291 }
292 
293 //______________________________________________________________________________
294 void DrawPeriod(int runmin, int runmax, int run1, int run2, double ymin, double ymax, const char* label)
295 {
296  if ( run1 < runmin || run1 > runmax || run2 < runmin || run2 > runmax ) return;
297 
298  TBox* b = new TBox(run1,ymin,run2,ymax);
299  b->SetFillColor(kYellow-9);
300  b->Draw();
301  TText* text = new TText((run1+run2)/2.0,ymax*0.6,label);
302  text->SetTextAlign(22);
303  text->SetTextSize(0.02);
304  text->Draw();
305  TLine* l1 = new TLine(run1,ymin,run1,ymax);
306  TLine* l2 = new TLine(run2,ymin,run2,ymax);
307  l1->SetLineStyle(9);
308  l2->SetLineStyle(9);
309  l1->Draw();
310  l2->Draw();
311 }
312 
313 //______________________________________________________________________________
314 void DrawEvolution(const char* file, bool normalized=true)
315 {
316 
317  TFile* f = TFile::Open(gSystem->ExpandPathName(file));
318 
319  if (!f) return;
320 
321  TCanvas* c = new TCanvas("mch-status-evolution","mch-status-evolution");
322 
323  c->SetGridy();
324  c->SetTicky();
325 
326  c->Draw();
327 
328  TLegend* l = new TLegend(0.1,0.7,0.3,0.95,"ch evolution");
329 
330  TGraph* g = static_cast<TGraph*>(f->Get("nbad"));
331  if (!g) return;
332 
333  int runmin = TMath::Nint(g->GetX()[0]);
334  int runmax = TMath::Nint(g->GetX()[g->GetN()-1]);
335 
336  cout << Form("Run range found in file %s = %d - %d",file,runmin,runmax) << endl;
337 
338  double ymax(0.4);
339 
340  TH2* h = new TH2F("hframe","hframe;Run number;Fraction of dead channels",100,runmin-200,runmax+200,100,0,ymax);
341 
342  gStyle->SetOptStat(kFALSE);
343  h->Draw();
344  h->GetXaxis()->SetNoExponent();
345  h->GetXaxis()->SetNdivisions(505);
346 
347  gStyle->SetOptTitle(kFALSE);
348 
349  DrawPeriod(runmin,runmax,115881,117222,0,ymax,"10b");
350  DrawPeriod(runmin,runmax,119159,120824,0,ymax,"10c");
351  DrawPeriod(runmin,runmax,122374,126424,0,ymax,"10d");
352  DrawPeriod(runmin,runmax,127724,130850,0,ymax,"10e");
353  DrawPeriod(runmin,runmax,133005,134929,0,ymax,"10f");
354  DrawPeriod(runmin,runmax,135658,136376,0,ymax,"10g");
355  DrawPeriod(runmin,runmax,137133,139513,0,ymax,"10h");
356  DrawPeriod(runmin,runmax,143856,146860,0,ymax,"11a");
357  DrawPeriod(runmin,runmax,148370,150702,0,ymax,"11b");
358  DrawPeriod(runmin,runmax,151566,154583,0,ymax,"11c");
359  DrawPeriod(runmin,runmax,158084,159606,0,ymax,"11d");
360  DrawPeriod(runmin,runmax,160677,162717,0,ymax,"11e");
361  DrawPeriod(runmin,runmax,162933,165744,0,ymax,"11f");
362  DrawPeriod(runmin,runmax,167703,170593,0,ymax,"11h");
363 
364  // 2012
365 
366  DrawPeriod(runmin,runmax,176661,177295,0,ymax,"12a");
367  DrawPeriod(runmin,runmax,177384,178053,0,ymax,"12b");
368  DrawPeriod(runmin,runmax,179603,180569,0,ymax,"12c");
369  DrawPeriod(runmin,runmax,183913,186320,0,ymax,"12d");
370  DrawPeriod(runmin,runmax,186365,186602,0,ymax,"12e");
371  DrawPeriod(runmin,runmax,186668,188123,0,ymax,"12f");
372  DrawPeriod(runmin,runmax,188362,188503,0,ymax,"12g");
373  DrawPeriod(runmin,runmax,189122,190110,0,ymax,"12h");
374 
375  // 2013
376 
377  DrawPeriod(runmin,runmax,195344,195483,0,ymax,"13b");
378  DrawPeriod(runmin,runmax,195529,195677,0,ymax,"13c");
379  DrawPeriod(runmin,runmax,195681,195873,0,ymax,"13d");
380  DrawPeriod(runmin,runmax,195949,196311,0,ymax,"13e");
381  DrawPeriod(runmin,runmax,196433,197388,0,ymax,"13f");
382 
383  // 2015
384  // periods are from the logbook, taking only PHYSICS% partitions
385  // into account
386  DrawPeriod(runmin,runmax,213329,215151,0,ymax,"15a");
387  DrawPeriod(runmin,runmax,215160,215579,0,ymax,"15b");
388  DrawPeriod(runmin,runmax,215580,219968,0,ymax,"15c");
389  DrawPeriod(runmin,runmax,220050,223195,0,ymax,"15d");
390  DrawPeriod(runmin,runmax,223227,224779,0,ymax,"15e");
391  DrawPeriod(runmin,runmax,224826,226606,0,ymax,"15f");
392  DrawPeriod(runmin,runmax,228936,231321,0,ymax,"15g");
393  DrawPeriod(runmin,runmax,232914,234050,0,ymax,"15h");
394  DrawPeriod(runmin,runmax,235196,236866,0,ymax,"15i");
395  DrawPeriod(runmin,runmax,236965,238621,0,ymax,"15j");
396  DrawPeriod(runmin,runmax,238890,239025,0,ymax,"15k");
397  DrawPeriod(runmin,runmax,239319,241544,0,ymax,"15l");
398  DrawPeriod(runmin,runmax,244340,244628,0,ymax,"15n");
399  DrawPeriod(runmin,runmax,244918,246994,0,ymax,"15o");
400 
401  // 2016
402  DrawPeriod(runmin,runmax,247189,247193,0,ymax,"16a");
403  DrawPeriod(runmin,runmax,247723,250585,0,ymax,"16b");
404  DrawPeriod(runmin,runmax,250647,252091,0,ymax,"16c");
405 
406  DrawPeriod(runmin,runmax,252191,252518,0,ymax,"16d");
407  DrawPeriod(runmin,runmax,252598,253609,0,ymax,"16e");
408  DrawPeriod(runmin,runmax,253613,253979,0,ymax,"16f");
409  DrawPeriod(runmin,runmax,253991,254332,0,ymax,"16g");
410  DrawPeriod(runmin,runmax,254373,255469,0,ymax,"16h");
411  DrawPeriod(runmin,runmax,255515,255650,0,ymax,"16i");
412  DrawPeriod(runmin,runmax,256083,256420,0,ymax,"16j");
413  DrawPeriod(runmin,runmax,256504,258574,0,ymax,"16k");
414  DrawPeriod(runmin,runmax,258883,260187,0,ymax,"16l");
415  DrawPeriod(runmin,runmax,260216,260647,0,ymax,"16m");
416  DrawPeriod(runmin,runmax,260649,261812,0,ymax,"16n");
417  DrawPeriod(runmin, runmax, 262394, 264035, 0, ymax, "16o");
418  DrawPeriod(runmin, runmax, 264076, 264347, 0, ymax, "16p");
419  DrawPeriod(runmin, runmax, 264896, 265533, 0, ymax, "16q");
420  DrawPeriod(runmin, runmax, 265589, 266318, 0, ymax, "16r");
421  DrawPeriod(runmin, runmax, 266405, 267131, 0, ymax, "16s");
422  DrawPeriod(runmin, runmax, 267161, 267166, 0, ymax, "16t");
423 
424  // 2017
425  DrawPeriod(runmin,runmax,268198,269628,0,ymax,"17a");
426  DrawPeriod(runmin,runmax,269629,270435,0,ymax,"17b");
427  DrawPeriod(runmin,runmax,270436,270743,0,ymax,"17c");
428  DrawPeriod(runmin,runmax,270744,270802,0,ymax,"17d");
429  DrawPeriod(runmin,runmax,270803,270853,0,ymax,"17e");
430  DrawPeriod(runmin,runmax,270854,270870,0,ymax,"17f");
431  DrawPeriod(runmin,runmax,270871,271785,0,ymax,"17g");
432  DrawPeriod(runmin,runmax,271786,273471,0,ymax,"17h");
433  DrawPeriod(runmin,runmax,273472,274518,0,ymax,"17i");
434  DrawPeriod(runmin,runmax,274678,276533,0,ymax,"17k");
435  DrawPeriod(runmin,runmax,276534,278765,0,ymax,"17l");
436  DrawPeriod(runmin,runmax,278766,280154,0,ymax,"17m");
437  DrawPeriod(runmin,runmax,280155,280246,0,ymax,"17n");
438  DrawPeriod(runmin,runmax,280247,281969,0,ymax,"17o");
439  DrawPeriod(runmin,runmax,281970,282350,0,ymax,"17p");
440  DrawPeriod(runmin,runmax,282351,282444,0,ymax,"17q");
441  DrawPeriod(runmin,runmax,282445,283360,0,ymax,"17r");
442 
443  // 2018
444  DrawPeriod(runmin,runmax,283361,284704,0,ymax,"18a");
445  DrawPeriod(runmin,runmax,284705,285451,0,ymax,"18b");
446  DrawPeriod(runmin,runmax,285452,285965,0,ymax,"18c");
447  DrawPeriod(runmin,runmax,285966,286358,0,ymax,"18d");
448  DrawPeriod(runmin,runmax,286359,286969,0,ymax,"18e");
449  DrawPeriod(runmin,runmax,286970,288387,0,ymax,"18f");
450  DrawPeriod(runmin,runmax,288388,288537,0,ymax,"18g");
451 
452  // DrawPeriod(runmin,runmax,XXXXXX,XXXXXX,0,ymax,"18h");
453  // DrawPeriod(runmin,runmax,XXXXXX,XXXXXX,0,ymax,"18i");
454 
455  Draw(f, "nbad", l, normalized);
456  Draw(f,"nbadped",l,normalized);
457  Draw(f,"nbadocc",l,normalized);
458  Draw(f,"nbadhv",l,normalized);
459  Draw(f,"nbadlv",l,normalized);
460  Draw(f,"nmissing",l,normalized);
461  Draw(f,"nreco",l,normalized);
462 
463  h->Draw("same");
464 
465  c->RedrawAxis("g");
466 
467  l->Draw();
468 }
469 
470 //______________________________________________________________________________
471 void MUONStatusMapEvolution(const char* runlist, const char* outfile, TString defaultOCDB="")
472 {
473  // Compute the number of bad pads (because of bad ped, bad hv, bad lv,
474  // or missing in configuration)
475  //
476  // output a root file with the different graphs.
477  //
478  // output can be then plotted using the DrawEvolution function
479  //
480  // Note that the output of different runlists can then be merged simply using
481  // the hadd program, and so then the DrawEvolution can be used over
482  // a huge period, e.g. a full year, while this method is better restricted
483  // to a period or even less (depending on your success of accessing the OCDB)
484  //
485 
486  std::vector<int> runs;
487 
488  ReadIntegers(runlist,runs);
489 
490  if ( runs.empty() )
491  {
492  cout << "No runs to process..." << endl;
493  return;
494  }
495 
496  int year(2018);
497 
498  if ( runs[0] <= 282704 ) year = 2017;
499  if ( runs[0] <= 267166 ) year = 2016;
500  if ( runs[0] <= 246994 ) year = 2015;
501  if ( runs[0] <= 198000 ) year = 2013;
502  if ( runs[0] <= 195344 ) year = 2012;
503  if ( runs[0] <= 176000 ) year = 2011;
504  if ( runs[0] <= 139699 ) year = 2010;
505 
506 
507  if (defaultOCDB.Length()==0) {
508 
509  TString p;
510 
511  p.Form("/alice/data/%d/OCDB",year);
512 
513  if (gSystem->AccessPathName(p)==kFALSE) {
514  defaultOCDB.Form("local://%s",p.Data());
515  }
516 
517  }
518 
519  if (defaultOCDB.Length()==0) {
520  defaultOCDB.Form("alien://folder=/alice/data/%d/OCDB?cacheFold=/local/cdb",year);
521  }
522 
523  AliCDBManager::Instance()->SetDefaultStorage(defaultOCDB.Data());
525 
526  TList glist;
527 
528  glist.SetOwner(kTRUE);
529 
530  TGraph* gnbad = new TGraph(runs.size());
531  gnbad->SetName("nbad");
532  glist.Add(gnbad);
533 
534  TGraph* gnbadped = new TGraph(runs.size());
535  gnbadped->SetName("nbadped");
536  glist.Add(gnbadped);
537 
538  TGraph* gnbadocc = new TGraph(runs.size());
539  gnbadocc->SetName("nbadocc");
540  glist.Add(gnbadocc);
541 
542  TGraph* gnbadhv = new TGraph(runs.size());
543  gnbadhv->SetName("nbadhv");
544  glist.Add(gnbadhv);
545 
546  TGraph* gnmissing = new TGraph(runs.size());
547  gnmissing->SetName("nmissing");
548  glist.Add(gnmissing);
549 
550  TGraph* gnreco = new TGraph(runs.size());
551  gnreco->SetName("nreco");
552  glist.Add(gnreco);
553 
554  TGraph* gnbadlv = new TGraph(runs.size());
555  gnbadlv->SetName("nbadlv");
556  glist.Add(gnbadlv);
557 
558  for ( std::vector<int>::size_type i = 0; i < runs.size(); ++i )
559  {
560  Int_t runNumber = runs[i];
561  Int_t nbadped;
562  Int_t nbadhv;
563  Int_t nbadlv;
564  Int_t nbadocc;
565  Int_t nmissing;
566  Int_t nreco;
567 
568  Int_t nbad = GetBadChannels(runNumber,nbadped,nbadhv,nbadlv,nbadocc,nmissing,nreco);
569 
570  gnbad->SetPoint(i,runNumber,nbad);
571  gnbadped->SetPoint(i,runNumber,nbadped);
572  gnbadhv->SetPoint(i,runNumber,nbadhv);
573  gnbadlv->SetPoint(i,runNumber,nbadlv);
574  gnbadocc->SetPoint(i,runNumber,nbadocc);
575  gnmissing->SetPoint(i,runNumber,nmissing);
576  gnreco->SetPoint(i,runNumber,nreco);
577  }
578 
579  TIter next(&glist);
580  TGraph* g;
581  Int_t index(0);
582 
583  TFile f(outfile,"recreate");
584  Int_t color[] = { 1 , 2 , 3 , 4, 6, 8, 7 };
585  Int_t marker[] = { 28 , 24 , 23 , 26, 30, 5, 32 };
586 
587  while ( ( g = static_cast<TGraph*>(next() ) ) )
588  {
589  g->GetXaxis()->SetNdivisions(505);
590  g->GetXaxis()->SetNoExponent();
591  g->SetMinimum(0);
592  g->GetYaxis()->SetNoExponent();
593  g->SetLineColor(color[index]);
594  g->SetMarkerStyle(marker[index]);
595  g->SetMarkerColor(color[index]);
596  g->SetMarkerSize(1.0);
597  ++index;
598  g->Write();
599  }
600 
601  f.Close();
602 
603 
604 }
Convert a pad status container into a pad status map container.
TBrowser b
Definition: RunAnaESD.C:12
TFile * Open(const char *filename, Long64_t &nevents)
TStyle * gStyle
Int_t year
year for detector configuration
Definition: Config.C:96
#define TObjArray
static Int_t BuildStatus(Int_t pedStatus, Int_t hvStatus, Int_t lvStatus, Int_t otherStatus)
void MUONStatusMapEvolution(const char *runlist, const char *outfile, TString defaultOCDB="")
Float_t p[]
Definition: kNNTest.C:133
static Bool_t LoadDDLStore(Bool_t warn=false)
Definition: AliMpCDB.cxx:149
Class with MUON reconstruction parameters.
AliMpDetElement * GetDetElement(Int_t detElemId, Bool_t warn=true) const
Bool_t LoadMapping(Bool_t segmentationOnly)
Definition: AliMUONCDB.cxx:502
The class defines the electronics properties of detection element.
void MUONStatusMap(AliMUONVStore *&vstatus, AliMUONVStore *&vstatusMap, const char *cdbStorage="alien://folder=/alice/data/2011/OCDB", Int_t runNumber=145292)
Definition: MUONStatusMap.C:99
Bool_t Next(Int_t &detElemId, Int_t &manuId)
Class to loop over all manus of MUON Tracker.
static AliMpDDLStore * Instance(Bool_t warn=true)
static Int_t GetChamberId(Int_t detElemId, Bool_t warn=true)
AliMUONVStore * StatusMap() const
static Int_t ManuNofChannels()
Max number of channels per manu.
AliMUONVCalibParam * PadStatus(Int_t detElemId, Int_t manuId) const
Int_t GetBadChannels(Int_t runNumber, Int_t &nbadped, Int_t &nbadhv, Int_t &nbadlv, Int_t &nbadocc, Int_t &nmissing, Int_t &nreco, Int_t chamber=-1)
std::vector< RunInfo > runs
void ReadIntegers(const char *filename, std::vector< int > &integers)
Definition: MUONStatusMap.C:61
AliMUONVStore * StatusStore() const
void SetRun(Int_t run)
void DrawPeriod(int runmin, int runmax, int run1, int run2, double ymin, double ymax, const char *label)
TF1 * f
Definition: interpolTest.C:21
void SetDefaultStorage(const char *dbString)
Single entry point to access MUON calibration data.
TArrayI runlist(10000)
static Int_t runNumber
Definition: pdc06_config.C:126
UInt_t PadGoodnessMask() const
Get the goodness mask.
Bool_t IsConnectedChannel(Int_t manuId, Int_t manuChannel) const
static AliCDBManager * Instance(TMap *entryCache=NULL, Int_t run=-1)
Base class for MUON data stores.
Definition: AliMUONVStore.h:22
Int_t run1
void DrawEvolution(const char *file, bool normalized=true)
Make a 2DStore of pad statuses, using different sources of information.
AliMUONRecoParam * LoadRecoParam()
Definition: AliMUONCDB.cxx:535
void SetLimits(const AliMUONRecoParam &recoParams)
void Draw(TFile *f, const char *gname, TLegend *l, Bool_t normalized)