]>
Commit | Line | Data |
---|---|---|
096292ae | 1 | /************************************************************************** |
2 | * Copyright(c) 2007-2009, 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 | **************************************************************************/ | |
3f905799 | 15 | /* $Id$ */ |
096292ae | 16 | // ************************************************************* |
17 | // Checks the quality assurance | |
18 | // by comparing with reference data | |
19 | // contained in a DB | |
20 | // ------------------------------------------------------------- | |
21 | // W. Ferrarese + P. Cerello Feb 2008 | |
22 | // INFN Torino | |
23 | // M. Nicassio D. Elia INFN Bari March 2008 | |
24 | // maria.nicassio@ba.infn.it | |
25 | ||
26 | ||
27 | // --- ROOT system --- | |
28 | #include <TTree.h> | |
29 | #include <TH1.h> | |
30 | #include <TH2.h> | |
31 | #include <TMath.h> | |
32 | // --- Standard library --- | |
33 | ||
34 | // --- AliRoot header files --- | |
35 | #include "AliITSQADataMakerRec.h" | |
36 | #include "AliITSQASPDDataMakerRec.h" | |
37 | #include "AliLog.h" | |
4e25ac79 | 38 | #include "AliQAv1.h" |
096292ae | 39 | #include "AliRawReader.h" |
379510c2 | 40 | #include "AliITSRawStreamSPD.h" |
41 | #include "AliITSRawStreamSPDErrorLog.h" | |
33626263 | 42 | #include "AliITSdigitSPD.h" |
096292ae | 43 | #include "AliITSRecPoint.h" |
e62fe478 | 44 | #include "AliITSRecPointContainer.h" |
379510c2 | 45 | |
096292ae | 46 | ClassImp(AliITSQASPDDataMakerRec) |
47 | ||
48 | //____________________________________________________________________________ | |
379510c2 | 49 | AliITSQASPDDataMakerRec::AliITSQASPDDataMakerRec(AliITSQADataMakerRec *aliITSQADataMakerRec, Bool_t kMode, Short_t ldc, AliITSRawStreamSPDErrorLog *aliITSRawStreamSPDErrorLog) : |
096292ae | 50 | TObject(), |
51 | fAliITSQADataMakerRec(aliITSQADataMakerRec), | |
52 | fkOnline(kMode), | |
53 | fLDC(ldc), | |
7a0e5776 | 54 | fSPDhRawsTask(0), |
44ed7a66 | 55 | fSPDhDigitsTask(0), |
7a0e5776 | 56 | fSPDhRecPointsTask(0), |
57 | fGenRawsOffset(0), | |
44ed7a66 | 58 | fGenDigitsOffset(0), |
7a0e5776 | 59 | fGenRecPointsOffset(0), |
379510c2 | 60 | fAdvLogger(aliITSRawStreamSPDErrorLog) |
096292ae | 61 | { |
62 | //ctor used to discriminate OnLine-Offline analysis | |
8b7e858c | 63 | //AliInfo(Form("AliRecoParam::kNSpecies %d\n",AliRecoParam::kNSpecies)); |
64 | fGenRawsOffset = new Int_t[AliRecoParam::kNSpecies]; | |
65 | fGenRecPointsOffset = new Int_t[AliRecoParam::kNSpecies]; | |
4a903927 | 66 | fGenDigitsOffset = new Int_t[AliRecoParam::kNSpecies]; |
8b7e858c | 67 | for(Int_t i=0; i<AliRecoParam::kNSpecies;i++) { |
68 | fGenRawsOffset[i] = 0; | |
69 | fGenRecPointsOffset[i] = 0; | |
4a903927 | 70 | fGenDigitsOffset[i]=0; |
8b7e858c | 71 | } |
096292ae | 72 | } |
73 | ||
74 | //____________________________________________________________________________ | |
75 | AliITSQASPDDataMakerRec::AliITSQASPDDataMakerRec(const AliITSQASPDDataMakerRec& qadm) : | |
76 | TObject(), | |
77 | fAliITSQADataMakerRec(qadm.fAliITSQADataMakerRec), | |
78 | fkOnline(qadm.fkOnline), | |
79 | fLDC(qadm.fLDC), | |
7a0e5776 | 80 | fSPDhRawsTask(qadm.fSPDhRawsTask), |
44ed7a66 | 81 | fSPDhDigitsTask(qadm.fSPDhDigitsTask), |
7a0e5776 | 82 | fSPDhRecPointsTask(qadm.fSPDhRecPointsTask), |
83 | fGenRawsOffset(qadm.fGenRawsOffset), | |
44ed7a66 | 84 | fGenDigitsOffset(qadm.fGenDigitsOffset), |
7a0e5776 | 85 | fGenRecPointsOffset(qadm.fGenRecPointsOffset), |
379510c2 | 86 | fAdvLogger(qadm.fAdvLogger) |
096292ae | 87 | { |
88 | //copy ctor | |
89 | fAliITSQADataMakerRec->SetName((const char*)qadm.fAliITSQADataMakerRec->GetName()) ; | |
90 | fAliITSQADataMakerRec->SetTitle((const char*)qadm.fAliITSQADataMakerRec->GetTitle()); | |
91 | } | |
92 | ||
93 | //__________________________________________________________________ | |
94 | AliITSQASPDDataMakerRec::~AliITSQASPDDataMakerRec(){ | |
95 | // destructor | |
379510c2 | 96 | // delete fAdvLogger; |
096292ae | 97 | } |
98 | //__________________________________________________________________ | |
99 | ||
100 | AliITSQASPDDataMakerRec& AliITSQASPDDataMakerRec::operator = (const AliITSQASPDDataMakerRec& qac ) | |
101 | { | |
102 | // Equal operator. | |
103 | this->~AliITSQASPDDataMakerRec(); | |
104 | new(this) AliITSQASPDDataMakerRec(qac); | |
105 | return *this; | |
106 | } | |
107 | ||
108 | //____________________________________________________________________________ | |
109 | void AliITSQASPDDataMakerRec::StartOfDetectorCycle() | |
110 | { | |
111 | //Detector specific actions at start of cycle | |
5379c4a3 | 112 | AliDebug(AliQAv1::GetQADebugLevel(),"AliITSQADM::Start of SPD Cycle\n"); |
096292ae | 113 | } |
114 | ||
115 | //____________________________________________________________________________ | |
66133c2f | 116 | void AliITSQASPDDataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray* /*list*/) |
096292ae | 117 | { |
118 | // launch the QA checking | |
5379c4a3 | 119 | AliDebug(AliQAv1::GetQADebugLevel(),"AliITSDM instantiates checker with Run(AliQAv1::kITS, task, list)\n"); |
096292ae | 120 | |
66133c2f | 121 | Int_t shift = fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]; |
122 | ||
123 | if(task == AliQAv1::kRAWS) { | |
124 | if(fAliITSQADataMakerRec->GetRawsData(1+shift)){ // check if the fired chip histograms is available | |
125 | fAliITSQADataMakerRec->GetRawsData(5+shift)->Divide(fAliITSQADataMakerRec->GetRawsData(0+shift),fAliITSQADataMakerRec->GetRawsData(1+shift)); // FO efficiency | |
126 | fAliITSQADataMakerRec->GetRawsData(6+shift)->Divide(fAliITSQADataMakerRec->GetRawsData(2+shift),fAliITSQADataMakerRec->GetRawsData(1+shift)); // mising FO | |
127 | fAliITSQADataMakerRec->GetRawsData(7+shift)->Divide(fAliITSQADataMakerRec->GetRawsData(3+shift),fAliITSQADataMakerRec->GetRawsData(1+shift)); // Noisy FO | |
128 | } | |
129 | } | |
4e25ac79 | 130 | //AliQAChecker::Instance()->Run( AliQAv1::kITS , task, list); |
096292ae | 131 | } |
132 | ||
133 | //____________________________________________________________________________ | |
eca4fa66 | 134 | Int_t AliITSQASPDDataMakerRec::InitRaws() |
096292ae | 135 | { |
136 | // Initialization for RAW data - SPD - | |
7d297381 | 137 | const Bool_t expert = kTRUE ; |
138 | const Bool_t saveCorr = kTRUE ; | |
139 | const Bool_t image = kTRUE ; | |
eca4fa66 | 140 | Int_t rv = 0 ; |
141 | // fGenRawsOffset = (fAliITSQADataMakerRec->fRawsQAList[AliRecoParam::kDefault])->GetEntries(); | |
66133c2f | 142 | |
8bab7823 | 143 | if(!fAdvLogger) fAdvLogger = new AliITSRawStreamSPDErrorLog(); |
5379c4a3 | 144 | AliDebug(AliQAv1::GetQADebugLevel(), "Book Offline Histograms for SPD\n "); |
439e7a8a | 145 | |
379510c2 | 146 | Char_t name[50]; |
147 | Char_t title[50]; | |
66133c2f | 148 | // offset for online histogram numbering |
149 | Int_t shift = fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]; | |
150 | ||
151 | ||
152 | Float_t range[2] = {-0.5,1199.}; | |
096292ae | 153 | |
66133c2f | 154 | // ********** online histo booking (shift is added) ********************* |
155 | ||
156 | // 0 | |
157 | TH1F *hFastOrFiredChips = new TH1F("SPDFastOrFiredChips_SPD","FastOr-Fired Chips (if pixel hit present) - SPD",fgkSPDchips,range[0],range[1]); | |
158 | hFastOrFiredChips->GetXaxis()->SetTitle("chip index (eq*60 + hs*10 + chip)"); | |
159 | hFastOrFiredChips->GetYaxis()->SetTitle("FastOr-Fired Chip yield"); | |
160 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrFiredChips, 0+shift, expert, !image, !saveCorr); | |
161 | fSPDhRawsTask++; | |
162 | // 1 | |
163 | TH1F *hFiredChips = new TH1F("SPDFiredChips_SPD","FiredChips - SPD",fgkSPDchips,range[0],range[1]); | |
164 | hFiredChips->GetXaxis()->SetTitle("chip index (eq*60 + hs*10 + chip)"); | |
165 | hFiredChips->GetYaxis()->SetTitle("Fired Chip yield"); | |
166 | rv = fAliITSQADataMakerRec->Add2RawsList(hFiredChips, 1+shift, expert, !image, !saveCorr); | |
167 | fSPDhRawsTask++; | |
168 | // 2 | |
169 | TH1F *hFastOrMissing = new TH1F("SPDFastOrMissing_SPD","Missing FastOr signal - SPD",fgkSPDchips,range[0],range[1]); | |
170 | hFastOrMissing->GetXaxis()->SetTitle("chip index (eq*60 + hs*10 + chip)"); | |
171 | hFastOrMissing->GetYaxis()->SetTitle("Missing Fast Or yield"); | |
172 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrMissing, 2+shift, expert, !image, !saveCorr); | |
173 | fSPDhRawsTask++; | |
174 | // 3 | |
175 | TH1F *hFastOrNoisy = new TH1F("SPDFastOrNoisy_SPD","Noisy (no pixel hit present) FastOr signal - SPD",fgkSPDchips,range[0],range[1]); | |
176 | hFastOrNoisy->GetXaxis()->SetTitle("chipkey"); | |
177 | hFastOrNoisy->GetYaxis()->SetTitle("Noisy Fast Or"); | |
178 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrNoisy, 3+shift, expert, !image, !saveCorr); | |
179 | fSPDhRawsTask++; | |
180 | // 4 | |
181 | TH2F *hFastOrCorrelation = new TH2F("SPDFastOrCorrelation_SPD","Fast Or multiplicity correlation - SPD",100,0.,100.,100,0,100); | |
182 | hFastOrCorrelation->GetXaxis()->SetTitle("Layer 1"); | |
183 | hFastOrCorrelation->GetYaxis()->SetTitle("Layer 2"); | |
184 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrCorrelation, 4+shift, expert, !image, !saveCorr); | |
185 | fSPDhRawsTask++; | |
186 | // 5 | |
187 | TH1F *hFastOrEfficiency = new TH1F("SPDFastOrEfficiency_SPD","Fast Or Efficiency : Good FastOr / fired chips (per event) - SPD",fgkSPDchips,range[0],range[1]); | |
188 | hFastOrEfficiency->SetMaximum(1.05); | |
189 | hFastOrEfficiency->GetXaxis()->SetTitle("chip index"); | |
190 | hFastOrEfficiency->GetYaxis()->SetTitle("FastOr efficiency"); | |
191 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrEfficiency, 5+shift, expert, !image, !saveCorr); | |
192 | fSPDhRawsTask++; | |
193 | // 6 | |
194 | TH1F *hFastOrMissingRatio = new TH1F("SPDFastOrMissingRatio_SPD"," Missing Fast Or / fired chips (per event) - SPD",fgkSPDchips,range[0],range[1]); | |
195 | hFastOrMissingRatio->SetMaximum(1.05); | |
196 | hFastOrMissingRatio->GetXaxis()->SetTitle("Layer 1"); | |
197 | hFastOrMissingRatio->GetYaxis()->SetTitle("Layer 2"); | |
198 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrMissingRatio, 6+shift, expert, !image, !saveCorr); | |
199 | fSPDhRawsTask++; | |
200 | // 7 | |
201 | TH1F *hFastOrNoisyRatio = new TH1F("SPDFastOrNoisyRatio_SPD","Noisy Fast Or / fired chips (per event) - SPD",fgkSPDchips,range[0],range[1]); | |
202 | hFastOrNoisyRatio->SetMaximum(1.05); | |
203 | hFastOrNoisyRatio->GetXaxis()->SetTitle("Layer 1"); | |
204 | hFastOrNoisyRatio->GetYaxis()->SetTitle("Layer 2"); | |
205 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrNoisyRatio, 7+shift, expert, !image, !saveCorr); | |
206 | fSPDhRawsTask++; | |
207 | // 8 | |
208 | TH1F *herrorsAll = new TH1F("SPDErrorsAll_SPD","Error codes - SPD",20,0.,20.); | |
209 | herrorsAll->GetXaxis()->SetTitle("DDL"); | |
210 | herrorsAll->GetYaxis()->SetTitle("Entries"); | |
211 | rv = fAliITSQADataMakerRec->Add2RawsList(herrorsAll, kAmoreFoOffset+shift, !expert, image, !saveCorr); | |
212 | fSPDhRawsTask++; | |
213 | ||
214 | //9-28 | |
215 | TH1F **herrors = new TH1F*[20]; | |
216 | for (Int_t iEq=0; iEq<20; iEq++) { | |
217 | sprintf(name,"SPDErrors_SPD_Eq%d",iEq+1); | |
218 | sprintf(title,"Error codes - SPD Eq %d",iEq+1); | |
219 | herrors[iEq] = new TH1F (name,title,fAdvLogger->GetNrErrorCodes(),0,fAdvLogger->GetNrErrorCodes()); | |
220 | herrors[iEq]->SetXTitle("Error Code"); | |
221 | herrors[iEq]->SetYTitle("Nr of errors"); | |
222 | rv = fAliITSQADataMakerRec->Add2RawsList(herrors[iEq], (kAmoreFoOffset+1)+iEq+shift, expert, !image, !saveCorr); | |
223 | fSPDhRawsTask++; | |
224 | } | |
225 | ||
226 | // ********* offline histo booking (offset is added) **************************** | |
227 | ||
228 | // offset for offline histogram numbering | |
229 | Int_t offset = fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()] + kAmoreFoOffset + kAmoreErrorsOffset; | |
230 | // 0 | |
26ee9565 | 231 | TH1F *hlayer = new TH1F("SPDLayPattern_SPD","Layer map - SPD",6,0.,6.); |
379510c2 | 232 | hlayer->GetXaxis()->SetTitle("Layer number"); |
233 | hlayer->GetYaxis()->SetTitle("Entries"); | |
66133c2f | 234 | rv = fAliITSQADataMakerRec->Add2RawsList(hlayer, 0+offset, expert, !image, !saveCorr); |
7a0e5776 | 235 | fSPDhRawsTask++; |
379510c2 | 236 | |
237 | TH1F **hmod = new TH1F*[2]; | |
238 | TH2F **hhitMap = new TH2F*[20]; | |
66133c2f | 239 | |
240 | ||
241 | // 1-2 | |
379510c2 | 242 | for (Int_t iLay=0; iLay<2; iLay++) { |
26ee9565 | 243 | sprintf(name,"SPDModPattern_SPD%d",iLay+1); |
379510c2 | 244 | sprintf(title,"Module map - SPD Layer %d",iLay+1); |
245 | hmod[iLay]=new TH1F(name,title,fgknSPDmodules,0,fgknSPDmodules); | |
246 | hmod[iLay]->GetXaxis()->SetTitle("Module number"); | |
247 | hmod[iLay]->GetYaxis()->SetTitle("Entries"); | |
66133c2f | 248 | rv = fAliITSQADataMakerRec->Add2RawsList(hmod[iLay], 1+iLay+offset, expert, !image, !saveCorr); |
7a0e5776 | 249 | fSPDhRawsTask++; |
379510c2 | 250 | } |
66133c2f | 251 | // 3 |
8ec28eb2 | 252 | TH2F *hHitMapHalfStaveChipSideA |
253 | = new TH2F("SPDHitMapHalfStaveChipSideA_SPD","Hit map per HalfStave per Chip Side A - SPD",60,0.,60.,10,0.,10.); | |
254 | hHitMapHalfStaveChipSideA->GetXaxis()->SetTitle("HalfStave"); | |
255 | hHitMapHalfStaveChipSideA->GetYaxis()->SetTitle("Chip"); | |
66133c2f | 256 | rv = fAliITSQADataMakerRec->Add2RawsList(hHitMapHalfStaveChipSideA, 3+offset, expert, !image, !saveCorr); |
8ec28eb2 | 257 | fSPDhRawsTask++; |
66133c2f | 258 | // 4 |
8ec28eb2 | 259 | TH2F *hHitMapHalfStaveChipSideC |
260 | = new TH2F("SPDHitMapHalfStaveChipSideC_SPD","Hit map per HalfStave per Chip Side C - SPD",60,0.,60.,10,0.,10.); | |
261 | hHitMapHalfStaveChipSideC->GetXaxis()->SetTitle("HalfStave"); | |
262 | hHitMapHalfStaveChipSideC->GetYaxis()->SetTitle("Chip"); | |
66133c2f | 263 | rv = fAliITSQADataMakerRec->Add2RawsList(hHitMapHalfStaveChipSideC, 4+offset, expert, !image, !saveCorr); |
8ec28eb2 | 264 | fSPDhRawsTask++; |
66133c2f | 265 | //5-24 |
379510c2 | 266 | for (Int_t iDDL=0; iDDL<20; iDDL++) { |
26ee9565 | 267 | sprintf(name,"SPDHitMap_SPD_DDL%d",iDDL+1); |
379510c2 | 268 | sprintf(title,"Hit map - SPD DDL %d",iDDL+1); |
269 | hhitMap[iDDL]=new TH2F(name,title,320,0,10*32,1536,0,6*256); | |
270 | hhitMap[iDDL]->GetXaxis()->SetTitle("Column"); | |
271 | hhitMap[iDDL]->GetYaxis()->SetTitle("Row"); | |
66133c2f | 272 | rv = fAliITSQADataMakerRec->Add2RawsList(hhitMap[iDDL], 5+iDDL+offset, expert, !image, !saveCorr); |
7a0e5776 | 273 | fSPDhRawsTask++; |
66133c2f | 274 | } |
275 | // 25-26 | |
379510c2 | 276 | TH1F** hMultSPDhits = new TH1F*[2]; |
277 | for (Int_t iLay=0; iLay<2; iLay++) { | |
26ee9565 | 278 | sprintf(name,"SPDHitsMultiplicity_SPD%d",iLay+1); |
379510c2 | 279 | sprintf(title,"Hit multiplicity - SPD Layer %d",iLay+1); |
280 | hMultSPDhits[iLay]=new TH1F(name,title,200,0.,200.); | |
281 | hMultSPDhits[iLay]->GetXaxis()->SetTitle("Hit multiplicity"); | |
282 | hMultSPDhits[iLay]->GetYaxis()->SetTitle("Entries"); | |
66133c2f | 283 | rv = fAliITSQADataMakerRec->Add2RawsList(hMultSPDhits[iLay], 25+iLay+offset, expert, !image, !saveCorr); |
7a0e5776 | 284 | fSPDhRawsTask++; |
379510c2 | 285 | } |
66133c2f | 286 | // 27 |
954ef57a | 287 | TH2F *hMultSPDhits2MultSPDhits1 |
26ee9565 | 288 | = new TH2F("SPDHitMultCorrelation_SPD","Hit multiplicity correlation - SPD",200,0.,200.,200,0.,200.); |
379510c2 | 289 | hMultSPDhits2MultSPDhits1->GetXaxis()->SetTitle("Hit multiplicity (Layer 1)"); |
290 | hMultSPDhits2MultSPDhits1->GetYaxis()->SetTitle("Hit multiplicity (Layer 2)"); | |
66133c2f | 291 | rv = fAliITSQADataMakerRec->Add2RawsList(hMultSPDhits2MultSPDhits1, 27+offset, !expert, image, !saveCorr); |
8ec28eb2 | 292 | fSPDhRawsTask++; |
66133c2f | 293 | // 28 |
8ec28eb2 | 294 | TH2F *hFastOrMapHalfStaveChip |
295 | = new TH2F("SPDFastOrMapHalfStaveChip_SPD","FastOr map per HalfStave per Chip - SPD",120,0.,120.,10,0.,10.); | |
296 | hFastOrMapHalfStaveChip->GetXaxis()->SetTitle("HalfStave"); | |
297 | hFastOrMapHalfStaveChip->GetYaxis()->SetTitle("Chip"); | |
66133c2f | 298 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrMapHalfStaveChip, 28+offset, !expert, image, !saveCorr); |
8ec28eb2 | 299 | fSPDhRawsTask++; |
66133c2f | 300 | // 29 |
8ec28eb2 | 301 | TH1F *hFastOrFiredMap = new TH1F("SPDFastOrPattern_SPD","FastOrFiredChip map - SPD",1200,0.,1200.); |
302 | hFastOrFiredMap->GetXaxis()->SetTitle("Chip number"); | |
303 | hFastOrFiredMap->GetYaxis()->SetTitle("Entries"); | |
66133c2f | 304 | rv = fAliITSQADataMakerRec->Add2RawsList(hFastOrFiredMap, 29+offset, expert, !image, !saveCorr); |
8ec28eb2 | 305 | fSPDhRawsTask++; |
66133c2f | 306 | // 30 |
8ec28eb2 | 307 | TH2F *hHitMapHalfStaveChipInner |
308 | = new TH2F("SPDHitMapHalfStaveChipInner_SPD","Hit map per HalfStave per Chip Inner - SPD",20,0.,20.,20,0.,20.); | |
309 | hHitMapHalfStaveChipInner->GetXaxis()->SetTitle("Chip"); | |
310 | hHitMapHalfStaveChipInner->GetYaxis()->SetTitle("HalfStave"); | |
66133c2f | 311 | rv = fAliITSQADataMakerRec->Add2RawsList(hHitMapHalfStaveChipInner, 30+offset, !expert, image, !saveCorr); |
8ec28eb2 | 312 | fSPDhRawsTask++; |
66133c2f | 313 | // 31 |
8ec28eb2 | 314 | TH2F *hHitMapHalfStaveChipOuter |
315 | = new TH2F("SPDHitMapHalfStaveChipOuter_SPD","Hit map per HalfStave per Chip Outer - SPD",20,0.,20.,40,0.,40.); | |
316 | hHitMapHalfStaveChipOuter->GetXaxis()->SetTitle("Chip"); | |
317 | hHitMapHalfStaveChipOuter->GetYaxis()->SetTitle("HalfStave"); | |
66133c2f | 318 | rv = fAliITSQADataMakerRec->Add2RawsList(hHitMapHalfStaveChipOuter, 31+offset, !expert, image, !saveCorr); |
8ec28eb2 | 319 | fSPDhRawsTask++; |
66133c2f | 320 | // 32 |
8ec28eb2 | 321 | TH1F *hHitMapChipInnerZ = new TH1F("SPDHitMapChipInnerZ_SPD","Hit map per ChipZ Inner - SPD",20,0.,20.); |
322 | hHitMapChipInnerZ->GetXaxis()->SetTitle("Chip"); | |
323 | hHitMapChipInnerZ->GetYaxis()->SetTitle("Entries"); | |
66133c2f | 324 | rv = fAliITSQADataMakerRec->Add2RawsList(hHitMapChipInnerZ, 32+offset, !expert, image, !saveCorr); |
8ec28eb2 | 325 | fSPDhRawsTask++; |
66133c2f | 326 | // 33 |
8ec28eb2 | 327 | TH1F *hHitMapChipOuterZ = new TH1F("SPDHitMapChipOuterZ_SPD","Hit map per ChipZ Outer - SPD",20,0.,20.); |
328 | hHitMapChipOuterZ->GetXaxis()->SetTitle("Chip"); | |
329 | hHitMapChipOuterZ->GetYaxis()->SetTitle("Entries"); | |
66133c2f | 330 | rv = fAliITSQADataMakerRec->Add2RawsList(hHitMapChipOuterZ, 33+offset, !expert, image, !saveCorr); |
8ec28eb2 | 331 | fSPDhRawsTask++; |
66133c2f | 332 | // 34 |
8ec28eb2 | 333 | TH1F *hHitMapHalfStaveInnerPhi = new TH1F("SPDHitMapChipInnerPhi_SPD","Hit map per HalfStavePhi Inner - SPD",20,0.,20.); |
334 | hHitMapHalfStaveInnerPhi->GetXaxis()->SetTitle("HalfStave"); | |
335 | hHitMapHalfStaveInnerPhi->GetYaxis()->SetTitle("Entries"); | |
66133c2f | 336 | rv = fAliITSQADataMakerRec->Add2RawsList(hHitMapHalfStaveInnerPhi, 34+offset, !expert, image, !saveCorr); |
8ec28eb2 | 337 | fSPDhRawsTask++; |
66133c2f | 338 | // 35 |
8ec28eb2 | 339 | TH1F *hHitMapHalfStaveOuterPhi = new TH1F("SPDHitMapChipOuterPhi_SPD","Hit map per HalfStavePhi Outer - SPD",40,0.,40.); |
340 | hHitMapHalfStaveOuterPhi->GetXaxis()->SetTitle("HalfStave"); | |
341 | hHitMapHalfStaveOuterPhi->GetYaxis()->SetTitle("Entries"); | |
66133c2f | 342 | rv = fAliITSQADataMakerRec->Add2RawsList(hHitMapHalfStaveOuterPhi, 35+offset, !expert, image, !saveCorr); |
8ec28eb2 | 343 | fSPDhRawsTask++; |
66133c2f | 344 | |
5379c4a3 | 345 | AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SPD Raws histograms booked\n",fSPDhRawsTask)); |
eca4fa66 | 346 | return rv ; |
096292ae | 347 | } |
348 | ||
096292ae | 349 | //____________________________________________________________________________ |
eca4fa66 | 350 | Int_t AliITSQASPDDataMakerRec::MakeRaws(AliRawReader* rawReader) |
096292ae | 351 | { |
352 | // Fill QA for RAW - SPD - | |
eca4fa66 | 353 | Int_t rv = 0 ; |
eca4fa66 | 354 | |
379510c2 | 355 | rawReader->Reset(); |
66eae3f0 | 356 | AliITSRawStreamSPD rawStreamSPD(rawReader); |
357 | rawStreamSPD.ActivateAdvancedErrorLog(kTRUE,fAdvLogger); | |
66133c2f | 358 | |
359 | // shift for online histos | |
360 | Int_t shift = fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()]; | |
361 | ||
362 | // shift for online histos | |
363 | Int_t offset = fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()] + kAmoreFoOffset+kAmoreErrorsOffset; | |
379510c2 | 364 | |
365 | Int_t nDigitsL1 = 0; | |
366 | Int_t nDigitsL2 = 0; | |
367 | Int_t iEq; | |
368 | Int_t iLayer; | |
369 | Int_t iHalfStave, iChip; | |
8bab7823 | 370 | Int_t chipKey; |
379510c2 | 371 | Int_t col, row; |
372 | UInt_t module, colM, rowM; | |
8ec28eb2 | 373 | Bool_t isFiredChip[1200]; |
374 | for(Int_t ichK=0; ichK<1200; ichK++) isFiredChip[ichK] = kFALSE; | |
66133c2f | 375 | Bool_t isOnlineFiredChip[1200]; |
376 | for(Int_t iOnlineKey=0; iOnlineKey<1200; iOnlineKey++) isOnlineFiredChip[iOnlineKey] = kFALSE; | |
377 | UInt_t nFastOr[2]={0,0}; | |
8ec28eb2 | 378 | |
66eae3f0 | 379 | while(rawStreamSPD.Next()) { |
379510c2 | 380 | |
381 | iEq = rawReader->GetDDLID(); | |
382 | if (iEq>=0 && iEq<20) { | |
66eae3f0 | 383 | iHalfStave = rawStreamSPD.GetHalfStaveNr(); |
384 | iChip = rawStreamSPD.GetChipAddr(); | |
66133c2f | 385 | col = rawStreamSPD.GetChipCol(); |
386 | row = rawStreamSPD.GetChipRow(); | |
387 | isOnlineFiredChip[iEq*60+iHalfStave*10+iChip] = kTRUE; | |
8ec28eb2 | 388 | chipKey = rawStreamSPD.GetOfflineChipKeyFromOnline(iEq,iHalfStave,iChip); |
389 | isFiredChip[chipKey] = kTRUE; | |
390 | ||
66eae3f0 | 391 | rawStreamSPD.OnlineToOffline(iEq, iHalfStave, iChip, col, row, module, colM, rowM); |
379510c2 | 392 | |
393 | if (iHalfStave>=0 && iHalfStave<2) iLayer=0; | |
394 | else iLayer=1; | |
395 | ||
66133c2f | 396 | fAliITSQADataMakerRec->GetRawsData(0+offset)->Fill(iLayer); |
379510c2 | 397 | if (iLayer==0) { |
66133c2f | 398 | fAliITSQADataMakerRec->GetRawsData(1+offset)->Fill(module); |
379510c2 | 399 | nDigitsL1++; |
400 | } else { | |
66133c2f | 401 | fAliITSQADataMakerRec->GetRawsData(2+offset)->Fill(module); |
379510c2 | 402 | nDigitsL2++; |
403 | } | |
404 | ||
8ec28eb2 | 405 | if(iEq<10) { |
66133c2f | 406 | fAliITSQADataMakerRec->GetRawsData(3+offset)->Fill(iHalfStave+iEq*6,iChip); |
8ec28eb2 | 407 | } |
408 | else { | |
66133c2f | 409 | fAliITSQADataMakerRec->GetRawsData(4+offset)->Fill(iHalfStave+(iEq-10)*6,iChip); |
8ec28eb2 | 410 | } |
8bab7823 | 411 | |
8ec28eb2 | 412 | if(iLayer==0) { |
413 | if(iEq<10) { | |
66133c2f | 414 | fAliITSQADataMakerRec->GetRawsData(30+offset)->Fill(19-iChip,1-iHalfStave+iEq*2); |
415 | fAliITSQADataMakerRec->GetRawsData(32+offset)->Fill(19-iChip); | |
416 | fAliITSQADataMakerRec->GetRawsData(34+offset)->Fill(1-iHalfStave+iEq*2); | |
8ec28eb2 | 417 | } |
418 | else { | |
66133c2f | 419 | fAliITSQADataMakerRec->GetRawsData(30+offset)->Fill(iChip,1-iHalfStave+(iEq-10)*2); |
420 | fAliITSQADataMakerRec->GetRawsData(32+offset)->Fill(iChip); | |
421 | fAliITSQADataMakerRec->GetRawsData(34+offset)->Fill(1-iHalfStave+(iEq-10)*2); | |
8ec28eb2 | 422 | } |
423 | } | |
424 | else { | |
425 | if(iEq<10) { | |
66133c2f | 426 | fAliITSQADataMakerRec->GetRawsData(31+offset)->Fill(19-iChip,iHalfStave-2+iEq*4); |
427 | fAliITSQADataMakerRec->GetRawsData(33+offset)->Fill(19-iChip); | |
428 | fAliITSQADataMakerRec->GetRawsData(35+offset)->Fill(iHalfStave-2+iEq*4); | |
8ec28eb2 | 429 | } |
430 | else { | |
66133c2f | 431 | fAliITSQADataMakerRec->GetRawsData(31+offset)->Fill(iChip,iHalfStave-2+(iEq-10)*4); |
432 | fAliITSQADataMakerRec->GetRawsData(33+offset)->Fill(iChip); | |
433 | fAliITSQADataMakerRec->GetRawsData(35+offset)->Fill(iHalfStave-2+(iEq-10)*4); | |
8ec28eb2 | 434 | } |
435 | } | |
66133c2f | 436 | fAliITSQADataMakerRec->GetRawsData(5+iEq+offset)->Fill(colM+(module%2)*160,rowM+iHalfStave*256); |
379510c2 | 437 | } |
379510c2 | 438 | } |
8bab7823 | 439 | |
8ec28eb2 | 440 | UInt_t nErrorsDDL[20]; |
66133c2f | 441 | |
8b7e858c | 442 | for (Int_t ieq=0; ieq<20; ieq++) { |
8ec28eb2 | 443 | nErrorsDDL[ieq] = 0; |
66133c2f | 444 | |
8ec28eb2 | 445 | for (UInt_t ierr=0; ierr<fAdvLogger->GetNrErrorCodes(); ierr++) { |
66133c2f | 446 | fAliITSQADataMakerRec->GetRawsData(ieq+(kAmoreFoOffset+1)+shift)->Fill(ierr,fAdvLogger->GetNrErrors(ierr,ieq)); |
8ec28eb2 | 447 | if(ierr>0) nErrorsDDL[ieq] = nErrorsDDL[ieq] + fAdvLogger->GetNrErrors(ierr,ieq); |
448 | } | |
66133c2f | 449 | fAliITSQADataMakerRec->GetRawsData(8+shift)->Fill(ieq,nErrorsDDL[ieq]); |
8bab7823 | 450 | |
451 | for (Int_t ihs=0; ihs<6; ihs++) { | |
452 | for (Int_t ichip=0; ichip<10; ichip++) { | |
66133c2f | 453 | if(isOnlineFiredChip[ieq*60+ihs*10+ichip]) fAliITSQADataMakerRec->GetRawsData(1+shift)->Fill(ieq*60+ihs*10+ichip); // online |
454 | if(rawStreamSPD.GetFastOrSignal(ieq,ihs,ichip) && isOnlineFiredChip[ieq*60+ihs*10+ichip]) fAliITSQADataMakerRec->GetRawsData(0+shift)->Fill(ieq*60+ihs*10+ichip); // online | |
455 | if(!rawStreamSPD.GetFastOrSignal(ieq,ihs,ichip) && isOnlineFiredChip[ieq*60+ihs*10+ichip]) fAliITSQADataMakerRec->GetRawsData(2+shift)->Fill(ieq*60+ihs*10+ichip); // online | |
456 | if(rawStreamSPD.GetFastOrSignal(ieq,ihs,ichip) && !isOnlineFiredChip[ieq*60+ihs*10+ichip]) fAliITSQADataMakerRec->GetRawsData(3+shift)->Fill(ieq*60+ihs*10+ichip); // online | |
457 | ||
8ec28eb2 | 458 | chipKey = rawStreamSPD.GetOfflineChipKeyFromOnline(ieq,ihs,ichip); |
66133c2f | 459 | |
66eae3f0 | 460 | if(rawStreamSPD.GetFastOrSignal(ieq,ihs,ichip)) { |
66133c2f | 461 | if(ihs <2) nFastOr[0]++; // online |
462 | else nFastOr[1]++; // online | |
463 | fAliITSQADataMakerRec->GetRawsData(28+offset)->Fill(ihs+ieq*6,ichip); | |
464 | fAliITSQADataMakerRec->GetRawsData(29+offset)->Fill(chipKey); | |
8bab7823 | 465 | } |
466 | } | |
467 | } | |
66133c2f | 468 | |
469 | ||
8bab7823 | 470 | } |
379510c2 | 471 | |
66133c2f | 472 | fAliITSQADataMakerRec->GetRawsData(4+shift)->Fill(nFastOr[0],nFastOr[1]); // online |
473 | ||
379510c2 | 474 | fAdvLogger->Reset(); |
66133c2f | 475 | fAliITSQADataMakerRec->GetRawsData(25+offset)->Fill(nDigitsL1); |
476 | fAliITSQADataMakerRec->GetRawsData(26+offset)->Fill(nDigitsL2); | |
477 | fAliITSQADataMakerRec->GetRawsData(27+offset)->Fill(nDigitsL1,nDigitsL2); | |
379510c2 | 478 | |
5379c4a3 | 479 | AliDebug(AliQAv1::GetQADebugLevel(),Form("Event completed, %d raw digits read",nDigitsL1+nDigitsL2)); |
eca4fa66 | 480 | return rv ; |
096292ae | 481 | } |
482 | ||
44ed7a66 | 483 | //____________________________________________________________________________ |
eca4fa66 | 484 | Int_t AliITSQASPDDataMakerRec::InitDigits() |
44ed7a66 | 485 | { |
486 | // Initialization for DIGIT data - SPD - | |
487 | const Bool_t expert = kTRUE ; | |
488 | const Bool_t image = kTRUE ; | |
eca4fa66 | 489 | Int_t rv = 0 ; |
490 | // fGenDigitsOffset = (fAliITSQADataMakerRec->fDigitsQAList[AliRecoParam::kDefault])->GetEntries(); | |
44ed7a66 | 491 | //fSPDhDigitsTask must be incremented by one unit every time a histogram is ADDED to the QA List |
492 | ||
493 | Char_t name[50]; | |
494 | Char_t title[50]; | |
495 | ||
496 | TH1F *hlayer = new TH1F("SPDLayPattern_SPD","Layer map - SPD",6,0.,6.); | |
497 | hlayer->GetXaxis()->SetTitle("Layer number"); | |
498 | hlayer->GetYaxis()->SetTitle("Entries"); | |
4a903927 | 499 | rv = fAliITSQADataMakerRec->Add2DigitsList(hlayer,fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
44ed7a66 | 500 | fSPDhDigitsTask++; |
501 | ||
502 | TH1F **hmod = new TH1F*[2]; | |
503 | for (Int_t iLay=0; iLay<2; iLay++) { | |
504 | sprintf(name,"SPDModPattern_SPD%d",iLay+1); | |
505 | sprintf(title,"Module map - SPD Layer %d",iLay+1); | |
506 | hmod[iLay]=new TH1F(name,title,240,0,240); | |
507 | hmod[iLay]->GetXaxis()->SetTitle("Module number"); | |
508 | hmod[iLay]->GetYaxis()->SetTitle("Entries"); | |
4a903927 | 509 | rv = fAliITSQADataMakerRec->Add2DigitsList(hmod[iLay],1+iLay+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image); |
44ed7a66 | 510 | fSPDhDigitsTask++; |
511 | } | |
512 | ||
513 | TH1F *hcolumns = new TH1F("SPDColumns_SPD","Columns - SPD",160,0.,160.); | |
514 | hcolumns->GetXaxis()->SetTitle("Column number"); | |
515 | hcolumns->GetYaxis()->SetTitle("Entries"); | |
4a903927 | 516 | rv = fAliITSQADataMakerRec->Add2DigitsList(hcolumns,3+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
44ed7a66 | 517 | fSPDhDigitsTask++; |
518 | ||
519 | TH1F *hrows = new TH1F("SPDRows_SPD","Rows - SPD",256,0.,256.); | |
520 | hrows->GetXaxis()->SetTitle("Row number"); | |
521 | hrows->GetYaxis()->SetTitle("Entries"); | |
4a903927 | 522 | rv = fAliITSQADataMakerRec->Add2DigitsList(hrows,4+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
44ed7a66 | 523 | fSPDhDigitsTask++; |
524 | ||
525 | TH1F** hMultSPDdigits = new TH1F*[2]; | |
526 | for (Int_t iLay=0; iLay<2; ++iLay) { | |
527 | sprintf(name,"SPDDigitMultiplicity_SPD%d",iLay+1); | |
528 | sprintf(title,"Digit multiplicity - SPD Layer %d",iLay+1); | |
529 | hMultSPDdigits[iLay]=new TH1F(name,title,200,0.,200.); | |
530 | hMultSPDdigits[iLay]->GetXaxis()->SetTitle("Digit multiplicity"); | |
531 | hMultSPDdigits[iLay]->GetYaxis()->SetTitle("Entries"); | |
4a903927 | 532 | rv = fAliITSQADataMakerRec->Add2DigitsList(hMultSPDdigits[iLay], 5+iLay+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image); |
44ed7a66 | 533 | fSPDhDigitsTask++; |
534 | } | |
535 | ||
536 | TH2F *hMultSPDdig2MultSPDdig1 | |
537 | = new TH2F("SPDDigitMultCorrelation_SPD","Digit multiplicity correlation - SPD",200,0.,200.,200,0.,200.); | |
538 | hMultSPDdig2MultSPDdig1->GetXaxis()->SetTitle("Digit multiplicity (Layer 1)"); | |
539 | hMultSPDdig2MultSPDdig1->GetYaxis()->SetTitle("Digit multiplicity (Layer 2)"); | |
4a903927 | 540 | rv = fAliITSQADataMakerRec->Add2DigitsList(hMultSPDdig2MultSPDdig1,7+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image); |
44ed7a66 | 541 | fSPDhDigitsTask++; |
542 | ||
543 | AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SPD Digits histograms booked\n",fSPDhDigitsTask)); | |
eca4fa66 | 544 | return rv ; |
44ed7a66 | 545 | } |
546 | ||
547 | //____________________________________________________________________________ | |
eca4fa66 | 548 | Int_t AliITSQASPDDataMakerRec::MakeDigits(TTree *digits) |
44ed7a66 | 549 | { |
550 | // Fill QA for DIGIT - SPD - | |
eca4fa66 | 551 | Int_t rv = 0 ; |
eca4fa66 | 552 | |
44ed7a66 | 553 | // AliITS *fITS = (AliITS*)gAlice->GetModule("ITS"); |
554 | // fITS->SetTreeAddress(); | |
555 | // TClonesArray *iITSdigits = fITS->DigitsAddress(0); // 0->SPD | |
33626263 | 556 | TBranch *branchD = digits->GetBranch("ITSDigitsSPD"); |
44ed7a66 | 557 | if (!branchD) { |
33626263 | 558 | AliError("can't get the branch with the SPD ITS digits !"); |
eca4fa66 | 559 | return rv; |
44ed7a66 | 560 | } |
33626263 | 561 | static TClonesArray statDigits("AliITSdigitSPD"); |
44ed7a66 | 562 | TClonesArray *iITSdigits = &statDigits; |
563 | branchD->SetAddress(&iITSdigits); | |
564 | Int_t nDigitsL1=0; | |
565 | Int_t nDigitsL2=0; | |
566 | ||
567 | for (Int_t imod=0; imod<240; ++imod){ | |
568 | digits->GetEvent(imod); | |
569 | Int_t ndigits = iITSdigits->GetEntries(); | |
570 | if (imod<80) { | |
4a903927 | 571 | fAliITSQADataMakerRec->GetDigitsData(0+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(0.5,ndigits); |
572 | fAliITSQADataMakerRec->GetDigitsData(1+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(imod,ndigits); | |
44ed7a66 | 573 | nDigitsL1+=ndigits; |
574 | } | |
575 | else { | |
4a903927 | 576 | fAliITSQADataMakerRec->GetDigitsData(0+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(1,ndigits); |
577 | fAliITSQADataMakerRec->GetDigitsData(2+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(imod,ndigits); | |
44ed7a66 | 578 | nDigitsL2+=ndigits; |
579 | } | |
580 | for (Int_t idig=0; idig<ndigits; ++idig) { | |
581 | AliITSdigit *dig=(AliITSdigit*)iITSdigits->UncheckedAt(idig); | |
582 | Int_t col=dig->GetCoord1(); // cell number z | |
583 | Int_t row=dig->GetCoord2(); // cell number x | |
4a903927 | 584 | fAliITSQADataMakerRec->GetDigitsData(3+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(col); |
585 | fAliITSQADataMakerRec->GetDigitsData(4+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(row); | |
44ed7a66 | 586 | } |
587 | } | |
4a903927 | 588 | fAliITSQADataMakerRec->GetDigitsData(5+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(nDigitsL1); |
589 | fAliITSQADataMakerRec->GetDigitsData(6+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(nDigitsL2); | |
590 | fAliITSQADataMakerRec->GetDigitsData(7+fGenDigitsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(nDigitsL1,nDigitsL2); | |
eca4fa66 | 591 | return rv ; |
44ed7a66 | 592 | } |
593 | ||
096292ae | 594 | //____________________________________________________________________________ |
eca4fa66 | 595 | Int_t AliITSQASPDDataMakerRec::InitRecPoints() |
096292ae | 596 | { |
597 | // Initialization for RECPOINTS - SPD - | |
7d297381 | 598 | const Bool_t expert = kTRUE ; |
599 | const Bool_t image = kTRUE ; | |
eca4fa66 | 600 | Int_t rv = 0 ; |
8b7e858c | 601 | //AliInfo(Form("fAliITSQADataMakerRec->GetEventSpecie() %d\n",fAliITSQADataMakerRec->GetEventSpecie())); |
602 | //AliInfo(Form("fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()] %d\n",fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])); | |
eca4fa66 | 603 | // fGenRecPointsOffset = (fAliITSQADataMakerRec->fRecPointsQAList[AliRecoParam::kDefault])->GetEntries(); |
26ee9565 | 604 | TH1F* hlayer= new TH1F("SPDLayPattern_SPD","Layer map - SPD",6,0.,6.); |
096292ae | 605 | hlayer->GetXaxis()->SetTitle("Layer number"); |
606 | hlayer->GetYaxis()->SetTitle("Entries"); | |
8b7e858c | 607 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hlayer, 0+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 608 | fSPDhRecPointsTask++; |
096292ae | 609 | |
610 | TH1F** hmod = new TH1F*[2]; | |
611 | TH1F** hxl = new TH1F*[2]; | |
612 | TH1F** hzl = new TH1F*[2]; | |
613 | TH1F** hxg = new TH1F*[2]; | |
614 | TH1F** hyg = new TH1F*[2]; | |
615 | TH1F** hzg = new TH1F*[2]; | |
616 | TH1F** hr = new TH1F*[2]; | |
617 | TH1F** hphi = new TH1F*[2]; | |
618 | TH1F** hMultSPDcl = new TH1F*[2]; | |
8bab7823 | 619 | TH2F** hNyNz = new TH2F*[2]; // y and z cluster length |
620 | TH1F** hNpixels = new TH1F*[2]; // cluster size in number of pixels | |
621 | TH1F** hType = new TH1F*[2]; // cluster type according to conventional table | |
622 | TH2F** hPhiZ = new TH2F*[2]; | |
096292ae | 623 | |
624 | Float_t xlim[2]={4.5,8.}; | |
625 | Float_t zlim[2]={15.,15.}; | |
626 | ||
627 | Char_t name[50]; | |
628 | Char_t title[50]; | |
629 | for (Int_t iLay=0;iLay<2;iLay++) { | |
26ee9565 | 630 | sprintf(name,"SPDModPattern_SPD%d",iLay+1); |
096292ae | 631 | sprintf(title,"Module map - SPD Layer %d",iLay+1); |
632 | hmod[iLay]=new TH1F(name,title,fgknSPDmodules,0,fgknSPDmodules); | |
633 | hmod[iLay]->GetXaxis()->SetTitle("Module number"); | |
634 | hmod[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 635 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hmod[iLay], 1+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 636 | fSPDhRecPointsTask++; |
096292ae | 637 | |
26ee9565 | 638 | sprintf(name,"SPDxLoc_SPD%d",iLay+1); |
096292ae | 639 | sprintf(title,"Local x coordinate - SPD Layer %d",iLay+1); |
640 | hxl[iLay]=new TH1F(name,title,100,-4.,4.); | |
641 | hxl[iLay]->GetXaxis()->SetTitle("Local x [cm]"); | |
642 | hxl[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 643 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hxl[iLay], 2+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 644 | fSPDhRecPointsTask++; |
096292ae | 645 | |
26ee9565 | 646 | sprintf(name,"SPDzLoc_SPD%d",iLay+1); |
096292ae | 647 | sprintf(title,"Local z coordinate - SPD Layer %d",iLay+1); |
648 | hzl[iLay]=new TH1F(name,title,100,-4.,4.); | |
649 | hzl[iLay]->GetXaxis()->SetTitle("Local z [cm]"); | |
650 | hzl[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 651 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hzl[iLay], 3+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 652 | fSPDhRecPointsTask++; |
096292ae | 653 | |
26ee9565 | 654 | sprintf(name,"SPDxGlob_SPD%d",iLay+1); |
096292ae | 655 | sprintf(title,"Global x coordinate - SPD Layer %d",iLay+1); |
656 | hxg[iLay]=new TH1F(name,title,100,-xlim[iLay],xlim[iLay]); | |
657 | hxg[iLay]->GetXaxis()->SetTitle("Global x [cm]"); | |
658 | hxg[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 659 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hxg[iLay],4+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 660 | fSPDhRecPointsTask++; |
096292ae | 661 | |
26ee9565 | 662 | sprintf(name,"SPDyGlob_SPD%d",iLay+1); |
096292ae | 663 | sprintf(title,"Global y coordinate - SPD Layer %d",iLay+1); |
664 | hyg[iLay]=new TH1F(name,title,100,-xlim[iLay],xlim[iLay]); | |
665 | hyg[iLay]->GetXaxis()->SetTitle("Global y [cm]"); | |
666 | hyg[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 667 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hyg[iLay], 5+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 668 | fSPDhRecPointsTask++; |
096292ae | 669 | |
26ee9565 | 670 | sprintf(name,"SPDzGlob_SPD%d",iLay+1); |
096292ae | 671 | sprintf(title,"Global z coordinate - SPD Layer %d",iLay+1); |
672 | hzg[iLay]=new TH1F(name,title,150,-zlim[iLay],zlim[iLay]); | |
673 | hzg[iLay]->GetXaxis()->SetTitle("Global z [cm]"); | |
674 | hzg[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 675 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hzg[iLay], 6+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 676 | fSPDhRecPointsTask++; |
096292ae | 677 | |
26ee9565 | 678 | sprintf(name,"SPDr_SPD%d",iLay+1); |
096292ae | 679 | sprintf(title,"Radius - SPD Layer %d",iLay+1); |
680 | hr[iLay]=new TH1F(name,title,100,0.,10.); | |
681 | hr[iLay]->GetXaxis()->SetTitle("r [cm]"); | |
682 | hr[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 683 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hr[iLay], 7+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 684 | fSPDhRecPointsTask++; |
096292ae | 685 | |
26ee9565 | 686 | sprintf(name,"SPDphi_SPD%d",iLay+1); |
096292ae | 687 | sprintf(title,"#varphi - SPD Layer %d",iLay+1); |
439e7a8a | 688 | hphi[iLay]=new TH1F(name,title,1000,0.,2*TMath::Pi()); |
096292ae | 689 | hphi[iLay]->GetXaxis()->SetTitle("#varphi [rad]"); |
690 | hphi[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 691 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hphi[iLay], 8+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 692 | fSPDhRecPointsTask++; |
096292ae | 693 | |
26ee9565 | 694 | sprintf(name,"SPDSizeYvsZ_SPD%d",iLay+1); |
096292ae | 695 | sprintf(title,"Cluster dimension - SPD Layer %d",iLay+1); |
696 | hNyNz[iLay]=new TH2F(name,title,100,0.,100.,100,0.,100.); | |
697 | hNyNz[iLay]->GetXaxis()->SetTitle("z length"); | |
698 | hNyNz[iLay]->GetYaxis()->SetTitle("y length"); | |
8bab7823 | 699 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hNyNz[iLay], 9+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
700 | fSPDhRecPointsTask++; | |
701 | ||
702 | sprintf(name,"SPDSizeTot_SPD%d",iLay+1); | |
703 | sprintf(title,"Cluster size - SPD Layer %d",iLay+1); | |
704 | hNpixels[iLay]=new TH1F(name,title,100,0.,100.); | |
705 | hNpixels[iLay]->GetXaxis()->SetTitle("Cluster size"); | |
706 | hNpixels[iLay]->GetYaxis()->SetTitle("Entries"); | |
707 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hNpixels[iLay], 10+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); | |
708 | fSPDhRecPointsTask++; | |
709 | ||
710 | sprintf(name,"SPDType_SPD%d",iLay+1); | |
711 | sprintf(title,"Cluster type - SPD Layer %d",iLay+1); | |
712 | hType[iLay]=new TH1F(name,title,20,0.,20.); | |
713 | hType[iLay]->GetXaxis()->SetTitle("Cluster type"); | |
714 | hType[iLay]->GetYaxis()->SetTitle("Entries"); | |
715 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hType[iLay], 11+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image); | |
7a0e5776 | 716 | fSPDhRecPointsTask++; |
096292ae | 717 | |
26ee9565 | 718 | sprintf(name,"SPDphi_z_SPD%d",iLay+1); |
096292ae | 719 | sprintf(title,"#varphi vs z - SPD Layer %d",iLay+1); |
439e7a8a | 720 | hPhiZ[iLay]=new TH2F(name,title,150,-zlim[iLay],zlim[iLay],200,0.,2*TMath::Pi()); |
096292ae | 721 | hPhiZ[iLay]->GetXaxis()->SetTitle("Global z [cm]"); |
722 | hPhiZ[iLay]->GetYaxis()->SetTitle("#varphi [rad]"); | |
8bab7823 | 723 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hPhiZ[iLay], 12+(12*iLay)+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image); |
7a0e5776 | 724 | fSPDhRecPointsTask++; |
096292ae | 725 | |
726 | } | |
727 | ||
26ee9565 | 728 | TH2F *hrPhi=new TH2F("SPDr_phi_SPD","#varphi vs r - SPD",100,0.,10.,100,0.,2*TMath::Pi()); |
096292ae | 729 | hrPhi->GetXaxis()->SetTitle("r [cm]"); |
730 | hrPhi->GetYaxis()->SetTitle("#varphi [rad]"); | |
8bab7823 | 731 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hrPhi, 25+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], expert, !image); |
7a0e5776 | 732 | fSPDhRecPointsTask++; |
096292ae | 733 | |
26ee9565 | 734 | TH2F *hxy=new TH2F("SPDx_y_SPD","Global y vs x - SPD",200,-10.,10.,200,-10.,10.); |
096292ae | 735 | hxy->GetXaxis()->SetTitle("Global x [cm]"); |
736 | hxy->GetYaxis()->SetTitle("Global y [cm]"); | |
8bab7823 | 737 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hxy, 26+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image); |
7a0e5776 | 738 | fSPDhRecPointsTask++; |
096292ae | 739 | |
740 | for (Int_t iLay=0;iLay<2;iLay++) { | |
26ee9565 | 741 | sprintf(name,"SPDMultiplicity_SPD%d",iLay+1); |
096292ae | 742 | sprintf(title,"Cluster multiplicity - SPD Layer %d",iLay+1); |
743 | hMultSPDcl[iLay]=new TH1F(name,title,200,0.,200.); | |
744 | hMultSPDcl[iLay]->GetXaxis()->SetTitle("Cluster multiplicity"); | |
745 | hMultSPDcl[iLay]->GetYaxis()->SetTitle("Entries"); | |
8bab7823 | 746 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hMultSPDcl[iLay], 27+iLay+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image); |
7a0e5776 | 747 | fSPDhRecPointsTask++; |
096292ae | 748 | } |
749 | ||
750 | TH2F *hMultSPDcl2MultSPDcl1 = | |
26ee9565 | 751 | new TH2F("SPDMultCorrelation_SPD","Cluster multiplicity correlation - SPD",200,0.,200.,200,0.,200.); |
096292ae | 752 | hMultSPDcl2MultSPDcl1->GetXaxis()->SetTitle("Clusters multiplicity (Layer 1)"); |
753 | hMultSPDcl2MultSPDcl1->GetYaxis()->SetTitle("Clusters multiplicity (Layer 2)"); | |
8bab7823 | 754 | rv = fAliITSQADataMakerRec->Add2RecPointsList(hMultSPDcl2MultSPDcl1, 29+fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()], !expert, image); |
7a0e5776 | 755 | fSPDhRecPointsTask++; |
096292ae | 756 | |
5379c4a3 | 757 | AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SPD Recs histograms booked\n",fSPDhRecPointsTask)); |
096292ae | 758 | |
eca4fa66 | 759 | return rv ; |
096292ae | 760 | } |
761 | ||
762 | //____________________________________________________________________________ | |
eca4fa66 | 763 | Int_t AliITSQASPDDataMakerRec::MakeRecPoints(TTree * clusterTree) |
096292ae | 764 | { |
765 | // Fill QA for RecPoints - SPD - | |
8ec28eb2 | 766 | Int_t rv = 0 ; |
e62fe478 | 767 | AliITSRecPointContainer* rpcont=AliITSRecPointContainer::Instance(); |
8ec28eb2 | 768 | TClonesArray *recpoints = rpcont->FetchClusters(0,clusterTree); |
e62fe478 | 769 | if(!rpcont->GetStatusOK() || !rpcont->IsSPDActive()){ |
770 | AliError("can't get SPD clusters !"); | |
eca4fa66 | 771 | return rv; |
3647765c | 772 | } |
8ec28eb2 | 773 | |
8b7e858c | 774 | //AliInfo(Form("fAliITSQADataMakerRec->GetEventSpecie() %d\n",fAliITSQADataMakerRec->GetEventSpecie())); |
775 | //AliInfo(Form("fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()] %d\n",fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])); | |
e62fe478 | 776 | Int_t nSPDmod = AliITSgeomTGeo::GetModuleIndex(3,1,1); |
8ec28eb2 | 777 | |
3647765c | 778 | Float_t cluGlo[3] = {0.,0.,0.}; |
779 | Int_t nClusters[2] = {0,0}; | |
8ec28eb2 | 780 | |
e62fe478 | 781 | for (Int_t iIts=0; iIts < nSPDmod; iIts++) { |
782 | recpoints = rpcont->UncheckedGetClusters(iIts); | |
783 | Int_t nCluster = recpoints->GetEntriesFast(); | |
784 | if(nCluster == 0)continue; | |
3647765c | 785 | // loop over clusters |
786 | while(nCluster--) { | |
8ec28eb2 | 787 | AliITSRecPoint* cluster = |
e62fe478 | 788 | (AliITSRecPoint*)recpoints->UncheckedAt(nCluster); |
789 | if (cluster->GetLayer()>1)continue; | |
3647765c | 790 | Int_t lay=cluster->GetLayer(); |
8b7e858c | 791 | fAliITSQADataMakerRec->GetRecPointsData(0 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(lay); |
3647765c | 792 | cluster->GetGlobalXYZ(cluGlo); |
793 | Float_t rad=TMath::Sqrt(cluGlo[0]*cluGlo[0]+cluGlo[1]*cluGlo[1]); | |
096292ae | 794 | Float_t phi= TMath::Pi() + TMath::ATan2(-cluGlo[1],-cluGlo[0]); |
795 | if (lay==0) { | |
8ec28eb2 | 796 | fAliITSQADataMakerRec->GetRecPointsData(1 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(iIts); |
797 | fAliITSQADataMakerRec->GetRecPointsData(2 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetDetLocalX()); | |
798 | fAliITSQADataMakerRec->GetRecPointsData(3 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetDetLocalZ()); | |
799 | fAliITSQADataMakerRec->GetRecPointsData(4 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[0]); | |
800 | fAliITSQADataMakerRec->GetRecPointsData(5 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[1]); | |
801 | fAliITSQADataMakerRec->GetRecPointsData(6 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[2]); | |
802 | fAliITSQADataMakerRec->GetRecPointsData(7 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(rad); | |
803 | fAliITSQADataMakerRec->GetRecPointsData(8 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(phi); | |
804 | fAliITSQADataMakerRec->GetRecPointsData(9 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetNz(),cluster->GetNy()); | |
805 | fAliITSQADataMakerRec->GetRecPointsData(10 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetNpixels()); | |
806 | fAliITSQADataMakerRec->GetRecPointsData(11 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetSPDclusterType()); | |
807 | fAliITSQADataMakerRec->GetRecPointsData(12 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[2],phi); | |
808 | } else { | |
8bab7823 | 809 | fAliITSQADataMakerRec->GetRecPointsData(13 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(iIts); |
810 | fAliITSQADataMakerRec->GetRecPointsData(14 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetDetLocalX()); | |
811 | fAliITSQADataMakerRec->GetRecPointsData(15 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetDetLocalZ()); | |
812 | fAliITSQADataMakerRec->GetRecPointsData(16 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[0]); | |
813 | fAliITSQADataMakerRec->GetRecPointsData(17 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[1]); | |
814 | fAliITSQADataMakerRec->GetRecPointsData(18 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[2]); | |
815 | fAliITSQADataMakerRec->GetRecPointsData(19 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(rad); | |
816 | fAliITSQADataMakerRec->GetRecPointsData(20 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(phi); | |
817 | fAliITSQADataMakerRec->GetRecPointsData(21 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetNz(),cluster->GetNy()); | |
818 | fAliITSQADataMakerRec->GetRecPointsData(22 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetNpixels()); | |
819 | fAliITSQADataMakerRec->GetRecPointsData(23 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluster->GetSPDclusterType()); | |
820 | fAliITSQADataMakerRec->GetRecPointsData(24 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[2],phi); | |
096292ae | 821 | } |
8bab7823 | 822 | fAliITSQADataMakerRec->GetRecPointsData(25 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(rad,phi); |
823 | fAliITSQADataMakerRec->GetRecPointsData(26 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(cluGlo[0],cluGlo[1]); | |
8ec28eb2 | 824 | |
825 | nClusters[lay]++; | |
3647765c | 826 | } // end of cluster loop |
827 | } // end of its "subdetector" loop | |
8ec28eb2 | 828 | |
3647765c | 829 | for (Int_t iLay=0; iLay<2; iLay++) |
8bab7823 | 830 | fAliITSQADataMakerRec->GetRecPointsData(27 +iLay +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(nClusters[iLay]); |
8ec28eb2 | 831 | |
8bab7823 | 832 | fAliITSQADataMakerRec->GetRecPointsData(29 +fGenRecPointsOffset[fAliITSQADataMakerRec->GetEventSpecie()])->Fill(nClusters[0],nClusters[1]); |
8ec28eb2 | 833 | |
eca4fa66 | 834 | return rv ; |
096292ae | 835 | } |
7a0e5776 | 836 | |
837 | ||
838 | ||
839 | //_______________________________________________________________ | |
840 | ||
80b9610c | 841 | Int_t AliITSQASPDDataMakerRec::GetOffset(AliQAv1::TASKINDEX_t task,Int_t specie) { |
7a0e5776 | 842 | // Returns offset number according to the specified task |
843 | Int_t offset=0; | |
4e25ac79 | 844 | if( task == AliQAv1::kRAWS ) { |
80b9610c | 845 | offset=fGenRawsOffset[specie]; |
7a0e5776 | 846 | } |
eca4fa66 | 847 | else if( task == AliQAv1::kDIGITSR ) { |
80b9610c | 848 | offset=fGenDigitsOffset[specie]; |
eca4fa66 | 849 | } |
4e25ac79 | 850 | else if( task == AliQAv1::kRECPOINTS ) { |
80b9610c | 851 | offset=fGenRecPointsOffset[specie]; |
7a0e5776 | 852 | } |
7a0e5776 | 853 | |
854 | return offset; | |
855 | } | |
856 | ||
857 | //_______________________________________________________________ | |
858 | ||
8b7e858c | 859 | void AliITSQASPDDataMakerRec::SetOffset(AliQAv1::TASKINDEX_t task, Int_t offset, Int_t specie) { |
eca4fa66 | 860 | // Returns offset number according to the specified task |
861 | if( task == AliQAv1::kRAWS ) { | |
8b7e858c | 862 | fGenRawsOffset[specie]=offset; |
eca4fa66 | 863 | } |
864 | else if( task == AliQAv1::kDIGITSR ) { | |
4a903927 | 865 | fGenDigitsOffset[specie]=offset; |
eca4fa66 | 866 | } |
867 | else if( task == AliQAv1::kRECPOINTS ) { | |
8b7e858c | 868 | fGenRecPointsOffset[specie]=offset; |
eca4fa66 | 869 | } |
870 | } | |
871 | ||
872 | //_______________________________________________________________ | |
873 | ||
4e25ac79 | 874 | Int_t AliITSQASPDDataMakerRec::GetTaskHisto(AliQAv1::TASKINDEX_t task) { |
7a0e5776 | 875 | // Returns the number of histograms associated to the specified task |
eca4fa66 | 876 | |
7a0e5776 | 877 | Int_t histotot=0; |
878 | ||
4e25ac79 | 879 | if( task == AliQAv1::kRAWS ) { |
7a0e5776 | 880 | histotot=fSPDhRawsTask; |
881 | } | |
eca4fa66 | 882 | else if( task == AliQAv1::kDIGITSR ) { |
883 | histotot=fSPDhDigitsTask; | |
884 | } | |
4e25ac79 | 885 | else if( task == AliQAv1::kRECPOINTS ){ |
7a0e5776 | 886 | histotot=fSPDhRecPointsTask; |
887 | } | |
4a903927 | 888 | |
a1287af5 | 889 | return histotot; |
7a0e5776 | 890 | } |