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;
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());
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;
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);
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");
-
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");
#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>
#include "AliCDBEntry.h"
#include "AliITSDriftSpeedArraySDD.h"
#include "AliITSDriftSpeedSDD.h"
+#include "AliITSgeomTGeo.h"
#endif
// Macro to plot the calibration parameters from the OCDB file
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;
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);
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();
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");
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);