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