1 /**************************************************************************
2 * Copyright(c) 1998-1999, 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 ///////////////////////////////////////////////////////////////////////////////
19 // TPC calibration class for pressure sensors //
20 // Authors: Marian Ivanov and Haavard Helstrup //
22 ///////////////////////////////////////////////////////////////////////////////
24 #include "AliTPCSensorPressureArray.h"
26 ClassImp(AliTPCSensorPressureArray)
28 const char kFname[] = "PressureSensor.txt";
29 const char kAmandaString[] = "system:gcs-ALITPC-ALITPC-AnalogInput-0%d.ProcessInput.PosSt";
30 const Int_t kMinGraph = 10; // minimum #points of graph to be fitted
31 const Int_t kMinPoints = 10; // minimum number of points per knot in fit
32 const Int_t kIter = 10; // number of iterations for spline fit
33 const Double_t kMaxDelta = 0.00; // precision parameter for spline fit
34 const Int_t kFitReq = 2; // fit requirement, 2 = continuous 2nd derivative
36 //_____________________________________________________________________________
37 AliTPCSensorPressureArray::AliTPCSensorPressureArray():AliDCSSensorArray(),
38 fAmandaString(kAmandaString)
41 // AliTPCSensorPressureArray default constructor
45 //_____________________________________________________________________________
46 AliTPCSensorPressureArray::AliTPCSensorPressureArray(Int_t prevRun) :
47 AliDCSSensorArray(prevRun,"TPC/Calib/Pressure"),
48 fAmandaString(kAmandaString)
51 //_____________________________________________________________________________
52 AliTPCSensorPressureArray::AliTPCSensorPressureArray(UInt_t startTime, UInt_t endTime,
55 fAmandaString(kAmandaString)
58 // AliTPCSensorPressureArray default constructor
60 char *expPath = gSystem->ExpandPathName(filepath);
61 TString filename(expPath);
63 filename.Append(kFname);
64 fSensors = AliTPCSensorPressure::ReadList(filename.Data());
65 fStartTime = TTimeStamp(startTime);
66 fEndTime = TTimeStamp(endTime);
70 //_____________________________________________________________________________
71 AliTPCSensorPressureArray::AliTPCSensorPressureArray(const char *fname) :
73 fAmandaString(kAmandaString)
76 // AliTPCSensorPressureArray constructor
78 fSensors = AliTPCSensorPressure::ReadList(fname);
79 fSensors->BypassStreamer(kFALSE);
83 //_____________________________________________________________________________
84 AliTPCSensorPressureArray::AliTPCSensorPressureArray(const AliTPCSensorPressureArray &c):
86 fAmandaString(c.fAmandaString)
89 // AliTPCSensorPressureArray copy constructor
94 ///_____________________________________________________________________________
95 AliTPCSensorPressureArray::~AliTPCSensorPressureArray()
98 // AliTPCSensorPressureArray destructor
102 //_____________________________________________________________________________
103 AliTPCSensorPressureArray &AliTPCSensorPressureArray::operator=(const AliTPCSensorPressureArray &c)
106 // Assignment operator
109 if (this != &c) ((AliTPCSensorPressureArray &) c).Copy(*this);
114 //_____________________________________________________________________________
115 void AliTPCSensorPressureArray::Copy(TObject &c) const
123 //_____________________________________________________________________________
124 void AliTPCSensorPressureArray::ReadSensors(const char *fname)
127 // Read list of temperature sensors from text file
129 fSensors = AliTPCSensorPressure::ReadList(fname);
131 //_____________________________________________________________________________
132 void AliTPCSensorPressureArray::SetGraph(TMap *map)
135 // Read graphs from DCS maps
137 AliDCSSensorArray::SetGraph(map,fAmandaString.Data());
139 //_____________________________________________________________________________
140 void AliTPCSensorPressureArray::MakeSplineFit(TMap *map)
143 // Make spline fits from DCS maps
145 AliDCSSensorArray::MakeSplineFit(map,fAmandaString.Data());
149 //_____________________________________________________________________________
150 TMap* AliTPCSensorPressureArray::ExtractDCS(TMap *dcsMap)
153 // Extract temperature graphs from DCS maps
156 TMap *values = AliDCSSensorArray::ExtractDCS(dcsMap,fAmandaString.Data());
160 //_____________________________________________________________________________
161 AliTPCSensorPressure* AliTPCSensorPressureArray::GetSensor(Int_t type, Int_t side, Int_t sector, Int_t num)
164 // Return sensor information for sensor specified by type, side, sector and num
166 Int_t nsensors = fSensors->GetEntries();
167 for (Int_t isensor=0; isensor<nsensors; isensor++) {
168 AliTPCSensorPressure *entry = (AliTPCSensorPressure*)fSensors->At(isensor);
169 if (entry->GetSide() == side &&
170 entry->GetType() == type &&
171 entry->GetSector() == sector &&
172 entry->GetNum() == num ) return entry;
176 //_____________________________________________________________________________
177 AliTPCSensorPressure* AliTPCSensorPressureArray::GetSensor(Int_t IdDCS){
178 return dynamic_cast<AliTPCSensorPressure*>(AliDCSSensorArray::GetSensor(IdDCS));
180 //_____________________________________________________________________________
181 AliTPCSensorPressure* AliTPCSensorPressureArray::GetSensor(Double_t x, Double_t y, Double_t z){
182 return dynamic_cast<AliTPCSensorPressure*>(AliDCSSensorArray::GetSensor(x,y,z));