X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FShowCalibrationSDD.C;h=192ec31a0eea8f24544d40530b0c29ac5fc40beb;hb=4c080b2895ba3d35af85e610cb113204c769cfb8;hp=9ef47066238f34036dd024a24b4baaaf55f208c7;hpb=3615e76262a712fba775d0bd58775aebdf1370e8;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/ShowCalibrationSDD.C b/ITS/ShowCalibrationSDD.C index 9ef47066238..192ec31a0ee 100644 --- a/ITS/ShowCalibrationSDD.C +++ b/ITS/ShowCalibrationSDD.C @@ -3,7 +3,10 @@ #include #include #include +#include #include +#include +#include #include #include #include @@ -21,19 +24,24 @@ // // Origin: F. Prino (prino@to.infn.it) -void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root"){ +void MakePalette(){ + Int_t palette[3]={kGray,2,3}; + gStyle->SetPalette(3,palette); +} + +void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root", Int_t iMod=0){ TFile *f=TFile::Open(filnam); AliCDBEntry *ent=(AliCDBEntry*)f->Get("AliCDBEntry"); - TH2I* hlay3=new TH2I("hlay3","Layer 3",6,-0.5,5.5,14,-0.5,13.5); + TH2I* hlay3=new TH2I("hlay3","Layer 3",12,-0.5,5.5,14,-0.5,13.5); hlay3->GetXaxis()->SetTitle("Detector"); hlay3->GetYaxis()->SetTitle("Ladder"); hlay3->GetXaxis()->SetTickLength(0); hlay3->GetYaxis()->SetTickLength(0); hlay3->SetStats(0); hlay3->SetMinimum(-1); - TH2I* hlay4=new TH2I("hlay4","Layer 4",8,-0.5,7.5,22,-0.5,21.5); + TH2I* hlay4=new TH2I("hlay4","Layer 4",16,-0.5,7.5,22,-0.5,21.5); hlay4->GetXaxis()->SetTitle("Detector"); hlay4->GetYaxis()->SetTitle("Ladder"); hlay4->GetXaxis()->SetTickLength(0); @@ -41,6 +49,21 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali hlay4->GetYaxis()->SetTitle("Ladder"); hlay4->SetStats(0); hlay4->SetMinimum(-1); + TH2I* hdeadlay3=new TH2I("hlay3","Layer 3",6,-0.5,5.5,14,-0.5,13.5); + hdeadlay3->GetXaxis()->SetTitle("Detector"); + hdeadlay3->GetYaxis()->SetTitle("Ladder"); + hdeadlay3->GetXaxis()->SetTickLength(0); + hdeadlay3->GetYaxis()->SetTickLength(0); + hdeadlay3->SetStats(0); + hdeadlay3->SetMinimum(-1.); + TH2I* hdeadlay4=new TH2I("hlay4","Layer 4",8,-0.5,7.5,22,-0.5,21.5); + hdeadlay4->GetXaxis()->SetTitle("Detector"); + hdeadlay4->GetYaxis()->SetTitle("Ladder"); + hdeadlay4->GetXaxis()->SetTickLength(0); + hdeadlay4->GetYaxis()->SetTickLength(0); + hdeadlay4->GetYaxis()->SetTitle("Ladder"); + hdeadlay4->SetStats(0); + hdeadlay4->SetMinimum(-1.); TObjArray *calSDD = (TObjArray *)ent->GetObject(); printf("Entries in array=%d\n",calSDD->GetEntriesFast()); @@ -67,14 +90,17 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali printf("Module %d (%d) status = ",i,i+240); Int_t lay,lad,det; AliITSgeomTGeo::GetModuleId(i+240,lay,lad,det); + Int_t index=1+(det-1)*2; if(cal->IsBad()){ printf("BAD\t"); if(lay==3){ badModCounter3++; - hlay3->SetBinContent(det,lad,0); + hlay3->SetBinContent(index,lad,0); + hlay3->SetBinContent(index+1,lad,0); }else if(lay==4){ badModCounter4++; - hlay4->SetBinContent(det,lad,0); + hlay4->SetBinContent(index,lad,0); + hlay4->SetBinContent(index+1,lad,0); } hmodstatus->SetBinContent(i+1,0); }else{ @@ -82,10 +108,28 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali hmodstatus->SetBinContent(i+1,1); if(lay==3){ badAnodeCounterGoodMod3+=cal->GetDeadChannels(); - hlay3->SetBinContent(det,lad,1); + if(cal->IsChipBad(0) && cal->IsChipBad(1) && cal->IsChipBad(2) && cal->IsChipBad(3)){ + hlay3->SetBinContent(index,lad,0); + }else{ + hlay3->SetBinContent(index,lad,1); + } + if(cal->IsChipBad(4) && cal->IsChipBad(5) && cal->IsChipBad(6) && cal->IsChipBad(7)){ + hlay3->SetBinContent(index+1,lad,0); + }else{ + hlay3->SetBinContent(index+1,lad,1); + } }else{ badAnodeCounterGoodMod4+=cal->GetDeadChannels(); - hlay4->SetBinContent(det,lad,1); + if(cal->IsChipBad(0) && cal->IsChipBad(1) && cal->IsChipBad(2) && cal->IsChipBad(3)){ + hlay4->SetBinContent(index,lad,0); + }else{ + hlay4->SetBinContent(index,lad,1); + } + if(cal->IsChipBad(4) && cal->IsChipBad(5) && cal->IsChipBad(6) && cal->IsChipBad(7)){ + hlay4->SetBinContent(index+1,lad,0); + }else{ + hlay4->SetBinContent(index+1,lad,1); + } } } printf(" Chip Status (0=OK, 1=BAD): "); @@ -96,12 +140,15 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali else badChipCounter4++; } } + printf(" # bad anodes = %d ",cal->GetDeadChannels()); if(cal->IsAMAt20MHz()) printf(" 20 MHz sampling"); else printf(" 40 MHz sampling"); printf("\n"); if(i<84) badAnodeCounter3+=cal->GetDeadChannels(); else badAnodeCounter4+=cal->GetDeadChannels(); hnbadch->SetBinContent(i+1,cal->GetDeadChannels()); + if(lay==3) hdeadlay3->SetBinContent(det,lad,cal->GetDeadChannels()); + if(lay==4) hdeadlay4->SetBinContent(det,lad,cal->GetDeadChannels()); for(Int_t iAn=0; iAn<512; iAn++){ Int_t ic=cal->GetChip(iAn); if(!cal->IsChipBad(ic) && !cal->IsBad() && cal->IsBadChannel(iAn)){ @@ -146,6 +193,47 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali printf("---------------------------------------------------\n"); + TLine* lin=new TLine(0,0,0,23); + TExec *ex1 = new TExec("ex1","MakePalette();"); + TExec *ex2 = new TExec("ex2","gStyle->SetPalette(1);"); + + TCanvas* clay=new TCanvas("clay","Layer status",900,600); + clay->Divide(2,1); + clay->cd(1); + hlay3->Draw("col"); + ex1->Draw(); + hlay3->DrawCopy("col same"); + for(Int_t i=0;i<6;i++){ + lin->SetY1(-0.5); + lin->SetY2(13.5); + lin->SetX1(i+0.5); + lin->SetX2(i+0.5); + lin->DrawClone(); + } + for(Int_t i=0;i<14;i++){ + lin->SetX1(-0.5); + lin->SetX2(5.5); + lin->SetY1(i+0.5); + lin->SetY2(i+0.5); + lin->DrawClone(); + } + clay->cd(2); + hlay4->DrawCopy("col"); + for(Int_t i=0;i<8;i++){ + lin->SetY1(-0.5); + lin->SetY2(21.5); + lin->SetX1(i+0.5); + lin->SetX2(i+0.5); + lin->DrawClone(); + } + for(Int_t i=0;i<22;i++){ + lin->SetX1(-0.5); + lin->SetX2(7.5); + lin->SetY1(i+0.5); + lin->SetY2(i+0.5); + lin->DrawClone(); + } + TCanvas *c0=new TCanvas("c0","Module status",800,800); c0->Divide(1,2); c0->cd(1); @@ -154,35 +242,18 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali hmodstatus->GetYaxis()->SetTitle("Module status (1=OK, 0=BAD)"); c0->cd(2); hnbadch->Draw(); - hnbadch->GetXaxis()->SetTitle("Module number"); + hnbadch->GetXaxis()->SetTitle("Module number"); hnbadch->GetYaxis()->SetTitle("Number of bad anodes"); - TCanvas *c1=new TCanvas("c1","Anode calibration",800,800); - c1->Divide(2,2); - c1->cd(1); - hbase->Draw(); - hbase->GetXaxis()->SetTitle("Baseline after equalization"); - hbase->GetXaxis()->CenterTitle(); - c1->cd(2); - hnoise->Draw(); - hnoise->GetXaxis()->SetTitle("Noise"); - hnoise->GetXaxis()->CenterTitle(); - c1->cd(3); - hgain->Draw(); - hgain->GetXaxis()->SetTitle("Gain"); - hgain->GetXaxis()->CenterTitle(); - c1->cd(4); - hchstatus->Draw(); - hchstatus->GetXaxis()->SetTitle("Anode status (0=bad, 1=OK)"); - hchstatus->GetXaxis()->CenterTitle(); - Int_t palette[3]={kGray,2,3}; - gStyle->SetPalette(3,palette); - - TLine* lin=new TLine(0,0,0,23); - TCanvas* clay=new TCanvas("clay","Layer status",900,600); - clay->Divide(2,1); - clay->cd(1); - hlay3->Draw("col"); + + + + TCanvas *c0b=new TCanvas("c0b","Bad Channels",900,600); + c0b->Divide(2,1); + c0b->cd(1); + hdeadlay3->DrawCopy("colz"); + ex2->Draw(); + hdeadlay3->DrawCopy("colz same"); for(Int_t i=0;i<6;i++){ lin->SetY1(-0.5); lin->SetY2(13.5); @@ -197,8 +268,10 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali lin->SetY2(i+0.5); lin->DrawClone(); } - clay->cd(2); - hlay4->Draw("col"); + c0b->cd(2); + hdeadlay4->DrawCopy("colz"); + ex2->Draw(); + hdeadlay4->DrawCopy("colz same"); for(Int_t i=0;i<8;i++){ lin->SetY1(-0.5); lin->SetY2(21.5); @@ -215,6 +288,33 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali } + + TCanvas *c1=new TCanvas("c1","Anode calibration",800,800); + c1->Divide(2,2); + c1->cd(1); + hbase->Draw(); + hbase->GetXaxis()->SetTitle("Baseline after equalization"); + hbase->GetXaxis()->CenterTitle(); + c1->cd(2); + hnoise->Draw(); + hnoise->GetXaxis()->SetTitle("Noise"); + hnoise->GetXaxis()->CenterTitle(); + c1->cd(3); + hgain->Draw(); + hgain->GetXaxis()->SetTitle("Gain"); + hgain->GetXaxis()->CenterTitle(); + c1->cd(4); + hchstatus->Draw(); + hchstatus->GetXaxis()->SetTitle("Anode status (0=bad, 1=OK)"); + hchstatus->GetXaxis()->CenterTitle(); + + + + + + + + // Plot quantities for specified module @@ -280,10 +380,22 @@ void ShowCalibrationSDD(Int_t iMod=0, Char_t *filnam="$ALICE_ROOT/ITS/Calib/Cali gbad->GetYaxis()->SetTitle("Anode Status (1=OK, 0=bad)"); } -void ShowCalibrationSDD(Int_t nrun, Int_t nv, Int_t year=2009, Int_t nmod=0){ +void ShowCalibrationSDD(Int_t nrun, Int_t year=2009, Int_t nmod=0){ TGrid::Connect("alien:",0,0,"t"); - Char_t filnam[200]; - sprintf(filnam,"alien:///alice/data/%d/OCDB/ITS/Calib/CalibSDD/Run%d_999999999_v%d_s0.root",year,nrun,nv); - printf("Open file: %s\n",filnam); - ShowCalibrationSDD(nmod,filnam); + TString cmd=Form("gbbox find \"/alice/data/%d/OCDB/ITS/Calib/CalibSDD\" \"Run%d*.root\" > run.txt",year,nrun); + gSystem->Exec(cmd.Data()); + Char_t filnam[200],filnamalien[200]; + FILE* runtxt=fopen("run.txt","r"); + fscanf(runtxt,"%s\n",filnam); + if(!strstr(filnam,"/alice/data/")){ + printf("Bad run number\n"); + gSystem->Exec("rm run.txt"); + return; + } + sprintf(filnamalien,"alien://%s",filnam); + + printf("Open file: %s\n",filnamalien); + ShowCalibrationSDD(filnamalien,nmod); + fclose(runtxt); + gSystem->Exec("rm run.txt"); }