More debug printout.
[u/mrichter/AliRoot.git] / VZERO / AliVZEROQADataMakerSim.cxx
CommitLineData
508b9fc0 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/* $Id: AliVZEROQADataMakerSim.cxx 23123 2007-12-18 09:08:18Z hristov $ */
18
19//---
20// Produces the data needed to calculate the quality assurance.
21// All data must be mergeable objects.
22// Author : BC
23//---
24
25// --- ROOT system ---
26#include <TClonesArray.h>
27#include <TFile.h>
28#include <TH1F.h>
29#include <TDirectory.h>
30// --- Standard library ---
31
32// --- AliRoot header files ---
33#include "AliESDEvent.h"
34#include "AliLog.h"
35#include "AliVZEROdigit.h"
36#include "AliVZEROhit.h"
37#include "AliVZEROQADataMakerSim.h"
38#include "AliQAChecker.h"
39
40ClassImp(AliVZEROQADataMakerSim)
41
42//____________________________________________________________________________
43 AliVZEROQADataMakerSim::AliVZEROQADataMakerSim() :
4e25ac79 44 AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kVZERO), "VZERO Quality Assurance Data Maker")
508b9fc0 45
46{
47 // constructor
48
49
50}
51
52//____________________________________________________________________________
53AliVZEROQADataMakerSim::AliVZEROQADataMakerSim(const AliVZEROQADataMakerSim& qadm) :
54 AliQADataMakerSim()
55{
56 //copy constructor
57
58 SetName((const char*)qadm.GetName()) ;
59 SetTitle((const char*)qadm.GetTitle());
60}
61
62//__________________________________________________________________
63AliVZEROQADataMakerSim& AliVZEROQADataMakerSim::operator = (const AliVZEROQADataMakerSim& qadm )
64{
65 // Assign operator.
66 this->~AliVZEROQADataMakerSim();
67 new(this) AliVZEROQADataMakerSim(qadm);
68 return *this;
69}
70//____________________________________________________________________________
4e25ac79 71void AliVZEROQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
508b9fc0 72{
73 //Detector specific actions at end of cycle
74 // do the QA checking
92664bc8 75 ResetEventTrigClasses();
4e25ac79 76 AliQAChecker::Instance()->Run(AliQAv1::kVZERO, task, list) ;
508b9fc0 77}
78
79
80//____________________________________________________________________________
81void AliVZEROQADataMakerSim::InitHits()
82{
508b9fc0 83
84 // create Hits histograms in Hits subdir
7d297381 85 const Bool_t expert = kTRUE ;
86 const Bool_t image = kTRUE ;
095fab41 87
db72ff3b 88 TH1I * h0 = new TH1I("hHitMultiplicity", "Hit multiplicity distribution in VZERO;# of Hits;Entries", 300, 0, 299) ;
508b9fc0 89 h0->Sumw2() ;
7d297381 90 Add2HitsList(h0, 0, !expert, image) ;
095fab41 91
db72ff3b 92 TH1I * h1 = new TH1I("hHitCellNumber", "Hit cell distribution in VZERO;# of Hits;Entries", 80, 0, 79) ;
095fab41 93 h1->Sumw2() ;
7d297381 94 Add2HitsList(h1, 1, !expert, image) ;
92664bc8 95 //
96 ClonePerTrigClass(AliQAv1::kHITS); // this should be the last line
508b9fc0 97}
98
99//____________________________________________________________________________
100void AliVZEROQADataMakerSim::InitDigits()
101{
102 // create Digits histograms in Digits subdir
7d297381 103 const Bool_t expert = kTRUE ;
104 const Bool_t image = kTRUE ;
508b9fc0 105
095fab41 106 TH1I *fhDigTDC[64];
107 TH1I *fhDigADC[64];
508b9fc0 108
109 // create Digits histograms in Digits subdir
db72ff3b 110 TH1I * h0 = new TH1I("hDigitMultiplicity", "Digits multiplicity distribution in VZERO;# of Digits;Entries", 100, 0, 99) ;
508b9fc0 111 h0->Sumw2() ;
7d297381 112 Add2DigitsList(h0, 0, !expert, image) ;
508b9fc0 113
114 for (Int_t i=0; i<64; i++)
115 {
127e0d90 116 fhDigTDC[i] = new TH1I(Form("hDigitTDC%d", i),Form("Digit TDC in cell %d; TDC value;Entries",i),300,0.,149.);
117 fhDigADC[i]= new TH1I(Form("hDigitADC%d", i),Form("Digit ADC in cell %d;ADC value;Entries",i),1024,0.,1023.);
508b9fc0 118
7d297381 119 Add2DigitsList(fhDigTDC[i],i+1, !expert, image);
120 Add2DigitsList(fhDigADC[i],i+1+64, !expert, image);
508b9fc0 121 }
92664bc8 122 //
123 ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
508b9fc0 124}
125
126
127//____________________________________________________________________________
6252ceeb 128void AliVZEROQADataMakerSim::MakeHits()
508b9fc0 129{
130 //make QA data from Hits
131
6252ceeb 132 Int_t nhits = fHitsArray->GetEntriesFast();
92664bc8 133 FillHitsData(0,nhits) ; // fills Hit multiplicity
134 for (Int_t ihit=0;ihit<nhits;ihit++)
135 {
6252ceeb 136 AliVZEROhit * VZEROHit = (AliVZEROhit*) fHitsArray->UncheckedAt(ihit);
508b9fc0 137 if (!VZEROHit) {
138 AliError("The unchecked hit doesn't exist");
139 break;
140 }
92664bc8 141 FillHitsData(1,VZEROHit->Cell());
508b9fc0 142 }
143}
144
145
146//____________________________________________________________________________
147
148void AliVZEROQADataMakerSim::MakeHits(TTree *hitTree)
149{
150 //fills QA histos for Hits
6252ceeb 151 if (fHitsArray)
152 fHitsArray->Clear() ;
153 else
154 fHitsArray = new TClonesArray("AliVZEROhit", 1000);
508b9fc0 155
156 TBranch * branch = hitTree->GetBranch("VZERO") ;
157 if ( ! branch ) {
158 AliWarning("VZERO branch in Hit Tree not found") ;
159 } else {
160
161 if (branch) {
6252ceeb 162 branch->SetAddress(&fHitsArray);
508b9fc0 163 }else{
164 AliError("Branch VZERO hit not found");
165 exit(111);
166 }
eca4fa66 167 // Check id histograms already created for this Event Specie
168 if ( ! GetHitsData(0) )
169 InitHits() ;
170
508b9fc0 171 Int_t ntracks = (Int_t) hitTree->GetEntries();
172
173 if (ntracks<=0) return;
174 // Start loop on tracks in the hits containers
175 for (Int_t track=0; track<ntracks;track++) {
176 branch->GetEntry(track);
6252ceeb 177 Int_t nhits = fHitsArray->GetEntriesFast();
92664bc8 178 FillHitsData(0,nhits) ; // fills Hit multiplicity
508b9fc0 179 for (Int_t ihit=0;ihit<nhits;ihit++)
180 {
6252ceeb 181 AliVZEROhit * VZEROHit = (AliVZEROhit*) fHitsArray->UncheckedAt(ihit);
508b9fc0 182 if (!VZEROHit) {
183 AliError("The unchecked hit doesn't exist");
184 break;
185 }
92664bc8 186 FillHitsData(1,VZEROHit->Cell());
508b9fc0 187 }
188 }
189 }
92664bc8 190 //
191 IncEvCountCycleHits();
192 IncEvCountTotalHits();
193 //
508b9fc0 194}
195
196
197//____________________________________________________________________________
6252ceeb 198void AliVZEROQADataMakerSim::MakeDigits()
508b9fc0 199{
200 // makes data from Digits
201
92664bc8 202 FillDigitsData(0,fDigitsArray->GetEntriesFast()) ;
203 TIter next(fDigitsArray) ;
508b9fc0 204 AliVZEROdigit *VZERODigit ;
205 while ( (VZERODigit = dynamic_cast<AliVZEROdigit *>(next())) ) {
206 Int_t PMNumber = VZERODigit->PMNumber();
92664bc8 207 FillDigitsData(PMNumber +1, VZERODigit->Time()) ; // in 100 of picoseconds
208 FillDigitsData(PMNumber +1+64, VZERODigit->ADC()) ;
508b9fc0 209 }
210}
211
212
213//____________________________________________________________________________
214void AliVZEROQADataMakerSim::MakeDigits(TTree *digitTree)
215{
216 // makes data from Digit Tree
217
6252ceeb 218 if (fDigitsArray)
219 fDigitsArray->Clear() ;
220 else
221 fDigitsArray = new TClonesArray("AliVZEROdigit", 1000) ;
508b9fc0 222
095fab41 223 TBranch * branch = digitTree->GetBranch("VZERODigit") ;
508b9fc0 224 if ( ! branch ) {
225 AliWarning("VZERO branch in Digit Tree not found") ;
226 } else {
6252ceeb 227 branch->SetAddress(&fDigitsArray) ;
508b9fc0 228 branch->GetEntry(0) ;
6252ceeb 229 MakeDigits() ;
508b9fc0 230 }
92664bc8 231 //
232 IncEvCountCycleDigits();
233 IncEvCountTotalDigits();
234 //
508b9fc0 235}
236
237
238//____________________________________________________________________________
239void AliVZEROQADataMakerSim::StartOfDetectorCycle()
240{
241 //Detector specific actions at start of cycle
242
243}