]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/macrosSDD/ShowCalibrationSDD.C
some c++11 fixes
[u/mrichter/AliRoot.git] / ITS / macrosSDD / ShowCalibrationSDD.C
index 817cf5d7219a3ba4456b2e67b52e3ae8ff99297d..d288fa7f00a84f64156768a7d33b30b60ca899b9 100644 (file)
@@ -16,6 +16,8 @@
 #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:
@@ -77,6 +79,15 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
   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;
@@ -100,8 +111,14 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
     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;
@@ -121,18 +138,22 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
        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++;
          }
@@ -141,18 +162,22 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
        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++;
          }
@@ -204,10 +229,22 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
   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;
@@ -283,7 +320,25 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
   }
 
 
-
+  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);
@@ -444,18 +499,25 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
   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);