]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ZDC/AliZDCPreprocessor.cxx
a15eeb38359d7d413a75ff2a074867e52a0e2015
[u/mrichter/AliRoot.git] / ZDC / AliZDCPreprocessor.cxx
1 // --- ROOT system
2 #include <TFile.h>
3 #include <TTimeStamp.h>
4
5 #include "AliZDCPreprocessor.h"
6 #include "AliCDBManager.h"
7 #include "AliCDBEntry.h"
8 #include "AliCDBMetaData.h"
9 #include "AliDCSValue.h"
10 #include "AliLog.h"
11 #include "AliZDCDataDCS.h"
12 #include "AliZDCCalibData.h"
13
14 //
15 // Class implementing ZDC pre-processor.
16 // It takes data from DCS and passes it to the class AliZDCDataDCS.
17 // The class is then written to the CDB.
18 //
19
20 ClassImp(AliZDCPreprocessor)
21
22 //______________________________________________________________________________________________
23 AliZDCPreprocessor::AliZDCPreprocessor(const char* detector, AliShuttleInterface* shuttle) :
24   AliPreprocessor(detector, shuttle),
25   fData(0)
26 {
27   // constructor
28 }
29
30 //______________________________________________________________________________________________
31 AliZDCPreprocessor::~AliZDCPreprocessor()
32 {
33   // destructor
34 }
35
36
37 //______________________________________________________________________________________________
38 void AliZDCPreprocessor::Initialize(Int_t run, UInt_t startTime,
39         UInt_t endTime)
40 {
41   // Creates AliZDCDataDCS object
42
43   AliPreprocessor::Initialize(run, startTime, endTime);
44
45         AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
46                 TTimeStamp(startTime).AsString(),
47                 TTimeStamp(endTime).AsString()));
48
49         fData = new AliZDCDataDCS(fRun, fStartTime, fEndTime);
50 }
51
52 //______________________________________________________________________________________________
53 UInt_t AliZDCPreprocessor::Process(TMap* dcsAliasMap)
54 {
55   // Fills data into a AliZDCDataDCS object
56   if(!dcsAliasMap) return 0;
57
58   // The processing of the DCS input data is forwarded to AliZDCDataDCS
59   Float_t DCSValues[26];
60   fData->ProcessData(*dcsAliasMap, DCSValues);
61   //dcsAliasMap->Print("");
62   //
63   AliZDCCalibData *calibdata = new AliZDCCalibData("ZDC");
64   calibdata->SetDCSCalibData(DCSValues);
65
66   const char* PedFileName = GetFile(kDAQ, "PEDESTALS", "LDC0");
67   const Int_t NZDCch = 44;
68   if(PedFileName){
69     AliInfo(Form("File %s connected to analyze pedestal events", PedFileName));
70     Float_t PedVal[(3*NZDCch)][2];
71     for(Int_t i=0; i<(3*NZDCch); i++){
72        for(Int_t j=0; j<2; j++){
73           fscanf(file,"%f",&PedVal[i][j]);
74           printf("PedVal[%d][%d] -> %f \n",i,j,PedVal[i][j]);
75        }
76        if(i<NZDCch){
77          calibdata->SetMeanPed(i,PedVal[i][0]);
78          calibdata->SetMeanPedWidth(i,PedVal[i][1]);
79        }
80        else if(i>=NZDCch && i<(2*NZDCch)){
81          calibdata->SetOOTPed(i,PedVal[i][0]);
82          calibdata->SetOOTPedWidth(i,PedVal[i][1]);
83        }
84        else if(i>=(2*NZDCch) && i<(3*NZDCch)){
85          calibdata->SetPedCorrCoeff(i,PedVal[i][0],PedVal[i][1]);
86        }
87     }
88   }
89   else AliInfo(Form("File %s not found", PedFileName));
90
91   const char* EMDFileName = GetFile(kDAQ, "EMDCALIB", "LDC0");
92   if(EMDFileName){
93     AliInfo(Form("File %s connected to analyze EM dissociation events", EMDFileName));
94     Float_t EMDFitVal[2];
95     for(Int_t j=0; j<2; j++){          
96       fscanf(file,"%f",&EMDFitVal[j]);
97     }
98     calibdata->SetEnCalib(EMDFitVal);
99   }
100   else AliInfo(Form("File %s not found", EMDFileName));
101   //
102   calibdata->Print("");
103   
104   // note that the parameters are returned as character strings!
105   const char* nEvents = GetRunParameter("totalEvents");
106   if (nEvents) {
107         Log(Form("Number of events for run %d: %s",fRun, nEvents));
108   } else {
109         Log(Form("Number of events not put in logbook!"));
110   }
111
112   //Now we have to store the final CDB file
113   AliCDBMetaData metaData;
114   metaData.SetBeamPeriod(0);
115   metaData.SetResponsible("Chiara");
116   metaData.SetComment("This preprocessor fills an AliZDCDataDCS object.");
117
118   UInt_t result = Store("SHUTTLE","Data",fData, &metaData, 0, 0);
119   delete fData;
120   fData = 0;
121
122   return result;
123 }
124