]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/macrosSDD/PlotSDDRawData.C
New feature to plot raw data of single module
[u/mrichter/AliRoot.git] / ITS / macrosSDD / PlotSDDRawData.C
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include <TH2F.h>
3 #include <TGrid.h>
4 #include <TCanvas.h>
5 #include <TStopwatch.h>
6 #include <TStyle.h>
7 #include "AliRawReaderDate.h"
8 #include "AliRawReaderRoot.h"
9 #include "AliITSRawStreamSDD.h"
10 #include "AliITSRawStreamSDDCompressed.h"
11 #endif
12
13 // Macro to display the SDD Raw Data for 1 DDL
14 // Origin: F. Prino,   prino@to.infn.it
15
16 void PlotSDDRawData(Char_t datafil[100], Int_t nDDL, Int_t firstEv=18, Int_t lastEv=20){
17
18   const Int_t nHybrids=24;
19   Bool_t writtenoutput=kFALSE;
20   TH2F** histo = new TH2F*[nHybrids];
21   for(Int_t i=0;i<nHybrids;i++){
22     histo[i]=new TH2F(Form("histo%d",i),"",256,-0.5,255.5,256,-0.5,255.5);
23     histo[i]->SetStats(0);
24   }
25
26   Bool_t isSingleMod=kFALSE;
27   Int_t npx=4;
28   Int_t npy=6;
29   Int_t xsiz=900;
30   Int_t ysiz=900;
31   Int_t nHybrToPlot=24;
32   Int_t iMod=-1;
33   if(nDDL>=240 && nDDL<500){
34     iMod=nDDL;
35     AliITSDDLModuleMapSDD* dmap=new AliITSDDLModuleMapSDD();
36     dmap->SetJun09Map();
37     Int_t nCarlos;
38     dmap->FindInDDLMap(iMod,nDDL,nCarlos);
39     histo[nCarlos*2]->SetTitle(Form("Module %d Side 0",iMod));
40     histo[nCarlos*2+1]->SetTitle(Form("Module %d Side 0",iMod));
41     isSingleMod=kTRUE;
42     npx=2;
43     npy=1;
44     xsiz=900;
45     ysiz=450;
46     nHybrToPlot=2;
47   }
48
49   Int_t iev=firstEv;
50   AliRawReader *rd; 
51   if(strstr(datafil,".root")!=0){
52     rd=new AliRawReaderRoot(datafil,iev);
53   }else{
54     rd=new AliRawReaderDate(datafil,iev);
55   }
56   TStopwatch *evtime=new TStopwatch();
57   TCanvas* c0 = new TCanvas("cd0","c0",xsiz,ysiz);
58   gStyle->SetPalette(1);
59
60   do{
61     c0->Clear();                                
62     c0->Divide(npx,npy,0.001,0.001);
63
64     evtime->Start();
65     printf("Event # %d\n",iev);
66     rd->Reset();
67     for(Int_t i=0;i<nHybrids;i++) histo[i]->Reset();
68     UChar_t cdhAttr=AliITSRawStreamSDD::ReadBlockAttributes(rd);
69     UInt_t amSamplFreq=AliITSRawStreamSDD::ReadAMSamplFreqFromCDH(cdhAttr);
70     AliITSRawStream* s=AliITSRawStreamSDD::CreateRawStreamSDD(rd,cdhAttr);
71     if(!writtenoutput){
72       printf("Use %s raw stream, sampling frequency %d MHz\n",s->ClassName(),amSamplFreq);
73       writtenoutput=kTRUE;
74     }
75
76     Int_t iCountNext=0;    
77     while(s->Next()){
78       iCountNext++;
79       if(s->IsCompletedModule()==kFALSE && s->IsCompletedDDL()==kFALSE){
80         Int_t i=s->GetCarlosId()*2+s->GetChannel();
81         if(rd->GetDDLID()==nDDL) histo[i]->Fill(s->GetCoord2(),s->GetCoord1(),s->GetSignal());
82       }
83     }
84     evtime->Stop();
85     printf("**** Event=%d  \n",iev);
86     evtime->Print("u");
87     evtime->Reset();
88     iev++;
89     
90     for(Int_t i=0;i<nHybrToPlot;i++){
91       c0->cd(i+1);
92       if(isSingleMod){
93         histo[nCarlos*2+i]->DrawCopy("colz");
94       }else{
95         histo[i]->DrawCopy("colz");
96       }
97     }
98     c0->Update();
99     if(histo[nCarlos*2]->GetMaximum()>1) getchar();
100   }while(rd->NextEvent()&&iev<=lastEv);
101
102 }
103
104 void PlotSDDRawData(Int_t nrun, Int_t n2, Int_t year=2009, Char_t* dir="LHC09b_SDD",
105                     Int_t nDDL=0, 
106                     Int_t firstEv=18, 
107                     Int_t lastEv=20){
108
109   TGrid::Connect("alien:",0,0,"t");
110   Char_t filnam[200];
111   sprintf(filnam,"alien:///alice/data/%d/%s/%09d/raw/%02d%09d%03d.10.root",year,dir,nrun,year-2000,nrun,n2);
112   printf("Open file %s\n",filnam);
113   PlotSDDRawData(filnam,nDDL,firstEv,lastEv);
114 }
115