]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - VZERO/AliVZEROPreprocessor.cxx
Coverity 18391
[u/mrichter/AliRoot.git] / VZERO / AliVZEROPreprocessor.cxx
... / ...
CommitLineData
1#include "AliVZEROPreprocessor.h"
2#include "AliVZEROCalibData.h"
3#include "AliVZEROTriggerData.h"
4#include "AliCDBMetaData.h"
5#include "AliCDBEntry.h"
6#include "AliDCSValue.h"
7#include "AliLog.h"
8#include "AliShuttleInterface.h"
9#include "AliVZERODataFEE.h"
10#include "AliVZERODataDCS.h"
11
12#include <TFile.h>
13#include <TTimeStamp.h>
14#include <TObjString.h>
15#include <TSystem.h>
16#include <TH1F.h>
17
18
19class Tlist;
20
21//
22// This class is a simple preprocessor for VZERO detector.
23//
24// It gets High Voltage values for a given run from DCS and Pedestal values from DAQ
25// and writes them as Calibration MetaData into OCDB/VZERO/Calib/Data
26// It also retrieves FEE parameters from DCS archive
27// and writes them as Trigger MetaData into OCDB/VZERO/Trigger/Data
28// (to be used for trigger simulation)
29//
30
31ClassImp(AliVZEROPreprocessor)
32
33//______________________________________________________________________________________________
34AliVZEROPreprocessor::AliVZEROPreprocessor(AliShuttleInterface* shuttle) :
35 AliPreprocessor("V00", shuttle),
36 fData(0),
37 fFEEData(0)
38
39{
40 // constructor
41
42 AddRunType("STANDALONE_PULSER");
43 AddRunType("STANDALONE_BC");
44 AddRunType("PHYSICS");
45
46}
47
48//______________________________________________________________________________________________
49AliVZEROPreprocessor::~AliVZEROPreprocessor()
50{
51 // destructor
52 delete fFEEData;
53 delete fData;
54
55}
56
57//______________________________________________________________________________________________
58void AliVZEROPreprocessor::Initialize(Int_t run, UInt_t startTime,
59 UInt_t endTime)
60{
61 // Creates AliVZERODataDCS object
62
63 AliPreprocessor::Initialize(run, startTime, endTime);
64
65 Log(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
66 TTimeStamp(startTime).AsString(),
67 TTimeStamp(endTime).AsString()));
68
69 fRun = run;
70 // fStartTime = startTime;
71 // fEndTime = endTime;
72 fStartTime = GetStartTimeDCSQuery ();
73 fEndTime = GetEndTimeDCSQuery ();
74 time_t daqStart = (time_t) (((TString)GetRunParameter("DAQ_time_start")).Atoi());
75 time_t daqEnd = (time_t) (((TString)GetRunParameter("DAQ_time_end")).Atoi());
76 time_t ctpStart = (time_t) (((TString)GetRunParameter("TRGTimeStart")).Atoi());
77 time_t ctpEnd = (time_t) (((TString)GetRunParameter("TRGTimeEnd")).Atoi());
78
79 fData = new AliVZERODataDCS(fRun, fStartTime, fEndTime,(UInt_t)daqStart, (UInt_t)daqEnd,(UInt_t)ctpStart, (UInt_t)ctpEnd);
80 fFEEData = new AliVZERODataFEE(fRun, fStartTime, fEndTime);
81
82}
83
84//______________________________________________________________________________________________
85UInt_t AliVZEROPreprocessor::Process(TMap* dcsAliasMap)
86{
87 // Fills data retrieved from DCS and DAQ into a AliVZEROCalibData object and
88 // stores it into CalibrationDB
89
90
91 // *** GET RUN TYPE ***
92 TString runType = GetRunType();
93
94
95 // *** REFERENCE DATA ***
96
97 TString fileName;
98 AliVZEROCalibData *calibData = new AliVZEROCalibData();
99
100 // *************** HV From DCS ******************
101 // Fills data into a AliVZERODataDCS object
102 if(!dcsAliasMap) return 1;
103
104 // The Processing of the DCS input data is forwarded to AliVZERODataDCS
105 if (!fData->ProcessData(*dcsAliasMap)) return 1;
106
107 // Writes VZERO PMs HV values into VZERO calibration object and Timing resolution parameters
108 calibData->FillDCSData(fData);
109
110 // *************** From DAQ ******************
111
112 TString sourcesId = "V00da_results";
113
114 TList* sourceList = GetFileSources(kDAQ, sourcesId.Data());
115 if (!sourceList) {
116 Log(Form("No sources found for id %s", sourcesId.Data()));
117 return 1; }
118 Log(Form("The following sources produced files with the id %s",sourcesId.Data()));
119 sourceList->Print();
120
121 TIter iter(sourceList);
122 TObjString *source;
123
124 while((source=dynamic_cast<TObjString*> (iter.Next()))){
125 fileName = GetFile(kDAQ, sourcesId.Data(), source->GetName());
126 if (fileName.Length() > 0)
127 Log(Form("Got the file %s, now we can extract some values.", fileName.Data()));
128 FILE *file;
129 if((file = fopen(fileName.Data(),"r")) == NULL){
130 Log(Form("Cannot open file %s",fileName.Data()));
131 return 1;}
132 Float_t pedMean[128], pedSigma[128], adcMean[128], adcSigma[128] ;
133 for(Int_t j=0; j<128; j++) {
134 Int_t resScan = fscanf(file,"%f %f %f %f",
135 &pedMean[j], &pedSigma[j], &adcMean[j], &adcSigma[j]);
136 if (resScan != 4) Log(Form("Bad data in file %s !",fileName.Data()));
137 }
138 fclose(file);
139
140 calibData->SetPedestal(pedMean);
141 calibData->SetSigma(pedSigma);
142 calibData->SetADCsigma(adcSigma);
143 }
144
145 delete source;
146
147 // Check that everything was properly transmitted
148
149// for(Int_t j=0; j<128; j++){printf("Pedestal[%d] -> %f \n",j,calibData->GetPedestal(j));}
150// for(Int_t j=0; j<128; j++){printf("pedSigma[%d] -> %f \n",j,calibData->GetSigma(j));}
151// for(Int_t j=0; j<128; j++){printf("Gain[%d] -> %f \n",j,calibData->GetGain(j));}
152// for(Int_t j=0; j<128; j++){printf("adcSigma[%d] -> %f \n",j,calibData->GetADCsigma(j));}
153// for(Int_t j=0; j<64; j++){printf("MeanHV[%d] -> %f \n",j,calibData->GetMeanHV(j));}
154// for(Int_t j=0; j<64; j++){printf("WidthHV[%d] -> %f \n",j,calibData->GetWidthHV(j));}
155
156 // Now we store the VZERO Calibration Object into CalibrationDB
157
158 Bool_t resECal=kTRUE;
159
160 Bool_t result = 0;
161// if(sourceList && sourceList->GetEntries()>0)
162// {
163 AliCDBMetaData metaData;
164 metaData.SetBeamPeriod(0);
165 metaData.SetResponsible("Brigitte Cheynis");
166 metaData.SetComment("This preprocessor fills an AliVZEROCalibData object");
167
168 resECal = Store("Calib", "Data", calibData, &metaData, 0, kTRUE);
169// }
170 if(resECal==kFALSE ) result = 1;
171
172
173 delete calibData;
174 delete sourceList;
175
176 // -----------------------------------------------------------------------
177 // Retrieves Front End Electronics Parameters from DCS archive
178 // -----------------------------------------------------------------------
179 AliVZEROTriggerData *triggerData = new AliVZEROTriggerData();
180
181 // The processing of the DCS input data is forwarded to AliVZERODataFEE
182 fFEEData->ProcessData(*dcsAliasMap);
183
184 // Writes VZERO FEE parameters values into VZERO Trigger parametrization object
185 triggerData->FillData(fFEEData);
186
187 // Stores the VZERO Trigger Object into TriggerDB
188
189 resECal=kTRUE;
190
191 metaData.SetBeamPeriod(0);
192 metaData.SetResponsible("Brigitte Cheynis");
193 metaData.SetComment("This preprocessor fills an AliVZEROTriggerData object");
194
195 resECal = Store("Trigger", "Data", triggerData, &metaData, 0, kTRUE);
196 if(resECal==kFALSE ) result = 1;
197
198
199 // *************** From DAQ DA - Equalization factors ******************
200
201 TH1F *eqFactors = new TH1F("VZEROEqualizationFactors","VZERO Equalization Factors for Pb-Pb",64,-0.5,63.5);
202 sourcesId = "V00DAEqualFactors";
203
204 TList* sourceList2 = GetFileSources(kDAQ, sourcesId.Data());
205 if (!sourceList2) {
206 Log(Form("No sources found for id %s", sourcesId.Data()));
207 return 1; }
208 Log(Form("The following sources produced files with the id %s",sourcesId.Data()));
209 sourceList2->Print();
210
211 TIter iter2(sourceList2);
212 TObjString *source2;
213
214 while((source2=dynamic_cast<TObjString*> (iter2.Next()))){
215 fileName = GetFile(kDAQ, sourcesId.Data(), source2->GetName());
216 if (fileName.Length() > 0)
217 Log(Form("Got the file %s, now we can extract some values.", fileName.Data()));
218 FILE *file2;
219 if((file2 = fopen(fileName.Data(),"r")) == NULL){
220 Log(Form("Cannot open file %s",fileName.Data()));
221 return 1;}
222
223 Double_t alpha[66];
224 alpha[0] = alpha[65] = 0;
225 Int_t tempCh;
226 Float_t tempAlpha;
227 for(Int_t j=0; j<64; ++j) {
228 Int_t resScan = fscanf(file2,"%d %f", &tempCh, &tempAlpha);
229 if (resScan != 2) Log(Form("Bad data in file %s !",fileName.Data()));
230 alpha[tempCh+1] = tempAlpha;
231 }
232 fclose(file2);
233
234 // Check that everything was properly transmitted
235 printf("Equalization factors (0->64): ");
236 for(Int_t j=0; j<64; ++j) printf("%.5f ",alpha[j+1]);
237 printf("\n");
238
239 eqFactors->SetContent(alpha);
240 }
241
242 delete source2;
243
244 // Now we store the VZERO Equalization Factors Object into OCDB
245
246 resECal=kTRUE;
247
248 AliCDBMetaData metaData2;
249 metaData2.SetBeamPeriod(0);
250 metaData2.SetResponsible("Brigitte Cheynis");
251 metaData2.SetComment("VZERO Equalization Factors object filled by VZERO preprocessor");
252
253 resECal = Store("Calib", "EqualizationFactors", eqFactors, &metaData2, 0, kTRUE);
254
255 if(resECal==kFALSE ) result = 1;
256
257 delete eqFactors;
258 delete sourceList2;
259
260
261 return result;
262}
263