1 /**************************************************************************
2 * Copyright(c) 1998-1999, 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 **************************************************************************/
17 /* $Id: AliVZEROQADataMakerSim.cxx 23123 2007-12-18 09:08:18Z hristov $ */
20 // Produces the data needed to calculate the quality assurance.
21 // All data must be mergeable objects.
25 // --- ROOT system ---
26 #include <TClonesArray.h>
29 #include <TDirectory.h>
30 // --- Standard library ---
32 // --- AliRoot header files ---
33 #include "AliESDEvent.h"
35 #include "AliVZEROdigit.h"
36 #include "AliVZEROhit.h"
37 #include "AliVZEROQADataMakerSim.h"
38 #include "AliQAChecker.h"
40 ClassImp(AliVZEROQADataMakerSim)
42 //____________________________________________________________________________
43 AliVZEROQADataMakerSim::AliVZEROQADataMakerSim() :
44 AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kVZERO), "VZERO Quality Assurance Data Maker")
52 //____________________________________________________________________________
53 AliVZEROQADataMakerSim::AliVZEROQADataMakerSim(const AliVZEROQADataMakerSim& qadm) :
58 SetName((const char*)qadm.GetName()) ;
59 SetTitle((const char*)qadm.GetTitle());
62 //__________________________________________________________________
63 AliVZEROQADataMakerSim& AliVZEROQADataMakerSim::operator = (const AliVZEROQADataMakerSim& qadm )
66 this->~AliVZEROQADataMakerSim();
67 new(this) AliVZEROQADataMakerSim(qadm);
70 //____________________________________________________________________________
71 void AliVZEROQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
73 //Detector specific actions at end of cycle
75 ResetEventTrigClasses();
76 AliQAChecker::Instance()->Run(AliQAv1::kVZERO, task, list) ;
80 //____________________________________________________________________________
81 void AliVZEROQADataMakerSim::InitHits()
84 // create Hits histograms in Hits subdir
85 const Bool_t expert = kTRUE ;
86 const Bool_t image = kTRUE ;
88 TH1I * h0 = new TH1I("hHitMultiplicity", "Hit multiplicity distribution in VZERO;# of Hits;Entries", 300, 0, 299) ;
90 Add2HitsList(h0, 0, !expert, image) ;
92 TH1I * h1 = new TH1I("hHitCellNumber", "Hit cell distribution in VZERO;# of Hits;Entries", 80, 0, 79) ;
94 Add2HitsList(h1, 1, !expert, image) ;
96 ClonePerTrigClass(AliQAv1::kHITS); // this should be the last line
99 //____________________________________________________________________________
100 void AliVZEROQADataMakerSim::InitDigits()
102 // create Digits histograms in Digits subdir
103 const Bool_t expert = kTRUE ;
104 const Bool_t image = kTRUE ;
109 // create Digits histograms in Digits subdir
110 TH1I * h0 = new TH1I("hDigitMultiplicity", "Digits multiplicity distribution in VZERO;# of Digits;Entries", 100, 0, 99) ;
112 Add2DigitsList(h0, 0, !expert, image) ;
114 for (Int_t i=0; i<64; i++)
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.);
119 Add2DigitsList(fhDigTDC[i],i+1, !expert, image);
120 Add2DigitsList(fhDigADC[i],i+1+64, !expert, image);
123 ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
127 //____________________________________________________________________________
128 void AliVZEROQADataMakerSim::MakeHits()
130 //make QA data from Hits
132 Int_t nhits = fHitsArray->GetEntriesFast();
133 FillHitsData(0,nhits) ; // fills Hit multiplicity
134 for (Int_t ihit=0;ihit<nhits;ihit++)
136 AliVZEROhit * VZEROHit = (AliVZEROhit*) fHitsArray->UncheckedAt(ihit);
138 AliError("The unchecked hit doesn't exist");
141 FillHitsData(1,VZEROHit->Cell());
146 //____________________________________________________________________________
148 void AliVZEROQADataMakerSim::MakeHits(TTree *hitTree)
150 //fills QA histos for Hits
152 fHitsArray->Clear() ;
154 fHitsArray = new TClonesArray("AliVZEROhit", 1000);
156 TBranch * branch = hitTree->GetBranch("VZERO") ;
158 AliWarning("VZERO branch in Hit Tree not found") ;
162 branch->SetAddress(&fHitsArray);
164 AliError("Branch VZERO hit not found");
167 // Check id histograms already created for this Event Specie
168 if ( ! GetHitsData(0) )
171 Int_t ntracks = (Int_t) hitTree->GetEntries();
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);
177 Int_t nhits = fHitsArray->GetEntriesFast();
178 FillHitsData(0,nhits) ; // fills Hit multiplicity
179 for (Int_t ihit=0;ihit<nhits;ihit++)
181 AliVZEROhit * VZEROHit = (AliVZEROhit*) fHitsArray->UncheckedAt(ihit);
183 AliError("The unchecked hit doesn't exist");
186 FillHitsData(1,VZEROHit->Cell());
191 IncEvCountCycleHits();
192 IncEvCountTotalHits();
197 //____________________________________________________________________________
198 void AliVZEROQADataMakerSim::MakeDigits()
200 // makes data from Digits
202 FillDigitsData(0,fDigitsArray->GetEntriesFast()) ;
203 TIter next(fDigitsArray) ;
204 AliVZEROdigit *VZERODigit ;
205 while ( (VZERODigit = dynamic_cast<AliVZEROdigit *>(next())) ) {
206 Int_t PMNumber = VZERODigit->PMNumber();
207 FillDigitsData(PMNumber +1, VZERODigit->Time()) ; // in 100 of picoseconds
208 FillDigitsData(PMNumber +1+64, VZERODigit->ADC()) ;
213 //____________________________________________________________________________
214 void AliVZEROQADataMakerSim::MakeDigits(TTree *digitTree)
216 // makes data from Digit Tree
219 fDigitsArray->Clear() ;
221 fDigitsArray = new TClonesArray("AliVZEROdigit", 1000) ;
223 TBranch * branch = digitTree->GetBranch("VZERODigit") ;
225 AliWarning("VZERO branch in Digit Tree not found") ;
227 branch->SetAddress(&fDigitsArray) ;
228 branch->GetEntry(0) ;
232 IncEvCountCycleDigits();
233 IncEvCountTotalDigits();
238 //____________________________________________________________________________
239 void AliVZEROQADataMakerSim::StartOfDetectorCycle()
241 //Detector specific actions at start of cycle