Modified file access mode
[u/mrichter/AliRoot.git] / VZERO / AliVZEROPreprocessor.cxx
CommitLineData
d2b85094 1#include "AliVZEROPreprocessor.h"
2#include "AliVZEROCalibData.h"
3#include "AliCDBMetaData.h"
4#include "AliCDBEntry.h"
5#include "AliDCSValue.h"
6#include "AliLog.h"
7#include <TFile.h>
8#include <TTimeStamp.h>
9#include <TObjString.h>
10#include <TSystem.h>
11#include <TList.h>
12
13//
14// This class is a simple preprocessor for V0.
15//
16
17ClassImp(AliVZEROPreprocessor)
18
19//______________________________________________________________________________________________
20AliVZEROPreprocessor::AliVZEROPreprocessor(AliShuttleInterface* shuttle) :
21 AliPreprocessor("V00", shuttle),
22 fData(0)
23
24{
6b6c5c59 25 // constructor
26
27 AddRunType("PHYSICS");
28
d2b85094 29}
30
31//______________________________________________________________________________________________
32AliVZEROPreprocessor::~AliVZEROPreprocessor()
33{
34 // destructor
7009762e 35
36 delete fData;
d2b85094 37}
38
39//______________________________________________________________________________________________
40void AliVZEROPreprocessor::Initialize(Int_t run, UInt_t startTime,
41 UInt_t endTime)
42{
43 // Creates AliZDCDataDCS object
44
d1c61c72 45 AliPreprocessor::Initialize(run, startTime, endTime);
46
47 Log(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
d2b85094 48 TTimeStamp(startTime).AsString(),
49 TTimeStamp(endTime).AsString()));
50
d1c61c72 51 fRun = run;
52 fStartTime = startTime;
53 fEndTime = endTime;
d2b85094 54
d1c61c72 55 fData = new AliVZERODataDCS(fRun, fStartTime, fEndTime);
56
d2b85094 57}
58
d2b85094 59//______________________________________________________________________________________________
60UInt_t AliVZEROPreprocessor::Process(TMap* dcsAliasMap)
61{
62 // Fills data retrieved from DCS and DAQ into a AliVZEROCalibData object and
63 // stores it into CalibrationDB
64
65
66 // *** GET RUN TYPE ***
67 TString runType = GetRunType();
68
69
70 // *** REFERENCE DATA ***
71
72 TString fileName;
73 AliVZEROCalibData *calibData = new AliVZEROCalibData();
74
75 // *************** From DCS ******************
76 // Fills data into a AliVZERODataDCS object
77 if(!dcsAliasMap) return 1;
78
79 // The processing of the DCS input data is forwarded to AliVZERODataDCS
80
81 fData->ProcessData(*dcsAliasMap);
96da3fe8 82 //fData->Draw(""); // Draws the HV values as a function of time
83 //dcsAliasMap->Print(""); // Prints out the HV values
d2b85094 84
96da3fe8 85 // Writes VZERO PMs HV values into VZERO calibration object
d2b85094 86 calibData->SetMeanHV(fData->GetMeanHV());
87 calibData->SetWidthHV(fData->GetWidthHV());
96da3fe8 88
d2b85094 89 // *************** From DAQ ******************
96da3fe8 90
91 TString SourcesId = "CALIB";
92
93 TList* sourceList = GetFileSources(kDAQ, SourcesId.Data());
94 if (!sourceList) {
d1c61c72 95 Log(Form("No sources found for id %s", SourcesId.Data()));
96da3fe8 96 return 1; }
d1c61c72 97 Log(Form("The following sources produced files with the id %s",SourcesId.Data()));
96da3fe8 98 sourceList->Print();
99
100 TIter iter(sourceList);
101 TObjString *source = 0;
102
103 while((source=dynamic_cast<TObjString*> (iter.Next()))){
104 fileName = GetFile(kDAQ, SourcesId.Data(), source->GetName());
105 if (fileName.Length() > 0)
d1c61c72 106 Log(Form("Got the file %s, now we can extract some values.", fileName.Data()));
96da3fe8 107 FILE *file;
108 if((file = fopen(fileName.Data(),"r")) == NULL){
d1c61c72 109 Log(Form("Cannot open file %s",fileName.Data()));
96da3fe8 110 return 1;}
111 Float_t Pedestals[128], Sigmas[128], Gains[128];
112 for(Int_t j=0; j<128; j++)fscanf(file,"%f %f %f ",
113 &Pedestals[j], &Sigmas[j], &Gains[j]);
114 fclose(file);
115
116 calibData->SetPedestal(Pedestals);
117 calibData->SetSigma(Sigmas);
118 calibData->SetGain(Gains); }
025eb721 119
96da3fe8 120 delete source;
d2b85094 121
122 // Check that everything was properly transmitted
123
124// for(Int_t j=0; j<128; j++){printf("ADCPedestal[%d] -> %f \n",j,calibData->GetPedestal(j));}
125// for(Int_t j=0; j<128; j++){printf("ADCGain[%d] -> %f \n",j,calibData->GetGain(j));}
126// for(Int_t j=0; j<128; j++){printf("ADCSigma[%d] -> %f \n",j,calibData->GetSigma(j));}
127// for(Int_t j=0; j<64; j++){printf("MeanHV[%d] -> %f \n",j,calibData->GetMeanHV(j));}
128// for(Int_t j=0; j<64; j++){printf("WidthHV[%d] -> %f \n",j,calibData->GetWidthHV(j));}
96da3fe8 129
d1c61c72 130 // Now we store the VZERO Calibration Object into CalibrationDB
d2b85094 131
025eb721 132 Bool_t result = kFALSE;
133 if(sourceList && sourceList->GetEntries()>0)
134 {
135 AliCDBMetaData metaData;
136 metaData.SetBeamPeriod(0);
137 metaData.SetResponsible("Brigitte Cheynis");
138 metaData.SetComment("This preprocessor fills an AliVZEROCalibData object");
d2b85094 139
025eb721 140 result = Store("Calib", "Data", calibData, &metaData, 0, kTRUE);
141 }
d2b85094 142
143 delete calibData;
025eb721 144 delete sourceList;
d2b85094 145
146 if (!result) return 1;
147 return 0;
148}
149