]> git.uio.no Git - u/mrichter/AliRoot.git/blame - VZERO/AliVZEROQADataMakerSim.cxx
Compilation on Windows/Cygwin
[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() :
44 AliQADataMakerSim(AliQA::GetDetName(AliQA::kVZERO), "VZERO Quality Assurance Data Maker")
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//____________________________________________________________________________
71void AliVZEROQADataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray * list)
72{
73 //Detector specific actions at end of cycle
74 // do the QA checking
75 AliQAChecker::Instance()->Run(AliQA::kVZERO, task, list) ;
76}
77
78
79//____________________________________________________________________________
80void AliVZEROQADataMakerSim::InitHits()
81{
82 // create Hits histograms in Hits subdir
83 char timename[10];
84 char chargename[12];
85 TH1F *fhHitTime[72];
86 TH1F *fhHitCharge[72];
87 char texte[25];
88
89 // create Hits histograms in Hits subdir
90 TH1F * h0 = new TH1F("hHitMultiplicity", "Hits multiplicity distribution in VZERO", 300, 0., 299.) ;
91 h0->Sumw2() ;
92 Add2HitsList(h0, 0) ;
93
94 for (Int_t i=0; i<72; i++)
95 {
96 sprintf(timename,"hHitTime%d",i);
97 sprintf(texte,"Hit Time in VZERO cell %d",i);
98 fhHitTime[i] = new TH1F(timename,texte,300,0.,149.);
99
100 sprintf(chargename,"hHitCharge%d",i);
101 sprintf(texte,"Hit Charge in VZERO cell %d",i);
102 fhHitCharge[i]= new TH1F(chargename,texte,1024,0.,1023.);
103
104 Add2HitsList( fhHitTime[i],i+1);
105 Add2HitsList( fhHitCharge[i],i+1+72);
106 }
107
108}
109
110//____________________________________________________________________________
111void AliVZEROQADataMakerSim::InitDigits()
112{
113 // create Digits histograms in Digits subdir
114
115
116 char TDCname[10];
117 char ADCname[12];
118 TH1F *fhDigTDC[64];
119 TH1F *fhDigADC[64];
120 char texte[30];
121
122 // create Digits histograms in Digits subdir
123 TH1I * h0 = new TH1I("hDigitMultiplicity", "Digits multiplicity distribution in VZERO", 100, 0., 99.) ;
124 h0->Sumw2() ;
125 Add2DigitsList(h0, 0) ;
126
127 for (Int_t i=0; i<64; i++)
128 {
129 sprintf(TDCname, "hDigitTDC%d", i);
130 sprintf(texte,"Digit TDC in cell %d",i);
131 fhDigTDC[i] = new TH1F(TDCname,texte,300,0.,149.);
132
133 sprintf(ADCname,"hDigitADC%d",i);
134 sprintf(texte,"Digit ADC in cell %d",i);
135 fhDigADC[i]= new TH1F(ADCname,texte,1024,0.,1023.);
136
137 Add2DigitsList(fhDigTDC[i],i+1);
138 Add2DigitsList(fhDigADC[i],i+1+64);
139 }
140}
141
142
143//____________________________________________________________________________
144void AliVZEROQADataMakerSim::MakeHits(TClonesArray * hits)
145{
146 //make QA data from Hits
147
148 GetHitsData(0)->Fill(hits->GetEntriesFast()) ; // fills Hit multiplicity
149 Int_t nhits = hits->GetEntriesFast();
150 for (Int_t ihit=0;ihit<nhits;ihit++)
151 {
152 AliVZEROhit * VZEROHit = (AliVZEROhit*) hits->UncheckedAt(ihit);
153 if (!VZEROHit) {
154 AliError("The unchecked hit doesn't exist");
155 break;
156 }
157 Int_t cell = VZEROHit->Cell();
158 GetHitsData(cell+1)->Fill(VZEROHit->Tof());
159 GetHitsData(cell+1+72)->Fill(VZEROHit->Charge());
160 }
161}
162
163
164//____________________________________________________________________________
165
166void AliVZEROQADataMakerSim::MakeHits(TTree *hitTree)
167{
168 //fills QA histos for Hits
169 TClonesArray * hits = new TClonesArray("AliVZEROhit", 1000);
170
171 TBranch * branch = hitTree->GetBranch("VZERO") ;
172 if ( ! branch ) {
173 AliWarning("VZERO branch in Hit Tree not found") ;
174 } else {
175
176 if (branch) {
177 branch->SetAddress(&hits);
178 }else{
179 AliError("Branch VZERO hit not found");
180 exit(111);
181 }
182 Int_t ntracks = (Int_t) hitTree->GetEntries();
183
184 if (ntracks<=0) return;
185 // Start loop on tracks in the hits containers
186 for (Int_t track=0; track<ntracks;track++) {
187 branch->GetEntry(track);
188 GetHitsData(0)->Fill(hits->GetEntriesFast()) ; // fills Hit multiplicity
189 Int_t nhits = hits->GetEntriesFast();
190 for (Int_t ihit=0;ihit<nhits;ihit++)
191 {
192 AliVZEROhit * VZEROHit = (AliVZEROhit*) hits->UncheckedAt(ihit);
193 if (!VZEROHit) {
194 AliError("The unchecked hit doesn't exist");
195 break;
196 }
197 Int_t cell = VZEROHit->Cell();
198 GetHitsData(cell+1)->Fill(VZEROHit->Tof());
199 GetHitsData(cell+1+72)->Fill(VZEROHit->Charge());
200 }
201 }
202 }
203}
204
205
206//____________________________________________________________________________
207void AliVZEROQADataMakerSim::MakeDigits(TClonesArray * digits)
208{
209 // makes data from Digits
210
211 GetDigitsData(0)->Fill(digits->GetEntriesFast()) ;
212 TIter next(digits) ;
213 AliVZEROdigit *VZERODigit ;
214 while ( (VZERODigit = dynamic_cast<AliVZEROdigit *>(next())) ) {
215 Int_t PMNumber = VZERODigit->PMNumber();
216 GetDigitsData(PMNumber +1)->Fill( VZERODigit->Time()) ; // in 100 of picoseconds
217 GetDigitsData(PMNumber +1+64)->Fill( VZERODigit->ADC()) ;
218 }
219}
220
221
222//____________________________________________________________________________
223void AliVZEROQADataMakerSim::MakeDigits(TTree *digitTree)
224{
225 // makes data from Digit Tree
226
227 TClonesArray * digits = new TClonesArray("AliVZERODigit", 1000) ;
228
229 TBranch * branch = digitTree->GetBranch("VZERO") ;
230 if ( ! branch ) {
231 AliWarning("VZERO branch in Digit Tree not found") ;
232 } else {
233 branch->SetAddress(&digits) ;
234 branch->GetEntry(0) ;
235 MakeDigits(digits) ;
236 }
237}
238
239
240//____________________________________________________________________________
241void AliVZEROQADataMakerSim::StartOfDetectorCycle()
242{
243 //Detector specific actions at start of cycle
244
245}