]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ACORDE/AliACORDEPreprocessor.cxx
AliACORDEDataDCS implemented
[u/mrichter/AliRoot.git] / ACORDE / AliACORDEPreprocessor.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16
17
18 #include "AliACORDEPreprocessor.h"
19 #include "TRandom.h"
20 #include "TFile.h"
21 #include "AliCDBMetaData.h"
22 #include "AliCDBEntry.h"
23 #include "AliLog.h"
24 #include "AliACORDECalibData.h"
25 #include "AliACORDEDataDCS.h"
26
27 #include <TTimeStamp.h>
28 #include <TObjString.h>
29 #include <TList.h>
30 #include <TH1F.h>
31
32 //ACORDE Preprocessor
33 // It takes data from DAQ and passes it to the class AliACORDECalibModule and 
34 // stores reference data.
35 //
36 // Authors
37 // Pedro Gonzalez pedro.gonzalez@fcfm.buap.mx
38 // Irais Bautista irais@fcfm.buap.mx
39 // Arturo Fernandez Tellez afernan@cern.ch
40
41 ClassImp(AliACORDEPreprocessor)
42
43 //______________________________________________________________________________________________
44 AliACORDEPreprocessor::AliACORDEPreprocessor(AliShuttleInterface* shuttle) :
45   AliPreprocessor("ACO", shuttle),
46   fCalData(0),
47   fDataDCS(0)
48 {
49   // constructor
50   AddRunType("STANDALONE_BC");
51   AddRunType("STANDALONE_PULSER");
52
53 }
54
55 //______________________________________________________________________________________________
56 AliACORDEPreprocessor::~AliACORDEPreprocessor()
57 {
58   // destructor
59 }
60
61 //______________________________________________________________________________________________
62 void AliACORDEPreprocessor::Initialize(Int_t run, UInt_t startTime,
63         UInt_t endTime)
64 {
65   // Creates AliACORDECalibModule object
66
67   AliPreprocessor::Initialize(run, startTime, endTime);
68
69         Log(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
70                 TTimeStamp(startTime).AsString(),
71                 TTimeStamp(endTime).AsString()));
72
73         fCalData = new AliACORDECalibData();
74         fDataDCS = new AliACORDEDataDCS();
75 }
76
77 //______________________________________________________________________________________________
78 UInt_t AliACORDEPreprocessor::Process(TMap* dcsAliasMap)
79 {
80   
81  
82 //   TH1D *fH1,*fH2,*fH3,*fH4; //Histogram of the rates per module
83    
84    TH1D *fH[4];
85    TFile *daqFile=0x0;
86
87
88
89    // retrieve the run type from the Shuttle,
90
91    if(!dcsAliasMap)
92    {
93    
94    Log(Form("Error there isn't dcsAliasMap"));
95    return  1;
96    
97    }
98
99
100    fDataDCS->ProcessData(*dcsAliasMap);
101
102
103
104    AliCDBMetaData metaData1;
105    metaData1.SetBeamPeriod(0);
106    metaData1.SetResponsible("Pedro and Irais");
107    metaData1.SetComment("This preprocessor fills an AliACORDECalibModule object.");
108
109    Bool_t result1 = StoreReferenceData("Calib", "DataDCS",fDataDCS, &metaData1);
110
111    if(!result1)
112    return 2;
113  
114    TString runType = GetRunType();
115
116
117    Log(Form("Run type for run %d: %s", fRun, runType.Data()));
118    TString SourcesId = "CALIB";
119
120
121   
122
123    //retrieve the list of sources that produced the file with id RATES
124  
125     TList* sourceList = GetFileSources(kDAQ,SourcesId.Data());
126
127    if (!sourceList)
128    {
129         Log(Form("Error: No sources found for id %s", SourcesId.Data()));
130         return 3;
131    }
132   
133    // TODO We have the list of sources that produced the files with Id RATES 
134    // Now we will loop on the list and we'll query the files one by one. 
135
136
137
138    Log(Form("The following sources produced files with the id %s",SourcesId.Data()));
139    sourceList->Print();
140      
141    TIter iter(sourceList);
142    TObjString *source = 0;
143  
144  
145
146    while((source=dynamic_cast<TObjString*> (iter.Next())))
147    {
148         
149         TString fileName = GetFile(kDAQ,SourcesId.Data(), source->GetName());
150
151         if (fileName.Length() > 0)
152                 Log(Form("Got the file %s, now we can extract some values.", fileName.Data()));
153
154                 daqFile = new TFile(fileName.Data(),"READ");
155               
156               if(!daqFile)
157               {
158                             
159               Log(Form("There are not histos     1"));
160               return 4;
161
162               }
163
164            
165                 
166             fH[0] = (TH1D*)daqFile->Get("fHist1");
167             fH[1] = (TH1D*)daqFile->Get("fHist2");
168             fH[2] = (TH1D*)daqFile->Get("fHist3");
169             fH[3] = (TH1D*)daqFile->Get("fHist4");
170           
171
172              
173              if(fH[0]!=NULL&&fH[1]!=NULL&&fH[2]!=NULL&&fH[3]!=NULL)  
174              {  
175              fCalData->AddHHits(fH[0]);
176              fCalData->AddHTHits(fH[1]);
177              fCalData->AddHMultiHits(fH[2]);
178              fCalData->AddHTMultiHits(fH[3]);
179              }
180             
181             else
182             {
183              Log(Form("There are not histos     2"));
184              return 4;
185             }
186     
187
188    }                   
189                                                                           
190  
191  
192   delete sourceList;
193   
194
195         //Now we have to store
196
197         AliCDBMetaData metaData;
198         metaData.SetBeamPeriod(0);
199         metaData.SetResponsible("Pedro and Irais");
200         metaData.SetComment("This preprocessor fills an AliACORDECalibModule object.");
201
202                 Bool_t result2 = StoreReferenceData("Calib", "Data",fCalData, &metaData);
203       
204         delete fCalData;
205         delete fDataDCS;
206         fDataDCS = 0;
207         fCalData = 0;
208   
209
210   if (!result2)
211   return 5;
212   
213   return 0;
214 }
215