]>
Commit | Line | Data |
---|---|---|
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 | Based on the QA code for PHOS written by Yves Schutz July 2007 | |
17 | ||
18 | Authors: J.Klay (Cal Poly) May 2008 | |
19 | S. Salur LBL April 2008 | |
20 | ||
21 | */ | |
22 | ||
23 | // --- ROOT system --- | |
24 | #include <TClonesArray.h> | |
25 | #include <TFile.h> | |
26 | #include <TH1F.h> | |
27 | #include <TH1I.h> | |
28 | #include <TH2F.h> | |
29 | ||
30 | // --- Standard library --- | |
31 | ||
32 | // --- AliRoot header files --- | |
33 | #include "AliESDCaloCluster.h" | |
601c73e3 | 34 | #include "AliESDCaloCells.h" |
94594e5d | 35 | #include "AliESDEvent.h" |
36 | #include "AliLog.h" | |
37 | #include "AliEMCALQADataMakerRec.h" | |
38 | #include "AliQAChecker.h" | |
39 | #include "AliEMCALRecPoint.h" | |
40 | #include "AliEMCALRawUtils.h" | |
41 | #include "AliEMCALReconstructor.h" | |
42 | #include "AliEMCALRecParam.h" | |
78328afd | 43 | #include "AliRawReader.h" |
94594e5d | 44 | |
45 | ClassImp(AliEMCALQADataMakerRec) | |
46 | ||
47 | //____________________________________________________________________________ | |
48 | AliEMCALQADataMakerRec::AliEMCALQADataMakerRec() : | |
49 | AliQADataMakerRec(AliQA::GetDetName(AliQA::kEMCAL), "EMCAL Quality Assurance Data Maker") | |
50 | { | |
51 | // ctor | |
52 | } | |
53 | ||
54 | //____________________________________________________________________________ | |
55 | AliEMCALQADataMakerRec::AliEMCALQADataMakerRec(const AliEMCALQADataMakerRec& qadm) : | |
56 | AliQADataMakerRec() | |
57 | { | |
58 | //copy ctor | |
59 | SetName((const char*)qadm.GetName()) ; | |
60 | SetTitle((const char*)qadm.GetTitle()); | |
61 | } | |
62 | ||
63 | //__________________________________________________________________ | |
64 | AliEMCALQADataMakerRec& AliEMCALQADataMakerRec::operator = (const AliEMCALQADataMakerRec& qadm ) | |
65 | { | |
66 | // Equal operator. | |
67 | this->~AliEMCALQADataMakerRec(); | |
68 | new(this) AliEMCALQADataMakerRec(qadm); | |
69 | return *this; | |
70 | } | |
71 | ||
72 | //____________________________________________________________________________ | |
57acd2d2 | 73 | void AliEMCALQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray ** list) |
94594e5d | 74 | { |
75 | //Detector specific actions at end of cycle | |
76 | // do the QA checking | |
77 | AliQAChecker::Instance()->Run(AliQA::kEMCAL, task, list) ; | |
78 | } | |
79 | ||
80 | //____________________________________________________________________________ | |
81 | void AliEMCALQADataMakerRec::InitESDs() | |
82 | { | |
83 | //Create histograms to controll ESD | |
601c73e3 | 84 | TH1F * h1 = new TH1F("hESDCaloClusterE", "ESDs CaloCluster energy in EMCAL", 200, 0., 20.) ; |
94594e5d | 85 | h1->Sumw2() ; |
601c73e3 | 86 | Add2ESDsList(h1, kESDCaloClusE) ; |
87 | ||
88 | TH1I * h2 = new TH1I("hESDCaloClusterM", "ESDs CaloCluster multiplicity in EMCAL", 100, 0, 100) ; | |
94594e5d | 89 | h2->Sumw2() ; |
601c73e3 | 90 | Add2ESDsList(h2, kESDCaloClusM) ; |
91 | ||
92 | TH1F * h3 = new TH1F("hESDCaloCellA", "ESDs CaloCell amplitude in EMCAL", 500, 0., 250.) ; | |
94594e5d | 93 | h3->Sumw2() ; |
601c73e3 | 94 | Add2ESDsList(h3, kESDCaloCellA) ; |
94594e5d | 95 | |
601c73e3 | 96 | TH1I * h4 = new TH1I("hESDCaloCellM", "ESDs CaloCell multiplicity in EMCAL", 200, 0, 1000) ; |
94594e5d | 97 | h4->Sumw2() ; |
601c73e3 | 98 | Add2ESDsList(h4, kESDCaloCellM) ; |
94594e5d | 99 | |
100 | } | |
101 | ||
102 | //____________________________________________________________________________ | |
103 | void AliEMCALQADataMakerRec::InitRecPoints() | |
104 | { | |
105 | // create Reconstructed Points histograms in RecPoints subdir | |
601c73e3 | 106 | TH1F* h0 = new TH1F("hEMCALRpE","EMCAL RecPoint energies",200, 0.,20.); //GeV |
107 | h0->Sumw2(); | |
108 | Add2RecPointsList(h0,kRecPE); | |
94594e5d | 109 | |
601c73e3 | 110 | TH1I* h1 = new TH1I("hEMCALRpM","EMCAL RecPoint multiplicities",100,0,100); |
111 | h1->Sumw2(); | |
112 | Add2RecPointsList(h1,kRecPM); | |
94594e5d | 113 | |
601c73e3 | 114 | TH1I* h2 = new TH1I("hEMCALRpDigM","EMCAL RecPoint Digit Multiplicities",20,0,20); |
115 | h2->Sumw2(); | |
116 | Add2RecPointsList(h2,kRecPDigM); | |
94594e5d | 117 | |
118 | } | |
119 | ||
120 | //____________________________________________________________________________ | |
121 | void AliEMCALQADataMakerRec::InitRaws() | |
122 | { | |
123 | // create Raws histograms in Raws subdir | |
601c73e3 | 124 | //these need more thought |
125 | /* | |
126 | TH1I * h0 = new TH1I("hLowEmcalSupermodules", "Low Gain digits in EMCAL supermodules", 12, 0, 12) ; | |
127 | h0->Sumw2() ; | |
128 | Add2RawsList(h0, kNsmodLG) ; | |
129 | TH1I * h1 = new TH1I("hHighEmcalSupermodules", "High Gain Digits in EMCAL supermodules", 12, 0, 12) ; | |
130 | h1->Sumw2() ; | |
131 | Add2RawsList(h1, kNsmodHG) ; | |
94594e5d | 132 | |
601c73e3 | 133 | TH1F * h2 = new TH1F("hLowEmcalRawtime", "Low Gain Time of raw digits in EMCAL", 500, -50., 200.) ; |
134 | h2->Sumw2() ; | |
135 | Add2RawsList(h2, kLGtime) ; | |
136 | TH1F * h3 = new TH1F("hHighEmcalRawtime", "High Gain Time of raw digits in EMCAL", 500, -50., 200.) ; | |
137 | h3->Sumw2() ; | |
138 | Add2RawsList(h3, kHGtime) ; | |
94594e5d | 139 | |
601c73e3 | 140 | TH1F * h4 = new TH1F("hLowEmcalRawEnergy", "Low Gain Energy of raw digits in EMCAL", 500, 0., 1000.) ; |
141 | h4->Sumw2() ; | |
142 | Add2RawsList(h4, kSpecLG) ; | |
143 | TH1F * h5 = new TH1F("hHighEmcalRawEnergy", "High Gain Energy of raw digits in EMCAL",500,0., 1000.) ; | |
144 | h5->Sumw2() ; | |
145 | Add2RawsList(h5, kSpecHG) ; | |
146 | ||
147 | TH1I * h6 = new TH1I("hLowNtot", "Low Gain Total Number of raw digits in EMCAL", 500, 0, 10000) ; | |
148 | h6->Sumw2() ; | |
149 | Add2RawsList(h6, kNtotLG) ; | |
150 | TH1I * h7 = new TH1I("hHighNtot", "High Gain Total Number of raw digits in EMCAL",500,0, 10000) ; | |
151 | h7->Sumw2() ; | |
152 | Add2RawsList(h7, kNtotHG) ; | |
153 | ||
154 | TH1F * h8 = new TH1F("hLowEtot", "Low Gain Total Energy of raw digits in EMCAL", 500, 0., 5000.) ; | |
155 | h8->Sumw2() ; | |
156 | Add2RawsList(h8, kEtotLG) ; | |
157 | TH1F * h9 = new TH1F("hHighEtot", "High Gain Total Energy of raw digits in EMCAL",500,0., 100000.) ; | |
158 | h9->Sumw2() ; | |
159 | Add2RawsList(h9, kEtotHG) ; | |
160 | */ | |
94594e5d | 161 | |
162 | } | |
163 | ||
164 | //____________________________________________________________________________ | |
165 | void AliEMCALQADataMakerRec::MakeESDs(AliESDEvent * esd) | |
166 | { | |
167 | // make QA data from ESDs | |
168 | ||
169 | Int_t nTot = 0 ; | |
94594e5d | 170 | for ( Int_t index = 0; index < esd->GetNumberOfCaloClusters() ; index++ ) { |
171 | AliESDCaloCluster * clu = esd->GetCaloCluster(index) ; | |
172 | if( clu->IsEMCAL() ) { | |
601c73e3 | 173 | GetESDsData(kESDCaloClusE)->Fill(clu->E()) ; |
94594e5d | 174 | nTot++ ; |
175 | } | |
176 | } | |
601c73e3 | 177 | GetESDsData(kESDCaloClusM)->Fill(nTot) ; |
178 | ||
179 | //fill calo cells | |
180 | AliESDCaloCells* cells = esd->GetEMCALCells(); | |
181 | GetESDsData(kESDCaloCellM)->Fill(cells->GetNumberOfCells()) ; | |
182 | ||
183 | for ( Int_t index = 0; index < cells->GetNumberOfCells() ; index++ ) { | |
184 | GetESDsData(kESDCaloCellA)->Fill(cells->GetAmplitude(index)) ; | |
185 | } | |
186 | ||
94594e5d | 187 | } |
188 | ||
189 | //____________________________________________________________________________ | |
78328afd | 190 | void AliEMCALQADataMakerRec::MakeRaws(AliRawReader* rawReader) |
94594e5d | 191 | { |
192 | //Fill prepared histograms with Raw digit properties | |
193 | ||
194 | //Raw histogram filling not yet implemented | |
601c73e3 | 195 | // |
196 | //Need to figure out how to get the info we want without having to | |
197 | //actually run Raw2Digits twice. | |
198 | //I suspect what we actually want is a raw digits method, not a true | |
199 | //emcal raw data method, but this doesn't seem to be allowed in | |
200 | //AliQADataMakerRec.h | |
94594e5d | 201 | |
78328afd | 202 | rawReader->Reset() ; |
94594e5d | 203 | } |
204 | ||
205 | //____________________________________________________________________________ | |
206 | void AliEMCALQADataMakerRec::MakeRecPoints(TTree * clustersTree) | |
207 | { | |
208 | // makes data from RecPoints | |
209 | TBranch *emcbranch = clustersTree->GetBranch("EMCALECARP"); | |
210 | if (!emcbranch) { | |
211 | AliError("can't get the branch with the EMCAL clusters !"); | |
212 | return; | |
213 | } | |
214 | TObjArray * emcrecpoints = new TObjArray(100) ; | |
215 | emcbranch->SetAddress(&emcrecpoints); | |
216 | emcbranch->GetEntry(0); | |
217 | ||
601c73e3 | 218 | GetRecPointsData(kRecPM)->Fill(emcrecpoints->GetEntriesFast()) ; |
94594e5d | 219 | TIter next(emcrecpoints) ; |
220 | AliEMCALRecPoint * rp ; | |
94594e5d | 221 | while ( (rp = dynamic_cast<AliEMCALRecPoint *>(next())) ) { |
601c73e3 | 222 | GetRecPointsData(kRecPE)->Fill( rp->GetEnergy()) ; |
223 | GetRecPointsData(kRecPDigM)->Fill(rp->GetMultiplicity()); | |
94594e5d | 224 | } |
94594e5d | 225 | emcrecpoints->Delete(); |
226 | delete emcrecpoints; | |
227 | ||
228 | } | |
229 | ||
230 | //____________________________________________________________________________ | |
231 | void AliEMCALQADataMakerRec::StartOfDetectorCycle() | |
232 | { | |
233 | //Detector specific actions at start of cycle | |
234 | ||
235 | } |