]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added plots in macros for SDD calibration monitoring (F. Prino)
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 22 Apr 2010 16:57:32 +0000 (16:57 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 22 Apr 2010 16:57:32 +0000 (16:57 +0000)
ITS/ShowCalibrationSDD.C
ITS/ShowDriftSpeedSDD.C

index 8d16559710b6100a8e05edced5e117ed42abddaf..d3b2d444870c54acb5e470baff21ca0940e7402d 100644 (file)
@@ -70,9 +70,14 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
   TH1F* hmodstatus=new TH1F("hmodstatus","",260,0.5,260.5);
   TH1F* hnbadch=new TH1F("hnbadch","",260,0.5,260.5);
   TH1F* hbase=new TH1F("hbase","",60,0.5,120.5);
+  TH2F* hbasemod=new TH2F("hbasemod","",260,239.5,499.5,50,0.,100.);
   TH1F* hnoise=new TH1F("hnoise","",100,0.,7.);
+  TH2F* hnoisemod=new TH2F("hnoisemod","",260,239.5,499.5,50,0.,10.);
   TH1F* hgain=new TH1F("hgain","",100,0.,4.);
+  TH2F* hgainmod=new TH2F("hgainmod","",260,239.5,499.5,50,0.,4.);
   TH1F* hchstatus=new TH1F("hchstatus","",2,-0.5,1.5);
+
+
   AliITSCalibrationSDD *cal;
   Int_t badModCounter3=0;
   Int_t badModCounter4=0;
@@ -143,7 +148,7 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
     printf(" # bad anodes = %d  ",cal->GetDeadChannels());
     if(cal->IsAMAt20MHz()) printf("      20 MHz sampling");
     else printf("      40 MHz sampling");
-    printf("\n");
+    printf(" Threshold L %d %d H %d %d\n",cal->GetZSLowThreshold(0),cal->GetZSLowThreshold(1),cal->GetZSHighThreshold(0),cal->GetZSHighThreshold(1));
     if(i<84) badAnodeCounter3+=cal->GetDeadChannels();
     else badAnodeCounter4+=cal->GetDeadChannels();
     hnbadch->SetBinContent(i+1,cal->GetDeadChannels());
@@ -161,15 +166,22 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
       if(cal->IsBadChannel(iAn)) hchstatus->Fill(0);
       if(!cal->IsBadChannel(iAn) && !cal->IsChipBad(ic) && !cal->IsBad() ){
        hbase->Fill(base);
+       hbasemod->Fill(i+240,base);
        hchstatus->Fill(1);
        hnoise->Fill(noise);
+       hnoisemod->Fill(i+240,noise);
        hgain->Fill(gain);
+       hgainmod->Fill(i+240,gain);
       }
     }
   }
   Int_t totbad3=badModCounter3*512+badChipCounter3*64+badAnodeCounterGoodModAndChip3;
   Int_t tot3=6*14*512;
   Float_t fracbad3=(Float_t)totbad3/(Float_t)tot3;
+  Float_t fracgm3=(Float_t)(84.-badModCounter3)/84.;
+  Float_t fracgm4=(Float_t)(176.-badModCounter4)/176.;
+  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));
   Int_t totbad4=badModCounter4*512+badChipCounter4*64+badAnodeCounterGoodModAndChip4;
   Int_t tot4=8*22*512;
   Float_t fracbad4=(Float_t)totbad4/(Float_t)tot4;
@@ -179,11 +191,15 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
   printf("# of bad modules                      = %d\n",badModCounter3);
   printf("# of bad chips in good modules        = %d\n",badChipCounter3);
   printf("# of bad anodes in good modules+chips = %d\n",badAnodeCounterGoodModAndChip3);
