ROOT logo
#ifndef AliDCSSensorArray_H
#define AliDCSSensorArray_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  Calibration class for DCS sensors                                        //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "TNamed.h"
#include "TMap.h"
#include "TObjString.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliDCSValue.h"
#include "AliDCSSensor.h"

class TGraph;
class TTimeStamp;


class AliDCSSensorArray : public TNamed {
 public:
  AliDCSSensorArray();
  AliDCSSensorArray(TClonesArray *arr);
  AliDCSSensorArray(Int_t run, const char* dbEntry);
  AliDCSSensorArray(UInt_t startTime, UInt_t endTime, TTree* confTree);
  AliDCSSensorArray(UInt_t startTime, UInt_t endTime, TClonesArray *sensors);
  AliDCSSensorArray(const AliDCSSensorArray &c);
  virtual ~AliDCSSensorArray();
  AliDCSSensorArray &operator=(const AliDCSSensorArray &c);
  virtual void Print(const Option_t* option="") const;

  void SetStartTime (const TTimeStamp& start) { fStartTime = start; }
  void SetEndTime   (const TTimeStamp& end) { fEndTime = end; }
  TTimeStamp GetStartTime () const { return fStartTime; }
  TTimeStamp GetEndTime () const { return fEndTime; }
  void  SetMinGraph(const Int_t minGraph) { fMinGraph=minGraph;}
  Int_t GetMinGraph()  const { return fMinGraph; }
  void  SetMinPoints(const Int_t minPoints) { fMinPoints=minPoints;}
  Int_t GetMinPoints() const { return fMinPoints; }
  void  SetIter(const Int_t iter ) { fIter=iter; }
  Int_t GetIter() const { return fIter; }
  void  SetMaxDelta(const Double_t maxDelta) { fMaxDelta= maxDelta;}
  Double_t GetMaxDelta() const { return fMaxDelta; }
  void  SetFitReq(const Int_t fitReq) { fFitReq=fitReq; }
  Int_t GetFitReq() const {return fFitReq;}
  void  SetValCut(const Int_t valCut) { fValCut=valCut;}
  Int_t GetValCut() const {return fValCut;}
  void  SetDiffCut(const Int_t diffCut) { fDiffCut=diffCut; }
  Int_t GetDiffCut() const {return fDiffCut;}

  void SetGraph     (TMap *map);
  void MakeSplineFit(TMap *map, Bool_t keepMap=kFALSE);
  void MakeSplineFitAddPoints(TMap *map);
  TMap* ExtractDCS  (TMap *dcsMap, Bool_t keepStart=kFALSE);
  TGraph* MakeGraph (TObjArray *valueSet, Bool_t keepStart=kFALSE);
  void ClearGraph();
  void ClearFit();
  Double_t GetValue  (UInt_t timeSec, Int_t sensor);
  AliDCSSensor* GetSensor (Int_t IdDCS);
  AliDCSSensor* GetSensor (Double_t x, Double_t y, Double_t z);
  AliDCSSensor* GetSensor (const TString& stringID);
  AliDCSSensor* GetSensorNum (Int_t ind);
  Int_t SetSensor (const TString& stringID, const AliDCSSensor& sensor);
  void SetSensorNum (const Int_t ind, const AliDCSSensor& sensor);
  void RemoveSensorNum(Int_t ind);
  void RemoveSensor(Int_t IdDCS);
  void AddSensors(AliDCSSensorArray *sensors);
  void RemoveGraphDuplicates (Double_t tolerance=1e-6);
  TArrayI OutsideThreshold(Double_t threshold, UInt_t timeSec=0, Bool_t below=kTRUE) const;
  Int_t NumSensors() const { return fSensors->GetEntries(); }
  Int_t NumFits() const;

  Int_t GetFirstIdDCS() const;
  Int_t GetLastIdDCS()  const;
  const TClonesArray * GetArray(){return fSensors;}

 protected: 
  Int_t  fMinGraph;              // minimum #points of graph to be fitted
  Int_t  fMinPoints;             // minimum number of points per knot in fit
  Int_t  fIter;                  // number of iterations for spline fit
  Double_t  fMaxDelta;           // precision parameter for spline fit
  Int_t  fFitReq;                // fit requirement, 2 = continuous 2nd derivative
  Int_t  fValCut;                // cut on absolute value read from DCS map
  Int_t  fDiffCut;               // cut on difference in value read from DCS map
  TTimeStamp  fStartTime;        // start time for measurements in this entry
  TTimeStamp  fEndTime;          // end time for measurements in this entry
  TClonesArray *fSensors;        // Array of sensors



