]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EMCAL/AliEMCALQADataMakerSim.cxx
write to special output (needed for CAF)
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALQADataMakerSim.cxx
CommitLineData
94594e5d 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 Produces the data needed to calculate the quality assurance.
18 All data must be mergeable objects.
19
20 Based on PHOS code written by
21 Y. Schutz CERN July 2007
22*/
23
24// --- ROOT system ---
25#include <TClonesArray.h>
26#include <TFile.h>
27#include <TH1F.h>
28#include <TH1I.h>
29#include <TH2F.h>
30#include <TTree.h>
31
32// --- Standard library ---
33
34// --- AliRoot header files ---
35#include "AliESDCaloCluster.h"
36#include "AliLog.h"
37#include "AliEMCALDigit.h"
38#include "AliEMCALHit.h"
39#include "AliEMCALQADataMakerSim.h"
40#include "AliQAChecker.h"
601c73e3 41#include "AliEMCALSDigitizer.h"
94594e5d 42
43ClassImp(AliEMCALQADataMakerSim)
44
45//____________________________________________________________________________
46 AliEMCALQADataMakerSim::AliEMCALQADataMakerSim() :
4e25ac79 47 AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kEMCAL), "EMCAL Quality Assurance Data Maker")
94594e5d 48{
49 // ctor
50}
51
52//____________________________________________________________________________
53AliEMCALQADataMakerSim::AliEMCALQADataMakerSim(const AliEMCALQADataMakerSim& qadm) :
54 AliQADataMakerSim()
55{
56 //copy ctor
57 SetName((const char*)qadm.GetName()) ;
58 SetTitle((const char*)qadm.GetTitle());
59}
60
61//__________________________________________________________________
62AliEMCALQADataMakerSim& AliEMCALQADataMakerSim::operator = (const AliEMCALQADataMakerSim& qadm )
63{
64 // Assign operator.
65 this->~AliEMCALQADataMakerSim();
66 new(this) AliEMCALQADataMakerSim(qadm);
67 return *this;
68}
69
70//____________________________________________________________________________
4e25ac79 71void AliEMCALQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
94594e5d 72{
73 //Detector specific actions at end of cycle
74 // do the QA checking
4e25ac79 75 AliQAChecker::Instance()->Run(AliQAv1::kEMCAL, task, list) ;
94594e5d 76}
77
78//____________________________________________________________________________
79void AliEMCALQADataMakerSim::InitHits()
80{
81 // create Hits histograms in Hits subdir
7d297381 82 const Bool_t expert = kTRUE ;
83 const Bool_t image = kTRUE ;
84
601c73e3 85 TH1F * h0 = new TH1F("hEmcalHits", "Hits energy distribution in EMCAL", 200, 0., 2.) ; //GeV
94594e5d 86 h0->Sumw2() ;
7d297381 87 Add2HitsList(h0, 0, !expert, image) ;
601c73e3 88 TH1I * h1 = new TH1I("hEmcalHitsMul", "Hits multiplicity distribution in EMCAL", 1000, 0, 10000) ;
94594e5d 89 h1->Sumw2() ;
7d297381 90 Add2HitsList(h1, 1, !expert, image) ;
94594e5d 91}
92
93//____________________________________________________________________________
94void AliEMCALQADataMakerSim::InitDigits()
95{
96 // create Digits histograms in Digits subdir
7d297381 97 const Bool_t expert = kTRUE ;
98 const Bool_t image = kTRUE ;
99
601c73e3 100 TH1I * h0 = new TH1I("hEmcalDigits", "Digits amplitude distribution in EMCAL", 500, 0, 500) ;
94594e5d 101 h0->Sumw2() ;
7d297381 102 Add2DigitsList(h0, 0, !expert, image) ;
601c73e3 103 TH1I * h1 = new TH1I("hEmcalDigitsMul", "Digits multiplicity distribution in EMCAL", 200, 0, 2000) ;
94594e5d 104 h1->Sumw2() ;
7d297381 105 Add2DigitsList(h1, 1, !expert, image) ;
94594e5d 106}
107
108//____________________________________________________________________________
109void AliEMCALQADataMakerSim::InitSDigits()
110{
111 // create SDigits histograms in SDigits subdir
7d297381 112 const Bool_t expert = kTRUE ;
113 const Bool_t image = kTRUE ;
114
601c73e3 115 TH1F * h0 = new TH1F("hEmcalSDigits", "SDigits energy distribution in EMCAL", 200, 0., 20.) ;
94594e5d 116 h0->Sumw2() ;
7d297381 117 Add2SDigitsList(h0, 0, !expert, image) ;
601c73e3 118 TH1I * h1 = new TH1I("hEmcalSDigitsMul", "SDigits multiplicity distribution in EMCAL", 500, 0, 5000) ;
94594e5d 119 h1->Sumw2() ;
7d297381 120 Add2SDigitsList(h1, 1, !expert, image) ;
94594e5d 121}
122
123//____________________________________________________________________________
124void AliEMCALQADataMakerSim::MakeHits(TClonesArray * hits)
125{
126 //make QA data from Hits
127
128 GetHitsData(1)->Fill(hits->GetEntriesFast()) ;
129 TIter next(hits) ;
130 AliEMCALHit * hit ;
131 while ( (hit = dynamic_cast<AliEMCALHit *>(next())) ) {
132 GetHitsData(0)->Fill( hit->GetEnergy()) ;
133 }
134
135}
136
137//____________________________________________________________________________
138void AliEMCALQADataMakerSim::MakeHits(TTree * hitTree)
139{
140 // make QA data from Hit Tree
141
142 TClonesArray * hits = new TClonesArray("AliEMCALHit", 1000);
143
144 TBranch * branch = hitTree->GetBranch("EMCAL") ;
145 if ( ! branch ) {
146 AliWarning("EMCAL branch in Hit Tree not found") ;
147 } else {
148 TClonesArray * tmp = new TClonesArray("AliEMCALHit", 1000) ;
149 branch->SetAddress(&tmp) ;
150 Int_t index = 0 ;
151 for (Int_t ientry = 0 ; ientry < branch->GetEntries() ; ientry++) {
152 branch->GetEntry(ientry) ;
153 for (Int_t ihit = 0 ; ihit < tmp->GetEntries() ; ihit++) {
154 AliEMCALHit * hit = dynamic_cast<AliEMCALHit *> (tmp->At(ihit)) ;
155 new((*hits)[index]) AliEMCALHit(*hit) ;
156 index++ ;
157 }
158 }
159 tmp->Delete() ;
160 delete tmp ;
161 MakeHits(hits) ;
162 }
163}
164
165//____________________________________________________________________________
166void AliEMCALQADataMakerSim::MakeDigits(TClonesArray * digits)
167{
168 // makes data from Digits
169
170 GetDigitsData(1)->Fill(digits->GetEntriesFast()) ;
171 TIter next(digits) ;
172 AliEMCALDigit * digit ;
173 while ( (digit = dynamic_cast<AliEMCALDigit *>(next())) ) {
174 GetDigitsData(0)->Fill( digit->GetAmp()) ;
175 }
176
177}
178
179//____________________________________________________________________________
180void AliEMCALQADataMakerSim::MakeDigits(TTree * digitTree)
181{
182 // makes data from Digit Tree
183 TClonesArray * digits = new TClonesArray("AliEMCALDigit", 1000) ;
184
185 TBranch * branch = digitTree->GetBranch("EMCAL") ;
186 if ( ! branch ) {
187 AliWarning("EMCAL branch in Digit Tree not found") ;
188 } else {
189 branch->SetAddress(&digits) ;
190 branch->GetEntry(0) ;
191 MakeDigits(digits) ;
192 }
193
194}
195
196//____________________________________________________________________________
197void AliEMCALQADataMakerSim::MakeSDigits(TClonesArray * sdigits)
198{
199 // makes data from SDigits
601c73e3 200 //Need a copy of the SDigitizer to calibrate the sdigit amplitude to
201 //energy in GeV
202 AliEMCALSDigitizer* sDigitizer = new AliEMCALSDigitizer();
203
94594e5d 204 GetSDigitsData(1)->Fill(sdigits->GetEntriesFast()) ;
205 TIter next(sdigits) ;
206 AliEMCALDigit * sdigit ;
207 while ( (sdigit = dynamic_cast<AliEMCALDigit *>(next())) ) {
601c73e3 208 GetSDigitsData(0)->Fill( sDigitizer->Calibrate(sdigit->GetAmp())) ;
94594e5d 209 }
210
601c73e3 211 delete sDigitizer;
94594e5d 212}
213
214//____________________________________________________________________________
215void AliEMCALQADataMakerSim::MakeSDigits(TTree * sdigitTree)
216{
217 // makes data from SDigit Tree
218 TClonesArray * sdigits = new TClonesArray("AliEMCALDigit", 1000) ;
219
220 TBranch * branch = sdigitTree->GetBranch("EMCAL") ;
221 if ( ! branch ) {
222 AliWarning("EMCAL branch in SDigit Tree not found") ;
223 } else {
224 branch->SetAddress(&sdigits) ;
225 branch->GetEntry(0) ;
226 MakeSDigits(sdigits) ;
227 }
228
229}
230
231//____________________________________________________________________________
232void AliEMCALQADataMakerSim::StartOfDetectorCycle()
233{
234 //Detector specific actions at start of cycle
235
236}