+  printf("Fraction of Good modules=%f\n",fracgm3);
+  printf("Fraction of good anodes in good modules+chips = %f\n",fraccgm3);
   printf("Fraction of bads (anodes+chips+mod)   = %f\n",fracbad3);
   printf("---- Layer 4 ----\n");
   printf("# of bad modules                      = %d\n",badModCounter4);
   printf("# of bad chips in good modules        = %d\n",badChipCounter4);
   printf("# of bad anodes in good modules+chips = %d\n",badAnodeCounterGoodModAndChip4);
+  printf("Fraction of Good modules=%f\n",fracgm4);
+  printf("Fraction of good anodes in good modules+chips = %f\n",fraccgm4);
   printf("Fraction of bads (anodes+chips+mod)   = %f\n",fracbad4);
   printf("---- Total   ----\n");
   printf("# of bad modules                      = %d\n",badModCounter3+badModCounter4);
@@ -234,17 +250,6 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
     lin->DrawClone();
   }
 
-  TCanvas *c0=new TCanvas("c0","Module status",800,800);
-  c0->Divide(1,2);
-  c0->cd(1);
-  hmodstatus->Draw();
-  hmodstatus->GetXaxis()->SetTitle("Module number");
-  hmodstatus->GetYaxis()->SetTitle("Module status (1=OK, 0=BAD)");
-  c0->cd(2);
-  hnbadch->Draw();
-  hnbadch->GetXaxis()->SetTitle("Module number");   
-  hnbadch->GetYaxis()->SetTitle("Number of bad anodes");
-
 
 
 