  ClassDef(AliDCSSensorArray,3)       //  TPC calibration class for parameters which are saved per pad

};

#endif
 AliDCSSensorArray.h:1
 AliDCSSensorArray.h:2
 AliDCSSensorArray.h:3
 AliDCSSensorArray.h:4
 AliDCSSensorArray.h:5
 AliDCSSensorArray.h:6
 AliDCSSensorArray.h:7
 AliDCSSensorArray.h:8
 AliDCSSensorArray.h:9
 AliDCSSensorArray.h:10
 AliDCSSensorArray.h:11
 AliDCSSensorArray.h:12
 AliDCSSensorArray.h:13
 AliDCSSensorArray.h:14
 AliDCSSensorArray.h:15
 AliDCSSensorArray.h:16
 AliDCSSensorArray.h:17
 AliDCSSensorArray.h:18
 AliDCSSensorArray.h:19
 AliDCSSensorArray.h:20
 AliDCSSensorArray.h:21
 AliDCSSensorArray.h:22
 AliDCSSensorArray.h:23
 AliDCSSensorArray.h:24
 AliDCSSensorArray.h:25
 AliDCSSensorArray.h:26
 AliDCSSensorArray.h:27
 AliDCSSensorArray.h:28
 AliDCSSensorArray.h:29
 AliDCSSensorArray.h:30
 AliDCSSensorArray.h:31
 AliDCSSensorArray.h:32
 AliDCSSensorArray.h:33
 AliDCSSensorArray.h:34
 AliDCSSensorArray.h:35
 AliDCSSensorArray.h:36
 AliDCSSensorArray.h:37
 AliDCSSensorArray.h:38
 AliDCSSensorArray.h:39
 AliDCSSensorArray.h:40
 AliDCSSensorArray.h:41
 AliDCSSensorArray.h:42
 AliDCSSensorArray.h:43
 AliDCSSensorArray.h:44
 AliDCSSensorArray.h:45
 AliDCSSensorArray.h:46
 AliDCSSensorArray.h:47
 AliDCSSensorArray.h:48
 AliDCSSensorArray.h:49
 AliDCSSensorArray.h:50
 AliDCSSensorArray.h:51
 AliDCSSensorArray.h:52
 AliDCSSensorArray.h:53
 AliDCSSensorArray.h:54
 AliDCSSensorArray.h:55
 AliDCSSensorArray.h:56
 AliDCSSensorArray.h:57
 AliDCSSensorArray.h:58
 AliDCSSensorArray.h:59
 AliDCSSensorArray.h:60
 AliDCSSensorArray.h:61
 AliDCSSensorArray.h:62
 AliDCSSensorArray.h:63
 AliDCSSensorArray.h:64
 AliDCSSensorArray.h:65
 AliDCSSensorArray.h:66
 AliDCSSensorArray.h:67
 AliDCSSensorArray.h:68
 AliDCSSensorArray.h:69
 AliDCSSensorArray.h:70
 AliDCSSensorArray.h:71
 AliDCSSensorArray.h:72
 AliDCSSensorArray.h:73
 AliDCSSensorArray.h:74
 AliDCSSensorArray.h:75
 AliDCSSensorArray.h:76
 AliDCSSensorArray.h:77
 AliDCSSensorArray.h:78
 AliDCSSensorArray.h:79
 AliDCSSensorArray.h:80
 AliDCSSensorArray.h:81
 AliDCSSensorArray.h:82
 AliDCSSensorArray.h:83
 AliDCSSensorArray.h:84
 AliDCSSensorArray.h:85
 AliDCSSensorArray.h:86
 AliDCSSensorArray.h:87
 AliDCSSensorArray.h:88
 AliDCSSensorArray.h:89
 AliDCSSensorArray.h:90
 AliDCSSensorArray.h:91
 AliDCSSensorArray.h:92
 AliDCSSensorArray.h:93
 AliDCSSensorArray.h:94
 AliDCSSensorArray.h:95
 AliDCSSensorArray.h:96
 AliDCSSensorArray.h:97
 AliDCSSensorArray.h:98
 AliDCSSensorArray.h:99
 AliDCSSensorArray.h:100