1 #include "AliVZEROPreprocessor.h"
2 #include "AliVZEROCalibData.h"
3 #include "AliCDBMetaData.h"
4 #include "AliCDBEntry.h"
5 #include "AliDCSValue.h"
8 #include <TTimeStamp.h>
9 #include <TObjString.h>
14 // This class is a simple preprocessor for V0.
17 ClassImp(AliVZEROPreprocessor)
19 //______________________________________________________________________________________________
20 AliVZEROPreprocessor::AliVZEROPreprocessor(AliShuttleInterface* shuttle) :
21 AliPreprocessor("V00", shuttle),
27 AddRunType("PHYSICS");
31 //______________________________________________________________________________________________
32 AliVZEROPreprocessor::~AliVZEROPreprocessor()
39 //______________________________________________________________________________________________
40 void AliVZEROPreprocessor::Initialize(Int_t run, UInt_t startTime,
43 // Creates AliZDCDataDCS object
45 AliPreprocessor::Initialize(run, startTime, endTime);
47 Log(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
48 TTimeStamp(startTime).AsString(),
49 TTimeStamp(endTime).AsString()));
52 // fStartTime = startTime;
53 // fEndTime = endTime;
54 fStartTime = GetStartTimeDCSQuery ();
55 fEndTime = GetEndTimeDCSQuery ();
57 fData = new AliVZERODataDCS(fRun, fStartTime, fEndTime);
61 //______________________________________________________________________________________________
62 UInt_t AliVZEROPreprocessor::Process(TMap* dcsAliasMap)
64 // Fills data retrieved from DCS and DAQ into a AliVZEROCalibData object and
65 // stores it into CalibrationDB
68 // *** GET RUN TYPE ***
69 TString runType = GetRunType();
72 // *** REFERENCE DATA ***
75 AliVZEROCalibData *calibData = new AliVZEROCalibData();
77 // *************** From DCS ******************
78 // Fills data into a AliVZERODataDCS object
79 if(!dcsAliasMap) return 1;
81 // The processing of the DCS input data is forwarded to AliVZERODataDCS
83 fData->ProcessData(*dcsAliasMap);
84 //fData->Draw(""); // Draws the HV values as a function of time
85 //dcsAliasMap->Print(""); // Prints out the HV values
87 // Writes VZERO PMs HV values into VZERO calibration object
88 calibData->SetMeanHV(fData->GetMeanHV());
89 calibData->SetWidthHV(fData->GetWidthHV());
91 // *************** From DAQ ******************
93 TString SourcesId = "V00da_results";
95 TList* sourceList = GetFileSources(kDAQ, SourcesId.Data());
97 Log(Form("No sources found for id %s", SourcesId.Data()));
99 Log(Form("The following sources produced files with the id %s",SourcesId.Data()));
102 TIter iter(sourceList);
103 TObjString *source = 0;
105 while((source=dynamic_cast<TObjString*> (iter.Next()))){
106 fileName = GetFile(kDAQ, SourcesId.Data(), source->GetName());
107 if (fileName.Length() > 0)
108 Log(Form("Got the file %s, now we can extract some values.", fileName.Data()));
110 if((file = fopen(fileName.Data(),"r")) == NULL){
111 Log(Form("Cannot open file %s",fileName.Data()));
113 Float_t PEDmean[128], PEDsigma[128], ADCmean[128], ADCsigma[128] ;
114 for(Int_t j=0; j<128; j++)fscanf(file,"%f %f %f %f",
115 &PEDmean[j], &PEDsigma[j], &ADCmean[j], &ADCsigma[j]);
118 calibData->SetPedestal(PEDmean);
119 calibData->SetSigma(PEDsigma);
120 calibData->SetGain(ADCmean);
121 calibData->SetADCsigma(ADCsigma);
126 // Check that everything was properly transmitted
128 // for(Int_t j=0; j<128; j++){printf("Pedestal[%d] -> %f \n",j,calibData->GetPedestal(j));}
129 // for(Int_t j=0; j<128; j++){printf("PedSigma[%d] -> %f \n",j,calibData->GetSigma(j));}
130 // for(Int_t j=0; j<128; j++){printf("Gain[%d] -> %f \n",j,calibData->GetGain(j));}
131 // for(Int_t j=0; j<128; j++){printf("ADCsigma[%d] -> %f \n",j,calibData->GetADCsigma(j));}
132 // for(Int_t j=0; j<64; j++){printf("MeanHV[%d] -> %f \n",j,calibData->GetMeanHV(j));}
133 // for(Int_t j=0; j<64; j++){printf("WidthHV[%d] -> %f \n",j,calibData->GetWidthHV(j));}
135 // Now we store the VZERO Calibration Object into CalibrationDB
137 Bool_t resECal=kTRUE;
140 // if(sourceList && sourceList->GetEntries()>0)
142 AliCDBMetaData metaData;
143 metaData.SetBeamPeriod(0);
144 metaData.SetResponsible("Brigitte Cheynis");
145 metaData.SetComment("This preprocessor fills an AliVZEROCalibData object");
147 resECal = Store("Calib", "Data", calibData, &metaData, 0, kTRUE);
149 if(resECal==kFALSE ) result = 1;