]>
Commit | Line | Data |
---|---|---|
075a0e70 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | // --- Standard library --- | |
16 | #include <Riostream.h> | |
17 | // --- ROOT system --- | |
18 | #include <TClonesArray.h> | |
19 | #include <TFile.h> | |
20 | #include <TH1F.h> | |
21 | #include <TH2F.h> | |
22 | #include <TBranch.h> | |
23 | #include <TTree.h> | |
24 | // --- AliRoot header files --- | |
25 | #include "AliLog.h" | |
26 | #include "AliQAChecker.h" | |
27 | #include "AliZDCQADataMaker.h" | |
28 | #include "AliZDCHit.h" | |
29 | #include "AliZDCDigit.h" | |
30 | #include "AliZDCRawStream.h" | |
31 | #include "AliESDZDC.h" | |
32 | #include "AliESDEvent.h" | |
33 | ||
34 | ClassImp(AliZDCQADataMaker) | |
35 | ||
36 | //____________________________________________________________________________ | |
37 | AliZDCQADataMaker::AliZDCQADataMaker() : | |
fab67f97 | 38 | AliQADataMaker(AliQA::GetDetName(AliQA::kZDC), "ZDC Quality Assurance Data Maker"), |
39 | fHits("AliZDCHit", 1000), | |
40 | fDigits("AliZDCDigit", 1000) | |
41 | ||
075a0e70 | 42 | { |
43 | // ctor | |
44 | } | |
45 | ||
46 | //____________________________________________________________________________ | |
47 | AliZDCQADataMaker::AliZDCQADataMaker(const AliZDCQADataMaker& qadm) : | |
fab67f97 | 48 | AliQADataMaker(), |
49 | fHits("AliZDCHit", 1000), | |
50 | fDigits("AliZDCDigit", 1000) | |
51 | ||
075a0e70 | 52 | { |
53 | //copy ctor | |
54 | SetName((const char*)qadm.GetName()); | |
55 | SetTitle((const char*)qadm.GetTitle()); | |
56 | } | |
57 | ||
58 | //__________________________________________________________________ | |
59 | AliZDCQADataMaker& AliZDCQADataMaker::operator = (const AliZDCQADataMaker& qadm ) | |
60 | { | |
61 | // Equal operator. | |
62 | this->~AliZDCQADataMaker(); | |
63 | new(this) AliZDCQADataMaker(qadm); | |
64 | return *this; | |
65 | } | |
66 | ||
67 | //____________________________________________________________________________ | |
68 | void AliZDCQADataMaker::InitHits() | |
69 | { | |
70 | // create Hits histograms in Hits subdir | |
71 | // | |
72 | TH2F * hZNCh = new TH2F("hZNCh", "Hits centroid in ZNC", 100, -5.,5.,100,-5.,5.); | |
73 | TH2F * hZNAh = new TH2F("hZNAh", "Hits centroid in ZNA", 100, -5.,5.,100,-5.,5.); | |
74 | TH2F * hZPCh = new TH2F("hZPCh", "Hits centroid in ZPC", 100,-12.,12.,100,-12.,12.) | |
75 | TH2F * hZPAh = new TH2F("hZPAh", "Hits centroid in ZPA", 100,-12.,12.,100,-12.,12.) | |
76 | Add2HitsList(hZNCh, 0); | |
77 | Add2HitsList(hZPCh, 1); | |
78 | Add2HitsList(hZNAh, 2); | |
79 | Add2HitsList(hZPAh, 3); | |
80 | } | |
81 | ||
82 | //____________________________________________________________________________ | |
83 | void AliZDCQADataMaker::InitDigits() | |
84 | { | |
85 | // create Digits histograms in Digits subdir | |
86 | // | |
87 | TH1F * hDigZNCTot = new TH1F("hDigZNCTot", "Digit signal in ZNC", 100, 0., 6000.); | |
88 | TH1F * hDigZNATot = new TH1F("hDigZNATot", "Digit signal in ZNA", 100, 0., 6000.); | |
89 | TH1F * hDigZPCTot = new TH1F("hDigZPCTot", "Digit signal in ZPC", 100, 0., 10000.); | |
90 | TH1F * hDigZPATot = new TH1F("hDigZPATot", "Digit signal in ZPA", 100, 0., 10000.); | |
91 | Add2DigitsList(hDigZNCTot, 0); | |
92 | Add2DigitsList(hDigZPCTot, 1); | |
93 | Add2DigitsList(hDigZNATot, 2); | |
94 | Add2DigitsList(hDigZPATot, 3); | |
95 | // | |
96 | TH1F * hDigSumQZNC = new TH1F("hDigSumQZNC", "Signal in 4 ZNC PMQ[i]",100, 0., 4000.); | |
97 | TH1F * hDigSumQZPC = new TH1F("hDigSumQZPC", "Signal in 4 ZPC PMQ[i]",100, 0., 4000.); | |
98 | TH1F * hDigSumQZNA = new TH1F("hDigSumQZNA", "Signal in 4 ZNA PMQ[i]",100, 0., 4000.); | |
99 | TH1F * hDigSumQZPA = new TH1F("hDigSumQZPA", "Signal in 4 ZPA PMQ[i]",100, 0., 4000.); | |
100 | Add2DigitsList(hDigSumQZNC, 4); | |
101 | Add2DigitsList(hDigSumQZPC, 5); | |
102 | Add2DigitsList(hDigSumQZNA, 6); | |
103 | Add2DigitsList(hDigSumQZPA, 7); | |
104 | // | |
105 | TH1F * hDigPMCZNC = new TH1F("hDigPMCZNC", "Signal in 4 ZNC PMQ[i]",100, 0., 4000.); | |
106 | TH1F * hDigPMCZPC = new TH1F("hDigPMCZPC", "Signal in 4 ZPC PMQ[i]",100, 0., 4000.); | |
107 | TH1F * hDigPMCZNA = new TH1F("hDigPMCZNA", "Signal in 4 ZNA PMQ[i]",100, 0., 4000.); | |
108 | TH1F * hDigPMCZPA = new TH1F("hDigPMCZPA", "Signal in 4 ZPA PMQ[i]",100, 0., 4000.); | |
109 | Add2DigitsList(hDigPMCZNC, 8); | |
110 | Add2DigitsList(hDigPMCZPC, 9); | |
111 | Add2DigitsList(hDigPMCZNA, 10); | |
112 | Add2DigitsList(hDigPMCZPA, 11); | |
113 | // | |
114 | // ------------------- LOW GAIN CHAIN --------------------------- | |
115 | TH1F * hDigZNCTotlg = new TH1F("hDigZNCTotlg", "Digit lg signal in ZNC", 100, 0., 6000.); | |
116 | TH1F * hDigZNATotlg = new TH1F("hDigZNATotlg", "Digit lg signal in ZNA", 100, 0., 6000.); | |
117 | TH1F * hDigZPCTotlg = new TH1F("hDigZPCTotlg", "Digit lg signal in ZPC", 100, 0., 10000.); | |
118 | TH1F * hDigZPATotlg = new TH1F("hDigZPATotlg", "Digit lg signal in ZPA", 100, 0., 10000.); | |
119 | Add2DigitsList(hDigZNCTotlg, 12); | |
120 | Add2DigitsList(hDigZPCTotlg, 13); | |
121 | Add2DigitsList(hDigZNATotlg, 14); | |
122 | Add2DigitsList(hDigZPATotlg, 15); | |
123 | // | |
124 | TH1F * hDigSumQZNClg = new TH1F("hDigSumQZNClg", "Signal in 4 ZNC PMQlg[i]",100, 0., 4000.); | |
125 | TH1F * hDigSumQZPClg = new TH1F("hDigSumQZPClg", "Signal in 4 ZPC PMQlg[i]",100, 0., 4000.); | |
126 | TH1F * hDigSumQZNAlg = new TH1F("hDigSumQZNAlg", "Signal in 4 ZNA PMQlg[i]",100, 0., 4000.); | |
127 | TH1F * hDigSumQZPAlg = new TH1F("hDigSumQZPAlg", "Signal in 4 ZPA PMQlg[i]",100, 0., 4000.); | |
128 | Add2DigitsList(hDigSumQZNClg, 16); | |
129 | Add2DigitsList(hDigSumQZPClg, 17); | |
130 | Add2DigitsList(hDigSumQZNAlg, 18); | |
131 | Add2DigitsList(hDigSumQZPAlg, 19); | |
132 | // | |
133 | TH1F * hDigPMCZNClg = new TH1F("hDigPMCZNClg", "Signal in 4 ZNC PMQlg[i]",100, 0., 4000.); | |
134 | TH1F * hDigPMCZPClg = new TH1F("hDigPMCZPClg", "Signal in 4 ZPC PMQlg[i]",100, 0., 4000.); | |
135 | TH1F * hDigPMCZNAlg = new TH1F("hDigPMCZNAlg", "Signal in 4 ZNA PMQlg[i]",100, 0., 4000.); | |
136 | TH1F * hDigPMCZPAlg = new TH1F("hDigPMCZPAlg", "Signal in 4 ZPA PMQlg[i]",100, 0., 4000.); | |
137 | Add2DigitsList(hDigPMCZNClg, 20); | |
138 | Add2DigitsList(hDigPMCZPClg, 21); | |
139 | Add2DigitsList(hDigPMCZNAlg, 22); | |
140 | Add2DigitsList(hDigPMCZPAlg, 23); | |
141 | } | |
142 | ||
143 | ||
144 | //____________________________________________________________________________ | |
145 | ||
3d26d59b | 146 | void AliZDCQADataMakerRec::InitRaws() |
075a0e70 | 147 | { |
148 | // create Digits histograms in Digits subdir | |
149 | // | |
150 | TH1F * hRawZNCTot = new TH1F("hRawZNCTot", "Raw signal in ZNC", 100, 0., 6000.); | |
151 | TH1F * hRawZNATot = new TH1F("hRawZNATot", "Raw signal in ZNA", 100, 0., 6000.); | |
152 | TH1F * hRawZPCTot = new TH1F("hRawZPCTot", "Raw signal in ZPC", 100, 0., 10000.); | |
153 | TH1F * hRawZPATot = new TH1F("hRawZPATot", "Raw signal in ZPA", 100, 0., 10000.); | |
154 | Add2RawsList(hRawZNCTot, 0); | |
155 | Add2RawsList(hRawZPCTot, 1); | |
156 | Add2RawsList(hRawZNATot, 2); | |
157 | Add2RawsList(hRawZPATot, 3); | |
158 | // | |
3d26d59b | 159 | TH1F * hRawSumQZNC = new TH1F("hRawSumQZNC", "Raw summed 4 ZNC quadrants",100, 0., 4000.); |
160 | TH1F * hRawSumQZPC = new TH1F("hRawSumQZPC", "Raw summed 4 ZPC quadrants",100, 0., 4000.); | |
161 | TH1F * hRawSumQZNA = new TH1F("hRawSumQZNA", "Raw summed 4 ZNA quadrants",100, 0., 4000.); | |
162 | TH1F * hRawSumQZPA = new TH1F("hRawSumQZPA", "Raw summed 4 ZPA quadrants",100, 0., 4000.); | |
075a0e70 | 163 | Add2RawsList(hRawSumQZNC, 4); |
164 | Add2RawsList(hRawSumQZPC, 5); | |
165 | Add2RawsList(hRawSumQZNA, 6); | |
166 | Add2RawsList(hRawSumQZPA, 7); | |
167 | // | |
3d26d59b | 168 | TH1F * hRawPMCZNC = new TH1F("hRawPMCZNC", "Raw common ZNC PMT",100, 0., 4000.); |
169 | TH1F * hRawPMCZPC = new TH1F("hRawPMCZPC", "Raw common ZPC PMT",100, 0., 4000.); | |
170 | TH1F * hRawPMCZNA = new TH1F("hRawPMCZNA", "Raw common ZNA PMT",100, 0., 4000.); | |
171 | TH1F * hRawPMCZPA = new TH1F("hRawPMCZPA", "Raw common ZPA PMT",100, 0., 4000.); | |
075a0e70 | 172 | Add2RawsList(hRawPMCZNC, 8); |
173 | Add2RawsList(hRawPMCZPC, 9); | |
174 | Add2RawsList(hRawPMCZNA, 10); | |
175 | Add2RawsList(hRawPMCZPA, 11); | |
176 | // | |
177 | // ------------------- LOW GAIN CHAIN --------------------------- | |
178 | TH1F * hRawZNCTotlg = new TH1F("hRawZNCTotlg", "Rawit lg signal in ZNC", 100, 0., 6000.); | |
179 | TH1F * hRawZNATotlg = new TH1F("hRawZNATotlg", "Rawit lg signal in ZNA", 100, 0., 6000.); | |
180 | TH1F * hRawZPCTotlg = new TH1F("hRawZPCTotlg", "Rawit lg signal in ZPC", 100, 0., 10000.); | |
181 | TH1F * hRawZPATotlg = new TH1F("hRawZPATotlg", "Rawit lg signal in ZPA", 100, 0., 10000.); | |
182 | Add2RawsList(hRawZNCTotlg, 12); | |
183 | Add2RawsList(hRawZPCTotlg, 13); | |
184 | Add2RawsList(hRawZNATotlg, 14); | |
185 | Add2RawsList(hRawZPATotlg, 15); | |
186 | // | |
3d26d59b | 187 | TH1F * hRawSumQZNClg = new TH1F("hRawSumQZNClg", "Raw summed 4 lg ZNC quadrants",100, 0., 4000.); |
188 | TH1F * hRawSumQZPClg = new TH1F("hRawSumQZPClg", "Raw summed 4 lg ZPC quadrants",100, 0., 4000.); | |
189 | TH1F * hRawSumQZNAlg = new TH1F("hRawSumQZNAlg", "Raw summed 4 lg ZNA quadrants",100, 0., 4000.); | |
190 | TH1F * hRawSumQZPAlg = new TH1F("hRawSumQZPAlg", "Raw summed 4 lg ZPA quadrants",100, 0., 4000.); | |
075a0e70 | 191 | Add2RawsList(hRawSumQZNClg, 16); |
192 | Add2RawsList(hRawSumQZPClg, 17); | |
193 | Add2RawsList(hRawSumQZNAlg, 18); | |
194 | Add2RawsList(hRawSumQZPAlg, 19); | |
195 | // | |
3d26d59b | 196 | TH1F * hRawPMCZNClg = new TH1F("hRawPMCZNClg", "Raw common lg ZNC PMT",100, 0., 4000.); |
197 | TH1F * hRawPMCZPClg = new TH1F("hRawPMCZPClg", "Raw common lg ZPC PMT",100, 0., 4000.); | |
198 | TH1F * hRawPMCZNAlg = new TH1F("hRawPMCZNAlg", "Raw common lg ZNA PMT",100, 0., 4000.); | |
199 | TH1F * hRawPMCZPAlg = new TH1F("hRawPMCZPAlg", "Raw common lg ZPA PMT",100, 0., 4000.); | |
075a0e70 | 200 | Add2RawsList(hRawPMCZNClg, 20); |
201 | Add2RawsList(hRawPMCZPClg, 21); | |
202 | Add2RawsList(hRawPMCZNAlg, 22); | |
203 | Add2RawsList(hRawPMCZPAlg, 23); | |
204 | } | |
205 | ||
206 | //____________________________________________________________________________ | |
3d26d59b | 207 | void AliZDCQADataMakerRec::InitESDs() |
075a0e70 | 208 | { |
209 | //Booking ESDs histograms | |
210 | // | |
211 | TH2F * hZNC = new TH2F("hZNC", "Centroid in ZNC", 100, -5.,5.,100,-5.,5.); | |
212 | TH2F * hZNA = new TH2F("hZNA", "Centroid in ZNA", 100, -5.,5.,100,-5.,5.); | |
213 | Add2DigitsList(hZNC, 0); | |
214 | Add2DigitsList(hZNA, 1); | |
215 | // | |
216 | TH1F * hESDZNCTot = new TH1F("hESDZNCTot", "ESD signal in ZNC", 100, 0., 6000.); | |
217 | TH1F * hESDZPCTot = new TH1F("hESDZPCTot", "ESD signal in ZPC", 100, 0., 10000.); | |
218 | TH1F * hESDZNATot = new TH1F("hESDZNATot", "ESD signal in ZNA", 100, 0., 6000.); | |
219 | TH1F * hESDZPATot = new TH1F("hESDZPATot", "ESD signal in ZPA", 100, 0., 10000.); | |
220 | Add2ESDsList(hESDZNCTot, 2); | |
221 | Add2ESDsList(hESDZPCTot, 3); | |
222 | Add2ESDsList(hESDZNATot, 4); | |
223 | Add2ESDsList(hESDZPATot, 5); | |
224 | // | |
3d26d59b | 225 | TH1F * hESDSumQZNC = new TH1F("hESDSumQZNC", "Sum of 4 ZNC sectors",100, 0., 4000.); |
226 | TH1F * hESDSumQZPC = new TH1F("hESDSumQZPC", "Sum of 4 ZPC sectors",100, 0., 4000.); | |
227 | TH1F * hESDSumQZNA = new TH1F("hESDSumQZNA", "Sum of 4 ZNA sectors",100, 0., 4000.); | |
228 | TH1F * hESDSumQZPA = new TH1F("hESDSumQZPA", "Sum of 4 ZPA sectors",100, 0., 4000.); | |
075a0e70 | 229 | Add2ESDsList(hESDSumQZNC, 6); |
230 | Add2ESDsList(hESDSumQZPC, 7); | |
231 | Add2ESDsList(hESDSumQZNA, 8); | |
232 | Add2ESDsList(hESDSumQZPA, 9); | |
233 | // | |
3d26d59b | 234 | TH1F * hESDPMCZNC = new TH1F("hESDPMCZNC", "Signal in common ZNC PMT",100, 0., 4000.); |
235 | TH1F * hESDPMCZPC = new TH1F("hESDPMCZPC", "Signal in common ZPC PMT",100, 0., 4000.); | |
236 | TH1F * hESDPMCZNA = new TH1F("hESDPMCZNA", "Signal in common ZNA PMT",100, 0., 4000.); | |
237 | TH1F * hESDPMCZPA = new TH1F("hESDPMCZPA", "Signal in common ZPA PMT",100, 0., 4000.); | |
075a0e70 | 238 | Add2ESDsList(hESDPMCZNC, 10); |
239 | Add2ESDsList(hESDPMCZPC, 11); | |
240 | Add2ESDsList(hESDPMCZNA, 12); | |
241 | Add2ESDsList(hESDPMCZPA, 13); | |
242 | // | |
243 | // ------------------- LOW GAIN CHAIN --------------------------- | |
3d26d59b | 244 | TH1F * hESDZNCTotlg = new TH1F("hESDZNCTotlg", "ESD lg signal in ZNC", 100, 0., 6000.); |
245 | TH1F * hESDZNATotlg = new TH1F("hESDZNATotlg", "ESD lg signal in ZNA", 100, 0., 6000.); | |
246 | TH1F * hESDZPCTotlg = new TH1F("hESDZPCTotlg", "ESD lg signal in ZPC", 100, 0., 10000.); | |
247 | TH1F * hESDZPATotlg = new TH1F("hESDZPATotlg", "ESD lg signal in ZPA", 100, 0., 10000.); | |
075a0e70 | 248 | Add2ESDsList(hESDZNCTotlg, 14); |
249 | Add2ESDsList(hESDZPCTotlg, 15); | |
250 | Add2ESDsList(hESDZNATotlg, 16); | |
251 | Add2ESDsList(hESDZPATotlg, 17); | |
252 | // | |
3d26d59b | 253 | TH1F * hESDSumQZNClg = new TH1F("hESDSumQZNClg", "Sum of 4 lg ZNC sectors",100, 0., 4000.); |
254 | TH1F * hESDSumQZPClg = new TH1F("hESDSumQZPClg", "Sum of 4 lg ZPC sectors",100, 0., 4000.); | |
255 | TH1F * hESDSumQZNAlg = new TH1F("hESDSumQZNAlg", "Sum of 4 lg ZNA sectors",100, 0., 4000.); | |
256 | TH1F * hESDSumQZPAlg = new TH1F("hESDSumQZPAlg", "Sum of 4 lg ZPA sectors",100, 0., 4000.); | |
075a0e70 | 257 | Add2ESDsList(hESDSumQZNClg, 18); |
258 | Add2ESDsList(hESDSumQZPClg, 19); | |
259 | Add2ESDsList(hESDSumQZNAlg, 20); | |
260 | Add2ESDsList(hESDSumQZPAlg, 21); | |
261 | // | |
3d26d59b | 262 | TH1F * hESDPMCZNClg = new TH1F("hESDPMCZNClg", "Signal in common ZNC lg PMT",100, 0., 4000.); |
263 | TH1F * hESDPMCZPClg = new TH1F("hESDPMCZPClg", "Signal in common ZPC lg PMT",100, 0., 4000.); | |
264 | TH1F * hESDPMCZNAlg = new TH1F("hESDPMCZNAlg", "Signal in common ZNA lg PMT",100, 0., 4000.); | |
265 | TH1F * hESDPMCZPAlg = new TH1F("hESDPMCZPAlg", "Signal in common ZPA lg PMT",100, 0., 4000.); | |
075a0e70 | 266 | Add2ESDsList(hESDPMCZNClg, 22); |
267 | Add2ESDsList(hESDPMCZPClg, 23); | |
268 | Add2ESDsList(hESDPMCZNAlg, 24); | |
269 | Add2ESDsList(hESDPMCZPAlg, 25); | |
270 | } | |
3d26d59b | 271 | |
c3d081f5 | 272 | |
075a0e70 | 273 | //____________________________________________________________________________ |
fab67f97 | 274 | void AliZDCQADataMakerSim::MakeHits(TClonesArray */*data*/) |
075a0e70 | 275 | { |
276 | //filling QA histos for Hits | |
277 | // | |
fab67f97 | 278 | TIter next(&fHits); |
279 | AliZDCHit * hit; | |
280 | while((hit = dynamic_cast<AliZDCHit *>(next()))){ | |
281 | if(hit->GetVolume(0)==1) GetHitsData(0)->Fill(hit->GetXImpact(),hit->GetYImpact()); | |
282 | else if(hit->GetVolume(0)==2) GetHitsData(1)->Fill(hit->GetXImpact(), hit->GetYImpact()); | |
283 | else if(hit->GetVolume(0)==4) GetHitsData(2)->Fill(hit->GetXImpact(), hit->GetYImpact()); | |
284 | else if(hit->GetVolume(0)==5) GetHitsData(3)->Fill(hit->GetXImpact(), hit->GetYImpact()); | |
285 | } | |
075a0e70 | 286 | |
287 | } | |
c3d081f5 | 288 | |
075a0e70 | 289 | //___________________________________________________________________________ |
290 | void AliZDCQADataMakerSim::MakeHits(TTree * hitTree) | |
291 | { | |
292 | // make QA data from Hit Tree | |
293 | // | |
294 | if(!hitTree){ | |
295 | AliError("Hit Tree not found!"); | |
296 | return; | |
297 | } | |
298 | // | |
075a0e70 | 299 | TBranch * branch = hitTree->GetBranch("ZDC") ; |
300 | if(!branch){ | |
301 | AliError("ZDC branch in Hit Tree not found!"); | |
302 | return; | |
303 | } | |
3d26d59b | 304 | else{ |
3d26d59b | 305 | Int_t ntracks = (Int_t) hitTree->GetEntries(); |
4ca99fe8 | 306 | //printf("\n\t *** no.track %d\n",ntracks); |
3d26d59b | 307 | if (ntracks<=0) return; |
308 | // | |
309 | for(Int_t itrack=0; itrack<ntracks; itrack++){ | |
c3d081f5 | 310 | fHits = new TClonesArray("AliZDCHit", 1000); |
4ca99fe8 | 311 | // |
c3d081f5 | 312 | branch->SetAddress(&fHits) ; |
3d26d59b | 313 | branch->GetEntry(itrack); |
314 | // | |
4ca99fe8 | 315 | //printf("\t *** track %d",itrack); |
316 | //hits->Print(""); | |
317 | //printf("\n"); | |
318 | // | |
c3d081f5 | 319 | MakeHits(fHits); |
320 | fHits->Clear(); | |
3d26d59b | 321 | } |
322 | } | |
075a0e70 | 323 | } |
324 | ||
325 | //____________________________________________________________________________ | |
fab67f97 | 326 | void AliZDCQADataMakerSim::MakeDigits(TClonesArray * /*digits*/) |
075a0e70 | 327 | { |
328 | // makes data from Digits | |
329 | // | |
330 | TIter next(digits) ; | |
331 | AliZDCDigit * digit ; | |
332 | // | |
333 | Float_t ADCSum_ZNC=0., ADCSum_ZNA=0., ADCSum_ZPC=0., ADCSum_ZPA=0.; | |
334 | Float_t ADCSumQ_ZNC=0., ADCSumQ_ZNA=0., ADCSumQ_ZPC=0., ADCSumQ_ZPA=0.; | |
335 | Float_t ADCSum_ZNC_lg=0., ADCSum_ZNA_lg=0., ADCSum_ZPC_lg=0., ADCSum_ZPA_lg=0.; | |
336 | Float_t ADCSumQ_ZNC_lg=0., ADCSumQ_ZNA_lg=0., ADCSumQ_ZPC_lg=0., ADCSumQ_ZPA_lg=0.; | |
337 | // | |
c3d081f5 | 338 | while((digit = dynamic_cast<AliZDCDigit *>(next()))){ |
339 | if(digit->GetSector(0)==1){ | |
340 | ADCSum_ZNC += digit->GetADCValue(0); | |
341 | ADCSum_ZNC_lg += digit->GetADCValue(1); | |
342 | // | |
343 | if(digit->GetSector(1)!=0){ | |
344 | ADCSumQ_ZNC += digit->GetADCValue(0); | |
345 | ADCSumQ_ZNC_lg+= digit->GetADCValue(1); | |
346 | } | |
347 | else{ | |
348 | GetDigitsData(8)->Fill(digit->GetADCValue(0)); | |
349 | GetDigitsData(20)->Fill(digit->GetADCValue(1)); | |
350 | } | |
351 | } | |
352 | else if(digit->GetSector(0)==2){ | |
353 | ADCSum_ZPC += digit->GetADCValue(0); | |
354 | ADCSum_ZPC_lg += digit->GetADCValue(1); | |
355 | // | |
356 | if(digit->GetSector(1)!=0){ | |
357 | ADCSumQ_ZPC += digit->GetADCValue(0); | |
358 | ADCSumQ_ZPC_lg+= digit->GetADCValue(1); | |
359 | } | |
360 | else{ | |
361 | GetDigitsData(9)->Fill(digit->GetADCValue(0)); | |
362 | GetDigitsData(21)->Fill(digit->GetADCValue(1)); | |
363 | } | |
364 | } | |
365 | else if(digit->GetSector(0)==4){ | |
366 | ADCSum_ZNA += digit->GetADCValue(0); | |
367 | ADCSum_ZNA_lg += digit->GetADCValue(1); | |
368 | // | |
369 | if(digit->GetSector(1)!=0){ | |
370 | ADCSumQ_ZNA += digit->GetADCValue(0); | |
371 | ADCSumQ_ZNA_lg+= digit->GetADCValue(1); | |
372 | } | |
373 | else{ | |
374 | GetDigitsData(10)->Fill(digit->GetADCValue(0)); | |
375 | GetDigitsData(22)->Fill(digit->GetADCValue(1)); | |
376 | } | |
377 | } | |
378 | else if(digit->GetSector(0)==5){ | |
379 | ADCSum_ZPA += digit->GetADCValue(0); | |
380 | ADCSum_ZPA_lg += digit->GetADCValue(1); | |
381 | // | |
382 | if(digit->GetSector(1)!=0){ | |
383 | ADCSumQ_ZPA += digit->GetADCValue(0); | |
384 | ADCSumQ_ZPA_lg+= digit->GetADCValue(1); | |
385 | } | |
386 | else{ | |
387 | GetDigitsData(11)->Fill(digit->GetADCValue(0)); | |
388 | GetDigitsData(23)->Fill(digit->GetADCValue(1)); | |
389 | } | |
390 | } | |
391 | } | |
075a0e70 | 392 | // |
393 | GetDigitsData(0)->Fill(ADCSum_ZNC); | |
394 | GetDigitsData(1)->Fill(ADCSum_ZPC); | |
395 | GetDigitsData(2)->Fill(ADCSum_ZNA); | |
396 | GetDigitsData(3)->Fill(ADCSum_ZPA); | |
397 | // | |
398 | GetDigitsData(4)->Fill(ADCSumQ_ZNC); | |
399 | GetDigitsData(5)->Fill(ADCSumQ_ZPC); | |
400 | GetDigitsData(6)->Fill(ADCSumQ_ZNA); | |
401 | GetDigitsData(7)->Fill(ADCSumQ_ZPA); | |
402 | // | |
403 | GetDigitsData(12)->Fill(ADCSum_ZNC_lg); | |
404 | GetDigitsData(13)->Fill(ADCSum_ZPC_lg); | |
405 | GetDigitsData(14)->Fill(ADCSum_ZNA_lg); | |
406 | GetDigitsData(15)->Fill(ADCSum_ZPA_lg); | |
407 | // | |
408 | GetDigitsData(16)->Fill(ADCSumQ_ZNC_lg); | |
409 | GetDigitsData(17)->Fill(ADCSumQ_ZPC_lg); | |
410 | GetDigitsData(18)->Fill(ADCSumQ_ZNA_lg); | |
411 | GetDigitsData(19)->Fill(ADCSumQ_ZPA_lg); | |
412 | ||
413 | } | |
414 | //___________________________________________________________________________ | |
415 | void AliZDCQADataMakerSim::MakeDigits(TTree *digitTree ) | |
416 | { | |
417 | // makes data from Digit Tree | |
075a0e70 | 418 | TBranch * branch = digitTree->GetBranch("ZDC"); |
419 | if(!branch){ | |
420 | AliError("ZDC branch in Digit Tree not found"); | |
421 | return; | |
422 | } | |
c3d081f5 | 423 | branch->SetAddress(&fDigits); |
424 | branch->GetEntry(0); | |
425 | MakeDigits(fDigits); | |
426 | fDigits->Clear(); | |
075a0e70 | 427 | } |
428 | ||
429 | //____________________________________________________________________________ | |
430 | ||
431 | void AliZDCQADataMakerRec::MakeRaws(AliRawReader *rawReader) | |
432 | { | |
433 | // Filling Raws QA histos | |
434 | // | |
435 | Float_t Sum_ZNC=0., Sum_ZNA=0., Sum_ZPC=0., Sum_ZPA=0.; | |
436 | Float_t SumQ_ZNC=0., SumQ_ZNA=0., SumQ_ZPC=0., SumQ_ZPA=0.; | |
437 | Float_t Sum_ZNC_lg=0., Sum_ZNA_lg=0., Sum_ZPC_lg=0., Sum_ZPA_lg=0.; | |
438 | Float_t SumQ_ZNC_lg=0., SumQ_ZNA_lg=0., SumQ_ZPC_lg=0., SumQ_ZPA_lg=0.; | |
439 | // | |
440 | AliZDCRawStream stream(rawReader); | |
441 | while(stream.Next()){ | |
442 | if(stream.IsADCDataWord() && | |
443 | (stream.GetADCModule()==0 || stream.GetADCModule()==1)){ | |
444 | if(stream.GetSector(0)==1){ | |
445 | if(stream.GetADCGain()==0){ | |
446 | Sum_ZNC += stream.GetADCValue(); | |
447 | if(stream.GetSector(1)!=0) SumQ_ZNC += stream.GetADCValue(); | |
448 | else GetRawsData(8)->Fill(stream.GetADCValue()); | |
449 | } | |
450 | else{ | |
451 | Sum_ZNC_lg += stream.GetADCValue(); | |
452 | if(stream.GetSector(1)!=0) SumQ_ZNC_lg += stream.GetADCValue(); | |
453 | else GetRawsData(20)->Fill(stream.GetADCValue()); | |
454 | } | |
455 | } | |
456 | else if(stream.GetSector(0)==2){ | |
457 | if(stream.GetADCGain()==0){ | |
458 | Sum_ZPC += stream.GetADCValue(); | |
459 | if(stream.GetSector(1)!=0) SumQ_ZPC += stream.GetADCValue(); | |
460 | else GetRawsData(9)->Fill(stream.GetADCValue()); | |
461 | } | |
462 | else{ | |
463 | Sum_ZPC_lg += stream.GetADCValue(); | |
464 | if(stream.GetSector(1)!=0) SumQ_ZPC_lg += stream.GetADCValue(); | |
465 | else GetRawsData(21)->Fill(stream.GetADCValue()); | |
466 | } | |
467 | } | |
468 | else if(stream.GetSector(0)==4){ | |
469 | if(stream.GetADCGain()==0){ | |
470 | Sum_ZNA += stream.GetADCValue(); | |
471 | if(stream.GetSector(1)!=0) SumQ_ZNA += stream.GetADCValue(); | |
472 | else GetRawsData(10)->Fill(stream.GetADCValue()); | |
473 | } | |
474 | else{ | |
475 | Sum_ZNA_lg += stream.GetADCValue(); | |
476 | if(stream.GetSector(1)!=0) SumQ_ZNA_lg += stream.GetADCValue(); | |
477 | else GetRawsData(22)->Fill(stream.GetADCValue()); | |
478 | } | |
479 | } | |
480 | else if(stream.GetSector(0)==5){ | |
481 | if(stream.GetADCGain()==0){ | |
482 | Sum_ZPA += stream.GetADCValue(); | |
483 | if(stream.GetSector(1)!=0) SumQ_ZPA += stream.GetADCValue(); | |
484 | else GetRawsData(11)->Fill(stream.GetADCValue()); | |
485 | } | |
486 | else{ | |
487 | Sum_ZPA_lg += stream.GetADCValue(); | |
488 | if(stream.GetSector(1)!=0) SumQ_ZPA_lg += stream.GetADCValue(); | |
489 | else GetRawsData(23)->Fill(stream.GetADCValue()); | |
490 | } | |
491 | } | |
492 | } | |
493 | } | |
494 | // | |
495 | GetRawsData(0)->Fill(Sum_ZNC); | |
496 | GetRawsData(1)->Fill(Sum_ZPC); | |
497 | GetRawsData(2)->Fill(Sum_ZNA); | |
498 | GetRawsData(3)->Fill(Sum_ZPA); | |
499 | // | |
500 | GetRawsData(4)->Fill(SumQ_ZNC); | |
501 | GetRawsData(5)->Fill(SumQ_ZPC); | |
502 | GetRawsData(6)->Fill(SumQ_ZNA); | |
503 | GetRawsData(7)->Fill(SumQ_ZPA); | |
504 | // | |
505 | GetRawsData(12)->Fill(Sum_ZNC_lg); | |
506 | GetRawsData(13)->Fill(Sum_ZPC_lg); | |
507 | GetRawsData(14)->Fill(Sum_ZNA_lg); | |
508 | GetRawsData(15)->Fill(Sum_ZPA_lg); | |
509 | // | |
510 | GetRawsData(16)->Fill(SumQ_ZNC_lg); | |
511 | GetRawsData(17)->Fill(SumQ_ZPC_lg); | |
512 | GetRawsData(18)->Fill(SumQ_ZNA_lg); | |
513 | GetRawsData(19)->Fill(SumQ_ZPA_lg); | |
514 | // | |
515 | stream.Delete(); | |
516 | } | |
517 | ||
518 | //____________________________________________________________________________ | |
519 | void AliZDCQADataMakerRec::MakeESDs(AliESDEvent * esd) | |
520 | { | |
521 | // make QA data from ESDs | |
522 | // | |
523 | AliESDZDC * zdcESD = esd->GetESDZDC(); | |
524 | // | |
525 | const Float_t * Centr_ZNC, * Centr_ZNA; | |
526 | Int_t NSpecnC = (Int_t) (esd->GetZDCN1Energy()/2.7); | |
527 | Int_t NSpecnA = (Int_t) (esd->GetZDCN2Energy()/2.7); | |
528 | Centr_ZNC = zdcESD->GetZNCCentroid(NSpecnC); | |
529 | Centr_ZNA = zdcESD->GetZNACentroid(NSpecnA); | |
530 | GetESDsData(0)->Fill(Centr_ZNC[0], Centr_ZNC[1]); | |
531 | GetESDsData(1)->Fill(Centr_ZNA[0], Centr_ZNA[1]); | |
532 | // | |
533 | GetESDsData(2)->Fill(esd->GetZDCN1Energy()); | |
534 | GetESDsData(3)->Fill(esd->GetZDCP1Energy()); | |
535 | GetESDsData(4)->Fill(esd->GetZDCN2Energy()); | |
536 | GetESDsData(5)->Fill(esd->GetZDCP2Energy()); | |
537 | // | |
538 | Double_t ZNCSumQ=0., ZPCSumQ=0., ZNASumQ=0., ZPASumQ=0.; | |
539 | Double_t ZNCSumQ_lg=0., ZPCSumQ_lg=0., ZNASumQ_lg=0., ZPASumQ_lg=0.; | |
540 | // | |
541 | const Double_t *ZNCTow, *ZPCTow, *ZNATow, *ZPATow; | |
542 | const Double_t *ZNCTow_lg, *ZPCTow_lg, *ZNATow_lg, *ZPATow_lg; | |
543 | // | |
544 | ZNCTow = zdcESD->GetZN1TowerEnergy(); | |
545 | ZPCTow = zdcESD->GetZP1TowerEnergy(); | |
546 | ZNATow = zdcESD->GetZN2TowerEnergy(); | |
547 | ZPATow = zdcESD->GetZP2TowerEnergy(); | |
548 | // | |
549 | ZNCTow_lg = zdcESD->GetZN1TowerEnergyLR(); | |
550 | ZPCTow_lg = zdcESD->GetZP1TowerEnergyLR(); | |
551 | ZNATow_lg = zdcESD->GetZN2TowerEnergyLR(); | |
552 | ZPATow_lg = zdcESD->GetZP2TowerEnergyLR(); | |
553 | // | |
554 | for(Int_t i=0; i<5; i++){ | |
555 | if(i==0){ | |
556 | GetESDsData(10)->Fill(ZNCTow[i]); | |
557 | GetESDsData(11)->Fill(ZPCTow[i]); | |
558 | GetESDsData(12)->Fill(ZNATow[i]); | |
559 | GetESDsData(13)->Fill(ZPATow[i]); | |
560 | // | |
561 | GetESDsData(22)->Fill(ZNCTow_lg[i]); | |
562 | GetESDsData(23)->Fill(ZPCTow_lg[i]); | |
563 | GetESDsData(24)->Fill(ZNATow_lg[i]); | |
564 | GetESDsData(25)->Fill(ZPATow_lg[i]); | |
565 | } | |
566 | else{ | |
567 | ZNCSumQ += ZNCTow[i]; | |
568 | ZPCSumQ += ZPCTow[i]; | |
569 | ZNASumQ += ZNATow[i]; | |
570 | ZPASumQ += ZPATow[i]; | |
571 | // | |
572 | ZNCSumQ_lg += ZNCTow_lg[i]; | |
573 | ZPCSumQ_lg += ZPCTow_lg[i]; | |
574 | ZNASumQ_lg += ZNATow_lg[i]; | |
575 | ZPASumQ_lg += ZPATow_lg[i]; | |
576 | } | |
577 | } | |
578 | GetESDsData(6)->Fill(ZNCSumQ); | |
579 | GetESDsData(7)->Fill(ZPCSumQ); | |
580 | GetESDsData(8)->Fill(ZNASumQ); | |
581 | GetESDsData(9)->Fill(ZPASumQ); | |
582 | // | |
583 | GetESDsData(18)->Fill(ZNCSumQ_lg); | |
584 | GetESDsData(19)->Fill(ZPCSumQ_lg); | |
585 | GetESDsData(20)->Fill(ZNASumQ_lg); | |
586 | GetESDsData(21)->Fill(ZPASumQ_lg); | |
587 | } | |
588 | ||
589 | //____________________________________________________________________________ | |
590 | void AliZDCQADataMakerRec::StartOfDetectorCycle() | |
591 | { | |
592 | //Detector specific actions at start of cycle | |
593 | ||
594 | } | |
595 | ||
596 | //____________________________________________________________________________ | |
597 | void AliZDCQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray * list) | |
598 | { | |
599 | //Detector specific actions at end of cycle | |
600 | // do the QA checking | |
601 | AliQAChecker::Instance()->Run(AliQA::kZDC, task, list) ; |