@@ -308,7 +313,34 @@ void ShowCalibrationSDD(Char_t *filnam="$ALICE_ROOT/OCDB/ITS/Calib/CalibSDD/Run0
   hchstatus->GetXaxis()->SetTitle("Anode status (0=bad, 1=OK)");
   hchstatus->GetXaxis()->CenterTitle();
 
-
+  TCanvas *c1m=new TCanvas("c1m","Calib. vs. mod",1000,800);
+  c1m->Divide(2,2);
+  c1m->cd(1);
+  gPad->SetRightMargin(0.14);
+  hbasemod->SetStats(0);
+  hbasemod->Draw("colz"); 
+  hbasemod->GetXaxis()->SetTitle("Module Number");
+  hbasemod->GetYaxis()->SetTitle("Baseline");
+  c1m->cd(2);
+  gPad->SetRightMargin(0.14);
+  hnoisemod->SetStats(0);
+  hnoisemod->Draw("colz"); 
+  hnoisemod->GetXaxis()->SetTitle("Module Number");
+  hnoisemod->GetYaxis()->SetTitle("Noise");
+  c1m->cd(3);
+  gPad->SetRightMargin(0.14);
+  hgainmod->SetStats(0);
+  hgainmod->Draw("colz");
+  hgainmod->GetXaxis()->SetTitle("Module Number");
+  hgainmod->GetYaxis()->SetTitle("Gain");
+  c1m->cd(4);
+  hnbadch->Scale(1/512.);
+  hnbadch->SetMarkerStyle(20);
+  hnbadch->SetMarkerSize(0.8);
+  hnbadch->SetStats(0);
+  hnbadch->Draw("P");
+  hnbadch->GetXaxis()->SetTitle("Module number");   
+  hnbadch->GetYaxis()->SetTitle("Fraction of bad anodes");
 
 
 
index 5dcc21c8516096db6e1fe00cbcff8693427a136a..5f244b87e665bd3ffbdefe7910ad66a78a26862f 100644 (file)
@@ -1,7 +1,9 @@
 #if !defined(__CINT__) || defined(__MAKECINT__)
 #include <TF1.h>
 #include <TFile.h>
+#include <TLine.h>
 #include <TH1F.h>
+#include <TH2F.h>
 #include <TGraph.h>
 #include <TStyle.h>
 #include <TSystem.h>
@@ -13,6 +15,7 @@
 #include "AliCDBEntry.h"
 #include "AliITSDriftSpeedArraySDD.h"
 #include "AliITSDriftSpeedSDD.h"
+#include "AliITSgeomTGeo.h"
 #endif
 
 // Macro to plot the calibration parameters from the OCDB file 
@@ -32,6 +35,25 @@ void ShowDriftSpeedSDD(Char_t filnam[150]="$ALICE_ROOT/ITS/Calib/DriftSpeedSDD/R
   TObjArray *drspSDD = (TObjArray *)ent->GetObject();
   AliITSDriftSpeedArraySDD *vdriftarr0;
   AliITSDriftSpeedArraySDD *vdriftarr1;
+
+  TH2F* hlay3=new TH2F("hlay3","Injector Status 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(-0.01);
+  hlay3->SetMaximum(7.);
+  TH2F* hlay4=new TH2F("hlay4","Injector Status Layer 4",16,-0.5,7.5,22,-0.5,21.5);
+  hlay4->GetXaxis()->SetTitle("Detector");
+  hlay4->GetYaxis()->SetTitle("Ladder");
+  hlay4->GetXaxis()->SetTickLength(0);
+  hlay4->GetYaxis()->SetTickLength(0);
+  hlay4->GetYaxis()->SetTitle("Ladder");
+  hlay4->SetStats(0);
+  hlay4->SetMinimum(-0.01);
+  hlay4->SetMaximum(7.);
+
   TGraph **gvdr0=new TGraph*[260];
   TGraph **gvdr1=new TGraph*[260];
   TCanvas *c0=0x0;
@@ -92,6 +114,8 @@ void ShowDriftSpeedSDD(Char_t filnam[150]="$ALICE_ROOT/ITS/Calib/DriftSpeedSDD/R
 
   for(Int_t i=firstmod; i<lastmod; i++){
     Int_t iMod=i+240;
+    Int_t lay,lad,det;
+    AliITSgeomTGeo::GetModuleId(iMod,lay,lad,det);
     Int_t i0=2*i;
     Int_t i1=1+2*i;
     vdriftarr0=(AliITSDriftSpeedArraySDD*)drspSDD->At(i0);
@@ -125,14 +149,42 @@ void ShowDriftSpeedSDD(Char_t filnam[150]="$ALICE_ROOT/ITS/Calib/DriftSpeedSDD/R
       gvdr0[i]->SetPoint(iAn,(Float_t)iAn,vel0);
       gvdr1[i]->SetPoint(iAn,(Float_t)iAn,vel1);
     }
-    if(vdriftarr0->GetInjectorStatus()>0) iGoodInj++;
+    Int_t statusInj0=vdriftarr0->GetInjectorStatus();
+    Int_t statusInj1=vdriftarr1->GetInjectorStatus();
+    if(statusInj0>0) iGoodInj++;
     else iAverSpeed++;
-    if(vdriftarr1->GetInjectorStatus()>0) iGoodInj++;
+    if(statusInj1>0) iGoodInj++;
     else iAverSpeed++;
 
-    printf(" Mod. %d \tStatusLR=%X %X \t v(an 128l)= %f",iMod,vdriftarr0->GetInjectorStatus(),vdriftarr1->GetInjectorStatus(),vdriftarr0->GetDriftSpeed(0,128));
+    printf(" Mod. %d \tStatusLR=%X %X \t v(an 128l)= %f",iMod,statusInj0,statusInj1,vdriftarr0->GetDriftSpeed(0,128));
     printf("        \t v(an 128r)= %f  Degree=%d %d\n",vdriftarr1->GetDriftSpeed(0,128),vdrift0->GetDegreeofPoly(),vdrift1->GetDegreeofPoly());
 
+    Int_t n7=(statusInj0&(0x1F<<25))>>25;
+    Int_t n6=(statusInj0&(0x1F<<20))>>20;
+    Int_t n5=(statusInj0&(0x1F<<15))>>15;
+    Int_t n4=(statusInj0&(0x1F<<5))>>10;
+    Int_t n3=(statusInj0&(0x1F<<5))>>5;
+    Int_t n2=statusInj0&0x1F;
+    Float_t aveStatus0=(7.*n7+6.*n6+5.*n5+4.*n4+3.*n3+2.*n2)/32.;
+    n7=(statusInj1&(0x1F<<25))>>25;
+    n6=(statusInj1&(0x1F<<20))>>20;
+    n5=(statusInj1&(0x1F<<15))>>15;
+    n4=(statusInj1&(0x1F<<5))>>10;
+    n3=(statusInj1&(0x1F<<5))>>5;
+    n2=statusInj1&0x1F;
+    Float_t aveStatus1=(7.*n7+6.*n6+5.*n5+4.*n4+3.*n3+2.*n2)/32.;
+
+    Int_t index=1+(det-1)*2;
+    if(lay==3){ 
+      hlay3->SetBinContent(index,lad,aveStatus0);
+      hlay3->SetBinContent(index+1,lad,aveStatus1);
+    }
+    if(lay==4){ 
+      hlay4->SetBinContent(index,lad,aveStatus0);
+      hlay4->SetBinContent(index+1,lad,aveStatus1);
+    }
+
+
     if(!kNoDraw){
       if (i%12==0 ) {
        c0->cd();
@@ -203,8 +255,43 @@ void ShowDriftSpeedSDD(Char_t filnam[150]="$ALICE_ROOT/ITS/Calib/DriftSpeedSDD/R
   printf("Number of half-modules with drift speed from injectors = %d\n",iGoodInj);
   printf("Number of half-modules with average drift speed        = %d\n",iAverSpeed);
 
+  gStyle->SetPalette(59);
+
+  TCanvas* clay=new TCanvas("clay","Injector Status",900,600);
+  clay->Divide(2,1);
+  clay->cd(1);
+  hlay3->Draw("colz");
+  TLine** linv3=new TLine*[5];
+  for(Int_t i=0;i<5;i++){
+    linv3[i]=new TLine(i+0.5,-0.5,i+0.5,13.5);
+    linv3[i]->SetLineColor(kGray+1);
+    linv3[i]->Draw();
+  }
+  TLine** linh3=new TLine*[13];
+  for(Int_t i=0;i<13;i++){
+    linh3[i]=new TLine(-0.5,i+0.5,5.5,i+0.5);
+    linh3[i]->SetLineColor(kGray+1);
+    linh3[i]->Draw();
+  }
+  clay->cd(2);
+  hlay4->Draw("colz");
+  TLine** linv4=new TLine*[7];
+  for(Int_t i=0;i<7;i++){
+    linv4[i]=new TLine(i+0.5,-0.5,i+0.5,21.5);
+    linv4[i]->SetLineColor(kGray+1);
+    linv4[i]->Draw();
+  }
+  TLine** linh4=new TLine*[21];
+  for(Int_t i=0;i<21;i++){
+    linh4[i]=new TLine(-0.5,i+0.5,7.5,i+0.5);
+    linh4[i]->SetLineColor(kGray+1);
+    linh4[i]->Draw();
+  }
+  clay->Modified();
+
+
   TCanvas* c2;
-  c2=new TCanvas("c2","",1000,700);
+  c2=new TCanvas("c2","Vdrift vs. mod",1000,700);
   vvsmod0->SetMarkerStyle(20);
   vvsmod0->Draw("AP");
   vvsmod0->GetXaxis()->SetTitle("Module Number");
@@ -216,7 +303,7 @@ void ShowDriftSpeedSDD(Char_t filnam[150]="$ALICE_ROOT/ITS/Calib/DriftSpeedSDD/R
   tright->Draw();
 
   TCanvas* c3;
-  c3=new TCanvas("c3","",900,900);
+  c3=new TCanvas("c3","Params vs. mod",900,900);
   c3->Divide(2,2);
   
   c3->cd(1);