1 /**************************************************************************
2 * Copyright(c) 2007, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
17 #include "AliTPCPreprocessor.h"
19 #include "AliCDBMetaData.h"
20 #include "AliDCSValue.h"
22 #include "AliTPCSensorTempArray.h"
23 #include "AliTPCDBPressure.h"
25 #include <TTimeStamp.h>
27 const Int_t kValCutTemp = 100; // discard temperatures > 100 degrees
28 const Int_t kDiffCutTemp = 5; // discard temperature differences > 5 degrees
31 // This class is the SHUTTLE preprocessor for the TPC detector.
32 // It contains several components, this far the part containing
33 // temperatures is implemented
36 ClassImp(AliTPCPreprocessor)
38 //______________________________________________________________________________________________
39 AliTPCPreprocessor::AliTPCPreprocessor(AliShuttleInterface* shuttle) :
40 AliPreprocessor("TPC",shuttle),
41 fTemp(0), fPressure(0), fConfigOK(kTRUE)
45 //______________________________________________________________________________________________
46 // AliTPCPreprocessor::AliTPCPreprocessor(const AliTPCPreprocessor& org) :
47 // AliPreprocessor(org),
48 // fTemp(0), fPressure(0), fConfigOK(kTRUE)
50 // // copy constructor not implemented
51 // // -- missing underlying copy constructor in AliPreprocessor
53 // Fatal("AliTPCPreprocessor", "copy constructor not implemented");
55 // // fTemp = new AliTPCSensorTempArray(*(org.fTemp));
58 //______________________________________________________________________________________________
59 AliTPCPreprocessor::~AliTPCPreprocessor()
66 //______________________________________________________________________________________________
67 AliTPCPreprocessor& AliTPCPreprocessor::operator = (const AliTPCPreprocessor& )
69 Fatal("operator =", "assignment operator not implemented");
74 //______________________________________________________________________________________________
75 void AliTPCPreprocessor::Initialize(Int_t run, UInt_t startTime,
78 // Creates AliTestDataDCS object
80 AliPreprocessor::Initialize(run, startTime, endTime);
82 AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run,
83 TTimeStamp(startTime).AsString(),
84 TTimeStamp(endTime).AsString()));
86 // Temperature sensors
89 AliCDBEntry* entry = GetFromOCDB("Config", "Temperature");
90 if (entry) confTree = (TTree*) entry->GetObject();
92 AliError(Form("Temperature Config OCDB entry missing.\n"));
93 Log("AliTPCPreprocsessor: Temperature Config OCDB entry missing.\n");
97 fTemp = new AliTPCSensorTempArray(fStartTime, fEndTime, confTree);
98 fTemp->SetValCut(kValCutTemp);
99 fTemp->SetDiffCut(kDiffCutTemp);
105 entry = GetFromOCDB("Config", "Pressure");
106 if (entry) confTree = (TTree*) entry->GetObject();
108 AliError(Form("Pressure Config OCDB entry missing.\n"));
109 Log("AliTPCPreprocsessor: Pressure Config OCDB entry missing.\n");
113 fPressure = new AliDCSSensorArray(fStartTime, fEndTime, confTree);
117 //______________________________________________________________________________________________
118 UInt_t AliTPCPreprocessor::Process(TMap* dcsAliasMap)
120 // Fills data into TPC calibrations objects
122 if (!dcsAliasMap) return 9;
123 if (!fConfigOK) return 9;
125 // Amanda servers provide information directly through dcsAliasMap
127 // Temperature sensors are processed by AliTPCCalTemp
130 UInt_t tempResult = MapTemperature(dcsAliasMap);
131 UInt_t result=tempResult;
135 UInt_t pressureResult = MapPressure(dcsAliasMap);
136 result += pressureResult;
138 // Other calibration information will be retrieved through FXS files
140 // TList* fileSourcesDAQ = GetFile(AliShuttleInterface::kDAQ, "pedestals");
141 // const char* fileNamePed = GetFile(AliShuttleInterface::kDAQ, "pedestals", "LDC1");
143 // TList* fileSourcesHLT = GetFile(AliShuttleInterface::kHLT, "calib");
144 // const char* fileNameHLT = GetFile(AliShuttleInterface::kHLT, "calib", "LDC1");
149 //______________________________________________________________________________________________
150 UInt_t AliTPCPreprocessor::MapTemperature(TMap* dcsAliasMap)
153 // extract DCS temperature maps. Perform fits to save space
156 TMap *map = fTemp->ExtractDCS(dcsAliasMap);
158 fTemp->MakeSplineFit(map);
159 AliInfo(Form("Temperature values extracted, fits performed.\n"));
161 AliError(Form("No temperature map extracted.\n"));
162 Log("AliTPCPreprocsessor: no temperature map extracted. \n");
166 // Now store the final CDB file
169 AliCDBMetaData metaData;
170 metaData.SetBeamPeriod(0);
171 metaData.SetResponsible("Haavard Helstrup");
172 metaData.SetComment("Preprocessor AliTPC data base entries.");
174 result = Store("Calib", "Temperature", fTemp, &metaData, 0, 0);
179 } // revert to new return code conventions
184 //______________________________________________________________________________________________
185 UInt_t AliTPCPreprocessor::MapPressure(TMap* dcsAliasMap)
188 // extract DCS temperature maps. Perform fits to save space
191 TMap *map = fPressure->ExtractDCS(dcsAliasMap);
193 fPressure->MakeSplineFit(map);
194 AliInfo(Form("Pressure values extracted, fits performed.\n"));
196 AliError(Form("No atmospheric pressure map extracted.\n"));
197 Log("AliTPCPreprocsessor: no atmospheric pressure map extracted. \n");
201 // Now store the final CDB file
204 AliCDBMetaData metaData;
205 metaData.SetBeamPeriod(0);
206 metaData.SetResponsible("Haavard Helstrup");
207 metaData.SetComment("Preprocessor AliTPC data base entries.");
209 result = Store("Calib", "Pressure", fPressure, &metaData, 0, 0);
214 } // revert to new return code conventions