]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/readSSDCommonMode.C
Fix coding rule violations
[u/mrichter/AliRoot.git] / ITS / readSSDCommonMode.C
CommitLineData
f5a5ae3e 1#if !defined(__CINT__) || defined(__MAKECINT__)
2#include "TString.h"
3#include "TH1.h"
4#include "TH2.h"
5#include "TFile.h"
6#include "TList.h"
7#include "TChain.h"
8#include "TObject.h"
9#include "TCanvas.h"
10#include "TStyle.h"
11#include "TSystem.h"
12#include "Riostream.h"
13
14#include "AliITSgeomTGeo.h"
15#include "AliLog.h"
16#include "AliRawReaderRoot.h"
17#include "AliITSRawStreamSSD.h"
18#include "AliCDBManager.h"
19#include "AliCDBEntry.h"
20#endif
21
22/* $Id: $ */
23
24//============================================================//
25static const Int_t fgkNumOfLDCs = 8; //number of SSD LDCs
26static const Int_t fgkNumOfDDLs = 16; //number of SSD DDLs
27static const Int_t fgkSSDMODULES = 1698; //total number of SSD modules
28static const Int_t fgkSSDLADDERSLAYER5 = 34; //ladders on layer 5
29static const Int_t fgkSSDLADDERSLAYER6 = 38; //ladders on layer 6
30static const Int_t fgkSSDMODULESPERLADDERLAYER5 = 22; //modules per ladder - layer 5
31static const Int_t fgkSSDMODULESPERLADDERLAYER6 = 25; //modules per ladder - layer 6
32static const Int_t fgkSSDMODULESLAYER5 = 748; //total number of SSD modules - layer5
33static const Int_t fgkSSDMODULESLAYER6 = 950; //total number of SSD modules - layer6
34static const Int_t fgkNumberOfPSideStrips = 768; //number of P-side strips
35//============================================================//
36
37TList *initCM();
38void makeCM(const char* filename, Int_t nEvents, TList *list);
39
40//__________________________________________________________//
41void readSSDCommonMode(const char* filename = "raw.root",
42 Int_t nEvents = -1) {
43 //Reads the CM pseudo-channels and produces the CM map for both layers
44 //and for p and n-side.
45 gStyle->SetPalette(1,0);
46
47 TList *list = initCM();
48 //list->ls();
49 Printf("CM histograms: %d",list->GetEntries());
50 makeCM(filename,nEvents,list);
51}
52
53//__________________________________________________________//
54TList *initCM() {
55 //Initializes the histograms and returns the TList object
56 TList *list = new TList();
57
58 Int_t gLayer = 0,gLadder = 0, gModule = 0;
59 Int_t gHistCounter = 0;
60 TString gTitle;
61 TH1F *gHistSSDCMModule[2*fgkSSDMODULES];
62 for(Int_t iModule = 500; iModule < fgkSSDMODULES + 500; iModule++) {
63 AliITSgeomTGeo::GetModuleId(iModule,gLayer,gLadder,gModule);
64 gTitle = "SSD_CM_PSide_Layer"; gTitle += gLayer;
65 gTitle += "_Ladder"; gTitle += gLadder;
66 gTitle += "_Module"; gTitle += gModule;
67 gHistSSDCMModule[gHistCounter] = new TH1F(gTitle.Data(),gTitle.Data(),
68 100,-50.,50.);
69 gHistSSDCMModule[gHistCounter]->GetXaxis()->SetTitle("CM");
70 list->Add(gHistSSDCMModule[gHistCounter]);
71 gHistCounter += 1;
72 }
73 for(Int_t iModule = 500; iModule < fgkSSDMODULES + 500; iModule++) {
74 AliITSgeomTGeo::GetModuleId(iModule,gLayer,gLadder,gModule);
75 gTitle = "SSD_CM_NSide_Layer"; gTitle += gLayer;
76 gTitle += "_Ladder"; gTitle += gLadder;
77 gTitle += "_Module"; gTitle += gModule;
78 gHistSSDCMModule[gHistCounter] = new TH1F(gTitle.Data(),gTitle.Data(),
79 100,-50.,50.);
80 gHistSSDCMModule[gHistCounter]->GetXaxis()->SetTitle("CM");
81 list->Add(gHistSSDCMModule[gHistCounter]);
82 gHistCounter += 1;
83 }
84
85 return list;
86}
87
88//__________________________________________________________//
89void makeCM(const char* filename, Int_t nEvents, TList *list) {
90 //Function to read the CM values
91 Int_t gStripNumber = 0;
92 Int_t gLayer = 0,gLadder = 0, gModule = 0;
93
94 //==================================================//
95 AliCDBManager *fCDBManager = AliCDBManager::Instance();
96 fCDBManager->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
97 Int_t runNumber = atoi(gSystem->Getenv("DATE_RUN_NUMBER"));
98 if(!runNumber)
99 Printf("DATE_RUN_NUMBER not defined!!!\n");
100
101 fCDBManager->SetRun(runNumber);
102 AliCDBEntry *geomGRP = fCDBManager->Get("GRP/Geometry/Data");
103 if(!geomGRP) cout<<"GRP geometry not found!!!"<<endl;;
104 //==================================================//
105
106 //==================================================//
107 TH2F *fHistPSideCMMapLayer5 = new TH2F("fHistPSideCMMapLayer5",
108 "Layer 5 - P side;N_{module};N_{ladder}",
109 22,1,23,
110 34,500,534);
111 fHistPSideCMMapLayer5->GetXaxis()->SetTitleColor(1);
112 fHistPSideCMMapLayer5->GetZaxis()->SetRangeUser(0.,20.);
113 fHistPSideCMMapLayer5->SetStats(kFALSE);
114 fHistPSideCMMapLayer5->GetYaxis()->SetTitleOffset(1.8);
115 fHistPSideCMMapLayer5->GetXaxis()->SetNdivisions(22);
116 fHistPSideCMMapLayer5->GetYaxis()->SetNdivisions(34);
117 fHistPSideCMMapLayer5->GetXaxis()->SetLabelSize(0.03);
118 fHistPSideCMMapLayer5->GetYaxis()->SetLabelSize(0.03);
119 fHistPSideCMMapLayer5->GetZaxis()->SetTitleOffset(1.6);
120 fHistPSideCMMapLayer5->GetZaxis()->SetTitle("RMS(CM) (p-side)");
121
122 TH2F *fHistNSideCMMapLayer5 = new TH2F("fHistNSideCMMapLayer5",
123 "Layer 5 - N side;N_{module};N_{ladder}",
124 22,1,23,
125 34,500,534);
126 fHistNSideCMMapLayer5->GetXaxis()->SetTitleColor(1);
127 fHistNSideCMMapLayer5->GetZaxis()->SetRangeUser(0.,20.);
128 fHistNSideCMMapLayer5->SetStats(kFALSE);
129 fHistNSideCMMapLayer5->GetYaxis()->SetTitleOffset(1.8);
130 fHistNSideCMMapLayer5->GetXaxis()->SetNdivisions(22);
131 fHistNSideCMMapLayer5->GetYaxis()->SetNdivisions(34);
132 fHistNSideCMMapLayer5->GetXaxis()->SetLabelSize(0.03);
133 fHistNSideCMMapLayer5->GetYaxis()->SetLabelSize(0.03);
134 fHistNSideCMMapLayer5->GetZaxis()->SetTitleOffset(1.6);
135 fHistNSideCMMapLayer5->GetZaxis()->SetTitle("RMS(CM) (n-side)");
136
137 TH2F *fHistPSideCMMapLayer6 = new TH2F("fHistPSideCMMapLayer6",
138 "Layer 6 - P side;N_{module};N_{ladder}",
139 25,1,26,
140 38,600,638);
141 fHistPSideCMMapLayer6->GetXaxis()->SetTitleColor(1);
142 fHistPSideCMMapLayer6->GetZaxis()->SetRangeUser(0.,20.);
143 fHistPSideCMMapLayer6->SetStats(kFALSE);
144 fHistPSideCMMapLayer6->GetYaxis()->SetTitleOffset(1.8);
145 fHistPSideCMMapLayer6->GetXaxis()->SetNdivisions(25);
146 fHistPSideCMMapLayer6->GetYaxis()->SetNdivisions(38);
147 fHistPSideCMMapLayer6->GetXaxis()->SetLabelSize(0.03);
148 fHistPSideCMMapLayer6->GetYaxis()->SetLabelSize(0.03);
149 fHistPSideCMMapLayer6->GetZaxis()->SetTitleOffset(1.6);
150 fHistPSideCMMapLayer6->GetZaxis()->SetTitle("RMS(CM) (p-side)");
151
152 TH2F *fHistNSideCMMapLayer6 = new TH2F("fHistNSideCMMapLayer6",
153 "Layer 6 - N side;N_{module};N_{ladder}",
154 25,1,26,
155 38,600,638);
156 fHistNSideCMMapLayer6->GetXaxis()->SetTitleColor(1);
157 fHistNSideCMMapLayer6->GetZaxis()->SetRangeUser(0.,20.);
158 fHistNSideCMMapLayer6->SetStats(kFALSE);
159 fHistNSideCMMapLayer6->GetYaxis()->SetTitleOffset(1.8);
160 fHistNSideCMMapLayer6->GetXaxis()->SetNdivisions(25);
161 fHistNSideCMMapLayer6->GetYaxis()->SetNdivisions(38);
162 fHistNSideCMMapLayer6->GetXaxis()->SetLabelSize(0.03);
163 fHistNSideCMMapLayer6->GetYaxis()->SetLabelSize(0.03);
164 fHistNSideCMMapLayer6->GetZaxis()->SetTitleOffset(1.6);
165 fHistNSideCMMapLayer6->GetZaxis()->SetTitle("RMS(CM) (n-side)");
166 //==================================================//
167
168 TChain *chain = new TChain("RAW");
169 chain->Add(filename);
170 Int_t nTotalEvents = chain->GetEntries();
171 if(nEvents == -1) nEvents = nTotalEvents;
172
173 AliRawReaderRoot *rawReader = new AliRawReaderRoot(filename);
174 Int_t iEvent = 0;
175 Int_t fSSDEvent = 0;
176 for(iEvent = 0; iEvent < nEvents; iEvent++) {
177 cout<<"Event: "<<iEvent+1<<"/"<<nEvents<<endl;
178 rawReader->Select("ITSSSD",-1,-1);
179 rawReader->Reset();
180 rawReader->NextEvent();
181
182 if(rawReader->GetType() != 7) continue;
183
184 fSSDEvent += 1;
185 AliITSRawStreamSSD gSSDStream(rawReader);
186 while (gSSDStream.Next()) {
187 if(gSSDStream.GetModuleID() < 0) continue;
188 AliITSgeomTGeo::GetModuleId(gSSDStream.GetModuleID(),gLayer,gLadder,gModule);
189 //if(gSSDStream.GetModuleID() != 500) continue;
190 //Printf("Module id: %d - Layer: %d - Ladder: %d - Module: %d",gSSDStream.GetModuleID(),gLayer,gLadder,gModule);
191
192 if(gSSDStream.GetStrip() >= 0) continue;
193 gStripNumber = (gSSDStream.GetSideFlag() == 0) ? gSSDStream.GetStrip() : -gSSDStream.GetStrip() + 2*fgkNumberOfPSideStrips;
194 //Printf("Module id: %d - Strip: %d - strip number: %d - Signal: %lf",gSSDStream.GetModuleID(),gSSDStream.GetStrip(),gStripNumber,signal);
195 if(TMath::Abs(gSSDStream.GetStrip()) < 7)
196 ((TH1*)list->At(gSSDStream.GetModuleID()-500))->Fill(gSSDStream.GetSignal());
197 if(TMath::Abs(gSSDStream.GetStrip()) > 6)
198 ((TH1*)list->At(1698+gSSDStream.GetModuleID()-500))->Fill(gSSDStream.GetSignal());
199
200 }//streamer loop
201 }//event loop
202
203 //compute the rms of the CM values
204 Double_t rmsPsideCM = 0.0, rmsNsideCM = 0.0;
205 for(Int_t i = 0; i < 1698; i++) {
206 rmsPsideCM = 0.0; rmsNsideCM = 0.0;
207 AliITSgeomTGeo::GetModuleId(i+500,gLayer,gLadder,gModule);
208 //Printf("%s - %s",((TH1*)list->At(i))->GetName(),
209 //((TH1*)list->At(1698+i))->GetName());
210 rmsPsideCM = ((TH1*)list->At(i))->GetRMS();
211 rmsNsideCM = ((TH1*)list->At(1698+i))->GetRMS();
212 if(rmsPsideCM == 0) rmsPsideCM = 0.001;
213 if(rmsNsideCM == 0) rmsNsideCM = 0.001;
214 //Printf("rmsPside: %lf - rmsNside: %lf",rmsPsideCM,rmsNsideCM);
215 if(gLayer == 5) {
216 fHistPSideCMMapLayer5->SetBinContent(gModule,gLadder,rmsPsideCM);
217 fHistNSideCMMapLayer5->SetBinContent(gModule,gLadder,rmsNsideCM);
218 }
219 if(gLayer == 6) {
220 fHistPSideCMMapLayer6->SetBinContent(gModule,gLadder,rmsPsideCM);
221 fHistNSideCMMapLayer6->SetBinContent(gModule,gLadder,rmsNsideCM);
222 }
223 }
224
225 TFile *foutput = TFile::Open("SSD.CM.root","recreate");
226 list->Write();
227 fHistPSideCMMapLayer5->Write(); fHistNSideCMMapLayer5->Write();
228 fHistPSideCMMapLayer6->Write(); fHistNSideCMMapLayer6->Write();
229 foutput->Close();
230}
231
232//__________________________________________________________//
233void drawSSDCM(const char* filename = "SSD.CM.root") {
234 gStyle->SetPalette(1,0);
235
236 TFile *f = TFile::Open(filename);
237
238 TCanvas *c1 = new TCanvas("c1","CM values",0,0,700,650);
239 c1->SetFillColor(10); c1->SetHighLightColor(10); c1->Divide(2,2);
240 c1->cd(1);
241 TH1F *fHistPSideCMMapLayer5 = dynamic_cast<TH1F *>(f->Get("fHistPSideCMMapLayer5"));
242 fHistPSideCMMapLayer5->Draw("colz");
243 c1->cd(2);
244 TH1F *fHistNSideCMMapLayer5 = dynamic_cast<TH1F *>(f->Get("fHistNSideCMMapLayer5"));
245 fHistNSideCMMapLayer5->Draw("colz");
246 c1->cd(3);
247 TH1F *fHistPSideCMMapLayer6 = dynamic_cast<TH1F *>(f->Get("fHistPSideCMMapLayer6"));
248 fHistPSideCMMapLayer6->Draw("colz");
249 c1->cd(4);
250 TH1F *fHistNSideCMMapLayer6 = dynamic_cast<TH1F *>(f->Get("fHistNSideCMMapLayer6"));
251 fHistNSideCMMapLayer6->Draw("colz");
252}