]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSQASSDDataMakerSim.cxx
modifications to satisfy the coding conventions
[u/mrichter/AliRoot.git] / ITS / AliITSQASSDDataMakerSim.cxx
1 /**************************************************************************\r
2  * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *\r
3  *                                                                        *\r
4  * Author: The ALICE Off-line Project.                                    *\r
5  * Contributors are mentioned in the code where appropriate.              *\r
6  *                                                                        *\r
7  * Permission to use, copy, modify and distribute this software and its   *\r
8  * documentation strictly for non-commercial purposes is hereby granted   *\r
9  * without fee, provided that the above copyright notice appears in all   *\r
10  * copies and that both the copyright notice and this permission notice   *\r
11  * appear in the supporting documentation. The authors make no claims     *\r
12  * about the suitability of this software for any purpose. It is          *\r
13  * provided "as is" without express or implied warranty.                  *\r
14  **************************************************************************/\r
15 \r
16 /* $Id$   */\r
17 \r
18 //  *************************************************************\r
19 //  Checks the quality assurance \r
20 //  by comparing with reference data\r
21 //  contained in a DB\r
22 //  -------------------------------------------------------------\r
23 //  W. Ferrarese + P. Cerello Feb 2008\r
24 //  INFN Torino\r
25 //  SSD QA part: P. Christakoglou - NIKHEF/UU\r
26 \r
27 // --- ROOT system ---\r
28 #include <TTree.h>\r
29 #include <TH1.h>\r
30 #include <TH2.h>\r
31 #include <TMath.h>\r
32 // --- Standard library ---\r
33 \r
34 // --- AliRoot header files ---\r
35 #include "AliITS.h"\r
36 #include "AliITSmodule.h"\r
37 #include "AliITShit.h"\r
38 #include "AliITSdigit.h"\r
39 #include "AliITSpListItem.h"\r
40 #include "AliRun.h"\r
41 #include "AliITSQADataMakerSim.h"\r
42 #include "AliITSQASSDDataMakerSim.h"\r
43 #include "AliLog.h"\r
44 #include "AliQA.h"\r
45 #include "AliQAChecker.h"\r
46 #include "AliRawReader.h"\r
47 \r
48 ClassImp(AliITSQASSDDataMakerSim)\r
49 \r
50 //____________________________________________________________________________ \r
51 AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(AliITSQADataMakerSim *aliITSQADataMakerSim) :\r
52 TObject(),\r
53 fAliITSQADataMakerSim(aliITSQADataMakerSim),\r
54 fSSDhTask(0),\r
55 fGenOffsetH(0),\r
56 fGenOffsetS(0), \r
57 fGenOffsetD(0) \r
58 {\r
59   //ctor used to discriminate OnLine-Offline analysis   \r
60 }\r
61 \r
62 //____________________________________________________________________________ \r
63 AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(const AliITSQASSDDataMakerSim& qadm) :\r
64 TObject(),\r
65 fAliITSQADataMakerSim(qadm.fAliITSQADataMakerSim),\r
66 fSSDhTask(qadm.fSSDhTask),\r
67 fGenOffsetH(qadm.fGenOffsetH), \r
68 fGenOffsetS(qadm.fGenOffsetS), \r
69 fGenOffsetD(qadm.fGenOffsetD) \r
70 {\r
71   //copy ctor \r
72   fAliITSQADataMakerSim->SetName((const char*)qadm.fAliITSQADataMakerSim->GetName()) ; \r
73   fAliITSQADataMakerSim->SetTitle((const char*)qadm.fAliITSQADataMakerSim->GetTitle());\r
74   }\r
75 \r
76 //__________________________________________________________________\r
77 AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDDataMakerSim& qac ) {\r
78   // Equal operator.\r
79   this->~AliITSQASSDDataMakerSim();\r
80   new(this) AliITSQASSDDataMakerSim(qac);\r
81   return *this;\r
82 }\r
83 \r
84 //____________________________________________________________________________ \r
85 void AliITSQASSDDataMakerSim::StartOfDetectorCycle() {\r
86   //Detector specific actions at start of cycle\r
87   AliDebug(1,"AliITSQADM::Start of SSD Cycle\n");\r
88 }\r
89 \r
90 //____________________________________________________________________________ \r
91 void AliITSQASSDDataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray* list) {\r
92   // launch the QA checking\r
93   AliDebug(1,"AliITSDM instantiates checker with Run(AliQA::kITS, task, list)\n"); \r
94   \r
95   AliQAChecker::Instance()->Run( AliQA::kITS , task, list);\r
96 }\r
97 \r
98 //____________________________________________________________________________ \r
99 void AliITSQASSDDataMakerSim::InitDigits() { \r
100   // Initialization for DIGIT data - SSD -\r
101   fGenOffsetD = (fAliITSQADataMakerSim->fDigitsQAList)->GetEntries();\r
102 \r
103   // custom code here\r
104   TH1F *fHistSSDModule = new TH1F("fHistSSDDigitsModule",\r
105                                   ";SSD Module Number;N_{DIGITS}",\r
106                                   1698,499.5,2197.5);  \r
107   fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModule,\r
108                                         fGenOffsetD + 0);\r
109   fSSDhTask += 1;\r
110   TH2F *fHistSSDModuleStrip = new TH2F("fHistSSDDigitsModuleStrip",\r
111                                        ";N_{Strip};N_{Module}",\r
112                                        1540,0,1540,1698,499.5,2197.5);  \r
113   fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModuleStrip,\r
114                                         fGenOffsetD + 1);\r
115   fSSDhTask += 1;\r
116 \r
117   AliDebug(1,Form("%d SSD Digits histograms booked\n",fSSDhTask));\r
118 \r
119 }\r
120 \r
121 //____________________________________________________________________________\r
122 void AliITSQASSDDataMakerSim::MakeDigits(TTree *digits) { \r
123   // Fill QA for DIGIT - SSD -\r
124   AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");\r
125   fITS->SetTreeAddress();\r
126   TClonesArray *iSSDdigits  = fITS->DigitsAddress(2);\r
127   for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
128     iSSDdigits->Clear();\r
129     digits->GetEvent(iModule);    \r
130     Int_t ndigits = iSSDdigits->GetEntries();\r
131     fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD + 0)->Fill(iModule,ndigits);\r
132     if(ndigits != 0)\r
133       AliDebug(1,Form("Module: %d - Digits: %d",iModule,ndigits));\r
134  \r
135     for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {\r
136       AliITSdigit *dig = (AliITSdigit*)iSSDdigits->UncheckedAt(iDigit);\r
137       Int_t fStripNumber = (dig->GetCoord1() == 0) ? dig->GetCoord2() : dig->GetCoord2() + fgkNumberOfPSideStrips;\r
138       ((TH2F *)fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD + 1))->Fill(fStripNumber,iModule,dig->GetSignal());\r
139     }//digit loop\r
140   }//module loop\r
141 }\r
142 \r
143 //____________________________________________________________________________ \r
144 void AliITSQASSDDataMakerSim::InitSDigits() { \r
145   // Initialization for SDIGIT data - SSD -\r
146   fGenOffsetS = (fAliITSQADataMakerSim->fSDigitsQAList)->GetEntries();\r
147 \r
148   // custom code here\r
149   TH1F *fHistSSDModule = new TH1F("fHistSSDSDigitsModule",\r
150                                   ";SSD Module Number;N_{SDIGITS}",\r
151                                   1698,499.5,2197.5);  \r
152   fAliITSQADataMakerSim->Add2SDigitsList(fHistSSDModule,\r
153                                          fGenOffsetS + 0);\r
154   fSSDhTask += 1;  \r
155 \r
156   AliDebug(1,Form("%d SSD SDigits histograms booked\n",fSSDhTask));\r
157 }\r
158 \r
159 //____________________________________________________________________________\r
160 void AliITSQASSDDataMakerSim::MakeSDigits(TTree *sdigits) { \r
161   // Fill QA for SDIGIT - SSD -\r
162   static TClonesArray iSSDEmpty("AliITSpListItem",10000);\r
163   iSSDEmpty.Clear();\r
164   TClonesArray *iSSDsdigits = &iSSDEmpty;\r
165 \r
166   AliInfo(Form("Trying to access the sdigits histogram: %d\n",fGenOffsetS));\r
167 \r
168   TBranch *brchSDigits = sdigits->GetBranch("ITS");\r
169   brchSDigits->SetAddress(&iSSDsdigits);\r
170   for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
171     iSSDsdigits->Clear();\r
172     sdigits->GetEvent(iModule);    \r
173     Int_t ndigits = iSSDsdigits->GetEntries();\r
174     fAliITSQADataMakerSim->GetSDigitsData(fGenOffsetS + 0)->Fill(iModule,ndigits);\r
175     if(ndigits != 0)\r
176       AliDebug(1,Form("Module: %d - Digits: %d",iModule,ndigits));\r
177 \r
178     for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {\r
179       AliITSpListItem *dig=(AliITSpListItem*)iSSDsdigits->At(iDigit);\r
180       dig=0;\r
181     }//digit loop\r
182   }//module loop\r
183 }\r
184 \r
185 //____________________________________________________________________________ \r
186 void AliITSQASSDDataMakerSim::InitHits() { \r
187   // Initialization for HITS data - SSD -\r
188   fGenOffsetH = (fAliITSQADataMakerSim->fHitsQAList)->GetEntries();\r
189 \r
190   // custom code here\r
191   TH1F *fHistSSDModule = new TH1F("fHistSSDHitsModule",\r
192                                   ";SDD Module Number;N_{HITS}",\r
193                                   1698,499.5,2197.5); \r
194   fAliITSQADataMakerSim->Add2HitsList(fHistSSDModule,\r
195                                       fGenOffsetH + 0);\r
196   fSSDhTask += 1;\r
197   TH1F *fHistSSDGlobalX = new TH1F("fHistSSDHitsGlobalX",\r
198                                    ";x [cm];Entries",\r
199                                    1000,-50.,50.);\r
200   fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalX,\r
201                                       fGenOffsetH + 1);\r
202   fSSDhTask += 1;\r
203   TH1F *fHistSSDGlobalY = new TH1F("fHistSSDHitsGlobalY",\r
204                                    ";y [cm];Entries",\r
205                                    1000,-50.,50.);\r
206   fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalY,\r
207                                       fGenOffsetH + 2);\r
208   fSSDhTask += 1;\r
209   TH1F *fHistSSDGlobalZ = new TH1F("fHistSSDHitsGlobalZ",\r
210                                    ";z [cm];Entries",\r
211                                    1000,-60.,60.);\r
212   fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalZ,\r
213                                       fGenOffsetH + 3);\r
214   fSSDhTask += 1;\r
215   TH1F *fHistSSDLocalX = new TH1F("fHistSSDHitsLocalX",\r
216                                   ";x [cm];Entries",\r
217                                   1000,-4.,4.);\r
218   fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalX,\r
219                                       fGenOffsetH + 4);\r
220   fSSDhTask += 1;\r
221   TH1F *fHistSSDLocalY = new TH1F("fHistSSDHitsLocalY",\r
222                                   ";y [cm];Entries",\r
223                                   1000,-0.1,0.1);\r
224   fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalY,\r
225                                       fGenOffsetH + 5);\r
226   fSSDhTask += 1;\r
227   TH1F *fHistSSDLocalZ = new TH1F("fHistSSDHitsLocalZ",\r
228                                   ";z [cm];Entries",\r
229                                   1000,-4.,4.);\r
230   fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalZ,\r
231                                       fGenOffsetH + 6);\r
232   fSSDhTask += 1;\r
233   TH1F *fHistSSDIonization = new TH1F("fHistSSDHitsIonization",\r
234                                       ";log(dE/dx) [KeV];N_{Hits}",\r
235                                       100,-7,-2);\r
236   fAliITSQADataMakerSim->Add2HitsList(fHistSSDIonization,\r
237                                       fGenOffsetH + 7 );\r
238   fSSDhTask += 1;\r
239   TH2F *fHistSSDGlobalXY = new TH2F("fHistSSDHitsGlobalXY",\r
240                                     ";x [cm];y [cm]",\r
241                                     1000,-50.,50.,\r
242                                     1000,-50.,50.);\r
243   fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalXY,\r
244                                       fGenOffsetH + 8 );\r
245   fSSDhTask += 1;\r
246  \r
247   AliDebug(1,Form("%d SSD Hits histograms booked\n",fSSDhTask));\r
248 }\r
249 \r
250 \r
251 //____________________________________________________________________________\r
252 void AliITSQASSDDataMakerSim::MakeHits(TTree *hits) { \r
253   // Fill QA for HITS - SSD -\r
254   AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");\r
255   fITS->SetTreeAddress();\r
256   Int_t nmodules;\r
257   fITS->InitModules(-1,nmodules);\r
258   fITS->FillModules(hits,0);\r
259   for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
260     AliITSmodule *module = fITS->GetModule(iModule);\r
261     TObjArray *arrHits = module->GetHits();\r
262     Int_t nhits = arrHits->GetEntriesFast();\r
263     if(nhits != 0)\r
264       AliDebug(1,Form("Module: %d - Hits: %d",iModule,nhits));\r
265     for (Int_t iHit = 0; iHit < nhits; iHit++) {\r
266       AliITShit *hit = (AliITShit*) arrHits->At(iHit);\r
267       \r
268       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 0)->Fill(iModule);\r
269       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 1)->Fill(hit->GetXG());\r
270       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 2)->Fill(hit->GetYG());\r
271       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 3)->Fill(hit->GetZG());\r
272       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 4)->Fill(hit->GetXL());\r
273       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 5)->Fill(hit->GetYL());\r
274       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 6)->Fill(hit->GetZL());\r
275       if(hit->GetIonization())\r
276         fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 7)->Fill(TMath::Log10(hit->GetIonization()));\r
277       fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 8)->Fill(hit->GetXG(),hit->GetYG());\r
278     }//hit loop\r
279   }//module loop  \r
280 }\r