]>
Commit | Line | Data |
---|---|---|
e8f49998 | 1 | #if !defined(__CINT__) || defined(__MAKECINT__) |
e8f49998 | 2 | using namespace std; |
37e550bd | 3 | #include "iostream" |
4 | ||
5 | #include <TStopwatch.h> | |
6 | #include <TStyle.h> | |
7 | #include <TFile.h> | |
8 | #include <TH1F.h> | |
9 | #include <TH2F.h> | |
10 | #include <TString.h> | |
11 | #include <TCanvas.h> | |
12 | #include <TSystem.h> | |
13 | #include <TGrid.h> | |
14 | #include <TMath.h> | |
15 | ||
16 | #include "AliRawReader.h" | |
17 | #include "AliCaloRawStreamV3.h" | |
18 | #include "AliLog.h" | |
19 | #include "AliCentralTrigger.h" | |
20 | #include "AliTriggerConfiguration.h" | |
21 | #include "AliTriggerClass.h" | |
22 | #include "AliCDBManager.h" | |
e8f49998 | 23 | |
24 | #endif | |
25 | ||
37e550bd | 26 | //----------------------------------------------------------------------------- |
27 | static Bool_t firstEvent = kTRUE; | |
28 | static Int_t runNum; | |
29 | static UInt_t period; | |
30 | static UInt_t orbitID; | |
31 | static UInt_t bcID; | |
32 | static AliRawReader *reader; | |
33 | TString GetTriggerClass(ULong64_t); | |
34 | ||
35 | //----------------------------------------------------------------------------- | |
faa97b1b | 36 | void Pedestals(const TString rawFile= "", const char *selectTrigger="CPHI") |
e8f49998 | 37 | { |
38 | // Read raw data, decode it to samples, | |
39 | // calculate pedestals from presamples, | |
40 | // evaluate the signal amplitude as a maximum sample, | |
41 | // and fill histograms with pedestals and amplitudes | |
42 | // This script should be compiled to speed up the data processing: | |
43 | // .L Pedestals.C++ | |
44 | //___ | |
45 | // Yuri Kharlov. 6 September 2007 | |
46 | ||
47 | TStopwatch stopwatch; | |
48 | stopwatch.Start(); | |
49 | ||
50 | if (rawFile.BeginsWith("alien://")) { | |
e8f49998 | 51 | TGrid::Connect("alien://"); |
52 | } | |
53 | ||
37e550bd | 54 | AliCDBManager *man = AliCDBManager::Instance(); |
55 | man->SetDefaultStorage("raw://"); | |
56 | ||
57 | reader = AliRawReader::Create(rawFile); | |
e8f49998 | 58 | reader->Reset(); |
59 | ||
60 | TStopwatch timer; | |
61 | timer.Start(); | |
62 | ||
63 | AliCaloRawStreamV3 *stream = new AliCaloRawStreamV3(reader,"PHOS"); | |
64 | ||
65 | TString baseNamePed ="hPed"; | |
66 | TString baseTitlePed="Ped in cell ("; | |
67 | const char* sgain[3]={"LG","HG", "TRU"}; | |
68 | ||
37e550bd | 69 | const Int_t caloFlagMax=2,modMax=5,cellXMax=64,cellZMax=56; |
70 | Int_t module,caloFlag,cellX,cellZ; | |
71 | TH1F *hPed[5][2][64][56]; | |
72 | for (module=0; module<modMax; module++) { | |
73 | for (caloFlag=0; caloFlag<caloFlagMax; caloFlag++) { | |
74 | for (cellX=0; cellX<cellXMax; cellX++) { | |
75 | for (cellZ=0; cellZ<cellZMax; cellZ++) { | |
76 | hPed[module][caloFlag][cellX][cellZ] = 0; | |
e8f49998 | 77 | } |
78 | } | |
79 | } | |
80 | } | |
81 | TH1F *hPedHiMean1m2 = new TH1F("hPedHiMean1m2","Mean pedestals in module 2, high gain" ,100,0.,100.); | |
82 | TH1F *hPedHiRMS1m2 = new TH1F("hPedHiRMS1m2" ,"RMS pedestals in module 2, high gain" ,100,0.,50.); | |
83 | TH1F *hPedLoMean1m2 = new TH1F("hPedLoMean1m2","Mean pedestals in module 2, low gain" ,100,0.,100.); | |
84 | TH1F *hPedLoRMS1m2 = new TH1F("hPedLoRMS1m2" ,"RMS pedestals in module 2, low gain" ,100,0.,50.); | |
85 | TH1F *hPedTRUMean1m2 = new TH1F("hPedTRUMean1m2","Mean pedestals in module 2, TRU" ,1000,0.,1000.); | |
86 | TH1F *hPedTRURMS1m2 = new TH1F("hPedTRURMS1m2" ,"RMS pedestals in module 2, TRU" ,100,0.,50.); | |
87 | ||
88 | TH1F *hPedHiMean1m3 = new TH1F("hPedHiMean1m3","Mean pedestals in module 3, high gain" ,100,0.,100.); | |
89 | TH1F *hPedHiRMS1m3 = new TH1F("hPedHiRMS1m3" ,"RMS pedestals in module 3, high gain" ,100,0.,50.); | |
90 | TH1F *hPedLoMean1m3 = new TH1F("hPedLoMean1m3","Mean pedestals in module 3, low gain" ,100,0.,100.); | |
91 | TH1F *hPedLoRMS1m3 = new TH1F("hPedLoRMS1m3" ,"RMS pedestals in module 3, low gain" ,100,0.,50.); | |
92 | TH1F *hPedTRUMean1m3 = new TH1F("hPedTRUMean1m3","Mean pedestals in module 3, TRU" ,1000,0.,1000.); | |
93 | TH1F *hPedTRURMS1m3 = new TH1F("hPedTRURMS1m3" ,"RMS pedestals in module 3, TRU" ,100,0.,50.); | |
94 | ||
95 | TH1F *hPedHiMean1m4 = new TH1F("hPedHiMean1m4","Mean pedestals in module 4, high gain" ,100,0.,100.); | |
96 | TH1F *hPedHiRMS1m4 = new TH1F("hPedHiRMS1m4" ,"RMS pedestals in module 4, high gain" ,100,0.,50.); | |
97 | TH1F *hPedLoMean1m4 = new TH1F("hPedLoMean1m4","Mean pedestals in module 4, low gain" ,100,0.,100.); | |
98 | TH1F *hPedLoRMS1m4 = new TH1F("hPedLoRMS1m4" ,"RMS pedestals in module 4, low gain" ,100,0.,50.); | |
99 | TH1F *hPedTRUMean1m4 = new TH1F("hPedTRUMean1m4","Mean pedestals in module 4, TRU" ,1000,0.,1000.); | |
100 | TH1F *hPedTRURMS1m4 = new TH1F("hPedTRURMS1m4" ,"RMS pedestals in module 4, TRU" ,100,0.,50.); | |
101 | ||
102 | hPedHiMean1m2->Sumw2(); | |
103 | hPedHiRMS1m2 ->Sumw2(); | |
104 | hPedLoMean1m2->Sumw2(); | |
105 | hPedLoRMS1m2 ->Sumw2(); | |
106 | hPedTRUMean1m2->Sumw2(); | |
107 | hPedTRURMS1m2 ->Sumw2(); | |
108 | hPedHiMean1m3->Sumw2(); | |
109 | hPedHiRMS1m3 ->Sumw2(); | |
110 | hPedLoMean1m3->Sumw2(); | |
111 | hPedLoRMS1m3 ->Sumw2(); | |
112 | hPedTRUMean1m3->Sumw2(); | |
113 | hPedTRURMS1m3 ->Sumw2(); | |
114 | hPedHiMean1m4->Sumw2(); | |
115 | hPedHiRMS1m4 ->Sumw2(); | |
116 | hPedLoMean1m4->Sumw2(); | |
117 | hPedLoRMS1m4 ->Sumw2(); | |
118 | hPedTRUMean1m4->Sumw2(); | |
119 | hPedTRURMS1m4 ->Sumw2(); | |
120 | ||
121 | TH2F *hPedHiMeanm2 = new TH2F("hPedHiMeanm2","Mean pedestals in module 2, high gain", | |
122 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
123 | TH2F *hPedHiRMSm2 = new TH2F("hPedHiRMSm2" ,"R.M.S. of pedestals in module 2, high gain", | |
124 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
125 | TH2F *hPedHiNumm2 = new TH2F("hPedHiNumm2" ,"Number of pedestals in module 2, high gain", | |
126 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
127 | TH2F *hPedLoMeanm2 = new TH2F("hPedLoMeanm2","Mean pedestals in module 2, low gain", | |
128 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
129 | TH2F *hPedLoRMSm2 = new TH2F("hPedLoRMSm2" ,"R.M.S. of pedestals in module 2, low gain", | |
130 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
131 | TH2F *hPedLoNumm2 = new TH2F("hPedLoNumm2" ,"Number of pedestals in module 2, low gain", | |
132 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
133 | ||
134 | TH2F *hPedHiMeanm3 = new TH2F("hPedHiMeanm3","Mean pedestals in module 3, high gain", | |
135 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
136 | TH2F *hPedHiRMSm3 = new TH2F("hPedHiRMSm3" ,"R.M.S. of pedestals in module 3, high gain", | |
137 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
138 | TH2F *hPedHiNumm3 = new TH2F("hPedHiNumm3" ,"Number of pedestals in module 3, high gain", | |
139 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
140 | TH2F *hPedLoMeanm3 = new TH2F("hPedLoMeanm3","Mean pedestals in module 3, low gain", | |
141 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
142 | TH2F *hPedLoRMSm3 = new TH2F("hPedLoRMSm3" ,"R.M.S. of pedestals in module 3, low gain", | |
143 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
144 | TH2F *hPedLoNumm3 = new TH2F("hPedLoNumm3" ,"Number of pedestals in module 3, low gain", | |
145 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
146 | ||
147 | TH2F *hPedHiMeanm4 = new TH2F("hPedHiMeanm4","Mean pedestals in module 4, high gain", | |
148 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
149 | TH2F *hPedHiRMSm4 = new TH2F("hPedHiRMSm4" ,"R.M.S. of pedestals in module 4, high gain", | |
150 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
151 | TH2F *hPedHiNumm4 = new TH2F("hPedHiNumm4" ,"Number of pedestals in module 4, high gain", | |
152 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
153 | TH2F *hPedLoMeanm4 = new TH2F("hPedLoMeanm4","Mean pedestals in module 4, low gain", | |
154 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
155 | TH2F *hPedLoRMSm4 = new TH2F("hPedLoRMSm4" ,"R.M.S. of pedestals in module 4, low gain", | |
156 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
157 | TH2F *hPedLoNumm4 = new TH2F("hPedLoNumm4" ,"Number of pedestals in module 4, low gain", | |
158 | cellXMax,0.,cellXMax, cellZMax,0.,cellZMax); | |
159 | ||
160 | TH1I *hNBunches = new TH1I("hNBunches","Number of bunches",10,0,10); | |
161 | TH2I *hHWaddr = new TH2I("hHWaddr","DDL is vs HW addr",216,0,216,4096,0,4096); | |
162 | TH1I *hModule = new TH1I("hModule" ,"Module number", 5,0.,5); | |
163 | ||
164 | Int_t iEvent=0; | |
37e550bd | 165 | runNum=0; |
e8f49998 | 166 | |
167 | while (reader->NextEvent()) { | |
37e550bd | 168 | if (firstEvent) { |
169 | firstEvent = kFALSE; | |
170 | runNum = reader->GetRunNumber(); | |
171 | man = AliCDBManager::Instance(); | |
172 | man ->SetRun(runNum); | |
173 | } | |
174 | ULong64_t triggerMask = reader->GetClassMask(); | |
175 | TString trclasses = GetTriggerClass(triggerMask); | |
176 | ||
177 | period = reader->GetPeriod(); | |
178 | orbitID = reader->GetOrbitID(); | |
179 | bcID = reader->GetBCID(); | |
180 | iEvent++; | |
181 | if (!trclasses.Contains(selectTrigger)) continue; | |
182 | AliInfoGeneral("",Form("Reading event %d of type %d, time %d, trig.class \"%s\"", | |
183 | iEvent,reader->GetType(), reader->GetTimestamp(), trclasses.Data())); | |
e8f49998 | 184 | while (stream->NextDDL()) { |
185 | while (stream->NextChannel()) { | |
37e550bd | 186 | module = stream->GetModule(); // [0-4] |
187 | cellX = stream->GetCellX(); // [0-63] | |
188 | cellZ = stream->GetCellZ(); // [0-55] | |
189 | caloFlag = stream->GetCaloFlag(); // [0-3] | |
190 | if (caloFlag!=0 && caloFlag!=1) continue; | |
191 | if (module<0 || module>=modMax || | |
192 | cellX<0 || cellX>=cellXMax || | |
193 | cellZ<0 || cellZ>=cellZMax) { | |
194 | AliInfoGeneral("",Form("Wrong cell ID (m,x,z)=(%d,%d,%d)",module,cellX,cellZ)); | |
195 | break; | |
196 | } | |
e8f49998 | 197 | |
198 | hHWaddr->Fill(stream->GetDDLNumber(),stream->GetHWAddress()); | |
199 | hModule->Fill(module); | |
37e550bd | 200 | if (hPed[module][caloFlag][cellX][cellZ] == 0) { |
e8f49998 | 201 | TString name = baseNamePed; |
202 | TString title = baseTitlePed; | |
203 | name +="_g"; name +=caloFlag; | |
204 | name +="_m"; name +=module; | |
205 | name +="_x"; name +=cellX; | |
206 | name +="_z"; name +=cellZ; | |
207 | ||
208 | title +=module; title +=","; | |
37e550bd | 209 | title +=cellX ; title +=","; |
210 | title +=cellZ ; title +="), "; | |
e8f49998 | 211 | title +=sgain[caloFlag]; |
212 | ||
213 | Int_t nx,xmin,xmax; | |
214 | if (caloFlag==0 || caloFlag==1) { | |
215 | nx=100; | |
216 | xmin=0.; | |
217 | xmax=100.; | |
218 | } | |
219 | else { | |
220 | nx=1000; | |
221 | xmin=0.; | |
222 | xmax=1000.; | |
223 | } | |
224 | hPed[module][caloFlag][cellX][cellZ] = new TH1F(name,title,100,0.,100.); | |
225 | hPed[module][caloFlag][cellX][cellZ]->Sumw2(); | |
226 | hPed[module][caloFlag][cellX][cellZ]->SetMarkerStyle(20); | |
227 | hPed[module][caloFlag][cellX][cellZ]->SetOption("eph"); | |
228 | } | |
229 | ||
230 | Int_t nBunches = 0; | |
231 | while (stream->NextBunch()) { | |
232 | nBunches++; | |
233 | const UShort_t *sig = stream->GetSignals(); | |
234 | Int_t sigLength = stream->GetBunchLength(); | |
235 | // for (Int_t i = sigLength-70; i < sigLength; i++) { | |
236 | for (Int_t i = 0; i < sigLength; i++) { | |
237 | hPed[module][caloFlag][cellX][cellZ]->Fill(sig[i]); | |
238 | } | |
239 | } | |
240 | hNBunches->Fill(nBunches); | |
241 | } // end of NextChannel() | |
242 | ||
243 | } // end of NextDDL() | |
244 | } // end of nextEvent() | |
245 | ||
246 | // Fill 2-dim histograms for mean, rms and n pedestals | |
247 | ||
37e550bd | 248 | for (module=0; module<modMax; module++) { |
249 | for (caloFlag=0; caloFlag<2; caloFlag++) { | |
250 | for (cellX=0; cellX<cellXMax; cellX++) { | |
251 | for (cellZ=0; cellZ<cellZMax; cellZ++) { | |
252 | if (hPed[module][caloFlag][cellX][cellZ] != 0) { | |
e8f49998 | 253 | if (caloFlag == 0) { |
37e550bd | 254 | if (module==2) { |
255 | hPedLoMean1m2->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
256 | hPedLoRMS1m2 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
257 | hPedLoMeanm2 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetMean() ); | |
258 | hPedLoRMSm2 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
259 | hPedLoNumm2 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetEntries() ); | |
e8f49998 | 260 | } |
37e550bd | 261 | else if (module==3) { |
262 | hPedLoMean1m3->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
263 | hPedLoRMS1m3 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
264 | hPedLoMeanm3 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetMean() ); | |
265 | hPedLoRMSm3 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
266 | hPedLoNumm3 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetEntries() ); | |
e8f49998 | 267 | } |
37e550bd | 268 | else if (module==4) { |
269 | hPedLoMean1m4->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
270 | hPedLoRMS1m4 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
271 | hPedLoMeanm4 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetMean() ); | |
272 | hPedLoRMSm4 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
273 | hPedLoNumm4 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetEntries() ); | |
e8f49998 | 274 | } |
275 | } | |
276 | else if (caloFlag == 1) { | |
37e550bd | 277 | if (module==2) { |
278 | hPedHiMean1m2->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
279 | hPedHiRMS1m2 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
280 | hPedHiMeanm2 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetMean() ); | |
281 | hPedHiRMSm2 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
282 | hPedHiNumm2 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetEntries() ); | |
e8f49998 | 283 | } |
37e550bd | 284 | if (module==3) { |
285 | hPedHiMean1m3->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
286 | hPedHiRMS1m3 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
287 | hPedHiMeanm3 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetMean() ); | |
288 | hPedHiRMSm3 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
289 | hPedHiNumm3 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetEntries() ); | |
e8f49998 | 290 | } |
37e550bd | 291 | if (module==4) { |
292 | hPedHiMean1m4->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
293 | hPedHiRMS1m4 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
294 | hPedHiMeanm4 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetMean() ); | |
295 | hPedHiRMSm4 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
296 | hPedHiNumm4 ->Fill( cellX, cellZ, hPed[module][caloFlag][cellX][cellZ]->GetEntries() ); | |
e8f49998 | 297 | } |
298 | } | |
299 | else if (caloFlag == 2) { | |
37e550bd | 300 | if (module==2) { |
301 | hPedTRUMean1m2->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
302 | hPedTRURMS1m2 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
e8f49998 | 303 | } |
37e550bd | 304 | if (module==3) { |
305 | hPedTRUMean1m3->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
306 | hPedTRURMS1m3 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
e8f49998 | 307 | } |
37e550bd | 308 | if (module==4) { |
309 | hPedTRUMean1m4->Fill( hPed[module][caloFlag][cellX][cellZ]->GetMean()); | |
310 | hPedTRURMS1m4 ->Fill( hPed[module][caloFlag][cellX][cellZ]->GetRMS() ); | |
e8f49998 | 311 | } |
312 | } | |
313 | } | |
314 | } | |
315 | } | |
316 | } | |
317 | } | |
318 | ||
319 | // Write existing histograms to a root file | |
320 | ||
321 | TString fileName = "ped"; | |
322 | fileName += runNum; | |
323 | fileName += ".root"; | |
324 | TFile *file = new TFile(fileName,"RECREATE"); | |
325 | ||
37e550bd | 326 | for (module=0; module<modMax; module++) { |
327 | for (caloFlag=0; caloFlag<caloFlagMax; caloFlag++) { | |
328 | for (cellX=0; cellX<cellXMax; cellX++) { | |
329 | for (cellZ=0; cellZ<cellZMax; cellZ++) { | |
330 | if (hPed[module][caloFlag][cellX][cellZ] != 0) | |
331 | hPed[module][caloFlag][cellX][cellZ]->Write(); | |
e8f49998 | 332 | } |
333 | } | |
334 | } | |
335 | } | |
336 | ||
337 | hPedHiMean1m2->Write(); | |
338 | hPedHiRMS1m2 ->Write(); | |
339 | hPedLoMean1m2->Write(); | |
340 | hPedLoRMS1m2 ->Write(); | |
341 | hPedHiMeanm2 ->Write(); | |
342 | hPedHiRMSm2 ->Write(); | |
343 | hPedHiNumm2 ->Write(); | |
344 | hPedLoMeanm2 ->Write(); | |
345 | hPedLoRMSm2 ->Write(); | |
346 | hPedLoNumm2 ->Write(); | |
347 | hPedTRUMean1m2->Write(); | |
348 | hPedTRURMS1m2 ->Write(); | |
349 | ||
350 | hPedHiMean1m3->Write(); | |
351 | hPedHiRMS1m3 ->Write(); | |
352 | hPedLoMean1m3->Write(); | |
353 | hPedLoRMS1m3 ->Write(); | |
354 | hPedHiMeanm3 ->Write(); | |
355 | hPedHiRMSm3 ->Write(); | |
356 | hPedHiNumm3 ->Write(); | |
357 | hPedLoMeanm3 ->Write(); | |
358 | hPedLoRMSm3 ->Write(); | |
359 | hPedLoNumm3 ->Write(); | |
360 | hPedTRUMean1m3->Write(); | |
361 | hPedTRURMS1m3 ->Write(); | |
362 | ||
363 | hPedHiMean1m4->Write(); | |
364 | hPedHiRMS1m4 ->Write(); | |
365 | hPedLoMean1m4->Write(); | |
366 | hPedLoRMS1m4 ->Write(); | |
367 | hPedHiMeanm4 ->Write(); | |
368 | hPedHiRMSm4 ->Write(); | |
369 | hPedHiNumm4 ->Write(); | |
370 | hPedLoMeanm4 ->Write(); | |
371 | hPedLoRMSm4 ->Write(); | |
372 | hPedLoNumm4 ->Write(); | |
373 | hPedTRUMean1m4->Write(); | |
374 | hPedTRURMS1m4 ->Write(); | |
375 | ||
376 | hNBunches ->Write(); | |
377 | hHWaddr ->Write(); | |
378 | hModule ->Write(); | |
379 | ||
380 | file->Close(); | |
381 | stopwatch.Print(); | |
382 | } | |
37e550bd | 383 | //----------------------------------------------------------------------------- |
384 | ||
385 | TString GetTriggerClass(ULong64_t triggerMask) | |
386 | { | |
387 | // Convert a trigger mask to a trigger class | |
388 | ||
389 | AliCentralTrigger aCTP; | |
390 | TString configstr(""); | |
391 | TString trclasses; | |
392 | if (!aCTP.LoadConfiguration(configstr)) { // Load CTP config from OCDB | |
393 | AliInfoGeneral("","No trigger configuration found in OCDB! The trigger configuration information will not be used!"); | |
394 | return trclasses; | |
395 | } | |
396 | aCTP.SetClassMask(triggerMask); | |
397 | AliTriggerConfiguration *config = aCTP.GetConfiguration(); | |
398 | const TObjArray& classesArray = config->GetClasses(); | |
399 | Int_t nclasses = classesArray.GetEntriesFast(); | |
400 | for( Int_t iclass=0; iclass < nclasses; iclass++ ) { | |
401 | AliTriggerClass* trclass = (AliTriggerClass*)classesArray.At(iclass); | |
402 | if (trclass && trclass->GetMask()>0) { | |
403 | Int_t trindex = TMath::Nint(TMath::Log2(trclass->GetMask())); | |
404 | reader->LoadTriggerClass(trclass->GetName(),trindex); | |
405 | if (triggerMask & (1ull << trindex)) { | |
406 | trclasses += " "; | |
407 | trclasses += trclass->GetName(); | |
408 | trclasses += " "; | |
409 | } | |
410 | } | |
411 | } | |
412 | return trclasses; | |
413 | } |