]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONQADataMakerSim.cxx
Introducing event specie in QA (Yves)
[u/mrichter/AliRoot.git] / MUON / AliMUONQADataMakerSim.cxx
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
44 ClassImp(AliMUONQADataMakerSim)
45 /// \endcond
46            
47 //____________________________________________________________________________ 
48 AliMUONQADataMakerSim::AliMUONQADataMakerSim() : 
49     AliQADataMakerSim(AliQA::GetDetName(AliQA::kMUON), "MUON Quality Assurance Data Maker"),
50     fHitStore(0x0),
51     fDigitStore(0x0)   
52 {
53     /// ctor
54   AliDebug(1,"");
55 }
56
57 //____________________________________________________________________________ 
58 AliMUONQADataMakerSim::AliMUONQADataMakerSim(const AliMUONQADataMakerSim& qadm) :
59     AliQADataMakerSim(),
60   fHitStore(0x0),
61   fDigitStore(0x0)
62 {
63   AliDebug(1,"");
64
65     ///copy ctor
66     if ( qadm.fHitStore ) 
67     {
68       fHitStore = static_cast<AliMUONVHitStore*>(qadm.fHitStore->Clone());
69     }
70     if ( qadm.fDigitStore ) 
71     {
72       fDigitStore = static_cast<AliMUONVDigitStore*>(qadm.fDigitStore->Clone());
73     }
74     SetName((const char*)qadm.GetName()) ; 
75     SetTitle((const char*)qadm.GetTitle()); 
76 }
77
78 //__________________________________________________________________
79 AliMUONQADataMakerSim& AliMUONQADataMakerSim::operator = (const AliMUONQADataMakerSim& qadm )
80 {
81     AliDebug(1,"");
82
83     /// Equal operator.
84     this->~AliMUONQADataMakerSim();
85     new(this) AliMUONQADataMakerSim(qadm);
86     return *this;
87 }
88
89 //__________________________________________________________________
90 AliMUONQADataMakerSim::~AliMUONQADataMakerSim()
91 {
92   AliDebug(1,"");
93
94     /// dtor
95   delete fHitStore;
96   delete fDigitStore;
97 }
98
99 //__________________________________________________________________
100 void AliMUONQADataMakerSim::InitHits() 
101 {
102   /// Initialized hit spectra
103   TH1F* h0 = new TH1F("hHitDetElem", "DetElemId distribution in Hits", 1400, 100., 1500.); 
104   Add2HitsList(h0, 0);
105
106   TH1F* h1 = new TH1F("hHitPtot", "P distribution in Hits ", 300, 0., 300.); 
107   Add2HitsList(h1, 1);
108   return;
109
110
111 //__________________________________________________________________
112 void AliMUONQADataMakerSim::InitSDigits() 
113 {
114   /// Initialized SDigits spectra
115   TH1I* h0 = new TH1I("hSDigitsDetElem", "Detection element distribution in SDigits",  1400, 100, 1500); 
116   Add2SDigitsList(h0, 0);
117
118   TH1F* h1 = new TH1F("hSDigitsCharge", "Charge distribution in SDigits", 4096, 0, 4095); 
119   Add2SDigitsList(h1, 1);
120
121 }  
122
123 //__________________________________________________________________
124 void AliMUONQADataMakerSim::InitDigits() 
125 {
126   /// Initialized Digits spectra 
127   TH1I* h0 = new TH1I("hDigitsDetElem", "Detection element distribution in Digits",  1400, 100, 1500); 
128   Add2DigitsList(h0, 0);
129
130   TH1I* h1 = new TH1I("hDigitsADC", "ADC distribution in Digits", 4096, 0, 4095); 
131   Add2DigitsList(h1, 1);  
132
133
134
135 //__________________________________________________________________
136 void AliMUONQADataMakerSim::MakeHits(TTree* hitsTree)        
137 {
138   /// makes data from Hits
139   if (!fHitStore)
140     fHitStore = AliMUONVHitStore::Create(*hitsTree);
141   fHitStore->Connect(*hitsTree, false);
142   hitsTree->GetEvent(0);
143     
144   TIter next(fHitStore->CreateIterator());
145
146   AliMUONHit* hit = 0x0;
147
148   while ( ( hit = static_cast<AliMUONHit*>(next()) ) )
149   {
150     GetHitsData(0)->Fill(hit->DetElemId());
151     GetHitsData(1)->Fill(hit->Momentum());
152   }
153
154   
155 }
156
157 //__________________________________________________________________
158 void AliMUONQADataMakerSim::MakeSDigits(TTree* sdigitsTree)        
159 {
160   /// makes data from SDigits
161   if (!fDigitStore)
162     fDigitStore = AliMUONVDigitStore::Create(*sdigitsTree);
163   fDigitStore->Connect(*sdigitsTree, false);
164   sdigitsTree->GetEvent(0);
165     
166   TIter next(fDigitStore->CreateIterator());
167
168   AliMUONVDigit* dig = 0x0;
169
170   while ( ( dig = static_cast<AliMUONVDigit*>(next()) ) )
171   {
172     GetSDigitsData(0)->Fill(dig->DetElemId());
173     GetSDigitsData(1)->Fill(dig->Charge());
174   }
175
176
177 //__________________________________________________________________
178 void AliMUONQADataMakerSim::MakeDigits(TTree* digitsTree)         
179 {
180    /// makes data from Digits
181   if (!fDigitStore)
182     fDigitStore = AliMUONVDigitStore::Create(*digitsTree);
183   fDigitStore->Connect(*digitsTree, false);
184   digitsTree->GetEvent(0);
185     
186   TIter next(fDigitStore->CreateIterator());
187
188   AliMUONVDigit* dig = 0x0;
189
190   while ( ( dig = static_cast<AliMUONVDigit*>(next()) ) )
191   {
192     GetDigitsData(0)->Fill(dig->DetElemId());
193     GetDigitsData(1)->Fill(dig->ADC());
194   }
195 }
196       
197 //____________________________________________________________________________ 
198 void AliMUONQADataMakerSim::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray** list)
199 {
200     ///Detector specific actions at end of cycle
201     // do the QA checking
202     AliQAChecker::Instance()->Run(AliQA::kMUON, task, list) ;  
203 }
204
205
206 //____________________________________________________________________________ 
207 void AliMUONQADataMakerSim::StartOfDetectorCycle()
208 {
209     /// Detector specific actions at start of cycle
210   
211 }