Fixes in order to write correct raw-data on big-endian platforms (Marco)
[u/mrichter/AliRoot.git] / PMD / AliPMDPreprocessor.cxx
CommitLineData
ad6005fa 1// --- ROOT system
2#include <TFile.h>
3#include <TTimeStamp.h>
4
5#include "AliPMDPreprocessor.h"
6#include "AliPMDCalibData.h"
7#include "AliLog.h"
8#include "AliShuttleInterface.h"
9#include "AliCDBMetaData.h"
10#include <TTimeStamp.h>
11#include <TObjString.h>
12#include <TTree.h>
13#include <TSystem.h>
14
15
16ClassImp(AliPMDPreprocessor)
17
18//______________________________________________________________________________________________
a80b0ff4 19AliPMDPreprocessor::AliPMDPreprocessor(AliShuttleInterface* shuttle) :
20 AliPreprocessor("PMD", shuttle)
ad6005fa 21{
22 // constructor
23}
24
25//______________________________________________________________________________________________
26AliPMDPreprocessor::~AliPMDPreprocessor()
27{
28 // destructor
29}
30
31//______________________________________________________________________________________________
32void AliPMDPreprocessor::Initialize(Int_t run, UInt_t startTime,
33 UInt_t endTime)
34{
35 // Creates AliPMDDataDAQ object
36
37 AliPreprocessor::Initialize(run, startTime, endTime);
38
39 AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
40 TTimeStamp(startTime).AsString(),
41 TTimeStamp(endTime).AsString()));
42
43 fRun = run;
44 fStartTime = startTime;
45 fEndTime = endTime;
46
47}
48
49//______________________________________________________________________________________________
50UInt_t AliPMDPreprocessor::Process(TMap* pdaqAliasMap)
51{
52
7fb72bea 53 if(!pdaqAliasMap) return 1;
ad6005fa 54
55 AliPMDCalibData *calibda = new AliPMDCalibData();
56
57 TList* filesources = GetFileSources(kDAQ, "PMDGAINS");
58
59 if(!filesources) {
a80b0ff4 60 Log(Form("No sources found for PMDGAINS!"));
7fb72bea 61 return 1;
ad6005fa 62 }
63
64 AliInfo("Here's the list of sources for PMDGAINS");
65 filesources->Print();
66
67 TIter iter(filesources);
68 TObjString* source;
ad6005fa 69 UInt_t result = 0;
70 TString filename;
71 while((source=dynamic_cast<TObjString*> (iter.Next()))){
ad6005fa 72 filename = GetFile(kDAQ, "PMDGAINS", source->GetName());
a80b0ff4 73 if(filename.Length() == 0) {
74 Log(Form("Error retrieving file from source %s failed!", source->GetName()));
ad6005fa 75 delete filesources;
7fb72bea 76 return 1;
ad6005fa 77 }
78
a80b0ff4 79 Log(Form("File with id PMDGAINS got from %s", source->GetName()));
ad6005fa 80 Int_t DET,SM,ROW,COL;
81 Float_t GAIN;
82 TFile *f= new TFile(filename.Data());
a80b0ff4 83 if(!f || !f->IsOpen())
84 {
85 Log(Form("Error opening file with Id PMDGAINS from source %s!", source->GetName()));
7fb72bea 86 return 1;
a80b0ff4 87 }
88 TTree *tree = dynamic_cast<TTree *> (f->Get("ic"));
89 if (!tree)
90 {
91 Log("Could not find object \"ic\" in DAQ file!");
7fb72bea 92 return 1;
a80b0ff4 93 }
94
ad6005fa 95 tree->SetBranchAddress("DET", &DET);
96 tree->SetBranchAddress("SM", &SM);
97 tree->SetBranchAddress("ROW", &ROW);
98 tree->SetBranchAddress("COL", &COL);
99 tree->SetBranchAddress("GAIN", &GAIN);
100 Int_t nEntries = (Int_t) tree->GetEntries();
101 for(Int_t i = 0; i < nEntries; i++)
102 {
103 tree->GetEntry(i);
104// if(DET>1 || SM>23 || ROW>95 || COL>95) {
105// printf("Error! gain[%d,%d,%d,%d] = %f\n",DET,SM,ROW,COL,GAIN);
106// continue;
107 // }
108 calibda->SetGainFact(DET,SM,ROW,COL,GAIN);
109 }
110 f->Close();
111 delete f;
112 }
113
114 //Now we have to store the final CDB file
115 AliCDBMetaData metaData;
116 metaData.SetBeamPeriod(0);
117 metaData.SetComment("test PMD preprocessor");
118
119 result = Store("Calib","Data", calibda, &metaData);
120
121 delete calibda;
7a9a1d4d 122if(result==0)
123 { Log("Error storing");
124 return 1;
125 }
126 else
127 {
128 return 0;
129 }
130
ad6005fa 131}
132