]>
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() : | |
4e25ac79 | 38 | AliQADataMaker(AliQAv1::GetDetName(AliQAv1::kZDC), "ZDC Quality Assurance Data Maker"), |
fab67f97 | 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 | // | |
bcf891f7 | 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); | |
075a0e70 | 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 | // | |
bcf891f7 | 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); | |
075a0e70 | 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 | ||
bcf891f7 | 146 | void AliZDCQADataMaker::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 | // | |
bcf891f7 | 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.); | |
163 | Add2RawsList(hRawsumQZNC, 4); | |
164 | Add2RawsList(hRawsumQZPC, 5); | |
165 | Add2RawsList(hRawsumQZNA, 6); | |
166 | Add2RawsList(hRawsumQZPA, 7); | |
075a0e70 | 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 | // | |
bcf891f7 | 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.); | |
191 | Add2RawsList(hRawsumQZNClg, 16); | |
192 | Add2RawsList(hRawsumQZPClg, 17); | |
193 | Add2RawsList(hRawsumQZNAlg, 18); | |
194 | Add2RawsList(hRawsumQZPAlg, 19); | |
075a0e70 | 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 | //____________________________________________________________________________ | |
bcf891f7 | 207 | void AliZDCQADataMaker::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 | // | |
bcf891f7 | 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.); | |
229 | Add2ESDsList(hESDsumQZNC, 6); | |
230 | Add2ESDsList(hESDsumQZPC, 7); | |
231 | Add2ESDsList(hESDsumQZNA, 8); | |
232 | Add2ESDsList(hESDsumQZPA, 9); | |
075a0e70 | 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 | // | |
bcf891f7 | 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.); | |
257 | Add2ESDsList(hESDsumQZNClg, 18); | |
258 | Add2ESDsList(hESDsumQZPClg, 19); | |
259 | Add2ESDsList(hESDsumQZNAlg, 20); | |
260 | Add2ESDsList(hESDsumQZPAlg, 21); | |
075a0e70 | 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 | //____________________________________________________________________________ |
bcf891f7 | 274 | void AliZDCQADataMaker::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 | //___________________________________________________________________________ |
bcf891f7 | 290 | void AliZDCQADataMaker::MakeHits(TTree * const hitTree) |
075a0e70 | 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 | //____________________________________________________________________________ | |
bcf891f7 | 326 | void AliZDCQADataMaker::MakeDigits(TClonesArray * /*digits*/) |
075a0e70 | 327 | { |
328 | // makes data from Digits | |
329 | // | |
330 | TIter next(digits) ; | |
331 | AliZDCDigit * digit ; | |
332 | // | |
bcf891f7 | 333 | Float_t sumADC_ZNC=0., sumADC_ZNA=0., sumADC_ZPC=0., sumADC_ZPA=0.; |
334 | Float_t sumADCQ_ZNC=0., sumADCQ_ZNA=0., sumADCQ_ZPC=0., sumADCQ_ZPA=0.; | |
335 | Float_t sumADC_ZNC_lg=0., sumADC_ZNA_lg=0., sumADC_ZPC_lg=0., sumADC_ZPA_lg=0.; | |
336 | Float_t sumADCQ_ZNC_lg=0., sumADCQ_ZNA_lg=0., sumADCQ_ZPC_lg=0., sumADCQ_ZPA_lg=0.; | |
075a0e70 | 337 | // |
c3d081f5 | 338 | while((digit = dynamic_cast<AliZDCDigit *>(next()))){ |
339 | if(digit->GetSector(0)==1){ | |
bcf891f7 | 340 | sumADC_ZNC += digit->GetADCValue(0); |
341 | sumADC_ZNC_lg += digit->GetADCValue(1); | |
c3d081f5 | 342 | // |
343 | if(digit->GetSector(1)!=0){ | |
bcf891f7 | 344 | sumADCQ_ZNC += digit->GetADCValue(0); |
345 | sumADCQ_ZNC_lg+= digit->GetADCValue(1); | |
c3d081f5 | 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){ | |
bcf891f7 | 353 | sumADC_ZPC += digit->GetADCValue(0); |
354 | sumADC_ZPC_lg += digit->GetADCValue(1); | |
c3d081f5 | 355 | // |
356 | if(digit->GetSector(1)!=0){ | |
bcf891f7 | 357 | sumADCQ_ZPC += digit->GetADCValue(0); |
358 | sumADCQ_ZPC_lg+= digit->GetADCValue(1); | |
c3d081f5 | 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){ | |
bcf891f7 | 366 | sumADC_ZNA += digit->GetADCValue(0); |
367 | sumADC_ZNA_lg += digit->GetADCValue(1); | |
c3d081f5 | 368 | // |
369 | if(digit->GetSector(1)!=0){ | |
bcf891f7 | 370 | sumADCQ_ZNA += digit->GetADCValue(0); |
371 | sumADCQ_ZNA_lg+= digit->GetADCValue(1); | |
c3d081f5 | 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){ | |
bcf891f7 | 379 | sumADC_ZPA += digit->GetADCValue(0); |
380 | sumADC_ZPA_lg += digit->GetADCValue(1); | |
c3d081f5 | 381 | // |
382 | if(digit->GetSector(1)!=0){ | |
bcf891f7 | 383 | sumADCQ_ZPA += digit->GetADCValue(0); |
384 | sumADCQ_ZPA_lg+= digit->GetADCValue(1); | |
c3d081f5 | 385 | } |
386 | else{ | |
387 | GetDigitsData(11)->Fill(digit->GetADCValue(0)); | |
388 | GetDigitsData(23)->Fill(digit->GetADCValue(1)); | |
389 | } | |
390 | } | |
391 | } | |
075a0e70 | 392 | // |
bcf891f7 | 393 | GetDigitsData(0)->Fill(sumADC_ZNC); |
394 | GetDigitsData(1)->Fill(sumADC_ZPC); | |
395 | GetDigitsData(2)->Fill(sumADC_ZNA); | |
396 | GetDigitsData(3)->Fill(sumADC_ZPA); | |
397 | // | |
398 | GetDigitsData(4)->Fill(sumADCQ_ZNC); | |
399 | GetDigitsData(5)->Fill(sumADCQ_ZPC); | |
400 | GetDigitsData(6)->Fill(sumADCQ_ZNA); | |
401 | GetDigitsData(7)->Fill(sumADCQ_ZPA); | |
402 | // | |
403 | GetDigitsData(12)->Fill(sumADC_ZNC_lg); | |
404 | GetDigitsData(13)->Fill(sumADC_ZPC_lg); | |
405 | GetDigitsData(14)->Fill(sumADC_ZNA_lg); | |
406 | GetDigitsData(15)->Fill(sumADC_ZPA_lg); | |
407 | // | |
408 | GetDigitsData(16)->Fill(sumADCQ_ZNC_lg); | |
409 | GetDigitsData(17)->Fill(sumADCQ_ZPC_lg); | |
410 | GetDigitsData(18)->Fill(sumADCQ_ZNA_lg); | |
411 | GetDigitsData(19)->Fill(sumADCQ_ZPA_lg); | |
075a0e70 | 412 | |
413 | } | |
414 | //___________________________________________________________________________ | |
bcf891f7 | 415 | void AliZDCQADataMaker::MakeDigits(TTree * const digitTree ) |
075a0e70 | 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 | ||
bcf891f7 | 431 | void AliZDCQADataMaker::MakeRaws(AliRawReader * const rawReader) |
075a0e70 | 432 | { |
433 | // Filling Raws QA histos | |
434 | // | |
bcf891f7 | 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.; | |
075a0e70 | 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){ | |
bcf891f7 | 446 | sum_ZNC += stream.GetADCValue(); |
447 | if(stream.GetSector(1)!=0) sumQ_ZNC += stream.GetADCValue(); | |
075a0e70 | 448 | else GetRawsData(8)->Fill(stream.GetADCValue()); |
449 | } | |
450 | else{ | |
bcf891f7 | 451 | sum_ZNC_lg += stream.GetADCValue(); |
452 | if(stream.GetSector(1)!=0) sumQ_ZNC_lg += stream.GetADCValue(); | |
075a0e70 | 453 | else GetRawsData(20)->Fill(stream.GetADCValue()); |
454 | } | |
455 | } | |
456 | else if(stream.GetSector(0)==2){ | |
457 | if(stream.GetADCGain()==0){ | |
bcf891f7 | 458 | sum_ZPC += stream.GetADCValue(); |
459 | if(stream.GetSector(1)!=0) sumQ_ZPC += stream.GetADCValue(); | |
075a0e70 | 460 | else GetRawsData(9)->Fill(stream.GetADCValue()); |
461 | } | |
462 | else{ | |
bcf891f7 | 463 | sum_ZPC_lg += stream.GetADCValue(); |
464 | if(stream.GetSector(1)!=0) sumQ_ZPC_lg += stream.GetADCValue(); | |
075a0e70 | 465 | else GetRawsData(21)->Fill(stream.GetADCValue()); |
466 | } | |
467 | } | |
468 | else if(stream.GetSector(0)==4){ | |
469 | if(stream.GetADCGain()==0){ | |
bcf891f7 | 470 | sum_ZNA += stream.GetADCValue(); |
471 | if(stream.GetSector(1)!=0) sumQ_ZNA += stream.GetADCValue(); | |
075a0e70 | 472 | else GetRawsData(10)->Fill(stream.GetADCValue()); |
473 | } | |
474 | else{ | |
bcf891f7 | 475 | sum_ZNA_lg += stream.GetADCValue(); |
476 | if(stream.GetSector(1)!=0) sumQ_ZNA_lg += stream.GetADCValue(); | |
075a0e70 | 477 | else GetRawsData(22)->Fill(stream.GetADCValue()); |
478 | } | |
479 | } | |
480 | else if(stream.GetSector(0)==5){ | |
481 | if(stream.GetADCGain()==0){ | |
bcf891f7 | 482 | sum_ZPA += stream.GetADCValue(); |
483 | if(stream.GetSector(1)!=0) sumQ_ZPA += stream.GetADCValue(); | |
075a0e70 | 484 | else GetRawsData(11)->Fill(stream.GetADCValue()); |
485 | } | |
486 | else{ | |
bcf891f7 | 487 | sum_ZPA_lg += stream.GetADCValue(); |
488 | if(stream.GetSector(1)!=0) sumQ_ZPA_lg += stream.GetADCValue(); | |
075a0e70 | 489 | else GetRawsData(23)->Fill(stream.GetADCValue()); |
490 | } | |
491 | } | |
492 | } | |
493 | } | |
494 | // | |
bcf891f7 | 495 | GetRawsData(0)->Fill(sum_ZNC); |
496 | GetRawsData(1)->Fill(sum_ZPC); | |
497 | GetRawsData(2)->Fill(sum_ZNA); | |
498 | GetRawsData(3)->Fill(sum_ZPA); | |
075a0e70 | 499 | // |
bcf891f7 | 500 | GetRawsData(4)->Fill(sumQ_ZNC); |
501 | GetRawsData(5)->Fill(sumQ_ZPC); | |
502 | GetRawsData(6)->Fill(sumQ_ZNA); | |
503 | GetRawsData(7)->Fill(sumQ_ZPA); | |
075a0e70 | 504 | // |
bcf891f7 | 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); | |
075a0e70 | 509 | // |
bcf891f7 | 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); | |
075a0e70 | 514 | // |
515 | stream.Delete(); | |
516 | } | |
517 | ||
518 | //____________________________________________________________________________ | |
bcf891f7 | 519 | void AliZDCQADataMaker::MakeESDs(AliESDEvent * esd) |
075a0e70 | 520 | { |
521 | // make QA data from ESDs | |
522 | // | |
523 | AliESDZDC * zdcESD = esd->GetESDZDC(); | |
524 | // | |
bcf891f7 | 525 | const Float_t * centrZNC, * centrZNA; |
526 | Int_t nSpecnC = (Int_t) (esd->GetZDCN1Energy()/2.7); | |
527 | Int_t nSpecnA = (Int_t) (esd->GetZDCN2Energy()/2.7); | |
528 | centrZNC = zdcESD->GetZNCCentroid(); | |
529 | centrZNA = zdcESD->GetZNACentroid(); | |
530 | GetESDsData(0)->Fill(centrZNC[0], centrZNC[1]); | |
531 | GetESDsData(1)->Fill(centrZNA[0], centrZNA[1]); | |
075a0e70 | 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 | // | |
bcf891f7 | 538 | Double_t sumZNCQ=0., sumZPCQ=0., sumZNAQ=0., sumZPAQ=0.; |
539 | Double_t sumZNCQlg=0., sumZPCQlg=0., sumZNAQlg=0., sumZPAQlg=0.; | |
075a0e70 | 540 | // |
bcf891f7 | 541 | const Double_t *towZNC, *towZPC, *towZNA, *towZPA; |
542 | const Double_t *towZNClg, *towZPClg, *towZNAlg, *towZPAlg; | |
075a0e70 | 543 | // |
bcf891f7 | 544 | towZNC = zdcESD->GetZN1TowerEnergy(); |
545 | towZPC = zdcESD->GetZP1TowerEnergy(); | |
546 | towZNA = zdcESD->GetZN2TowerEnergy(); | |
547 | towZPA = zdcESD->GetZP2TowerEnergy(); | |
075a0e70 | 548 | // |
bcf891f7 | 549 | towZNClg = zdcESD->GetZN1TowerEnergyLR(); |
550 | towZPClg = zdcESD->GetZP1TowerEnergyLR(); | |
551 | towZNAlg = zdcESD->GetZN2TowerEnergyLR(); | |
552 | towZPAlg = zdcESD->GetZP2TowerEnergyLR(); | |
075a0e70 | 553 | // |
554 | for(Int_t i=0; i<5; i++){ | |
555 | if(i==0){ | |
bcf891f7 | 556 | GetESDsData(10)->Fill(towZNC[i]); |
557 | GetESDsData(11)->Fill(towZPC[i]); | |
558 | GetESDsData(12)->Fill(towZNA[i]); | |
559 | GetESDsData(13)->Fill(towZPA[i]); | |
075a0e70 | 560 | // |
bcf891f7 | 561 | GetESDsData(22)->Fill(towZNClg[i]); |
562 | GetESDsData(23)->Fill(towZPClg[i]); | |
563 | GetESDsData(24)->Fill(towZNAlg[i]); | |
564 | GetESDsData(25)->Fill(towZPAlg[i]); | |
075a0e70 | 565 | } |
566 | else{ | |
bcf891f7 | 567 | sumZNCQ += towZNC[i]; |
568 | sumZPCQ += towZPC[i]; | |
569 | sumZNAQ += towZNA[i]; | |
570 | sumZPAQ += towZPA[i]; | |
075a0e70 | 571 | // |
bcf891f7 | 572 | sumZNCQlg += towZNClg[i]; |
573 | sumZPCQlg += towZPClg[i]; | |
574 | sumZNAQlg += towZNAlg[i]; | |
575 | sumZPAQlg += towZPAlg[i]; | |
075a0e70 | 576 | } |
577 | } | |
bcf891f7 | 578 | GetESDsData(6)->Fill(sumZNCQ); |
579 | GetESDsData(7)->Fill(sumZPCQ); | |
580 | GetESDsData(8)->Fill(sumZNAQ); | |
581 | GetESDsData(9)->Fill(sumZPAQ); | |
582 | // | |
583 | GetESDsData(18)->Fill(sumZNCQlg); | |
584 | GetESDsData(19)->Fill(sumZPCQlg); | |
585 | GetESDsData(20)->Fill(sumZNAQlg); | |
586 | GetESDsData(21)->Fill(sumZPAQlg); | |
075a0e70 | 587 | } |
588 | ||
589 | //____________________________________________________________________________ | |
bcf891f7 | 590 | void AliZDCQADataMaker::StartOfDetectorCycle() |
075a0e70 | 591 | { |
592 | //Detector specific actions at start of cycle | |
593 | ||
594 | } | |
595 | ||
596 | //____________________________________________________________________________ | |
4e25ac79 | 597 | void AliZDCQADataMaker::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray * list) |
075a0e70 | 598 | { |
599 | //Detector specific actions at end of cycle | |
600 | // do the QA checking | |
4e25ac79 | 601 | AliQAChecker::Instance()->Run(AliQAv1::kZDC, task, list) ; |