]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSQASSDDataMakerSim.cxx
Fixed typo
[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 fSSDhDigits(0),\r
55 fSSDhSDigits(0),\r
56 fSSDhHits(0),\r
57 fDigitsOffset(0),\r
58 fSDigitsOffset(0),\r
59 fHitsOffset(0) {\r
60   //ctor used to discriminate OnLine-Offline analysis   \r
61 }\r
62 \r
63 //____________________________________________________________________________ \r
64 AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(const AliITSQASSDDataMakerSim& qadm) :\r
65 TObject(),\r
66 fAliITSQADataMakerSim(qadm.fAliITSQADataMakerSim),\r
67 fSSDhDigits(qadm.fSSDhDigits),\r
68 fSSDhSDigits(qadm.fSSDhSDigits),\r
69 fSSDhHits(qadm.fSSDhHits),\r
70 fDigitsOffset(qadm.fDigitsOffset),\r
71 fSDigitsOffset(qadm.fSDigitsOffset),\r
72 fHitsOffset(qadm.fHitsOffset) {\r
73   //copy ctor \r
74   fAliITSQADataMakerSim->SetName((const char*)qadm.fAliITSQADataMakerSim->GetName()) ; \r
75   fAliITSQADataMakerSim->SetTitle((const char*)qadm.fAliITSQADataMakerSim->GetTitle());\r
76   }\r
77 \r
78 //__________________________________________________________________\r
79 AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDDataMakerSim& qac ) {\r
80   // Equal operator.\r
81   this->~AliITSQASSDDataMakerSim();\r
82   new(this) AliITSQASSDDataMakerSim(qac);\r
83   return *this;\r
84 }\r
85 \r
86 //____________________________________________________________________________ \r
87 void AliITSQASSDDataMakerSim::StartOfDetectorCycle() {\r
88   //Detector specific actions at start of cycle\r
89   AliDebug(1,"AliITSQADM::Start of SSD Cycle\n");\r
90 }\r
91 \r
92 //____________________________________________________________________________ \r
93 void AliITSQASSDDataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t /*task*/, TObjArray* /*list*/) {\r
94   // launch the QA checking\r
95   AliDebug(1,"AliITSDM instantiates checker with Run(AliQA::kITS, task, list)\n"); \r
96   \r
97   //AliQAChecker::Instance()->Run( AliQA::kITS , task, list);\r
98 }\r
99 \r
100 //____________________________________________________________________________ \r
101 void AliITSQASSDDataMakerSim::InitDigits() { \r
102   // Initialization for DIGIT data - SSD -\r
103   fDigitsOffset = (fAliITSQADataMakerSim->fDigitsQAList)->GetEntries();\r
104 \r
105   // custom code here\r
106   TH1F *fHistSSDModule = new TH1F("fHistSSDDigitsModule",\r
107                                   ";SSD Module Number;N_{DIGITS}",\r
108                                   1698,499.5,2197.5);  \r
109   fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModule,\r
110                                         fDigitsOffset + fSSDhDigits);\r
111   fSSDhDigits += 1;\r
112   TH2F *fHistSSDModuleStrip = new TH2F("fHistSSDDigitsModuleStrip",\r
113                                        ";N_{Strip};N_{Module}",\r
114                                        1540,0,1540,1698,499.5,2197.5);  \r
115   fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModuleStrip,\r
116                                         fDigitsOffset + fSSDhDigits);\r
117   fSSDhDigits += 1;\r
118 \r
119   AliDebug(1,Form("%d SSD Digits histograms booked\n",fSSDhDigits));\r
120 \r
121 }\r
122 \r
123 //____________________________________________________________________________\r
124 void AliITSQASSDDataMakerSim::MakeDigits(TTree *digits) { \r
125   // Fill QA for DIGIT - SSD -\r
126   AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");\r
127   fITS->SetTreeAddress();\r
128   TClonesArray *iSSDdigits  = fITS->DigitsAddress(2);\r
129   for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
130     iSSDdigits->Clear();\r
131     digits->GetEvent(iModule);    \r
132     Int_t ndigits = iSSDdigits->GetEntries();\r
133     fAliITSQADataMakerSim->GetDigitsData(fDigitsOffset + 0)->Fill(iModule,ndigits);\r
134     if(ndigits != 0)\r
135       AliDebug(1,Form("Module: %d - Digits: %d",iModule,ndigits));\r
136  \r
137     for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {\r
138       AliITSdigit *dig = (AliITSdigit*)iSSDdigits->UncheckedAt(iDigit);\r
139       Int_t fStripNumber = (dig->GetCoord1() == 0) ? dig->GetCoord2() : dig->GetCoord2() + fgkNumberOfPSideStrips;\r
140       ((TH2F *)fAliITSQADataMakerSim->GetDigitsData(fDigitsOffset + 1))->Fill(fStripNumber,iModule,dig->GetSignal());\r
141     }//digit loop\r
142   }//module loop\r
143 }\r
144 \r
145 //____________________________________________________________________________ \r
146 void AliITSQASSDDataMakerSim::InitSDigits() { \r
147   // Initialization for SDIGIT data - SSD -\r
148   fSDigitsOffset = (fAliITSQADataMakerSim->fSDigitsQAList)->GetEntries();\r
149 \r
150   // custom code here\r
151   TH1F *fHistSSDModule = new TH1F("fHistSSDSDigitsModule",\r
152                                   ";SSD Module Number;N_{SDIGITS}",\r
153                                   1698,499.5,2197.5);  \r
154   fAliITSQADataMakerSim->Add2SDigitsList(fHistSSDModule,\r
155                                          fSDigitsOffset + fSSDhSDigits);\r
156   fSSDhSDigits += 1;  \r
157 \r
158   AliDebug(1,Form("%d SSD SDigits histograms booked\n",fSSDhSDigits));\r
159 }\r
160 \r
161 //____________________________________________________________________________\r
162 void AliITSQASSDDataMakerSim::MakeSDigits(TTree *sdigits) { \r
163   // Fill QA for SDIGIT - SSD -\r
164   TClonesArray *iSSDsdigits = new TClonesArray("AliITSpListItem",10000);\r
165   TBranch *brchSDigits = sdigits->GetBranch("ITS");\r
166   brchSDigits->SetAddress(&iSSDsdigits);\r
167   for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
168     iSSDsdigits->Clear();\r
169     sdigits->GetEvent(iModule);    \r
170     Int_t ndigits = iSSDsdigits->GetEntries();\r
171     fAliITSQADataMakerSim->GetSDigitsData(fSDigitsOffset + 0)->Fill(iModule,ndigits);\r
172     if(ndigits != 0)\r
173       AliDebug(1,Form("Module: %d - Digits: %d",iModule,ndigits));\r
174 \r
175     for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {\r
176       AliITSpListItem *dig=(AliITSpListItem*)iSSDsdigits->At(iDigit);\r
177     }//digit loop\r
178   }//module loop\r
179 }\r
180 \r
181 //____________________________________________________________________________ \r
182 void AliITSQASSDDataMakerSim::InitHits() { \r
183   // Initialization for HITS data - SSD -\r
184   fHitsOffset = (fAliITSQADataMakerSim->fHitsQAList)->GetEntries();\r
185 \r
186   // custom code here\r
187   TH1F *fHistSSDModule = new TH1F("fHistSSDHitsModule",\r
188                                   ";SDD Module Number;N_{HITS}",\r
189                                   1698,499.5,2197.5); \r
190   fAliITSQADataMakerSim->Add2HitsList(fHistSSDModule,\r
191                                       fHitsOffset + fSSDhHits);\r
192   fSSDhHits += 1;\r
193   TH1F *fHistSSDGlobalX = new TH1F("fHistSSDHitsGlobalX",\r
194                                    ";x [cm];Entries",\r
195                                    1000,-50.,50.);\r
196   fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalX,\r
197                                       fHitsOffset + fSSDhHits);\r
198   fSSDhHits += 1;\r
199   TH1F *fHistSSDGlobalY = new TH1F("fHistSSDHitsGlobalY",\r
200                                    ";y [cm];Entries",\r
201                                    1000,-50.,50.);\r
202   fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalY,\r
203                                       fHitsOffset + fSSDhHits);\r
204   fSSDhHits += 1;\r
205   TH1F *fHistSSDGlobalZ = new TH1F("fHistSSDHitsGlobalZ",\r
206                                    ";z [cm];Entries",\r
207                                    1000,-60.,60.);\r
208   fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalZ,\r
209                                       fHitsOffset + fSSDhHits);\r
210   fSSDhHits += 1;\r
211   TH1F *fHistSSDLocalX = new TH1F("fHistSSDHitsLocalX",\r
212                                   ";x [cm];Entries",\r
213                                   1000,-4.,4.);\r
214   fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalX,\r
215                                       fHitsOffset + fSSDhHits);\r
216   fSSDhHits += 1;\r
217   TH1F *fHistSSDLocalY = new TH1F("fHistSSDHitsLocalY",\r
218                                   ";y [cm];Entries",\r
219                                   1000,-0.1,0.1);\r
220   fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalY,\r
221                                       fHitsOffset + fSSDhHits);\r
222   fSSDhHits += 1;\r
223   TH1F *fHistSSDLocalZ = new TH1F("fHistSSDHitsLocalZ",\r
224                                   ";z [cm];Entries",\r
225                                   1000,-4.,4.);\r
226   fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalZ,\r
227                                       fHitsOffset + fSSDhHits);\r
228   fSSDhHits += 1;\r
229   TH1F *fHistSSDIonization = new TH1F("fHistSSDHitsIonization",\r
230                                       ";log(dE/dx) [KeV];N_{Hits}",\r
231                                       100,-7,-2);\r
232   fAliITSQADataMakerSim->Add2HitsList(fHistSSDIonization,\r
233                                       fHitsOffset + fSSDhHits);\r
234   fSSDhHits += 1;\r
235   TH2F *fHistSSDGlobalXY = new TH2F("fHistSSDHitsGlobalXY",\r
236                                     ";x [cm];y [cm]",\r
237                                     1000,-50.,50.,\r
238                                     1000,-50.,50.);\r
239   fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalXY,\r
240                                       fHitsOffset + fSSDhHits);\r
241   fSSDhHits += 1;\r
242  \r
243   AliDebug(1,Form("%d SSD Hits histograms booked\n",fSSDhHits));\r
244 }\r
245 \r
246 \r
247 //____________________________________________________________________________\r
248 void AliITSQASSDDataMakerSim::MakeHits(TTree *hits) { \r
249   // Fill QA for HITS - SSD -\r
250   AliITS *fITS  = (AliITS*)gAlice->GetModule("ITS");\r
251   fITS->SetTreeAddress();\r
252   Int_t nmodules;\r
253   fITS->InitModules(-1,nmodules);\r
254   fITS->FillModules(hits,0);\r
255   for(Int_t iModule = 500; iModule < 2198; iModule++) {\r
256     AliITSmodule *module = fITS->GetModule(iModule);\r
257     TObjArray *arrHits = module->GetHits();\r
258     Int_t nhits = arrHits->GetEntriesFast();\r
259     if(nhits != 0)\r
260       AliDebug(1,Form("Module: %d - Hits: %d",iModule,nhits));\r
261     for (Int_t iHit = 0; iHit < nhits; iHit++) {\r
262       AliITShit *hit = (AliITShit*) arrHits->At(iHit);\r
263       \r
264       fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 0)->Fill(iModule);\r
265       fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 1)->Fill(hit->GetXG());\r
266       fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 2)->Fill(hit->GetYG());\r
267       fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 3)->Fill(hit->GetZG());\r
268       fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 4)->Fill(hit->GetXL());\r
269       fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 5)->Fill(hit->GetYL());\r
270       fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 6)->Fill(hit->GetZL());\r
271       if(hit->GetIonization())\r
272         fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 7)->Fill(TMath::Log10(hit->GetIonization()));\r
273       fAliITSQADataMakerSim->GetHitsData(fHitsOffset + 8)->Fill(hit->GetXG(),hit->GetYG());\r
274     }//hit loop\r
275   }//module loop  \r
276 }\r