#include "AliITSgeomTGeo.h"
#endif
+/* $Id$ */
+
// Macro to plot the calibration parameters from the OCDB file
// created from PEDESTAL and PULSER runs (OCDB/ITS/Calib/CalibSDD)
// Two methods ShowCalibrationSDD:
TH2F* hgainmod=new TH2F("hgainmod","",260,239.5,499.5,50,0.,4.);
TH1F* hchstatus=new TH1F("hchstatus","",2,-0.5,1.5);
+ AliITSDDLModuleMapSDD* dmap=new AliITSDDLModuleMapSDD();
+ dmap->SetJun09Map();
+ TH2I *hddlcarlos=new TH2I("hddlcarlos","",24,-0.5,11.5,24,-0.5,23.5);
+ hddlcarlos->GetXaxis()->SetTitle("Module");
+ hddlcarlos->GetYaxis()->SetTitle("DDL");
+ hddlcarlos->GetXaxis()->SetTickLength(0);
+ hddlcarlos->GetYaxis()->SetTickLength(0);
+ hddlcarlos->SetStats(0);
+ hddlcarlos->SetMinimum(-1.);
AliITSCalibrationSDD *cal;
Int_t badModCounter3=0;
Int_t lay,lad,det;
AliITSgeomTGeo::GetModuleId(i+240,lay,lad,det);
Int_t index=1+(det-1)*2;
+ Int_t ddl,carlos;
+ dmap->FindInDDLMap(i+240,ddl,carlos);
+ Int_t index2=1+carlos*2;
+ ddl+=1;
if(cal->IsBad()){
printf("BAD\t");
+ hddlcarlos->SetBinContent(index2,ddl,0);
+ hddlcarlos->SetBinContent(index2+1,ddl,0);
if(lay==3){
badModCounter3++;
badHybridCounter3+=2;
badAnodeCounterGoodMod3+=cal->GetDeadChannels();
if(cal->IsChipBad(0) && cal->IsChipBad(1) && cal->IsChipBad(2) && cal->IsChipBad(3)){
hlay3->SetBinContent(index,lad,0);
+ hddlcarlos->SetBinContent(index2,ddl,0);
badHybridCounter3++;
}else{
hlay3->SetBinContent(index,lad,1);
+ hddlcarlos->SetBinContent(index2,ddl,1);
for(Int_t iAn=0; iAn<256; iAn++){
if(cal->IsBadChannel(iAn)) badAnodeCounterGoodHybrid3++;
}
}
if(cal->IsChipBad(4) && cal->IsChipBad(5) && cal->IsChipBad(6) && cal->IsChipBad(7)){
hlay3->SetBinContent(index+1,lad,0);
+ hddlcarlos->SetBinContent(index2+1,ddl,0);
badHybridCounter3++;
}else{
hlay3->SetBinContent(index+1,lad,1);
+ hddlcarlos->SetBinContent(index2+1,ddl,1);
for(Int_t iAn=256; iAn<512; iAn++){
if(cal->IsBadChannel(iAn)) badAnodeCounterGoodHybrid3++;
}
badAnodeCounterGoodMod4+=cal->GetDeadChannels();
if(cal->IsChipBad(0) && cal->IsChipBad(1) && cal->IsChipBad(2) && cal->IsChipBad(3)){
hlay4->SetBinContent(index,lad,0);
+ hddlcarlos->SetBinContent(index2,ddl,0);
badHybridCounter4++;
}else{
hlay4->SetBinContent(index,lad,1);
+ hddlcarlos->SetBinContent(index2,ddl,1);
for(Int_t iAn=0; iAn<256; iAn++){
if(cal->IsBadChannel(iAn)) badAnodeCounterGoodHybrid4++;
}
}
if(cal->IsChipBad(4) && cal->IsChipBad(5) && cal->IsChipBad(6) && cal->IsChipBad(7)){
hlay4->SetBinContent(index+1,lad,0);
+ hddlcarlos->SetBinContent(index2+1,ddl,0);
badHybridCounter4++;
}else{
hlay4->SetBinContent(index+1,lad,1);
+ hddlcarlos->SetBinContent(index2+1,ddl,1);
for(Int_t iAn=256; iAn<512; iAn++){
if(cal->IsBadChannel(iAn)) badAnodeCounterGoodHybrid4++;
}
Float_t fracgm4=(Float_t)(176.-badModCounter4)/176.;
Float_t fracgh3=(Float_t)(84.*2.-badHybridCounter3)/84./2.;
Float_t fracgh4=(Float_t)(176.*2-badHybridCounter4)/176./2.;
- Float_t fraccgm3=1.-(Float_t)(badAnodeCounterGoodModAndChip3+badChipCounter3*64)/(512.*(Float_t)(84.-badModCounter3));
- Float_t fraccgm4=1.-(Float_t)(badAnodeCounterGoodModAndChip4+badChipCounter4*64)/(512.*(Float_t)(176.-badModCounter4));
- Float_t fraccgh3=1.-(Float_t)badAnodeCounterGoodHybrid3/(256.*(84.*2.-badHybridCounter3));
- Float_t fraccgh4=1.-(Float_t)badAnodeCounterGoodHybrid4/(256.*(176.*2.-badHybridCounter4));
+ Float_t fraccgm3=0.;
+ if(badModCounter3!=84){
+ fraccgm3=1.-(Float_t)(badAnodeCounterGoodModAndChip3+badChipCounter3*64)/(512.*(Float_t)(84.-badModCounter3));
+ }
+ Float_t fraccgm4=0.;
+ if(badModCounter4!=176){
+ fraccgm4=1.-(Float_t)(badAnodeCounterGoodModAndChip4+badChipCounter4*64)/(512.*(Float_t)(176.-badModCounter4));
+ }
+ Float_t fraccgh3=0.;
+ if(badHybridCounter3!=(84*2)){
+ fraccgh3=1.-(Float_t)badAnodeCounterGoodHybrid3/(256.*(84.*2.-badHybridCounter3));
+ }
+ Float_t fraccgh4=0.;
+ if(badHybridCounter4!=(176*2)){
+ fraccgh4=1.-(Float_t)badAnodeCounterGoodHybrid4/(256.*(176.*2.-badHybridCounter4));
+ }
Int_t totbad4=badModCounter4*512+badChipCounter4*64+badAnodeCounterGoodModAndChip4;
Int_t tot4=8*22*512;
Float_t fracbad4=(Float_t)totbad4/(Float_t)tot4;
}
-
+ TCanvas* cddl=new TCanvas("cddl","DDL status",800,800);
+ hddlcarlos->Draw("col");
+ ex1->Draw();
+ hddlcarlos->DrawCopy("col same");
+ for(Int_t i=0;i<12;i++){
+ lin->SetY1(-0.5);
+ lin->SetY2(23.5);
+ lin->SetX1(i+0.5);
+ lin->SetX2(i+0.5);
+ lin->DrawClone();
+ }
+ for(Int_t i=0;i<24;i++){
+ lin->SetX1(-0.5);
+ lin->SetX2(11.5);
+ lin->SetY1(i+0.5);
+ lin->SetY2(i+0.5);
+ lin->DrawClone();
+ }
+
TCanvas *c0b=new TCanvas("c0b","Bad Channels",900,600);
c0b->Divide(2,1);
gbad->GetYaxis()->SetTitle("Anode Status (1=OK, 0=bad)");
}
-void ShowCalibrationSDD(Int_t nrun, Int_t year=2010, Int_t nmod=0){
+void ShowCalibrationSDD(Int_t nrun, Int_t year=2012, Int_t nmod=0){
TGrid::Connect("alien:",0,0,"t");
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/")){
+ Bool_t found=kFALSE;
+ while(!feof(runtxt)){
+ fscanf(runtxt,"%s\n",filnam);
+ if(strstr(filnam,"/alice/data/")){
+ found=kTRUE;
+ break;
+ }
+ }
+ if(!found){
printf("Bad run number\n");
- gSystem->Exec("rm run.txt");
+ // gSystem->Exec("rm run.txt");
return;
- }
+ }
sprintf(filnamalien,"alien://%s",filnam);
printf("Open file: %s\n",filnamalien);