]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONQADataMakerSim.cxx
minor coverity defect: added protection for self-assignment
[u/mrichter/AliRoot.git] / MUON / AliMUONQADataMakerSim.cxx
... / ...
CommitLineData
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// $Id$
17
18#include "AliMUONQADataMakerSim.h"
19#include "AliMUONHit.h"
20#include "AliMUONDigit.h"
21#include "AliMUONVHitStore.h"
22#include "AliMUONVDigitStore.h"
23
24// --- AliRoot header files ---
25#include "AliLog.h"
26#include "AliQAChecker.h"
27
28// --- ROOT system ---
29#include <TClonesArray.h>
30#include <TFile.h>
31#include <TH1F.h>
32#include <TH1I.h>
33#include <TH2F.h>
34#include <TTree.h>
35
36//-----------------------------------------------------------------------------
37/// \class AliMUONQADataMakerSim
38///
39/// MUON base class for quality assurance data (histo) maker
40///
41/// \author C. Finck
42
43/// \cond CLASSIMP
44ClassImp(AliMUONQADataMakerSim)
45/// \endcond
46
47//____________________________________________________________________________
48AliMUONQADataMakerSim::AliMUONQADataMakerSim() :
49 AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kMUON), "MUON Quality Assurance Data Maker"),
50 fHitStore(0x0),
51 fDigitStore(0x0)
52{
53 /// Default constructor
54
55 AliDebug(AliQAv1::GetQADebugLevel(),"");
56}
57
58//____________________________________________________________________________
59AliMUONQADataMakerSim::AliMUONQADataMakerSim(const AliMUONQADataMakerSim& qadm) :
60 AliQADataMakerSim(),
61 fHitStore(0x0),
62 fDigitStore(0x0)
63{
64 /// Copy constructor
65
66 AliDebug(AliQAv1::GetQADebugLevel(),"");
67
68 if ( qadm.fHitStore )
69 {
70 fHitStore = static_cast<AliMUONVHitStore*>(qadm.fHitStore->Clone());
71 }
72 if ( qadm.fDigitStore )
73 {
74 fDigitStore = static_cast<AliMUONVDigitStore*>(qadm.fDigitStore->Clone());
75 }
76 SetName((const char*)qadm.GetName()) ;
77 SetTitle((const char*)qadm.GetTitle());
78}
79
80//__________________________________________________________________
81AliMUONQADataMakerSim& AliMUONQADataMakerSim::operator = (const AliMUONQADataMakerSim& qadm )
82{
83 /// Assignment operator
84
85 AliDebug(AliQAv1::GetQADebugLevel(),"");
86
87 this->~AliMUONQADataMakerSim();
88 new(this) AliMUONQADataMakerSim(qadm);
89 return *this;
90}
91
92//__________________________________________________________________
93AliMUONQADataMakerSim::~AliMUONQADataMakerSim()
94{
95 /// Destructor
96
97 AliDebug(AliQAv1::GetQADebugLevel(),"");
98
99 delete fHitStore;
100 delete fDigitStore;
101}
102
103//__________________________________________________________________
104void AliMUONQADataMakerSim::InitHits()
105{
106 /// Initialized hit spectra
107 const Bool_t expert = kTRUE ;
108 const Bool_t image = kTRUE ;
109
110 TH1F* h0 = new TH1F("hHitDetElem", "DetElemId distribution in Hits;Detection element Id;Counts", 1400, 100., 1500.);
111 Add2HitsList(h0, 0, !expert, image);
112
113 TH1F* h1 = new TH1F("hHitPtot", "P distribution in Hits;P [erg];Counts ", 300, 0., 300.);
114 Add2HitsList(h1, 1, !expert, image);
115 //
116 ClonePerTrigClass(AliQAv1::kHITS); // this should be the last line
117}
118
119//__________________________________________________________________
120void AliMUONQADataMakerSim::InitSDigits()
121{
122 /// Initialized SDigits spectra
123 const Bool_t expert = kTRUE ;
124 const Bool_t image = kTRUE ;
125
126 TH1I* h0 = new TH1I("hSDigitsDetElem", "Detection element distribution in SDigits;Detection element Id;Counts", 1400, 100, 1500);
127 Add2SDigitsList(h0, 0, !expert, image);
128
129 TH1F* h1 = new TH1F("hSDigitsCharge", "Charge distribution in SDigits;Charge [??];Counts", 4096, 0, 4095);
130 Add2SDigitsList(h1, 1, !expert, image);
131 //
132 ClonePerTrigClass(AliQAv1::kSDIGITS); // this should be the last line
133}
134
135//__________________________________________________________________
136void AliMUONQADataMakerSim::InitDigits()
137{
138 /// Initialized Digits spectra
139 const Bool_t expert = kTRUE ;
140 const Bool_t image = kTRUE ;
141
142 TH1I* h0 = new TH1I("hDigitsDetElem", "Detection element distribution in Digits;Detection element Id;Counts", 1400, 100, 1500);
143 Add2DigitsList(h0, 0, !expert, image);
144
145 TH1I* h1 = new TH1I("hDigitsADC", "ADC distribution in Digits;ACD value;Counts", 4096, 0, 4095);
146 Add2DigitsList(h1, 1, !expert, image);
147 //
148 ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
149}
150
151//__________________________________________________________________
152void AliMUONQADataMakerSim::MakeHits(TTree* hitsTree)
153{
154 /// makes data from Hits
155
156 if (!fHitStore)
157 fHitStore = AliMUONVHitStore::Create(*hitsTree);
158 fHitStore->Connect(*hitsTree, false);
159 hitsTree->GetEvent(0);
160
161 TIter next(fHitStore->CreateIterator());
162
163 AliMUONHit* hit = 0x0;
164
165 while ( ( hit = static_cast<AliMUONHit*>(next()) ) )
166 {
167 FillHitsData(0,hit->DetElemId());
168 FillHitsData(1,hit->Momentum());
169 }
170 //
171 IncEvCountCycleHits();
172 IncEvCountTotalHits();
173 //
174}
175
176//__________________________________________________________________
177void AliMUONQADataMakerSim::MakeSDigits(TTree* sdigitsTree)
178{
179 /// makes data from SDigits
180
181 if (!fDigitStore)
182 fDigitStore = AliMUONVDigitStore::Create(*sdigitsTree);
183 fDigitStore->Connect(*sdigitsTree, false);
184 sdigitsTree->GetEvent(0);
185
186 TIter next(fDigitStore->CreateIterator());
187
188 AliMUONVDigit* dig = 0x0;
189
190 while ( ( dig = static_cast<AliMUONVDigit*>(next()) ) )
191 {
192 FillSDigitsData(0,dig->DetElemId());
193 FillSDigitsData(1,dig->Charge());
194 }
195 //
196 IncEvCountCycleSDigits();
197 IncEvCountTotalSDigits();
198 //
199}
200
201//__________________________________________________________________
202void AliMUONQADataMakerSim::MakeDigits(TTree* digitsTree)
203{
204 /// makes data from Digits
205
206 if (!fDigitStore)
207 fDigitStore = AliMUONVDigitStore::Create(*digitsTree);
208 fDigitStore->Connect(*digitsTree, false);
209 digitsTree->GetEvent(0);
210
211 TIter next(fDigitStore->CreateIterator());
212
213 AliMUONVDigit* dig = 0x0;
214
215 while ( ( dig = static_cast<AliMUONVDigit*>(next()) ) )
216 {
217 FillDigitsData(0,dig->DetElemId());
218 FillDigitsData(1,dig->ADC());
219 }
220 //
221 IncEvCountCycleDigits();
222 IncEvCountTotalDigits();
223 //
224}
225
226//____________________________________________________________________________
227void AliMUONQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list)
228{
229 ///Detector specific actions at end of cycle
230 // do the QA checking
231 ResetEventTrigClasses();
232 AliQAChecker::Instance()->Run(AliQAv1::kMUON, task, list) ;
233}
234
235
236//____________________________________________________________________________
237void AliMUONQADataMakerSim::StartOfDetectorCycle()
238{
239 /// Detector specific actions at start of cycle
240
241}