1 /**************************************************************************
2 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 // *************************************************************
19 // Checks the quality assurance
20 // by comparing with reference data
22 // -------------------------------------------------------------
23 // W. Ferrarese + P. Cerello Feb 2008
25 // SSD QA part: P. Christakoglou - NIKHEF/UU
27 // --- ROOT system ---
32 // --- Standard library ---
34 // --- AliRoot header files ---
36 #include "AliITSmodule.h"
37 #include "AliITShit.h"
38 #include "AliITSdigit.h"
39 #include "AliITSpListItem.h"
41 #include "AliITSQADataMakerSim.h"
42 #include "AliITSQASSDDataMakerSim.h"
45 #include "AliQAChecker.h"
46 #include "AliRawReader.h"
48 ClassImp(AliITSQASSDDataMakerSim)
50 //____________________________________________________________________________
51 AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(AliITSQADataMakerSim *aliITSQADataMakerSim) :
53 fAliITSQADataMakerSim(aliITSQADataMakerSim),
62 //ctor used to discriminate OnLine-Offline analysis
65 //____________________________________________________________________________
66 AliITSQASSDDataMakerSim::AliITSQASSDDataMakerSim(const AliITSQASSDDataMakerSim& qadm) :
68 fAliITSQADataMakerSim(qadm.fAliITSQADataMakerSim),
69 //fSSDhTask(qadm.fSSDhTask),
70 fSSDhHTask(qadm.fSSDhHTask),
71 fSSDhSTask(qadm.fSSDhSTask),
72 fSSDhDTask(qadm.fSSDhDTask),
73 fGenOffsetH(qadm.fGenOffsetH),
74 fGenOffsetS(qadm.fGenOffsetS),
75 fGenOffsetD(qadm.fGenOffsetD)
78 fAliITSQADataMakerSim->SetName((const char*)qadm.fAliITSQADataMakerSim->GetName()) ;
79 fAliITSQADataMakerSim->SetTitle((const char*)qadm.fAliITSQADataMakerSim->GetTitle());
82 //__________________________________________________________________
83 AliITSQASSDDataMakerSim& AliITSQASSDDataMakerSim::operator = (const AliITSQASSDDataMakerSim& qac ) {
85 this->~AliITSQASSDDataMakerSim();
86 new(this) AliITSQASSDDataMakerSim(qac);
90 //____________________________________________________________________________
91 void AliITSQASSDDataMakerSim::StartOfDetectorCycle() {
92 //Detector specific actions at start of cycle
93 AliDebug(AliQAv1::GetQADebugLevel(),"AliITSQADM::Start of SSD Cycle\n");
96 //____________________________________________________________________________
97 void AliITSQASSDDataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t /*task*/, TObjArray* /*list*/) {
98 // launch the QA checking
99 AliDebug(AliQAv1::GetQADebugLevel(),"AliITSDM instantiates checker with Run(AliQAv1::kITS, task, list)\n");
101 // AliQAChecker::Instance()->Run( AliQAv1::kITS , task, list);
104 //____________________________________________________________________________
105 void AliITSQASSDDataMakerSim::InitDigits() {
106 // Initialization for DIGIT data - SSD -
107 const Bool_t expert = kTRUE ;
108 const Bool_t image = kTRUE ;
110 fGenOffsetD = (fAliITSQADataMakerSim->fDigitsQAList[AliRecoParam::kDefault])->GetEntries();
113 TH1F *fHistSSDModule = new TH1F("fHistSSDDigitsModule",
114 ";SSD Module Number;N_{DIGITS}",
116 fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModule,
117 fGenOffsetD + 0, !expert, image);
119 TH2F *fHistSSDModuleStrip = new TH2F("fHistSSDDigitsModuleStrip",
120 ";N_{Strip};N_{Module}",
121 1540,0,1540,1698,499.5,2197.5);
122 fAliITSQADataMakerSim->Add2DigitsList(fHistSSDModuleStrip,
123 fGenOffsetD + 1, !expert, image);
126 AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD Digits histograms booked\n",fSSDhDTask));
130 //____________________________________________________________________________
131 void AliITSQASSDDataMakerSim::MakeDigits(TTree *digits) {
132 // Fill QA for DIGIT - SSD -
133 AliITS *fITS = (AliITS*)gAlice->GetModule("ITS");
134 fITS->SetTreeAddress();
135 TClonesArray *iSSDdigits = fITS->DigitsAddress(2);
136 for(Int_t iModule = 500; iModule < 2198; iModule++) {
138 digits->GetEvent(iModule);
139 Int_t ndigits = iSSDdigits->GetEntries();
140 fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD + 0)->Fill(iModule,ndigits);
142 AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Digits: %d",iModule,ndigits));
144 for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {
145 AliITSdigit *dig = (AliITSdigit*)iSSDdigits->UncheckedAt(iDigit);
146 Int_t fStripNumber = (dig->GetCoord1() == 0) ? dig->GetCoord2() : dig->GetCoord2() + fgkNumberOfPSideStrips;
147 ((TH2F *)fAliITSQADataMakerSim->GetDigitsData(fGenOffsetD + 1))->Fill(fStripNumber,iModule,dig->GetSignal());
152 //____________________________________________________________________________
153 void AliITSQASSDDataMakerSim::InitSDigits() {
154 // Initialization for SDIGIT data - SSD -
155 const Bool_t expert = kTRUE ;
156 const Bool_t image = kTRUE ;
158 fGenOffsetS = (fAliITSQADataMakerSim->fSDigitsQAList[AliRecoParam::kDefault])->GetEntries();
161 TH1F *fHistSSDModule = new TH1F("fHistSSDSDigitsModule",
162 ";SSD Module Number;N_{SDIGITS}",
164 fAliITSQADataMakerSim->Add2SDigitsList(fHistSSDModule,
165 fGenOffsetS + 0, !expert, image);
168 AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD SDigits histograms booked\n",fSSDhSTask));
171 //____________________________________________________________________________
172 void AliITSQASSDDataMakerSim::MakeSDigits(TTree *sdigits) {
173 // Fill QA for SDIGIT - SSD -
174 static TClonesArray iSSDEmpty("AliITSpListItem",10000);
176 TClonesArray *iSSDsdigits = &iSSDEmpty;
178 AliDebug(AliQAv1::GetQADebugLevel(), Form("Trying to access the sdigits histogram: %d\n",fGenOffsetS));
180 TBranch *brchSDigits = sdigits->GetBranch("ITS");
181 brchSDigits->SetAddress(&iSSDsdigits);
182 for(Int_t iModule = 500; iModule < 2198; iModule++) {
183 iSSDsdigits->Clear();
184 sdigits->GetEvent(iModule);
185 Int_t ndigits = iSSDsdigits->GetEntries();
186 fAliITSQADataMakerSim->GetSDigitsData(fGenOffsetS + 0)->Fill(iModule,ndigits);
188 AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Digits: %d",iModule,ndigits));
190 for (Int_t iDigit = 0; iDigit < ndigits; iDigit++) {
191 AliITSpListItem *dig=(AliITSpListItem*)iSSDsdigits->At(iDigit);
197 //____________________________________________________________________________
198 void AliITSQASSDDataMakerSim::InitHits() {
199 // Initialization for HITS data - SSD -
200 const Bool_t expert = kTRUE ;
201 const Bool_t image = kTRUE ;
203 fGenOffsetH = (fAliITSQADataMakerSim->fHitsQAList[AliRecoParam::kDefault])->GetEntries();
206 TH1F *fHistSSDModule = new TH1F("fHistSSDHitsModule",
207 ";SDD Module Number;N_{HITS}",
209 fAliITSQADataMakerSim->Add2HitsList(fHistSSDModule,
210 fGenOffsetH + 0, !expert, image);
212 TH1F *fHistSSDGlobalX = new TH1F("fHistSSDHitsGlobalX",
215 fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalX,
216 fGenOffsetH + 1, !expert, image);
218 TH1F *fHistSSDGlobalY = new TH1F("fHistSSDHitsGlobalY",
221 fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalY,
222 fGenOffsetH + 2, !expert, image);
224 TH1F *fHistSSDGlobalZ = new TH1F("fHistSSDHitsGlobalZ",
227 fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalZ,
228 fGenOffsetH + 3, !expert, image);
230 TH1F *fHistSSDLocalX = new TH1F("fHistSSDHitsLocalX",
233 fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalX,
234 fGenOffsetH + 4, !expert, image);
236 TH1F *fHistSSDLocalY = new TH1F("fHistSSDHitsLocalY",
239 fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalY,
240 fGenOffsetH + 5, !expert, image);
242 TH1F *fHistSSDLocalZ = new TH1F("fHistSSDHitsLocalZ",
245 fAliITSQADataMakerSim->Add2HitsList(fHistSSDLocalZ,
246 fGenOffsetH + 6, !expert, image);
248 TH1F *fHistSSDIonization = new TH1F("fHistSSDHitsIonization",
249 ";log(dE/dx) [KeV];N_{Hits}",
251 fAliITSQADataMakerSim->Add2HitsList(fHistSSDIonization,
252 fGenOffsetH + 7, !expert, image);
254 TH2F *fHistSSDGlobalXY = new TH2F("fHistSSDHitsGlobalXY",
258 fAliITSQADataMakerSim->Add2HitsList(fHistSSDGlobalXY,
259 fGenOffsetH + 8, !expert, image);
262 AliDebug(AliQAv1::GetQADebugLevel(),Form("%d SSD Hits histograms booked\n",fSSDhHTask));
266 //____________________________________________________________________________
267 void AliITSQASSDDataMakerSim::MakeHits(TTree *hits) {
268 // Fill QA for HITS - SSD -
269 AliITS *fITS = (AliITS*)gAlice->GetModule("ITS");
270 fITS->SetTreeAddress();
272 fITS->InitModules(-1,nmodules);
273 fITS->FillModules(hits,0);
274 for(Int_t iModule = 500; iModule < 2198; iModule++) {
275 AliITSmodule *module = fITS->GetModule(iModule);
276 TObjArray *arrHits = module->GetHits();
277 Int_t nhits = arrHits->GetEntriesFast();
279 AliDebug(AliQAv1::GetQADebugLevel(),Form("Module: %d - Hits: %d",iModule,nhits));
280 for (Int_t iHit = 0; iHit < nhits; iHit++) {
281 AliITShit *hit = (AliITShit*) arrHits->At(iHit);
283 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 0)->Fill(iModule);
284 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 1)->Fill(hit->GetXG());
285 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 2)->Fill(hit->GetYG());
286 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 3)->Fill(hit->GetZG());
287 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 4)->Fill(hit->GetXL());
288 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 5)->Fill(hit->GetYL());
289 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 6)->Fill(hit->GetZL());
290 if(hit->GetIonization())
291 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 7)->Fill(TMath::Log10(hit->GetIonization()));
292 fAliITSQADataMakerSim->GetHitsData(fGenOffsetH + 8)->Fill(hit->GetXG(),hit->GetYG());
300 //____________________________________________________________________________
301 Int_t AliITSQASSDDataMakerSim::GetOffset(AliQAv1::TASKINDEX_t task){
302 // Returns histogram offset according to the specified task
304 if( task == AliQAv1::kHITS){
307 else if( task == AliQAv1::kSDIGITS) {
310 else if( task == AliQAv1::kDIGITS) {
314 AliInfo("No task has been selected. TaskHisto set to zero.\n");
321 //____________________________________________________________________________
322 Int_t AliITSQASSDDataMakerSim::GetTaskHisto(AliQAv1::TASKINDEX_t task) {
323 // Returns the number of booked histograms for the selected task
325 if( task == AliQAv1::kHITS) {
326 histotot=fSSDhHTask ;
328 else if( task == AliQAv1::kSDIGITS) {
331 else if( task == AliQAv1::kDIGITS) {
332 histotot=fSSDhDTask ;
335 AliInfo("No task has been selected. TaskHisto set to zero.\n");