Add class to access simulation parameters, AliEMCALSimParam, to be set in configurati...
[u/mrichter/AliRoot.git] / ZDC / AliZDCQADataMakerRec.cxx
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
16 ///////////////////////////////////////////////////////////////////////
17 //                                                                   //
18 //  Produces the data needed to calculate the ZDC quality assurance. //
19 //  QA objects are 1 & 2 Dimensional histograms.                     //
20 //  author: C. Oppedisano                                            //
21 //                                                                   //
22 ///////////////////////////////////////////////////////////////////////
23
24 // --- ROOT system ---
25 #include <TClonesArray.h>
26 #include <TFile.h> 
27 #include <TH1F.h> 
28 #include <TH2F.h>
29 #include <TProfile.h>
30 #include <Riostream.h>
31 // --- Standard library ---
32
33 // --- AliRoot header files ---
34 #include "AliLog.h"
35 #include "AliQAChecker.h"
36 #include "AliZDCReco.h"
37 #include "AliRawReader.h"
38 #include "AliZDCQADataMakerRec.h"
39 #include "AliZDCRawStream.h"
40 #include "AliZDCDigit.h"
41 #include "AliESDZDC.h"
42 #include "AliESDEvent.h"
43
44 ClassImp(AliZDCQADataMakerRec)
45            
46 //____________________________________________________________________________ 
47   AliZDCQADataMakerRec::AliZDCQADataMakerRec() : 
48   AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kZDC), "ZDC Quality Assurance Data Maker"), 
49   fDigit(0)
50 {
51   // ctor
52 }
53
54 //____________________________________________________________________________ 
55 AliZDCQADataMakerRec::AliZDCQADataMakerRec(const AliZDCQADataMakerRec& qadm) :
56   AliQADataMakerRec(),      
57   fDigit(0)
58 {
59   //copy ctor 
60   SetName((const char*)qadm.GetName()); 
61   SetTitle((const char*)qadm.GetTitle()); 
62 }
63
64 //__________________________________________________________________
65 AliZDCQADataMakerRec& AliZDCQADataMakerRec::operator = (const AliZDCQADataMakerRec& qadm )
66 {
67   // Equal operator.
68   this->~AliZDCQADataMakerRec();
69   new(this) AliZDCQADataMakerRec(qadm);
70   return *this;
71 }
72
73 //____________________________________________________________________________ 
74 void AliZDCQADataMakerRec::InitDigits()
75 {
76   // create Digits histograms in Digits subdir
77   //
78   const Bool_t expert   = kTRUE ; 
79   const Bool_t image    = kTRUE ; 
80   
81   // ------------------- HIGH GAIN CHAIN ---------------------------
82   TH1F * hDigitPMCZNC = new TH1F("hDigitPMCZNC", "Digit common ZNC PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
83   TH1F * hDigitPMCZNA = new TH1F("hDigitPMCZNA", "Digit common ZNA PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
84   TH1F * hDigitPMCZPC = new TH1F("hDigitPMCZPC", "Digit common ZPC PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
85   TH1F * hDigitPMCZPA = new TH1F("hDigitPMCZPA", "Digit common ZPA PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
86   TH1F * hDigitPMZEM1 = new TH1F("hDigitPMZEM1", "Digit ZEM1 PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
87   TH1F * hDigitPMZEM2 = new TH1F("hDigitPMZEM2", "Digit ZEM2 PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
88   Add2DigitsList(hDigitPMCZNC, 0 , !expert, image);
89   Add2DigitsList(hDigitPMCZNA, 1 , !expert, image);
90   Add2DigitsList(hDigitPMCZPC, 2, !expert, image);
91   Add2DigitsList(hDigitPMCZPA, 3, !expert, image);
92   Add2DigitsList(hDigitPMZEM1, 4, !expert, image);
93   Add2DigitsList(hDigitPMZEM2, 5, !expert, image);
94   // 
95   // ------------------- LOW GAIN CHAIN ---------------------------
96   TH1F * hDigitPMCZNClg = new TH1F("hDigitPMCZNClg", "Digit common lg ZNC PMT;Amplitude [ADC counts];Counts",100, 0., 4000.);
97   TH1F * hDigitPMCZNAlg = new TH1F("hDigitPMCZNAlg", "Digit common lg ZNA PMT;Amplitude [ADC counts];Counts",100, 0., 4000.);
98   TH1F * hDigitPMCZPClg = new TH1F("hDigitPMCZPClg", "Digit common lg ZPC PMT;Amplitude [ADC counts];Counts",100, 0., 4000.);
99   TH1F * hDigitPMCZPAlg = new TH1F("hDigitPMCZPAlg", "Digit common lg ZPA PMT;Amplitude [ADC counts];Counts",100, 0., 4000.);
100   TH1F * hDigitPMZEM1lg = new TH1F("hDigitPMZEM1lg", "Digit ZEM1 PMT lg;Amplitude [ADC counts];Counts",100, 0., 4000.);
101   TH1F * hDigitPMZEM2lg = new TH1F("hDigitPMZEM2lg", "Digit ZEM2 PMT lg;Amplitude [ADC counts];Counts",100, 0., 4000.);
102   Add2DigitsList(hDigitPMCZNClg, 6, expert, !image);
103   Add2DigitsList(hDigitPMCZNAlg, 7, expert, !image);
104   Add2DigitsList(hDigitPMCZPClg, 8, expert, !image);
105   Add2DigitsList(hDigitPMCZPAlg, 9, expert, !image);
106   Add2DigitsList(hDigitPMZEM1lg, 10, !expert, image);
107   Add2DigitsList(hDigitPMZEM2lg, 11, !expert, image);
108   //
109   // ------------------- HIGH GAIN CHAIN ---------------------------
110   TH1F * hDigitPM1ZNC = new TH1F("hDigitPM1ZNC", "Digit PM1 ZNC;Amplitude [ADC counts];Counts",100, 0., 1000.);
111   TH1F * hDigitPM2ZNC = new TH1F("hDigitPM2ZNC", "Digit PM2 ZNC;Amplitude [ADC counts];Counts",100, 0., 1000.);
112   TH1F * hDigitPM3ZNC = new TH1F("hDigitPM3ZNC", "Digit PM3 ZNC;Amplitude [ADC counts];Counts",100, 0., 1000.);
113   TH1F * hDigitPM4ZNC = new TH1F("hDigitPM4ZNC", "Digit PM4 ZNC;Amplitude [ADC counts];Counts",100, 0., 1000.);
114   Add2DigitsList(hDigitPM1ZNC, 12, !expert, image);
115   Add2DigitsList(hDigitPM2ZNC, 13, !expert, image);
116   Add2DigitsList(hDigitPM3ZNC, 14, !expert, image);
117   Add2DigitsList(hDigitPM4ZNC, 15, !expert, image);
118   // 
119   TH1F * hDigitPM1ZPC = new TH1F("hDigitPM1ZPC", "Digit PM1 ZPC;Amplitude [ADC counts];Counts",100, 0., 1000.);
120   TH1F * hDigitPM2ZPC = new TH1F("hDigitPM2ZPC", "Digit PM2 ZPC;Amplitude [ADC counts];Counts",100, 0., 1000.);
121   TH1F * hDigitPM3ZPC = new TH1F("hDigitPM3ZPC", "Digit PM3 ZPC;Amplitude [ADC counts];Counts",100, 0., 1000.);
122   TH1F * hDigitPM4ZPC = new TH1F("hDigitPM4ZPC", "Digit PM4 ZPC;Amplitude [ADC counts];Counts",100, 0., 1000.);
123   Add2DigitsList(hDigitPM1ZPC, 16, !expert, image);
124   Add2DigitsList(hDigitPM2ZPC, 17, !expert, image);
125   Add2DigitsList(hDigitPM3ZPC, 18, !expert, image);
126   Add2DigitsList(hDigitPM4ZPC, 19, !expert, image);
127   //
128   TH1F * hDigitPM1ZNA = new TH1F("hDigitPM1ZNA", "Digit PM1 ZNA;Amplitude [ADC counts];Counts",100, 0., 1000.);
129   TH1F * hDigitPM2ZNA = new TH1F("hDigitPM2ZNA", "Digit PM2 ZNA;Amplitude [ADC counts];Counts",100, 0., 1000.);
130   TH1F * hDigitPM3ZNA = new TH1F("hDigitPM3ZNA", "Digit PM3 ZNA;Amplitude [ADC counts];Counts",100, 0., 1000.);
131   TH1F * hDigitPM4ZNA = new TH1F("hDigitPM4ZNA", "Digit PM4 ZNA;Amplitude [ADC counts];Counts",100, 0., 1000.);
132   Add2DigitsList(hDigitPM1ZNA, 20, !expert, image);
133   Add2DigitsList(hDigitPM2ZNA, 21, !expert, image);
134   Add2DigitsList(hDigitPM3ZNA, 22, !expert, image);
135   Add2DigitsList(hDigitPM4ZNA, 23, !expert, image);
136   // 
137   TH1F * hDigitPM1ZPA = new TH1F("hDigitPM1ZPA", "Digit PM1 ZPA;Amplitude [ADC counts];Counts",100, 0., 1000.);
138   TH1F * hDigitPM2ZPA = new TH1F("hDigitPM2ZPA", "Digit PM2 ZPA;Amplitude [ADC counts];Counts",100, 0., 1000.);
139   TH1F * hDigitPM3ZPA = new TH1F("hDigitPM3ZPA", "Digit PM3 ZPA;Amplitude [ADC counts];Counts",100, 0., 1000.);
140   TH1F * hDigitPM4ZPA = new TH1F("hDigitPM4ZPA", "Digit PM4 ZPA;Amplitude [ADC counts];Counts",100, 0., 1000.);
141   Add2DigitsList(hDigitPM1ZPA, 24, !expert, image);
142   Add2DigitsList(hDigitPM2ZPA, 25, !expert, image);
143   Add2DigitsList(hDigitPM3ZPA, 26, !expert, image);
144   Add2DigitsList(hDigitPM4ZPA, 27, !expert, image);
145   //
146   // ------------------- LOW GAIN CHAIN ---------------------------
147   TH1F * hDigitPM1ZNClg = new TH1F("hDigitPM1ZNClg", "Digit PM1 ZNC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
148   TH1F * hDigitPM2ZNClg = new TH1F("hDigitPM2ZNClg", "Digit PM2 ZNC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
149   TH1F * hDigitPM3ZNClg = new TH1F("hDigitPM3ZNClg", "Digit PM3 ZNC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
150   TH1F * hDigitPM4ZNClg = new TH1F("hDigitPM4ZNClg", "Digit PM4 ZNC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
151   Add2DigitsList(hDigitPM1ZNClg, 28, !expert, image);
152   Add2DigitsList(hDigitPM2ZNClg, 29, !expert, image);
153   Add2DigitsList(hDigitPM3ZNClg, 30, !expert, image);
154   Add2DigitsList(hDigitPM4ZNClg, 31, !expert, image);
155   // 
156   TH1F * hDigitPM1ZPClg = new TH1F("hDigitPM1ZPClg", "Digit PM1 ZPC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
157   TH1F * hDigitPM2ZPClg = new TH1F("hDigitPM2ZPClg", "Digit PM2 ZPC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
158   TH1F * hDigitPM3ZPClg = new TH1F("hDigitPM3ZPClg", "Digit PM3 ZPC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
159   TH1F * hDigitPM4ZPClg = new TH1F("hDigitPM4ZPClg", "Digit PM4 ZPC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
160   Add2DigitsList(hDigitPM1ZPClg, 32, !expert, image);
161   Add2DigitsList(hDigitPM2ZPClg, 33, !expert, image);
162   Add2DigitsList(hDigitPM3ZPClg, 34, !expert, image);
163   Add2DigitsList(hDigitPM4ZPClg, 35, !expert, image);
164   //
165   TH1F * hDigitPM1ZNAlg = new TH1F("hDigitPM1ZNAlg", "Digit PM1 ZNA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
166   TH1F * hDigitPM2ZNAlg = new TH1F("hDigitPM2ZNAlg", "Digit PM2 ZNA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
167   TH1F * hDigitPM3ZNAlg = new TH1F("hDigitPM3ZNAlg", "Digit PM3 ZNA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
168   TH1F * hDigitPM4ZNAlg = new TH1F("hDigitPM4ZNAlg", "Digit PM4 ZNA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
169   Add2DigitsList(hDigitPM1ZNAlg, 36, !expert, image);
170   Add2DigitsList(hDigitPM2ZNAlg, 37, !expert, image);
171   Add2DigitsList(hDigitPM3ZNAlg, 38, !expert, image);
172   Add2DigitsList(hDigitPM4ZNAlg, 39, !expert, image);
173   // 
174   TH1F * hDigitPM1ZPAlg = new TH1F("hDigitPM1ZPAlg", "Digit PM1 ZPA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
175   TH1F * hDigitPM2ZPAlg = new TH1F("hDigitPM2ZPAlg", "Digit PM2 ZPA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
176   TH1F * hDigitPM3ZPAlg = new TH1F("hDigitPM3ZPAlg", "Digit PM3 ZPA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
177   TH1F * hDigitPM4ZPAlg = new TH1F("hDigitPM4ZPAlg", "Digit PM4 ZPA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
178   Add2DigitsList(hDigitPM1ZPAlg, 40, !expert, image);
179   Add2DigitsList(hDigitPM2ZPAlg, 41, !expert, image);
180   Add2DigitsList(hDigitPM3ZPAlg, 42, !expert, image);
181   Add2DigitsList(hDigitPM4ZPAlg, 43, !expert, image);
182   
183 }
184
185 //____________________________________________________________________________
186 void AliZDCQADataMakerRec::InitRecPoints()
187 {
188   // create Digits histograms in Digits subdir
189   const Bool_t expert = kTRUE ; 
190   const Bool_t image  = kTRUE ; 
191   //
192   // ------------------- HIGH GAIN CHAIN ---------------------------
193   TH1F * hRecZNCTot = new TH1F("hRecZNCTot", "Rec signal in ZNC;Amplitude [ADC counts];Counts", 100, 0., 6000.);
194   TH1F * hRecZNATot = new TH1F("hRecZNATot", "Rec signal in ZNA;Amplitude [ADC counts];Counts", 100, 0., 6000.);
195   TH1F * hRecZPCTot = new TH1F("hRecZPCTot", "Rec signal in ZPC;Amplitude [ADC counts];Counts", 100, 0., 10000.);
196   TH1F * hRecZPATot = new TH1F("hRecZPATot", "Rec signal in ZPA;Amplitude [ADC counts];Counts", 100, 0., 10000.);
197   Add2RecPointsList(hRecZNCTot, 0, expert, !image);
198   Add2RecPointsList(hRecZNATot, 1, expert, !image);
199   Add2RecPointsList(hRecZPCTot, 2, expert, !image);
200   Add2RecPointsList(hRecZPATot, 3, expert, !image);
201   //
202   TH1F * hRecSumQZNC = new TH1F("hRecSumQZNC", "Rec summed 4 ZNC quadrants;Amplitude [ADC counts];Counts",100, 0., 4000.);
203   TH1F * hRecSumQZNA = new TH1F("hRecSumQZNA", "Rec summed 4 ZNA quadrants;Amplitude [ADC counts];Counts",100, 0., 4000.);
204   TH1F * hRecSumQZPC = new TH1F("hRecSumQZPC", "Rec summed 4 ZPC quadrants;Amplitude [ADC counts];Counts",100, 0., 4000.);
205   TH1F * hRecSumQZPA = new TH1F("hRecSumQZPA", "Rec summed 4 ZPA quadrants;Amplitude [ADC counts];Counts",100, 0., 4000.);
206   Add2RecPointsList(hRecSumQZNC, 4, expert, !image);
207   Add2RecPointsList(hRecSumQZNA, 5, expert, !image);
208   Add2RecPointsList(hRecSumQZPC, 6, expert, !image);
209   Add2RecPointsList(hRecSumQZPA, 7, expert, !image);
210   //
211   TH1F * hRecPMCZNC = new TH1F("hRecPMCZNC", "Rec common ZNC PMT;Amplitude [ADC counts];Counts",100, 0., 4000.);
212   TH1F * hRecPMCZNA = new TH1F("hRecPMCZNA", "Rec common ZNA PMT;Amplitude [ADC counts];Counts",100, 0., 4000.);
213   TH1F * hRecPMCZPC = new TH1F("hRecPMCZPC", "Rec common ZPC PMT;Amplitude [ADC counts];Counts",100, 0., 4000.);
214   TH1F * hRecPMCZPA = new TH1F("hRecPMCZPA", "Rec common ZPA PMT;Amplitude [ADC counts];Counts",100, 0., 4000.);
215   Add2RecPointsList(hRecPMCZNC, 8 , !expert, image);
216   Add2RecPointsList(hRecPMCZNA, 9 , !expert, image);
217   Add2RecPointsList(hRecPMCZPC, 10, !expert, image);
218   Add2RecPointsList(hRecPMCZPA, 11, !expert, image); 
219 }
220
221
222 //____________________________________________________________________________
223 void AliZDCQADataMakerRec::InitRaws()
224 {
225   // create Digits histograms in Digits subdir
226   const Bool_t expert   = kTRUE ; 
227   const Bool_t image    = kTRUE ; 
228   //
229   // ------------------- HIGH GAIN CHAIN ---------------------------
230   TH1F * hRawPMCZNC = new TH1F("hRawPMCZNC", "Raw common ZNC PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
231   TH1F * hRawPMCZNA = new TH1F("hRawPMCZNA", "Raw common ZNA PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
232   TH1F * hRawPMCZPC = new TH1F("hRawPMCZPC", "Raw common ZPC PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
233   TH1F * hRawPMCZPA = new TH1F("hRawPMCZPA", "Raw common ZPA PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
234   TH1F * hRawPMZEM1 = new TH1F("hRawPMZEM1", "Raw ZEM1 PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
235   TH1F * hRawPMZEM2 = new TH1F("hRawPMZEM2", "Raw ZEM2 PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
236   Add2RawsList(hRawPMCZNC, 0 , !expert, image);
237   Add2RawsList(hRawPMCZNA, 1 , !expert, image);
238   Add2RawsList(hRawPMCZPC, 2, !expert, image);
239   Add2RawsList(hRawPMCZPA, 3, !expert, image);
240   Add2RawsList(hRawPMZEM1, 4, !expert, image);
241   Add2RawsList(hRawPMZEM2, 5, !expert, image);
242   // 
243   // ------------------- LOW GAIN CHAIN ---------------------------
244   TH1F * hRawPMCZNClg = new TH1F("hRawPMCZNClg", "Raw common lg ZNC PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
245   TH1F * hRawPMCZNAlg = new TH1F("hRawPMCZNAlg", "Raw common lg ZNA PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
246   TH1F * hRawPMCZPClg = new TH1F("hRawPMCZPClg", "Raw common lg ZPC PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
247   TH1F * hRawPMCZPAlg = new TH1F("hRawPMCZPAlg", "Raw common lg ZPA PMT;Amplitude [ADC counts];Counts",100, 0., 1000.);
248   TH1F * hRawPMZEM1lg = new TH1F("hRawPMZEM1lg", "Raw ZEM1 PMT lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
249   TH1F * hRawPMZEM2lg = new TH1F("hRawPMZEM2lg", "Raw ZEM2 PMT lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
250   Add2RawsList(hRawPMCZNClg, 6, expert, !image);
251   Add2RawsList(hRawPMCZNAlg, 7, expert, !image);
252   Add2RawsList(hRawPMCZPClg, 8, expert, !image);
253   Add2RawsList(hRawPMCZPAlg, 9, expert, !image);
254   Add2RawsList(hRawPMZEM1lg, 10, !expert, image);
255   Add2RawsList(hRawPMZEM2lg, 11, !expert, image);
256   //
257   // ------------------- HIGH GAIN CHAIN ---------------------------
258   TH1F * hRawPM1ZNC = new TH1F("hRawPM1ZNC", "Raw PM1 ZNC;Amplitude [ADC counts];Counts",100, 0., 1000.);
259   TH1F * hRawPM2ZNC = new TH1F("hRawPM2ZNC", "Raw PM2 ZNC;Amplitude [ADC counts];Counts",100, 0., 1000.);
260   TH1F * hRawPM3ZNC = new TH1F("hRawPM3ZNC", "Raw PM3 ZNC;Amplitude [ADC counts];Counts",100, 0., 1000.);
261   TH1F * hRawPM4ZNC = new TH1F("hRawPM4ZNC", "Raw PM4 ZNC;Amplitude [ADC counts];Counts",100, 0., 1000.);
262   Add2RawsList(hRawPM1ZNC, 12, !expert, image);
263   Add2RawsList(hRawPM2ZNC, 13, !expert, image);
264   Add2RawsList(hRawPM3ZNC, 14, !expert, image);
265   Add2RawsList(hRawPM4ZNC, 15, !expert, image);
266   // 
267   TH1F * hRawPM1ZPC = new TH1F("hRawPM1ZPC", "Raw PM1 ZPC;Amplitude [ADC counts];Counts",100, 0., 1000.);
268   TH1F * hRawPM2ZPC = new TH1F("hRawPM2ZPC", "Raw PM2 ZPC;Amplitude [ADC counts];Counts",100, 0., 1000.);
269   TH1F * hRawPM3ZPC = new TH1F("hRawPM3ZPC", "Raw PM3 ZPC;Amplitude [ADC counts];Counts",100, 0., 1000.);
270   TH1F * hRawPM4ZPC = new TH1F("hRawPM4ZPC", "Raw PM4 ZPC;Amplitude [ADC counts];Counts",100, 0., 1000.);
271   Add2RawsList(hRawPM1ZPC, 16, !expert, image);
272   Add2RawsList(hRawPM2ZPC, 17, !expert, image);
273   Add2RawsList(hRawPM3ZPC, 18, !expert, image);
274   Add2RawsList(hRawPM4ZPC, 19, !expert, image);
275   //
276   TH1F * hRawPM1ZNA = new TH1F("hRawPM1ZNA", "Raw PM1 ZNA;Amplitude [ADC counts];Counts",100, 0., 1000.);
277   TH1F * hRawPM2ZNA = new TH1F("hRawPM2ZNA", "Raw PM2 ZNA;Amplitude [ADC counts];Counts",100, 0., 1000.);
278   TH1F * hRawPM3ZNA = new TH1F("hRawPM3ZNA", "Raw PM3 ZNA;Amplitude [ADC counts];Counts",100, 0., 1000.);
279   TH1F * hRawPM4ZNA = new TH1F("hRawPM4ZNA", "Raw PM4 ZNA;Amplitude [ADC counts];Counts",100, 0., 1000.);
280   Add2RawsList(hRawPM1ZNA, 20, !expert, image);
281   Add2RawsList(hRawPM2ZNA, 21, !expert, image);
282   Add2RawsList(hRawPM3ZNA, 22, !expert, image);
283   Add2RawsList(hRawPM4ZNA, 23, !expert, image);
284   // 
285   TH1F * hRawPM1ZPA = new TH1F("hRawPM1ZPA", "Raw PM1 ZPA;Amplitude [ADC counts];Counts",100, 0., 1000.);
286   TH1F * hRawPM2ZPA = new TH1F("hRawPM2ZPA", "Raw PM2 ZPA;Amplitude [ADC counts];Counts",100, 0., 1000.);
287   TH1F * hRawPM3ZPA = new TH1F("hRawPM3ZPA", "Raw PM3 ZPA;Amplitude [ADC counts];Counts",100, 0., 1000.);
288   TH1F * hRawPM4ZPA = new TH1F("hRawPM4ZPA", "Raw PM4 ZPA;Amplitude [ADC counts];Counts",100, 0., 1000.);
289   Add2RawsList(hRawPM1ZPA, 24, !expert, image);
290   Add2RawsList(hRawPM2ZPA, 25, !expert, image);
291   Add2RawsList(hRawPM3ZPA, 26, !expert, image);
292   Add2RawsList(hRawPM4ZPA, 27, !expert, image);
293   //
294   // ------------------- LOW GAIN CHAIN ---------------------------
295   TH1F * hRawPM1ZNClg = new TH1F("hRawPM1ZNClg", "Raw PM1 ZNC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
296   TH1F * hRawPM2ZNClg = new TH1F("hRawPM2ZNClg", "Raw PM2 ZNC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
297   TH1F * hRawPM3ZNClg = new TH1F("hRawPM3ZNClg", "Raw PM3 ZNC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
298   TH1F * hRawPM4ZNClg = new TH1F("hRawPM4ZNClg", "Raw PM4 ZNC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
299   Add2RawsList(hRawPM1ZNClg, 28, !expert, image);
300   Add2RawsList(hRawPM2ZNClg, 29, !expert, image);
301   Add2RawsList(hRawPM3ZNClg, 30, !expert, image);
302   Add2RawsList(hRawPM4ZNClg, 31, !expert, image);
303   // 
304   TH1F * hRawPM1ZPClg = new TH1F("hRawPM1ZPClg", "Raw PM1 ZPC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
305   TH1F * hRawPM2ZPClg = new TH1F("hRawPM2ZPClg", "Raw PM2 ZPC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
306   TH1F * hRawPM3ZPClg = new TH1F("hRawPM3ZPClg", "Raw PM3 ZPC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
307   TH1F * hRawPM4ZPClg = new TH1F("hRawPM4ZPClg", "Raw PM4 ZPC lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
308   Add2RawsList(hRawPM1ZPClg, 32, !expert, image);
309   Add2RawsList(hRawPM2ZPClg, 33, !expert, image);
310   Add2RawsList(hRawPM3ZPClg, 34, !expert, image);
311   Add2RawsList(hRawPM4ZPClg, 35, !expert, image);
312   //
313   TH1F * hRawPM1ZNAlg = new TH1F("hRawPM1ZNAlg", "Raw PM1 ZNA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
314   TH1F * hRawPM2ZNAlg = new TH1F("hRawPM2ZNAlg", "Raw PM2 ZNA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
315   TH1F * hRawPM3ZNAlg = new TH1F("hRawPM3ZNAlg", "Raw PM3 ZNA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
316   TH1F * hRawPM4ZNAlg = new TH1F("hRawPM4ZNAlg", "Raw PM4 ZNA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
317   Add2RawsList(hRawPM1ZNAlg, 36, !expert, image);
318   Add2RawsList(hRawPM2ZNAlg, 37, !expert, image);
319   Add2RawsList(hRawPM3ZNAlg, 38, !expert, image);
320   Add2RawsList(hRawPM4ZNAlg, 39, !expert, image);
321   // 
322   TH1F * hRawPM1ZPAlg = new TH1F("hRawPM1ZPAlg", "Raw PM1 ZPA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
323   TH1F * hRawPM2ZPAlg = new TH1F("hRawPM2ZPAlg", "Raw PM2 ZPA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
324   TH1F * hRawPM3ZPAlg = new TH1F("hRawPM3ZPAlg", "Raw PM3 ZPA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
325   TH1F * hRawPM4ZPAlg = new TH1F("hRawPM4ZPAlg", "Raw PM4 ZPA lg;Amplitude [ADC counts];Counts",100, 0., 1000.);
326   Add2RawsList(hRawPM1ZPAlg, 40, !expert, image);
327   Add2RawsList(hRawPM2ZPAlg, 41, !expert, image);
328   Add2RawsList(hRawPM3ZPAlg, 42, !expert, image);
329   Add2RawsList(hRawPM4ZPAlg, 43, !expert, image);
330 }
331
332 //____________________________________________________________________________
333 void AliZDCQADataMakerRec::InitESDs()
334 {
335   //Booking ESDs histograms
336   //
337   const Bool_t expert = kTRUE ; 
338   const Bool_t image  = kTRUE ; 
339   
340   TH2F * hZNC  = new TH2F("hZNC", "Centroid in ZNC", 100, -5.,5.,100,-5.,5.);
341   TH2F * hZNA  = new TH2F("hZNA", "Centroid in ZNA", 100, -5.,5.,100,-5.,5.);
342   Add2ESDsList(hZNC, 0, !expert, image);
343   Add2ESDsList(hZNA, 1, !expert, image);
344   //
345   // ------------------- HIGH GAIN CHAIN ---------------------------
346   TH1F * hESDZNCTot = new TH1F("hESDZNCTot", "Energy in ZNC", 100, 0., 6000.);
347   TH1F * hESDZNATot = new TH1F("hESDZNATot", "Energy in ZNA", 100, 0., 6000.);
348   TH1F * hESDZPCTot = new TH1F("hESDZPCTot", "Energy in ZPC", 100, 0., 10000.);
349   TH1F * hESDZPATot = new TH1F("hESDZPATot", "Energy in ZPA", 100, 0., 10000.);
350   Add2ESDsList(hESDZNCTot, 2, expert, !image);
351   Add2ESDsList(hESDZNATot, 3, expert, !image);
352   Add2ESDsList(hESDZPCTot, 4, expert, !image);
353   Add2ESDsList(hESDZPATot, 5, expert, !image);
354   //
355   TH1F * hESDSumQZNC = new TH1F("hESDSumQZNC", "Sum of 4 ZNC energy",100, 0., 4000.);
356   TH1F * hESDSumQZNA = new TH1F("hESDSumQZNA", "Sum of 4 ZNA energy",100, 0., 4000.);
357   TH1F * hESDSumQZPC = new TH1F("hESDSumQZPC", "Sum of 4 ZPC energy",100, 0., 4000.);
358   TH1F * hESDSumQZPA = new TH1F("hESDSumQZPA", "Sum of 4 ZPA energy",100, 0., 4000.);
359   Add2ESDsList(hESDSumQZNC, 6, expert, !image);
360   Add2ESDsList(hESDSumQZNA, 7, expert, !image);
361   Add2ESDsList(hESDSumQZPC, 8, expert, !image);
362   Add2ESDsList(hESDSumQZPA, 9, expert, !image);
363   //
364   TH1F * hESDPMCZNC = new TH1F("hESDPMCZNC", "Energy in common ZNC PMT",100, 0., 4000.);
365   TH1F * hESDPMCZNA = new TH1F("hESDPMCZNA", "Energy in common ZNA PMT",100, 0., 4000.);
366   TH1F * hESDPMCZPC = new TH1F("hESDPMCZPC", "Energy in common ZPC PMT",100, 0., 4000.);
367   TH1F * hESDPMCZPA = new TH1F("hESDPMCZPA", "Energy in common ZPA PMT",100, 0., 4000.);
368   Add2ESDsList(hESDPMCZNC, 10, !expert, image);
369   Add2ESDsList(hESDPMCZNA, 11, !expert, image);
370   Add2ESDsList(hESDPMCZPC, 12, !expert, image);
371   Add2ESDsList(hESDPMCZPA, 13, !expert, image);
372   // 
373   // ------------------- LOW GAIN CHAIN ---------------------------
374   TH1F * hESDZNCTotlg = new TH1F("hESDZNCTotlg", "ESD lg signal in ZNC", 100, 0., 6000.);
375   TH1F * hESDZNATotlg = new TH1F("hESDZNATotlg", "ESD lg signal in ZNA", 100, 0., 6000.);
376   TH1F * hESDZPCTotlg = new TH1F("hESDZPCTotlg", "ESD lg signal in ZPC", 100, 0., 10000.);
377   TH1F * hESDZPATotlg = new TH1F("hESDZPATotlg", "ESD lg signal in ZPA", 100, 0., 10000.);
378   Add2ESDsList(hESDZNCTotlg, expert, !image);
379   Add2ESDsList(hESDZNATotlg, expert, !image);
380   Add2ESDsList(hESDZPCTotlg, expert, !image);
381   Add2ESDsList(hESDZPATotlg, expert, !image);
382   //
383   TH1F * hESDSumQZNClg = new TH1F("hESDSumQZNClg", "Sum of 4 lg ZNC sectors",100, 0., 4000.);
384   TH1F * hESDSumQZNAlg = new TH1F("hESDSumQZNAlg", "Sum of 4 lg ZNA sectors",100, 0., 4000.);
385   TH1F * hESDSumQZPClg = new TH1F("hESDSumQZPClg", "Sum of 4 lg ZPC sectors",100, 0., 4000.);
386   TH1F * hESDSumQZPAlg = new TH1F("hESDSumQZPAlg", "Sum of 4 lg ZPA sectors",100, 0., 4000.);
387   Add2ESDsList(hESDSumQZNClg, 18, expert, !image);
388   Add2ESDsList(hESDSumQZNAlg, 19, expert, !image);
389   Add2ESDsList(hESDSumQZPClg, 20, expert, !image);
390   Add2ESDsList(hESDSumQZPAlg, 21, expert, !image);
391   //
392   TH1F * hESDPMCZNClg = new TH1F("hESDPMCZNClg", "Signal in common ZNC lg PMT",100, 0., 4000.);
393   TH1F * hESDPMCZNAlg = new TH1F("hESDPMCZNAlg", "Signal in common ZNA lg PMT",100, 0., 4000.);
394   TH1F * hESDPMCZPClg = new TH1F("hESDPMCZPClg", "Signal in common ZPC lg PMT",100, 0., 4000.);
395   TH1F * hESDPMCZPAlg = new TH1F("hESDPMCZPAlg", "Signal in common ZPA lg PMT",100, 0., 4000.);
396   Add2ESDsList(hESDPMCZNClg, 22, expert, !image);
397   Add2ESDsList(hESDPMCZNAlg, 23, expert, !image);
398   Add2ESDsList(hESDPMCZPClg, 24, expert, !image);
399   Add2ESDsList(hESDPMCZPAlg, 25, expert, !image);
400 }
401
402 //___________________________________________________________________________
403 void AliZDCQADataMakerRec::MakeDigits(TTree *digitTree)
404 {
405   // Check id histograms already created for this Event Specie
406   if(!GetDigitsData(0)) InitDigits() ;
407   
408   TBranch * branch = digitTree->GetBranch("ZDC");
409   if(!branch){
410     AliError("ZDC branch in Digit Tree not found"); 
411     return;
412   } 
413   
414   
415   branch->SetAddress(&fDigit);
416   
417   Long64_t ndig = digitTree->GetEntries();
418
419   for(Int_t i=0; i<ndig; i++){
420     digitTree->GetEntry(i);
421     if(fDigit->GetSector(0)==1 && fDigit->GetSector(1)!=5){
422       if(fDigit->GetSector(1)==0){
423               GetDigitsData(0)->Fill(fDigit->GetADCValue(0));
424               GetDigitsData(6)->Fill(fDigit->GetADCValue(1));
425       }
426       else if(fDigit->GetSector(1)==1){
427               GetDigitsData(12)->Fill(fDigit->GetADCValue(0));
428               GetDigitsData(28)->Fill(fDigit->GetADCValue(1));
429       }
430       else if(fDigit->GetSector(1)==2){
431               GetDigitsData(13)->Fill(fDigit->GetADCValue(0));
432               GetDigitsData(29)->Fill(fDigit->GetADCValue(1));
433       }
434       else if(fDigit->GetSector(1)==3){
435               GetDigitsData(14)->Fill(fDigit->GetADCValue(0));
436               GetDigitsData(30)->Fill(fDigit->GetADCValue(1));
437       }
438       else if(fDigit->GetSector(1)==4){
439               GetDigitsData(15)->Fill(fDigit->GetADCValue(0));
440               GetDigitsData(31)->Fill(fDigit->GetADCValue(1));
441       }
442     }
443     else if(fDigit->GetSector(0)==2){
444       if(fDigit->GetSector(1)==0){
445               GetDigitsData(2)->Fill(fDigit->GetADCValue(0));
446               GetDigitsData(8)->Fill(fDigit->GetADCValue(1));
447       }
448       else if(fDigit->GetSector(1)==1){
449               GetDigitsData(16)->Fill(fDigit->GetADCValue(0));
450               GetDigitsData(32)->Fill(fDigit->GetADCValue(1));
451       }
452       else if(fDigit->GetSector(1)==2){
453               GetDigitsData(17)->Fill(fDigit->GetADCValue(0));
454               GetDigitsData(33)->Fill(fDigit->GetADCValue(1));
455       }
456       else if(fDigit->GetSector(1)==3){
457               GetDigitsData(18)->Fill(fDigit->GetADCValue(0));
458               GetDigitsData(34)->Fill(fDigit->GetADCValue(1));
459       }
460       else if(fDigit->GetSector(1)==4){
461               GetDigitsData(19)->Fill(fDigit->GetADCValue(0));
462               GetDigitsData(35)->Fill(fDigit->GetADCValue(1));
463       }
464     }
465     else if(fDigit->GetSector(0)==3){
466       if(fDigit->GetSector(1)==1){
467               GetDigitsData(4)->Fill(fDigit->GetADCValue(0));
468               GetDigitsData(10)->Fill(fDigit->GetADCValue(1));
469       }
470       else if(fDigit->GetSector(1)==2){
471               GetDigitsData(5)->Fill(fDigit->GetADCValue(0));
472               GetDigitsData(11)->Fill(fDigit->GetADCValue(1));
473       }
474     }
475     else if(fDigit->GetSector(0)==4 && fDigit->GetSector(1)!=5){
476       if(fDigit->GetSector(1)==0){
477               GetDigitsData(1)->Fill(fDigit->GetADCValue(0));
478               GetDigitsData(7)->Fill(fDigit->GetADCValue(1));
479       }
480       else if(fDigit->GetSector(1)==1){
481               GetDigitsData(20)->Fill(fDigit->GetADCValue(0));
482               GetDigitsData(36)->Fill(fDigit->GetADCValue(1));
483       }
484       else if(fDigit->GetSector(1)==2){
485               GetDigitsData(21)->Fill(fDigit->GetADCValue(0));
486               GetDigitsData(37)->Fill(fDigit->GetADCValue(1));
487       }
488       else if(fDigit->GetSector(1)==3){
489               GetDigitsData(22)->Fill(fDigit->GetADCValue(0));
490               GetDigitsData(38)->Fill(fDigit->GetADCValue(1));
491       }
492       else if(fDigit->GetSector(1)==4){
493               GetDigitsData(23)->Fill(fDigit->GetADCValue(0));
494               GetDigitsData(39)->Fill(fDigit->GetADCValue(1));
495       }
496     }
497     else if(fDigit->GetSector(0)==5){
498       if(fDigit->GetSector(1)==0){
499               GetDigitsData(3)->Fill(fDigit->GetADCValue(0));
500               GetDigitsData(9)->Fill(fDigit->GetADCValue(1));
501       }
502       else if(fDigit->GetSector(1)==1){
503               GetDigitsData(24)->Fill(fDigit->GetADCValue(0));
504               GetDigitsData(40)->Fill(fDigit->GetADCValue(1));
505       }
506       else if(fDigit->GetSector(1)==2){
507               GetDigitsData(25)->Fill(fDigit->GetADCValue(0));
508               GetDigitsData(41)->Fill(fDigit->GetADCValue(1));
509       }
510       else if(fDigit->GetSector(1)==3){
511               GetDigitsData(26)->Fill(fDigit->GetADCValue(0));
512               GetDigitsData(42)->Fill(fDigit->GetADCValue(1));
513       }
514       else if(fDigit->GetSector(1)==4){
515               GetDigitsData(27)->Fill(fDigit->GetADCValue(0));
516               GetDigitsData(43)->Fill(fDigit->GetADCValue(1));
517       }
518     }
519   }
520 }
521
522 //____________________________________________________________________________
523 void AliZDCQADataMakerRec::MakeRecPoints(TTree * clustersTree)
524 {
525   // Filling QA histos from RecPoints
526
527   TBranch *branch = clustersTree->GetBranch("ZDC");
528   if(!branch){ 
529     AliError("Can't get the ZDC branch for rec points!");
530     return;
531   }
532   
533   if(!GetRecPointsData(0)) InitRecPoints() ;
534
535   Float_t sum_ZNC=0., sum_ZNA=0., sum_ZPC=0., sum_ZPA=0.;
536   Float_t sumQ_ZNC=0., sumQ_ZNA=0., sumQ_ZPC=0., sumQ_ZPA=0.;
537
538   AliZDCReco reco;
539   AliZDCReco* preco = &reco;
540   clustersTree->SetBranchAddress("ZDC", &preco);
541
542   clustersTree->GetEntry(0);
543   for(Int_t i=0; i<5; i++){
544     sum_ZNC += reco.GetZN1HREnTow(i);
545     sum_ZPC += reco.GetZN2HREnTow(i);
546     sum_ZNA += reco.GetZP1HREnTow(i);
547     sum_ZPA += reco.GetZP2HREnTow(i);
548     if(i==0){
549       GetRecPointsData(8)->Fill(reco.GetZN1HREnTow(i));
550       GetRecPointsData(9)->Fill(reco.GetZN2HREnTow(i));
551       GetRecPointsData(10)->Fill(reco.GetZP1HREnTow(i));
552       GetRecPointsData(11)->Fill(reco.GetZP2HREnTow(i));
553     }
554     else{
555       sumQ_ZNC += reco.GetZN1HREnTow(i);
556       sumQ_ZPC += reco.GetZN2HREnTow(i);
557       sumQ_ZNA += reco.GetZP1HREnTow(i);
558       sumQ_ZPA += reco.GetZP2HREnTow(i);
559     }
560   }
561   
562   GetRecPointsData(0)->Fill(sum_ZNC);
563   GetRecPointsData(1)->Fill(sum_ZPC);
564   GetRecPointsData(2)->Fill(sum_ZNA);
565   GetRecPointsData(3)->Fill(sum_ZPA);
566   //
567   GetRecPointsData(4)->Fill(sumQ_ZNC);
568   GetRecPointsData(5)->Fill(sumQ_ZPC);
569   GetRecPointsData(6)->Fill(sumQ_ZNA);
570   GetRecPointsData(7)->Fill(sumQ_ZPA);
571   
572 }  
573
574 //____________________________________________________________________________
575 void AliZDCQADataMakerRec::MakeRaws(AliRawReader *rawReader)
576 {
577   // Filling Raws QA histos
578   //
579   // Check if histograms already created for this Event Specie
580   if(!GetRawsData(0)) InitRaws();
581   
582   AliZDCRawStream stream(rawReader);
583   while(stream.Next()){
584     if(stream.IsADCDataWord() && 
585      (stream.GetADCModule()==0 || stream.GetADCModule()==1)){
586      
587        if(stream.GetSector(0)==1 && stream.GetSector(1)!=5){ 
588          if(stream.GetSector(1)==0){
589            if(stream.GetADCGain()==0) GetRawsData(0)->Fill(stream.GetADCValue());
590            else if(stream.GetADCGain()==1) GetRawsData(6)->Fill(stream.GetADCValue());
591          }
592          else if(stream.GetSector(1)==1){
593            if(stream.GetADCGain()==0) GetRawsData(12)->Fill(stream.GetADCValue());
594            else if(stream.GetADCGain()==1) GetRawsData(28)->Fill(stream.GetADCValue());
595          }
596          else if(stream.GetSector(1)==2){
597            if(stream.GetADCGain()==0) GetRawsData(13)->Fill(stream.GetADCValue());
598            else if(stream.GetADCGain()==1) GetRawsData(29)->Fill(stream.GetADCValue());
599          }
600          else if(stream.GetSector(1)==3){
601            if(stream.GetADCGain()==0) GetRawsData(14)->Fill(stream.GetADCValue());
602            else if(stream.GetADCGain()==1) GetRawsData(30)->Fill(stream.GetADCValue());
603          }
604          else if(stream.GetSector(1)==4){
605            if(stream.GetADCGain()==0) GetRawsData(15)->Fill(stream.GetADCValue());
606            else if(stream.GetADCGain()==1) GetRawsData(31)->Fill(stream.GetADCValue());
607          }
608        }
609        else if(stream.GetSector(0)==2){ 
610          if(stream.GetSector(1)==0){
611            if(stream.GetADCGain()==0) GetRawsData(2)->Fill(stream.GetADCValue());
612            else if(stream.GetADCGain()==1) GetRawsData(8)->Fill(stream.GetADCValue());
613          }
614          else if(stream.GetSector(1)==1){
615            if(stream.GetADCGain()==0) GetRawsData(16)->Fill(stream.GetADCValue());
616            else if(stream.GetADCGain()==1) GetRawsData(32)->Fill(stream.GetADCValue());
617          }
618          else if(stream.GetSector(1)==2){
619            if(stream.GetADCGain()==0) GetRawsData(17)->Fill(stream.GetADCValue());
620            else if(stream.GetADCGain()==1) GetRawsData(33)->Fill(stream.GetADCValue());
621          }
622          else if(stream.GetSector(1)==3){
623            if(stream.GetADCGain()==0) GetRawsData(18)->Fill(stream.GetADCValue());
624            else if(stream.GetADCGain()==1) GetRawsData(34)->Fill(stream.GetADCValue());
625          }
626          else if(stream.GetSector(1)==4){
627            if(stream.GetADCGain()==0) GetRawsData(19)->Fill(stream.GetADCValue());
628            else if(stream.GetADCGain()==1) GetRawsData(35)->Fill(stream.GetADCValue());
629          }
630        }
631        else if(stream.GetSector(0)==3){
632          if(stream.GetSector(1)==1){ // ZEM1
633            if(stream.GetADCGain()==0) GetRawsData(4)->Fill(stream.GetADCValue());
634            else GetRawsData(10)->Fill(stream.GetADCValue());
635          }
636          else if(stream.GetSector(1)==2){ // ZEM2
637            if(stream.GetADCGain()==0) GetRawsData(5)->Fill(stream.GetADCValue());
638            else GetRawsData(11)->Fill(stream.GetADCValue());
639          }
640        }
641        else if(stream.GetSector(0)==4 && stream.GetSector(1)!=5){
642          if(stream.GetSector(1)==0){
643            if(stream.GetADCGain()==0) GetRawsData(1)->Fill(stream.GetADCValue());
644            else if(stream.GetADCGain()==1) GetRawsData(7)->Fill(stream.GetADCValue());
645          }
646          else if(stream.GetSector(1)==1){
647            if(stream.GetADCGain()==0) GetRawsData(20)->Fill(stream.GetADCValue());
648            else if(stream.GetADCGain()==1) GetRawsData(36)->Fill(stream.GetADCValue());
649          }
650          else if(stream.GetSector(1)==2){
651            if(stream.GetADCGain()==0) GetRawsData(21)->Fill(stream.GetADCValue());
652            else if(stream.GetADCGain()==1) GetRawsData(37)->Fill(stream.GetADCValue());
653          }
654          else if(stream.GetSector(1)==3){
655            if(stream.GetADCGain()==0) GetRawsData(22)->Fill(stream.GetADCValue());
656            else if(stream.GetADCGain()==1) GetRawsData(38)->Fill(stream.GetADCValue());
657          }
658          else if(stream.GetSector(1)==4){
659            if(stream.GetADCGain()==0) GetRawsData(23)->Fill(stream.GetADCValue());
660            else if(stream.GetADCGain()==1) GetRawsData(39)->Fill(stream.GetADCValue());
661          }
662        }
663        else if(stream.GetSector(0)==5){
664          if(stream.GetSector(1)==0){
665            if(stream.GetADCGain()==0) GetRawsData(3)->Fill(stream.GetADCValue());
666            else if(stream.GetADCGain()==1) GetRawsData(9)->Fill(stream.GetADCValue());
667          }
668          else if(stream.GetSector(1)==1){
669            if(stream.GetADCGain()==0) GetRawsData(24)->Fill(stream.GetADCValue());
670            else if(stream.GetADCGain()==1) GetRawsData(40)->Fill(stream.GetADCValue());
671          }
672          else if(stream.GetSector(1)==2){
673            if(stream.GetADCGain()==0) GetRawsData(25)->Fill(stream.GetADCValue());
674            else if(stream.GetADCGain()==1) GetRawsData(41)->Fill(stream.GetADCValue());
675          }
676          else if(stream.GetSector(1)==3){
677            if(stream.GetADCGain()==0) GetRawsData(26)->Fill(stream.GetADCValue());
678            else if(stream.GetADCGain()==1) GetRawsData(42)->Fill(stream.GetADCValue());
679          }
680          else if(stream.GetSector(1)==4){
681            if(stream.GetADCGain()==0) GetRawsData(27)->Fill(stream.GetADCValue());
682            else if(stream.GetADCGain()==1) GetRawsData(43)->Fill(stream.GetADCValue());
683          }
684        }
685     }
686     
687   }
688
689 //   stream.Delete();
690 }
691
692 //____________________________________________________________________________
693 void AliZDCQADataMakerRec::MakeESDs(AliESDEvent * esd)
694 {
695   // make QA data from ESDs
696   //
697   
698   // Check id histograms already created for this Event Specie
699   if(!GetESDsData(0))
700     InitESDs() ;
701
702   AliESDZDC * zdcESD =  esd->GetESDZDC();
703   //
704   TString beamType = esd->GetBeamType();
705   Double_t centr_ZNC[2]={999.,999}, centr_ZNA[2]={999.,999};
706   if(((beamType.CompareTo("pp"))==0) || ((beamType.CompareTo("p-p"))==0)
707      ||((beamType.CompareTo("PP"))==0) || ((beamType.CompareTo("P-P"))==0)){
708     zdcESD->GetZNCentroidInpp(centr_ZNC, centr_ZNA);
709   }
710   else if((beamType.CompareTo("A-A")) == 0){
711     Float_t beamEne = esd->GetBeamEnergy();
712     zdcESD->GetZNCentroidInPbPb(beamEne, centr_ZNC, centr_ZNA);
713   }
714   GetESDsData(0)->Fill(centr_ZNC[0], centr_ZNC[1]);
715   GetESDsData(1)->Fill(centr_ZNA[0], centr_ZNA[1]);
716
717   //
718   GetESDsData(2)->Fill(esd->GetZDCN1Energy());
719   GetESDsData(3)->Fill(esd->GetZDCN2Energy());
720   GetESDsData(4)->Fill(esd->GetZDCP1Energy());
721   GetESDsData(5)->Fill(esd->GetZDCP2Energy());
722   //
723   Double_t sumQZNC=0., sumQZPC=0., sumQZNA=0., sumQZPA=0.;
724   Double_t sumQZNC_lg=0., sumQZPC_lg=0., sumQZNA_lg=0., sumQZPA_lg=0.;
725   //
726   const Double_t *towZNC, *towZPC, *towZNA, *towZPA;
727   const Double_t *towZNC_lg, *towZPC_lg, *towZNA_lg, *towZPA_lg;
728   //
729   towZNC = zdcESD->GetZN1TowerEnergy();
730   towZPC = zdcESD->GetZP1TowerEnergy();
731   towZNA = zdcESD->GetZN2TowerEnergy();
732   towZPA = zdcESD->GetZP2TowerEnergy();
733   //
734   towZNC_lg = zdcESD->GetZN1TowerEnergyLR();
735   towZPC_lg = zdcESD->GetZP1TowerEnergyLR();
736   towZNA_lg = zdcESD->GetZN2TowerEnergyLR();
737   towZPA_lg = zdcESD->GetZP2TowerEnergyLR();
738   //
739   for(Int_t i=0; i<5; i++){
740      if(i==0){
741        GetESDsData(10)->Fill(towZNC[i]);
742        GetESDsData(11)->Fill(towZNA[i]);
743        GetESDsData(12)->Fill(towZPC[i]);
744        GetESDsData(13)->Fill(towZPA[i]);
745        //
746        GetESDsData(22)->Fill(towZNC_lg[i]);
747        GetESDsData(23)->Fill(towZNA_lg[i]);
748        GetESDsData(24)->Fill(towZPC_lg[i]);
749        GetESDsData(25)->Fill(towZPA_lg[i]);
750      }
751      else{
752        sumQZNC += towZNC[i];
753        sumQZPC += towZPC[i];
754        sumQZNA += towZNA[i];
755        sumQZPA += towZPA[i];
756        //
757        sumQZNC_lg += towZNC_lg[i];
758        sumQZPC_lg += towZPC_lg[i];
759        sumQZNA_lg += towZNA_lg[i];
760        sumQZPA_lg += towZPA_lg[i];
761      }
762   }
763   GetESDsData(6)->Fill(sumQZNC);
764   GetESDsData(7)->Fill(sumQZNA);
765   GetESDsData(8)->Fill(sumQZPC);
766   GetESDsData(9)->Fill(sumQZPA);
767   //
768   GetESDsData(18)->Fill(sumQZNC_lg);
769   GetESDsData(19)->Fill(sumQZNA_lg);
770   GetESDsData(20)->Fill(sumQZPC_lg);
771   GetESDsData(21)->Fill(sumQZPA_lg);
772 }
773
774 //____________________________________________________________________________
775 void AliZDCQADataMakerRec::StartOfDetectorCycle()
776 {
777   //Detector specific actions at start of cycle
778   
779 }
780
781 //____________________________________________________________________________ 
782 void AliZDCQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
783 {
784   //Detector specific actions at end of cycle
785   // do the QA checking
786   AliQAChecker::Instance()->Run(AliQAv1::kZDC, task, list) ;  
787 }
788