24 #if !defined(__CINT__) || defined(__MAKECINT__) 41 #include "Riostream.h" 57 Int_t NTOTALNUMBEROFPADS(1064008);
61 void ReadIntegers(
const char* filename, std::vector<int>& integers)
65 ifstream in(gSystem->ExpandPathName(filename));
70 in.getline(line,10000,
'\n');
74 if (sline.Contains(
","))
79 while ( ( s = static_cast<TObjString*>(next()) ) )
81 integers.push_back(s->String().Atoi());
86 integers.push_back(sline.Atoi());
90 integers.push_back(i);
94 std::sort(integers.begin(),integers.end());
101 const char* cdbStorage =
"alien://folder=/alice/data/2011/OCDB",
124 const Bool_t deferredInitialization = kFALSE;
160 Int_t detElemId, manuId;
192 while ( it.
Next(detElemId,manuId) )
204 UInt_t status = statusMaker.
PadStatus(detElemId, manuId, manuChannel);
206 if (!status)
continue;
250 if ( chamber<0 && ntotal!=NTOTALNUMBEROFPADS)
252 cerr << Form(
"ERROR ! NOT THE EXPECTED NUMBER OF CHANNELS (%d vs 1064008) FOR RUN %09d",
253 ntotal,runNumber) << endl;
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;
268 void Draw(TFile*
f,
const char* gname, TLegend* l, Bool_t normalized)
272 TGraph* g =
static_cast<TGraph*
>(f->Get(gname));
278 g =
static_cast<TGraph*
>(g->Clone());
279 for ( Int_t i = 0; i < g->GetN(); ++i )
281 Double_t y = g->GetY()[i];
282 g->SetPoint(i,g->GetX()[i],y/NTOTALNUMBEROFPADS);
287 g->GetXaxis()->SetNdivisions(505);
288 g->GetXaxis()->SetNoExponent();
290 if (l) l->AddEntry(g,gname,
"LP");
294 void DrawPeriod(
int runmin,
int runmax,
int run1,
int run2,
double ymin,
double ymax,
const char* label)
296 if ( run1 < runmin || run1 > runmax || run2 < runmin || run2 > runmax )
return;
298 TBox*
b =
new TBox(run1,ymin,run2,ymax);
299 b->SetFillColor(kYellow-9);
301 TText* text =
new TText((run1+run2)/2.0,ymax*0.6,label);
302 text->SetTextAlign(22);
303 text->SetTextSize(0.02);
305 TLine* l1 =
new TLine(run1,ymin,run1,ymax);
306 TLine* l2 =
new TLine(run2,ymin,run2,ymax);
321 TCanvas* c =
new TCanvas(
"mch-status-evolution",
"mch-status-evolution");
328 TLegend* l =
new TLegend(0.1,0.7,0.3,0.95,
"ch evolution");
330 TGraph* g =
static_cast<TGraph*
>(f->Get(
"nbad"));
333 int runmin = TMath::Nint(g->GetX()[0]);
334 int runmax = TMath::Nint(g->GetX()[g->GetN()-1]);
336 cout << Form(
"Run range found in file %s = %d - %d",file,runmin,runmax) << endl;
340 TH2* h =
new TH2F(
"hframe",
"hframe;Run number;Fraction of dead channels",100,runmin-200,runmax+200,100,0,ymax);
342 gStyle->SetOptStat(kFALSE);
344 h->GetXaxis()->SetNoExponent();
345 h->GetXaxis()->SetNdivisions(505);
347 gStyle->SetOptTitle(kFALSE);
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");
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");
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");
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");
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");
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");
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");
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");
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);
486 std::vector<int>
runs;
492 cout <<
"No runs to process..." << endl;
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;
507 if (defaultOCDB.Length()==0) {
511 p.Form(
"/alice/data/%d/OCDB",year);
513 if (gSystem->AccessPathName(p)==kFALSE) {
514 defaultOCDB.Form(
"local://%s",p.Data());
519 if (defaultOCDB.Length()==0) {
520 defaultOCDB.Form(
"alien://folder=/alice/data/%d/OCDB?cacheFold=/local/cdb",year);
528 glist.SetOwner(kTRUE);
530 TGraph* gnbad =
new TGraph(runs.size());
531 gnbad->SetName(
"nbad");
534 TGraph* gnbadped =
new TGraph(runs.size());
535 gnbadped->SetName(
"nbadped");
538 TGraph* gnbadocc =
new TGraph(runs.size());
539 gnbadocc->SetName(
"nbadocc");
542 TGraph* gnbadhv =
new TGraph(runs.size());
543 gnbadhv->SetName(
"nbadhv");
546 TGraph* gnmissing =
new TGraph(runs.size());
547 gnmissing->SetName(
"nmissing");
548 glist.Add(gnmissing);
550 TGraph* gnreco =
new TGraph(runs.size());
551 gnreco->SetName(
"nreco");
554 TGraph* gnbadlv =
new TGraph(runs.size());
555 gnbadlv->SetName(
"nbadlv");
558 for ( std::vector<int>::size_type i = 0; i < runs.size(); ++i )
568 Int_t nbad =
GetBadChannels(runNumber,nbadped,nbadhv,nbadlv,nbadocc,nmissing,nreco);
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);
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 };
587 while ( ( g = static_cast<TGraph*>(next() ) ) )
589 g->GetXaxis()->SetNdivisions(505);
590 g->GetXaxis()->SetNoExponent();
592 g->GetYaxis()->SetNoExponent();
593 g->SetLineColor(color[index]);
594 g->SetMarkerStyle(marker[index]);
595 g->SetMarkerColor(color[index]);
596 g->SetMarkerSize(1.0);
Convert a pad status container into a pad status map container.
TFile * Open(const char *filename, Long64_t &nevents)
Int_t year
year for detector configuration
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="")
static Bool_t LoadDDLStore(Bool_t warn=false)
Class with MUON reconstruction parameters.
AliMpDetElement * GetDetElement(Int_t detElemId, Bool_t warn=true) const
Bool_t LoadMapping(Bool_t segmentationOnly)
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)
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)
AliMUONVStore * StatusStore() const
void DrawPeriod(int runmin, int runmax, int run1, int run2, double ymin, double ymax, const char *label)
void SetDefaultStorage(const char *dbString)
Single entry point to access MUON calibration data.
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.
void DrawEvolution(const char *file, bool normalized=true)
Make a 2DStore of pad statuses, using different sources of information.
AliMUONRecoParam * LoadRecoParam()
void SetLimits(const AliMUONRecoParam &recoParams)
void Draw(TFile *f, const char *gname, TLegend *l, Bool_t normalized)