]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HMPID/HplotDA.C
Tools for experts for cross-checkings
[u/mrichter/AliRoot.git] / HMPID / HplotDA.C
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include <Riostream.h>     
3
4 #include <TSystem.h>
5 #include <TCanvas.h>
6 #include <TH2F.h>
7 #include <TH1F.h>
8 #include <TH1I.h>
9
10 #include "AliHMPIDRawStream.h"
11 #endif
12
13
14
15 TH2F hgPedMapMean[6]; 
16 TH2F hgPedMapSigma[6];
17 TH1F hgPedMapMean1D[6]; 
18 TH1F hgPedMapSigma1D[6]; 
19 TH2F hgPedMapMeanSigma[6];
20 TH1I hgDdlErr;
21
22 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 void Convert(Int_t ddl,Int_t r,Int_t d,Int_t a,Int_t &ch, Int_t &pc, Int_t &px, Int_t &py)
24 {
25   
26   Int_t a2y[6]={3,2,4,1,5,0};//pady for a given address (for single DILOGIC chip)
27   
28   Int_t ch=ddl/2;
29   Int_t tmp=(r-1)/8;              Int_t pc=(ddl%2)? 5-2*tmp:2*tmp; 
30                                   Int_t px=(d-1)*8+a/6;
31         tmp=(ddl%2)?(24-r):r-1;   Int_t py=6*(tmp%8)+a2y[a%6];
32 }
33
34 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++      
35 void ProcPed(Int_t nDDL)
36 {
37
38     if(gSystem->IsFileInIncludePath(Form("./HmpidPedDdl%02i.txt",nDDL)))
39           ifstream infile(Form("./HmpidPedDdl%02i.txt",nDDL));
40     else return;
41     
42     for(Int_t ni=0;ni<6;ni++)
43       {
44         hgPedMapMean[ni]  = new TH2F(Form("hPedMapMean_DDL%d_PC_%d" ,nDDL,ni),         Form("Pedestal: Mean, DDL(0-13): %d PC(0-5): %d;padx;pady" ,nDDL,ni),80,0,80,48,0,48);
45         hgPedMapSigma[ni] = new TH2F(Form("hPedMapSigma_DDL%d_PC_%d",nDDL,ni),         Form("Pedestal: Sigma, DDL(0-13): %d PC(0-5): %d;padx;pady",nDDL,ni),80,0,80,48,0,48);
46         hgPedMapMean1D[ni]  = new TH1F(Form("hPedMapMean1D_DDL%d_PC_%d" ,nDDL,ni),     Form("Pedestal: Mean, DDL(0-13): %d PC(0-5): %d;pad;Mean" ,nDDL,ni),3841,-0.5,3840.5);
47         hgPedMapSigma1D[ni]  = new TH1F(Form("hPedMapSigma1D_DDL%d_PC_%d" ,nDDL,ni),   Form("Pedestal: Sigma, DDL(0-13): %d PC(0-5): %d;pad;Sigma" ,nDDL,ni),3841,-0.5,3840.5);
48         hgPedMapMeanSigma[ni] = new TH2F(Form("hPedMapMeanSigma_DDL%d_PC_%d" ,nDDL,ni),Form("Pedestal, DDL(0-13): %d PC(0-5): %d;Mean;Sigma"),300,0,300,50,0,5);
49        }
50       
51     Int_t nSigCut,r,d,a,hard;  Float_t mean,sigma;
52     Int_t ch=0,pc=0,px=0,py=0;
53     Int_t cnt=0;
54     Int_t runNumber=-99999;
55     Char_t tName[10];
56     Int_t  ldcId;
57     Int_t  timeStamp;
58     Int_t  nEv;
59     Printf("Start reading DDL: %d ...",nDDL);  
60     infile>>tName>>runNumber;
61     infile>>tName>>ldcId;
62     infile>>tName>>timeStamp;
63     infile>>tName>>nEv;  
64     infile>>tName>>nSigCut;
65     Printf("RunNumber: %d, LdcId: %d TimeStamp: %d nEv: %d",runNumber,ldcId,timeStamp,nEv);
66     while(!infile.eof()){
67       infile>>dec>>r>>d>>a>>mean>>sigma>>hex>>hard;
68       Convert(nDDL,r,d,a,ch,pc,px,py); 
69       hgPedMapMean[pc].Fill(px,py,mean);  
70       hgPedMapSigma[pc].Fill(px,py,sigma);
71       hgPedMapMean1D[pc].Fill(cnt%3840,mean);
72       hgPedMapSigma1D[pc].Fill(cnt%3840,sigma);
73       hgPedMapMeanSigma[pc].Fill(mean,sigma);
74       cnt++;
75       
76     }
77   infile.close();
78   Printf("Stop reading DDL: %d ...",nDDL);
79       
80   gStyle->SetPalette(1);    
81   
82   TCanvas *cped = new TCanvas("cped","cped",800,800);     cped->Divide(2,2);
83   TCanvas *cped2 = new TCanvas("cped2","cped2",800,800);  cped2->Divide(2,2);
84   
85   for(Int_t npc=0;npc<6;npc++) {
86     if(hgPedMapMean[npc].GetEntries()==0) continue;
87     cped->cd(1); hgPedMapMean[npc].Draw("surf1");
88     cped->cd(2); hgPedMapSigma[npc].Draw("surf1");
89     
90     cped->cd(3); hgPedMapMean[npc].SetStats(0);hgPedMapMean[npc].Draw("colz");
91     cped->cd(4); hgPedMapSigma[npc].SetStats(0);hgPedMapSigma[npc].Draw("colz");
92     cped->SaveAs(Form("PedMap1_DDL%d_PC_%d.eps",nDDL,npc));
93     cped->SaveAs(Form("PedMap1_DDL%d_PC_%d.gif",nDDL,npc));
94     //cped->SaveAs(Form("PedMap1_DDL%d_PC_%d.pdf",nDDL,npc));
95         
96     cped2->cd(1); hgPedMapMean1D[npc].Draw();
97     cped2->cd(2); hgPedMapSigma1D[npc].Draw();
98     cped2->cd(3); hgPedMapMeanSigma[npc].Draw("colz");
99     cped2->SaveAs(Form("PedMap2_DDL%d_PC_%d.eps",nDDL,npc));           
100     cped2->SaveAs(Form("PedMap2_DDL%d_PC_%d.gif",nDDL,npc));           
101     //cped2->SaveAs(Form("PedMap2_DDL%d_PC_%d.pdf",nDDL,npc));           
102     
103   }
104     
105        
106 }//ProcPed()
107 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++      
108 void ProcErr(Int_t nDDL)
109 {
110   if(gSystem->IsFileInIncludePath(Form("./HmpidErrorsDdl%02i.txt",nDDL)))
111           ifstream infile(Form("./HmpidErrorsDdl%02i.txt",nDDL));
112     else return;
113     
114     hgDdlErr = new TH1I(Form("hPedErr_DDL%d",nDDL),Form("DDL(%d) Decoding Errors",nDDL),AliHMPIDRawStream::kSumErr+1,0,AliHMPIDRawStream::kSumErr);
115      for(Int_t ilabel=0; ilabel< AliHMPIDRawStream::kSumErr; ilabel++) {
116       hgDdlErr->SetStats(0);
117       hgDdlErr->GetXaxis()->CenterLabels(kTRUE);
118       hgDdlErr->GetXaxis()->SetBinLabel((ilabel+1),Form("%i  %s",ilabel+1,AliHMPIDRawStream::GetErrName(ilabel)));
119       }
120     hgDdlErr->SetFillColor(5);
121
122     
123     Int_t runNumber=-99999;
124     Char_t tName[10];
125     Int_t  ldcId;
126     Int_t  timeStamp;
127     Int_t  nEv;Int_t rerr;
128      Printf("Start reading Error File DDL: %d ...",nDDL);  
129     infile>>tName>>runNumber;
130     infile>>tName>>ldcId;
131     infile>>tName>>timeStamp;
132     infile>>tName>>nEv;  
133     Printf("RunNumber: %d, LdcId: %d TimeStamp: %d nEv: %d",runNumber,ldcId,timeStamp,nEv);
134     for(Int_t ierr=0;ierr<AliHMPIDRawStream::kSumErr;ierr++)
135     {
136        infile>>rerr;hgDdlErr->SetBinContent(ierr+1,rerr);
137      }
138     
139     
140     TCanvas *cerr = new TCanvas("cped","cped");
141     cerr->cd();
142     hgDdlErr->Draw();
143     cerr->SaveAs(Form("PedError_DDL%d.eps",nDDL)); 
144     cerr->SaveAs(Form("PedError_DDL%d.gif",nDDL)); 
145       
146 }
147 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++      
148 void HplotDA()
149 {
150   for(Int_t i=0;i<14;i++) 
151   {
152    ProcPed(i);  
153    ProcErr(i);
154   }
155 }
156 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++