]>
Commit | Line | Data |
---|---|---|
3d2cda92 | 1 | /**************************************************************************\r |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r | |
3 | * *\r | |
4 | * Author: The ALICE Off-line Project. *\r | |
5 | * Contributors are mentioned in the code where appropriate. *\r | |
6 | * *\r | |
7 | * Permission to use, copy, modify and distribute this software and its *\r | |
8 | * documentation strictly for non-commercial purposes is hereby granted *\r | |
9 | * without fee, provided that the above copyright notice appears in all *\r | |
10 | * copies and that both the copyright notice and this permission notice *\r | |
11 | * appear in the supporting documentation. The authors make no claims *\r | |
12 | * about the suitability of this software for any purpose. It is *\r | |
13 | * provided "as is" without express or implied warranty. *\r | |
14 | **************************************************************************/\r | |
fdc38bb2 | 15 | \r |
3d2cda92 | 16 | // --- Standard library ---\r |
17 | #include <Riostream.h>\r | |
18 | // --- ROOT system ---\r | |
19 | #include <TClonesArray.h>\r | |
7d297381 | 20 | #include <TFile.h> \r |
3d2cda92 | 21 | #include <TH1F.h> \r |
22 | #include <TH2F.h>\r | |
23 | #include <TBranch.h>\r | |
24 | #include <TTree.h>\r | |
25 | // --- AliRoot header files ---\r | |
26 | #include "AliLog.h"\r | |
27 | #include "AliQAChecker.h"\r | |
28 | #include "AliZDCQADataMakerSim.h"\r | |
29 | #include "AliZDCHit.h"\r | |
30 | #include "AliZDCDigit.h"\r | |
31 | #include "AliZDCRawStream.h"\r | |
32 | \r | |
33 | ClassImp(AliZDCQADataMakerSim)\r | |
34 | \r | |
35 | //____________________________________________________________________________ \r | |
36 | AliZDCQADataMakerSim::AliZDCQADataMakerSim() : \r | |
4e25ac79 | 37 | AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kZDC), "ZDC Quality Assurance Data Maker"),\r |
66317fbe | 38 | fHits(0),\r |
39 | fDigit(0)\r | |
3d2cda92 | 40 | {\r |
41 | // ctor\r | |
42 | }\r | |
43 | \r | |
44 | //____________________________________________________________________________ \r | |
45 | AliZDCQADataMakerSim::AliZDCQADataMakerSim(const AliZDCQADataMakerSim& qadm) :\r | |
46 | AliQADataMakerSim(), \r | |
66317fbe | 47 | fHits(0),\r |
48 | fDigit(0) \r | |
3d2cda92 | 49 | {\r |
50 | //copy ctor \r | |
51 | SetName((const char*)qadm.GetName()); \r | |
52 | SetTitle((const char*)qadm.GetTitle()); \r | |
53 | }\r | |
54 | \r | |
55 | //__________________________________________________________________\r | |
56 | AliZDCQADataMakerSim& AliZDCQADataMakerSim::operator = (const AliZDCQADataMakerSim& qadm )\r | |
57 | {\r | |
58 | // Equal operator.\r | |
59 | this->~AliZDCQADataMakerSim();\r | |
60 | new(this) AliZDCQADataMakerSim(qadm);\r | |
61 | return *this;\r | |
62 | }\r | |
63 | \r | |
64 | //____________________________________________________________________________ \r | |
65 | void AliZDCQADataMakerSim::InitHits()\r | |
66 | {\r | |
67 | // create Hits histograms in Hits subdir\r | |
68 | //\r | |
7d297381 | 69 | const Bool_t expert = kTRUE ; \r |
70 | const Bool_t image = kTRUE ; \r | |
71 | \r | |
db72ff3b | 72 | TH2F * hZNCh = new TH2F("hZNCh", "Hits centroid in ZNC;Centroid position [cm];Counts", 100, -5.,5.,100,-5.,5.);\r |
73 | TH2F * hZNAh = new TH2F("hZNAh", "Hits centroid in ZNA;Centroid position [cm];Counts", 100, -5.,5.,100,-5.,5.);\r | |
fdc38bb2 | 74 | // NB -> For the moment no check is performesd on ZP centroids\r |
75 | // TH2F * hZPCh = new TH2F("hZPCh", "Hits centroid in ZPC", 100,-12.,12.,100,-12.,12.); \r | |
76 | // TH2F * hZPAh = new TH2F("hZPAh", "Hits centroid in ZPA", 100,-12.,12.,100,-12.,12.); \r | |
7d297381 | 77 | Add2HitsList(hZNCh, 0, !expert, image);\r |
78 | Add2HitsList(hZNAh, 1, !expert, image);\r | |
79 | // Add2HitsList(hZPCh, 2, !expert, image);\r | |
80 | // Add2HitsList(hZPAh, 3, !expert, image);\r | |
3d2cda92 | 81 | }\r |
82 | \r | |
83 | \r | |
84 | //____________________________________________________________________________ \r | |
85 | void AliZDCQADataMakerSim::InitDigits()\r | |
86 | {\r | |
87 | // create Digits histograms in Digits subdir\r | |
88 | //\r | |
7d297381 | 89 | const Bool_t expert = kTRUE ; \r |
90 | const Bool_t image = kTRUE ; \r | |
91 | \r | |
fdc38bb2 | 92 | // ------------------- HIGH GAIN CHAIN ---------------------------\r |
db72ff3b | 93 | TH1F * hDigZNCTot = new TH1F("hDigZNCTot", "Signal in ZNC;Amplitude [ADC counts];Counts", 100, 0., 6000.);\r |
94 | TH1F * hDigZNATot = new TH1F("hDigZNATot", "Signal in ZNA;Amplitude [ADC counts];Counts", 100, 0., 6000.);\r | |
95 | TH1F * hDigZPCTot = new TH1F("hDigZPCTot", "Signal in ZPC;Amplitude [ADC counts];Counts", 100, 0., 6000.);\r | |
96 | TH1F * hDigZPATot = new TH1F("hDigZPATot", "Signal in ZPA;Amplitude [ADC counts];Counts", 100, 0., 6000.);\r | |
7d297381 | 97 | Add2DigitsList(hDigZNCTot, 0, !expert, image);\r |
98 | Add2DigitsList(hDigZNATot, 1, !expert, image);\r | |
99 | Add2DigitsList(hDigZPCTot, 2, !expert, image);\r | |
100 | Add2DigitsList(hDigZPATot, 3, !expert, image);\r | |
3d2cda92 | 101 | //\r |
db72ff3b | 102 | TH1F * hDigSumQZNC = new TH1F("hDigSumQZNC", "Signal in 4 ZNC PMQ;Amplitude [ADC counts];Counts",100, 0., 4000.);\r |
103 | TH1F * hDigSumQZNA = new TH1F("hDigSumQZNA", "Signal in 4 ZNA PMQ;Amplitude [ADC counts];Counts",100, 0., 4000.);\r | |
104 | TH1F * hDigSumQZPC = new TH1F("hDigSumQZPC", "Signal in 4 ZPC PMQ;Amplitude [ADC counts];Counts",100, 0., 4000.);\r | |
105 | TH1F * hDigSumQZPA = new TH1F("hDigSumQZPA", "Signal in 4 ZPA PMQ;Amplitude [ADC counts];Counts",100, 0., 4000.);\r | |
7d297381 | 106 | Add2DigitsList(hDigSumQZNC, 4, expert, !image);\r |
107 | Add2DigitsList(hDigSumQZNA, 5, expert, !image);\r | |
108 | Add2DigitsList(hDigSumQZPC, 6, expert, !image);\r | |
109 | Add2DigitsList(hDigSumQZPA, 7, expert, !image);\r | |
3d2cda92 | 110 | //\r |
db72ff3b | 111 | TH1F * hDigPMCZNC = new TH1F("hDigPMCZNC", "Signal in ZNC PMC;Amplitude [ADC counts];Counts",100, 0., 4000.);\r |
112 | TH1F * hDigPMCZNA = new TH1F("hDigPMCZNA", "Signal in ZNA PMC;Amplitude [ADC counts];Counts",100, 0., 4000.);\r | |
113 | TH1F * hDigPMCZPC = new TH1F("hDigPMCZPC", "Signal in ZPC PMC;Amplitude [ADC counts];Counts",100, 0., 4000.);\r | |
114 | TH1F * hDigPMCZPA = new TH1F("hDigPMCZPA", "Signal in ZPA PMC;Amplitude [ADC counts];Counts",100, 0., 4000.);\r | |
7d297381 | 115 | Add2DigitsList(hDigPMCZNC, 8, expert, !image);\r |
116 | Add2DigitsList(hDigPMCZNA, 9, expert, !image);\r | |
117 | Add2DigitsList(hDigPMCZPC, 10, expert, !image);\r | |
118 | Add2DigitsList(hDigPMCZPA, 11, expert, !image);\r | |
3d2cda92 | 119 | // \r |
120 | // ------------------- LOW GAIN CHAIN ---------------------------\r | |
fdc38bb2 | 121 | /* TH1F * hDigZNCTotlg = new TH1F("hDigZNCTotlg", "Digit lg signal in ZNC", 100, 0., 6000.);\r |
3d2cda92 | 122 | TH1F * hDigZNATotlg = new TH1F("hDigZNATotlg", "Digit lg signal in ZNA", 100, 0., 6000.);\r |
fdc38bb2 | 123 | TH1F * hDigZPCTotlg = new TH1F("hDigZPCTotlg", "Digit lg signal in ZPC", 100, 0., 6000.);\r |
124 | TH1F * hDigZPATotlg = new TH1F("hDigZPATotlg", "Digit lg signal in ZPA", 100, 0., 6000.);\r | |
7d297381 | 125 | Add2DigitsList(hDigZNCTotlg, 12, !expert, image);\r |
126 | Add2DigitsList(hDigZNATotlg, 13, !expert, image);\r | |
127 | Add2DigitsList(hDigZPCTotlg, 14, !expert, image);\r | |
128 | Add2DigitsList(hDigZPATotlg, 15, !expert, image);\r | |
3d2cda92 | 129 | //\r |
fdc38bb2 | 130 | TH1F * hDigSumQZNClg = new TH1F("hDigSumQZNClg", "Signal in 4 ZNC PMQlg",100, 0., 4000.);\r |
131 | TH1F * hDigSumQZNAlg = new TH1F("hDigSumQZNAlg", "Signal in 4 ZNA PMQlg",100, 0., 4000.);\r | |
132 | TH1F * hDigSumQZPClg = new TH1F("hDigSumQZPClg", "Signal in 4 ZPC PMQlg",100, 0., 4000.);\r | |
133 | TH1F * hDigSumQZPAlg = new TH1F("hDigSumQZPAlg", "Signal in 4 ZPA PMQlg",100, 0., 4000.);\r | |
7d297381 | 134 | Add2DigitsList(hDigSumQZNClg, 16, expert, !image);\r |
135 | Add2DigitsList(hDigSumQZNAlg, 17, expert, !image);\r | |
136 | Add2DigitsList(hDigSumQZPClg, 18, expert, !image);\r | |
137 | Add2DigitsList(hDigSumQZPAlg, 19, expert, !image);\r | |
3d2cda92 | 138 | //\r |
fdc38bb2 | 139 | TH1F * hDigPMCZNClg = new TH1F("hDigPMCZNClg", "Signal in ZNC PMClg",100, 0., 4000.);\r |
140 | TH1F * hDigPMCZNAlg = new TH1F("hDigPMCZNAlg", "Signal in ZNA PMClg",100, 0., 4000.);\r | |
141 | TH1F * hDigPMCZPClg = new TH1F("hDigPMCZPClg", "Signal in ZPC PMClg",100, 0., 4000.);\r | |
142 | TH1F * hDigPMCZPAlg = new TH1F("hDigPMCZPAlg", "Signal in ZPA PMClg",100, 0., 4000.);\r | |
7d297381 | 143 | Add2DigitsList(hDigPMCZNClg, 20, expert, !image);\r |
144 | Add2DigitsList(hDigPMCZNAlg, 21, expert, !image);\r | |
145 | Add2DigitsList(hDigPMCZPClg, 22, expert, !image);\r | |
146 | Add2DigitsList(hDigPMCZPAlg, 23, expert, !image);\r | |
fdc38bb2 | 147 | */\r |
3d2cda92 | 148 | }\r |
149 | \r | |
150 | //____________________________________________________________________________\r | |
151 | void AliZDCQADataMakerSim::MakeHits(TClonesArray * /*data*/)\r | |
152 | {\r | |
153 | //filling QA histos for Hits\r | |
154 | //\r | |
66317fbe | 155 | TIter next(fHits); \r |
3d2cda92 | 156 | AliZDCHit * hit; \r |
157 | while((hit = dynamic_cast<AliZDCHit *>(next()))){\r | |
158 | if(hit->GetVolume(0)==1) GetHitsData(0)->Fill(hit->GetXImpact(),hit->GetYImpact());\r | |
fdc38bb2 | 159 | else if(hit->GetVolume(0)==4) GetHitsData(1)->Fill(hit->GetXImpact(), hit->GetYImpact());\r |
160 | // else if(hit->GetVolume(0)==2) GetHitsData(1)->Fill(hit->GetXImpact(), hit->GetYImpact());\r | |
161 | // else if(hit->GetVolume(0)==5) GetHitsData(3)->Fill(hit->GetXImpact(), hit->GetYImpact());\r | |
3d2cda92 | 162 | }\r |
163 | }\r | |
164 | \r | |
165 | //___________________________________________________________________________\r | |
166 | void AliZDCQADataMakerSim::MakeHits(TTree * hitTree)\r | |
167 | {\r | |
168 | // make QA data from Hit Tree\r | |
169 | //\r | |
170 | if(!hitTree){\r | |
171 | AliError("Hit Tree not found!"); \r | |
172 | return;\r | |
173 | }\r | |
174 | //\r | |
175 | \r | |
176 | TBranch * branch = hitTree->GetBranch("ZDC") ;\r | |
3d2cda92 | 177 | \r |
178 | if(!branch){\r | |
179 | AliError("ZDC branch in Hit Tree not found!"); \r | |
180 | return;\r | |
fdc38bb2 | 181 | } \r |
182 | else{\r | |
183 | char** add = (char**) (branch->GetAddress());\r | |
184 | if(add){\r | |
185 | fHits = (TClonesArray*)(*add);\r | |
186 | } \r | |
187 | else{\r | |
188 | if(!fHits) fHits = new TClonesArray("AliZDCHit", 1000);\r | |
189 | branch->SetAddress(&fHits);\r | |
190 | }\r | |
191 | Int_t ntracks = (Int_t) hitTree->GetEntries();\r | |
192 | //printf("\n\t *** no.track %d\n",ntracks);\r | |
193 | if (ntracks<=0) return;\r | |
194 | //\r | |
195 | for(Int_t itrack=0; itrack<ntracks; itrack++){\r | |
196 | \r | |
197 | branch->GetEntry(itrack);\r | |
198 | //\r | |
199 | //printf("\t *** track %d",itrack);\r | |
200 | //hits->Print("");\r | |
201 | //printf("\n");\r | |
202 | //\r | |
203 | MakeHits(); \r | |
204 | fHits->Clear();\r | |
205 | } \r | |
3d2cda92 | 206 | }\r |
207 | }\r | |
208 | \r | |
66317fbe | 209 | //___________________________________________________________________________\r |
210 | void AliZDCQADataMakerSim::MakeDigits(TTree *digitTree )\r | |
211 | {\r | |
fdc38bb2 | 212 | // makes data from Digit Tree\r |
213 | TBranch * branch = digitTree->GetBranch("ZDC");\r | |
214 | if(!branch){\r | |
215 | AliError("ZDC branch in Digit Tree not found"); \r | |
216 | return;\r | |
217 | } \r | |
218 | char** add = (char**) (branch->GetAddress());\r | |
219 | if(add){\r | |
220 | fDigit = (AliZDCDigit*)(*add);\r | |
221 | } \r | |
222 | else{\r | |
223 | if(!fDigit) fDigit = new AliZDCDigit();\r | |
224 | branch->SetAddress(&fDigit);\r | |
225 | }\r | |
226 | \r | |
227 | Int_t ndig = digitTree->GetEntries();\r | |
66317fbe | 228 | \r |
fdc38bb2 | 229 | Float_t adcSum_ZNC=0., adcSum_ZNA=0., adcSum_ZPC=0., adcSum_ZPA=0.;\r |
230 | Float_t adcSumQ_ZNC=0., adcSumQ_ZNA=0., adcSumQ_ZPC=0., adcSumQ_ZPA=0.;\r | |
231 | //Float_t adcSum_ZNC_lg=0., adcSum_ZNA_lg=0., adcSum_ZPC_lg=0., adcSum_ZPA_lg=0.;\r | |
232 | //Float_t adcSumQ_ZNC_lg=0., adcSumQ_ZNA_lg=0., adcSumQ_ZPC_lg=0., adcSumQ_ZPA_lg=0.;\r | |
3d2cda92 | 233 | //\r |
fdc38bb2 | 234 | for(Int_t i = 0; i < ndig; i++){\r |
66317fbe | 235 | digitTree->GetEntry(i);\r |
236 | if(fDigit->GetSector(0)==1){\r | |
fdc38bb2 | 237 | adcSum_ZNC += fDigit->GetADCValue(0);\r |
238 | //adcSum_ZNC_lg += fDigit->GetADCValue(1);\r | |
66317fbe | 239 | //\r |
240 | if(fDigit->GetSector(1)!=0){\r | |
fdc38bb2 | 241 | adcSumQ_ZNC += fDigit->GetADCValue(0);\r |
242 | //adcSumQ_ZNC_lg+= fDigit->GetADCValue(1);\r | |
66317fbe | 243 | }\r |
244 | else{\r | |
245 | GetDigitsData(8)->Fill(fDigit->GetADCValue(0));\r | |
fdc38bb2 | 246 | //GetDigitsData(20)->Fill(fDigit->GetADCValue(1));\r |
66317fbe | 247 | }\r |
3d2cda92 | 248 | }\r |
66317fbe | 249 | else if(fDigit->GetSector(0)==2){\r |
fdc38bb2 | 250 | adcSum_ZPC += fDigit->GetADCValue(0);\r |
251 | //adcSum_ZPC_lg += fDigit->GetADCValue(1);\r | |
66317fbe | 252 | //\r |
253 | if(fDigit->GetSector(1)!=0){\r | |
fdc38bb2 | 254 | adcSumQ_ZPC += fDigit->GetADCValue(0);\r |
255 | //adcSumQ_ZPC_lg+= fDigit->GetADCValue(1);\r | |
66317fbe | 256 | }\r |
257 | else{\r | |
fdc38bb2 | 258 | GetDigitsData(10)->Fill(fDigit->GetADCValue(0));\r |
259 | //GetDigitsData(22)->Fill(fDigit->GetADCValue(1));\r | |
66317fbe | 260 | }\r |
3d2cda92 | 261 | }\r |
66317fbe | 262 | else if(fDigit->GetSector(0)==4){\r |
fdc38bb2 | 263 | adcSum_ZNA += fDigit->GetADCValue(0);\r |
264 | //adcSum_ZNA_lg += fDigit->GetADCValue(1);\r | |
66317fbe | 265 | //\r |
266 | if(fDigit->GetSector(1)!=0){\r | |
fdc38bb2 | 267 | adcSumQ_ZNA += fDigit->GetADCValue(0);\r |
268 | //adcSumQ_ZNA_lg+= fDigit->GetADCValue(1);\r | |
66317fbe | 269 | }\r |
270 | else{\r | |
fdc38bb2 | 271 | GetDigitsData(9)->Fill(fDigit->GetADCValue(0));\r |
272 | //GetDigitsData(21)->Fill(fDigit->GetADCValue(1));\r | |
66317fbe | 273 | }\r |
3d2cda92 | 274 | }\r |
66317fbe | 275 | else if(fDigit->GetSector(0)==5){\r |
fdc38bb2 | 276 | adcSum_ZPA += fDigit->GetADCValue(0);\r |
277 | //adcSum_ZPA_lg += fDigit->GetADCValue(1);\r | |
66317fbe | 278 | //\r |
279 | if(fDigit->GetSector(1)!=0){\r | |
fdc38bb2 | 280 | adcSumQ_ZPA += fDigit->GetADCValue(0);\r |
281 | //adcSumQ_ZPA_lg+= fDigit->GetADCValue(1);\r | |
66317fbe | 282 | }\r |
283 | else{\r | |
284 | GetDigitsData(11)->Fill(fDigit->GetADCValue(0));\r | |
fdc38bb2 | 285 | //GetDigitsData(23)->Fill(fDigit->GetADCValue(1));\r |
66317fbe | 286 | }\r |
3d2cda92 | 287 | }\r |
3d2cda92 | 288 | }\r |
289 | //\r | |
fdc38bb2 | 290 | GetDigitsData(0)->Fill(adcSum_ZNC);\r |
291 | GetDigitsData(1)->Fill(adcSum_ZNA);\r | |
292 | GetDigitsData(2)->Fill(adcSum_ZPC);\r | |
293 | GetDigitsData(3)->Fill(adcSum_ZPA);\r | |
3d2cda92 | 294 | //\r |
fdc38bb2 | 295 | GetDigitsData(4)->Fill(adcSumQ_ZNC);\r |
296 | GetDigitsData(5)->Fill(adcSumQ_ZNA);\r | |
297 | GetDigitsData(6)->Fill(adcSumQ_ZPC);\r | |
298 | GetDigitsData(7)->Fill(adcSumQ_ZPA);\r | |
3d2cda92 | 299 | //\r |
fdc38bb2 | 300 | /*GetDigitsData(12)->Fill(adcSum_ZNC_lg);\r |
301 | GetDigitsData(13)->Fill(adcSum_ZNA_lg);\r | |
302 | GetDigitsData(14)->Fill(adcSum_ZPC_lg);\r | |
303 | GetDigitsData(15)->Fill(adcSum_ZPA_lg);\r | |
3d2cda92 | 304 | //\r |
fdc38bb2 | 305 | GetDigitsData(16)->Fill(adcSumQ_ZNC_lg);\r |
306 | GetDigitsData(17)->Fill(adcSumQ_ZNA_lg);\r | |
307 | GetDigitsData(18)->Fill(adcSumQ_ZPC_lg);\r | |
308 | GetDigitsData(19)->Fill(adcSumQ_ZPA_lg);*/\r | |
3d2cda92 | 309 | }\r |
310 | \r | |
311 | //____________________________________________________________________________\r | |
312 | void AliZDCQADataMakerSim::StartOfDetectorCycle()\r | |
313 | {\r | |
314 | //Detector specific actions at start of cycle\r | |
315 | \r | |
316 | }\r | |
317 | \r | |
318 | //____________________________________________________________________________ \r | |
4e25ac79 | 319 | void AliZDCQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)\r |
3d2cda92 | 320 | {\r |
fdc38bb2 | 321 | // Detector specific actions at end of cycle\r |
3d2cda92 | 322 | // do the QA checking\r |
4e25ac79 | 323 | AliQAChecker::Instance()->Run(AliQAv1::kZDC, task, list); \r |
3d2cda92 | 324 | }\r |