ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  Calibration class for DCS sensors                                        //
//  Authors: Marian Ivanov and Haavard Helstrup                              //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "AliDCSSensorArray.h"
#include "AliLog.h"
#include <TMath.h>

ClassImp(AliDCSSensorArray)

const Double_t kSecInHour = 3600.; // seconds in one hour
const UInt_t   kMinMapTime = 60;   // don't fit maps shorter than one minute

//_____________________________________________________________________________
AliDCSSensorArray::AliDCSSensorArray():TNamed(), 
  fMinGraph(10),
  fMinPoints(10),
  fIter(10),
  fMaxDelta(0.0),
  fFitReq(2),
  fValCut(-1),
  fDiffCut(-1),
  fStartTime (2000,1,1,0,0,0),
  fEndTime   (2000,1,1,0,0,0),
  fSensors(0)
{
  //
  // AliDCSSensorArray default constructor
  //

}
//_____________________________________________________________________________
AliDCSSensorArray::AliDCSSensorArray(TClonesArray *arr):TNamed(),
  fMinGraph(10),
  fMinPoints(10),
  fIter(10),
  fMaxDelta(0.0),
  fFitReq(2),
  fValCut(-1),
  fDiffCut(-1),
  fStartTime (2000,1,1,0,0,0),
  fEndTime   (2000,1,1,0,0,0),
  fSensors(arr)
{
  //
  // AliDCSSensorArray special constructor taking TClonesArray from ReadList
  //

}
//_____________________________________________________________________________
AliDCSSensorArray::AliDCSSensorArray(Int_t run, const char* dbEntry) :
  TNamed(),
  fMinGraph(10),
  fMinPoints(10),
  fIter(10),
  fMaxDelta(0.0),
  fFitReq(2),
  fValCut(-1),
  fDiffCut(-1),
  fStartTime (2000,1,1,0,0,0),
  fEndTime   (2000,1,1,0,0,0),
  fSensors(0)
{
  //
  // Read configuration from OCDB
  //

  AliCDBEntry *entry = AliCDBManager::Instance()->Get(dbEntry,run);
  if (entry) {
    TTree *tree = (TTree*) entry->GetObject();
    fSensors = AliDCSSensor::ReadTree(tree);
  } else {
    AliError("Unable to load configuration from CDB!");
  }
}
//_____________________________________________________________________________
AliDCSSensorArray::AliDCSSensorArray(UInt_t startTime, UInt_t endTime,
                       TTree* confTree) :
  TNamed(),
  fMinGraph(10),
  fMinPoints(10),
  fIter(10),
  fMaxDelta(0.0),
  fFitReq(2),
  fValCut(-1),
  fDiffCut(-1),
  fStartTime (2000,1,1,0,0,0),
  fEndTime   (2000,1,1,0,0,0),
  fSensors(0)

{
  //
  // AliDCSSensorArray constructor for Shuttle preprocessor
  //  (confTree read from OCDB)
  //
  fSensors = AliDCSSensor::ReadTree(confTree);
  fSensors->BypassStreamer(kFALSE);
  fStartTime = TTimeStamp((time_t)startTime,0);
  fEndTime   = TTimeStamp((time_t)endTime,0);
}


//_____________________________________________________________________________
AliDCSSensorArray::AliDCSSensorArray(UInt_t startTime, UInt_t endTime,
                       TClonesArray *sensors) :
  TNamed(),
  fMinGraph(10),
  fMinPoints(10),
  fIter(10),
  fMaxDelta(0.0),
  fFitReq(2),
  fValCut(-1),
  fDiffCut(-1),
  fStartTime (2000,1,1,0,0,0),
  fEndTime   (2000,1,1,0,0,0),
  fSensors(sensors)

{
  //
  // AliDCSSensorArray constructor for Shuttle preprocessor
  //  (TClonesArray of AliDCSSensor objects)
  //
  fStartTime = TTimeStamp((time_t)startTime,0);
  fEndTime   = TTimeStamp((time_t)endTime,0);
}

//_____________________________________________________________________________
AliDCSSensorArray::AliDCSSensorArray(const AliDCSSensorArray &c):TNamed(c),
  fMinGraph(c.fMinGraph),
  fMinPoints(c.fMinPoints),
  fIter(c.fIter),
  fMaxDelta(c.fMaxDelta),
  fFitReq(c.fFitReq),
  fValCut(c.fValCut),
  fDiffCut(c.fDiffCut),
  fStartTime (c.fStartTime),
  fEndTime   (c.fEndTime),
  fSensors(0)

{
  //
  // AliDCSSensorArray copy constructor
  //

  fSensors = (TClonesArray*)c.fSensors->Clone();
}

///_____________________________________________________________________________
AliDCSSensorArray::~AliDCSSensorArray()
{
  //
  // AliDCSSensorArray destructor
  //
  fSensors->Delete();
  delete fSensors;

}

//_____________________________________________________________________________
AliDCSSensorArray &AliDCSSensorArray::operator=(const AliDCSSensorArray &c)
{
  //
  // Assignment operator
  //
  if (this != &c) {
     fSensors->Delete();
     new (this) AliDCSSensorArray(c);
     fSensors = (TClonesArray*)c.fSensors->Clone();
  }
  return *this;
}

void AliDCSSensorArray::Print(const Option_t* option) const{
  //
  // print function overwriten
  //
  TString opt = option; opt.ToLower();
  printf("%s:%s\n",GetTitle(), GetName());
  if (!fSensors) return;
  Int_t nsensors=fSensors->GetEntries();
  for (Int_t i=0; i<nsensors; i++){
    printf("Sensor Nr%d\n",i);
    if (fSensors->At(i)) fSensors->At(i)->Print(option);
  }
}

//____________________________________________________________________________

void AliDCSSensorArray::SetGraph(TMap *map)
{
  //
  // Read graphs from DCS maps
  //
  Int_t nsensors = fSensors->GetEntries();
  for ( Int_t isensor=0; isensor<nsensors; isensor++) {
    AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
    TString stringID = entry->GetStringID();
    TGraph *gr = (TGraph*)map->GetValue(stringID.Data());
    if ( gr !=0 ) {
       entry->SetGraph((TGraph*)gr->Clone());
    } else {
       entry->SetGraph(0);
    }
  }
}
//_____________________________________________________________________________
void AliDCSSensorArray::MakeSplineFit(TMap *map, Bool_t keepMap)
{
  //
  // Make spline fits from DCS maps
  //
  Int_t nsensors = fSensors->GetEntries();
  for ( Int_t isensor=0; isensor<nsensors; isensor++) {
    AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
    TString stringID = entry->GetStringID();
    TGraph *gr = (TGraph*)map->GetValue(stringID.Data());
    if (!gr ) {
      entry->SetFit(0);
      entry->SetGraph(0);
      AliWarning(Form("sensor %s: no input graph",stringID.Data()));
      continue;
    }
    UInt_t timeDiff = entry->GetEndTime() - entry->GetStartTime();
    if ( timeDiff < kMinMapTime ) {
      AliWarning(Form("sensor %s: map length < 60 s, DCS graph kept.",stringID.Data()));
      entry->SetGraph((TGraph*)gr->Clone());
    } else {
      AliSplineFit *fit = new AliSplineFit();
      fit->SetMinPoints(fMinGraph);
      fit->InitKnots(gr,fMinPoints,fIter,fMaxDelta);
      fit->SplineFit(fFitReq);
      fit->Cleanup();
      if (fit->GetKnots()>0) {
        entry->SetFit(fit);
      } else {
        AliWarning(Form("sensor %s: no fit performed, DCS graph kept.",stringID.Data()));
        entry->SetGraph((TGraph*)gr->Clone());
      }
    }
    if (keepMap) entry->SetGraph((TGraph*)gr->Clone());
  }
}
//_____________________________________________________________________________
void AliDCSSensorArray::MakeSplineFitAddPoints(TMap *map)
{
  //
  // Make spline fits from DCS maps
  //
  Int_t nsensors = fSensors->GetEntries();
  for ( Int_t isensor=0; isensor<nsensors; isensor++) {
    AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);

  // fetch old points from existing graph

    TGraph *gr = entry->GetGraph();
    if (!gr) {
      gr = new TGraph();
      entry->SetGraph(gr);
    } 
    TString stringID = entry->GetStringID();

  // fetch new points from DCS map
  
    TGraph *grAdd = (TGraph*)map->GetValue(stringID.Data());
    if (!grAdd ) return;

  // add new points to end of graph
  
    Int_t nPointsOld=gr->GetN();
    Int_t nPointsAdd=grAdd->GetN();
    gr->Expand(nPointsOld+nPointsAdd);
    gr->Set(nPointsOld+nPointsAdd);
    Double_t *addX=grAdd->GetX();
    Double_t *addY=grAdd->GetY();
    for (Int_t i=0;i<nPointsAdd;i++) {
      gr->SetPoint(nPointsOld+i,addX[i],addY[i]);
    }
 
   // make fit to complete graph
   
    AliSplineFit *fit = new AliSplineFit();
    fit->SetMinPoints(fMinGraph);
    fit->InitKnots(gr,fMinPoints,fIter,fMaxDelta);
    fit->SplineFit(fFitReq);
    fit->Cleanup();
    if (fit->GetKnots()>0) {
      AliSplineFit *oldFit = entry->GetFit();
      if (oldFit) delete oldFit;
      entry->SetFit(fit);
    } else {
      AliWarning(Form("sensor %s: no new fit performed. If available, old fit kept.",stringID.Data()));
    }
  }
}

//_____________________________________________________________________________
Int_t AliDCSSensorArray::NumFits() const 
{
 //
 // Return number of sensors where a succesful fit has been made
 //
  Int_t nfit=0;
  Int_t nsensors = fSensors->GetEntries();
  for ( Int_t isensor=0; isensor<nsensors; isensor++) {
    AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
    if (entry->GetFit()) nfit++;
  }    
  return nfit;
}
//_____________________________________________________________________________
Double_t AliDCSSensorArray::GetValue(UInt_t timeSec, Int_t sensor) 
{
  //
  // Return sensor value at time timeSec (obtained from fitted function)
  //  timeSec = time in seconds from start of run
  //

  AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(sensor);
  return entry->GetValue(TTimeStamp((time_t)fStartTime.GetSec()+timeSec,0));
}


//_____________________________________________________________________________
TMap* AliDCSSensorArray::ExtractDCS(TMap *dcsMap, Bool_t keepStart)
{
 //
 // Extract temperature graphs from DCS maps
 //
 TMap *values = new TMap;
 TObjArray * valueSet;
 //
 // Keep global start/end times
 //    to avoid extrapolations, the fits will only be valid from first 
 //    measured point to last measured point. This is consistent with hardware,
 //    as there would be a new measured point if the value changed.
 
 TTimeStamp startTime=fStartTime;
 TTimeStamp endTime=fEndTime;
 
 Int_t nsensors = fSensors->GetEntries();
 for ( Int_t isensor=0; isensor<nsensors; isensor++) {
   AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
   TString stringID = entry->GetStringID();
   TPair *pair = (TPair*)dcsMap->FindObject(stringID.Data());
   if ( pair ) {                            // only try to read values
                                            // if DCS object available
     valueSet = (TObjArray*)pair->Value();
     TGraph *graph = MakeGraph(valueSet,keepStart);   // MakeGraph sets start/end time
                                            // per sensor
     values->Add(new TObjString(stringID.Data()),graph);
     entry->SetStartTime(fStartTime);
     entry->SetEndTime(fEndTime);
   }
 }
 // Reset global start/end time 
 //    ..... yes, I know this won't get a prize for structured programming..:-)

 fStartTime=startTime;
 fEndTime=endTime;
 return values;
}


//_____________________________________________________________________________
TGraph* AliDCSSensorArray::MakeGraph(TObjArray* valueSet, Bool_t keepStart){
  //
  // Make graph of temperature values read from DCS map
  //   (spline fit parameters will subsequently be obtained from this graph) 
  //
  Int_t nentries = valueSet->GetEntriesFast(); 
  if ( nentries == 0 ) return 0;
  
  Float_t *x = new Float_t[nentries];
  Float_t *y = new Float_t[nentries];
  Int_t time0=0, previousTime=0;
  TTimeStamp firstTime(0);
  TTimeStamp lastTime(0);
  if (keepStart) { 
     firstTime = fStartTime;
     time0 = firstTime.GetSec();
  }
  Int_t out=0;
  Int_t skipped=0;
  AliDCSValue *val = (AliDCSValue *)valueSet->At(0);
  AliDCSValue::Type type = val->GetType();
  if ( type == AliDCSValue::kInvalid || type == AliDCSValue::kBool ) {
     delete [] x;
     delete [] y;
     return 0;
  }
  Float_t value;
  for (Int_t i=0; i<nentries; i++){
    val = (AliDCSValue *)valueSet->At(i);
    if (!val) continue;
    if (time0==0){
      time0=val->GetTimeStamp();
      firstTime= TTimeStamp((time_t)val->GetTimeStamp(),0);
      lastTime=TTimeStamp((time_t)val->GetTimeStamp(),0);
     }
    switch ( type )
    { 
      case AliDCSValue::kFloat:
        value = val->GetFloat();
        break;
      case AliDCSValue::kChar:
        value = static_cast<Float_t>(val->GetChar());
	break;
      case AliDCSValue::kInt:
        value = static_cast<Float_t>(val->GetInt());
	break;
      case AliDCSValue::kUInt:
        value = static_cast<Float_t>(val->GetUInt());
	break;
      default:
        continue;
    }
    if (fValCut>0 && TMath::Abs(value)>fValCut) continue;   // refuse values greater than cut
    if (fDiffCut>0 ) {
      if ( out>0 && skipped<10 && TMath::Abs(value-y[out-1])>fDiffCut) {
        skipped++;                               // refuse values changing 
        continue;                                // by > cut  in one time step
      }                                          
      skipped=0;
    }					      
    if (val->GetTimeStamp()-time0>1000000) continue;
    if (val->GetTimeStamp()-previousTime < 1 ) continue;   // refuse duplicate recordings
    previousTime=val->GetTimeStamp();
    lastTime=TTimeStamp((time_t)val->GetTimeStamp(),0);
    x[out] = (val->GetTimeStamp()-time0)/kSecInHour; // give times in fractions of hours 
    y[out] = value;
    out++;    
  }
  if (!keepStart) fStartTime=firstTime;
  fEndTime=lastTime;
  TGraph * graph = new TGraph(out,x,y);
  delete [] x;
  delete [] y;
  return graph;
}

//_____________________________________________________________________________
void AliDCSSensorArray::RemoveGraphDuplicates(Double_t tolerance){
//
//   Remove points with same y value as the previous measured point
//   (to save space for non-fitted graphs -- i.e. last measured point used)
//
  Int_t nsensors = fSensors->GetEntries();
  for ( Int_t isensor=0; isensor<nsensors; isensor++) {
    AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
    TGraph *graph = entry->GetGraph();
    Double_t x=-999.,y=-999., x0=-999.,y0=-999.;
    if (graph) {
      Int_t npoints=graph->GetN();
      if (npoints>1) {
        for (Int_t i=npoints-1;i>0;i--) {
	   graph->GetPoint(i,x,y);
	   graph->GetPoint(i-1,x0,y0);
	   if ( TMath::Abs(y-y0) < TMath::Abs(tolerance*y0) ) graph->RemovePoint(i);
	 }
      }
    }
   }
}    

  
//_____________________________________________________________________________
AliDCSSensor* AliDCSSensorArray::GetSensor(Int_t IdDCS) 
{
 //
 //  Return sensor information for sensor specified by IdDCS
 //
 Int_t nsensors = fSensors->GetEntries();
 for (Int_t isensor=0; isensor<nsensors; isensor++) {
   AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
   if (entry->GetIdDCS() == IdDCS) return entry;
 }
 return 0;
}
//_____________________________________________________________________________
AliDCSSensor* AliDCSSensorArray::GetSensor(const TString& stringID)
{
 //
 //  Return sensor information for sensor specified by stringID
 //
 Int_t nsensors = fSensors->GetEntries();
 for (Int_t isensor=0; isensor<nsensors; isensor++) {
   AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
   if (entry->GetStringID() == stringID) return entry;
 }
 return 0;
}
//_____________________________________________________________________________
AliDCSSensor* AliDCSSensorArray::GetSensor(Double_t x, Double_t y, Double_t z)
{
 //
 //  Return sensor closest to given position
 //
 Int_t nsensors = fSensors->GetEntries();
 Double_t dist2min=1e99;
 Double_t xs,ys,zs,dist2;
 Int_t ind=-1;
 for (Int_t isensor=0; isensor<nsensors; isensor++) {
   AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
   xs = entry->GetX();
   ys = entry->GetY();
   zs = entry->GetZ();
   dist2 = (x-xs)*(x-xs) + (y-ys)*(y-ys) + (z-zs)*(z-zs);
   if (dist2 < dist2min) {
      ind=isensor;
      dist2min = dist2;
   }
 }
 if ( ind >= 0 ) {
    return (AliDCSSensor*)fSensors->At(ind);
 } else {
    return 0;
 }
}
//_____________________________________________________________________________
AliDCSSensor* AliDCSSensorArray::GetSensorNum(Int_t ind)
{
 //
 //  Return sensor given by array index
 //
 return (AliDCSSensor*)fSensors->At(ind);
}

//_____________________________________________________________________________
Int_t AliDCSSensorArray::SetSensor(const TString& stringID,
                          const  AliDCSSensor& sensor)
{
 //
 //  Update sensor information for sensor specified by stringID
 //
 Int_t nsensors = fSensors->GetEntries();
 for (Int_t isensor=0; isensor<nsensors; isensor++) {
   AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
   if (entry->GetStringID() == stringID) 
     {
      new ((*fSensors)[isensor])AliDCSSensor(sensor);
      return isensor;
     }
 }
 return -1;
}
//_____________________________________________________________________________
void AliDCSSensorArray::SetSensorNum(const Int_t ind, const AliDCSSensor& sensor)
{
 //
 //  Update sensor information for sensor at index ind
 //
   new ((*fSensors)[ind])AliDCSSensor(sensor);
   return;
}
//_____________________________________________________________________________
void AliDCSSensorArray::RemoveSensorNum(Int_t ind)
{
 //
 //  Return sensor given by array index
 //

  delete fSensors->RemoveAt(ind);
  fSensors->Compress();
}
//_____________________________________________________________________________
void AliDCSSensorArray::RemoveSensor(Int_t IdDCS)
{
 //
 //  Deletes Sensor by given IdDCS
 //

  Int_t nsensors = fSensors->GetEntries();
  for (Int_t isensor=0; isensor<nsensors; isensor++) { // loop over sensors
    AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
    if (entry->GetIdDCS()==IdDCS) {
      delete fSensors->RemoveAt(isensor);
      break;
    }
  }
  fSensors->Compress();
}
//_____________________________________________________________________________
TArrayI AliDCSSensorArray::OutsideThreshold(Double_t threshold, UInt_t timeSec, Bool_t below) const
{
 //
 // Return sensors with values outside threshold at time defined by second
 // parameter
 // By default sensors with values below threshold are listed, if third
 // parameter is set to kFALSE sensors with values above threshold are listed
 //
  Int_t nsensors = fSensors->GetEntries();
  TArrayI array(nsensors);
  Int_t outside=0;
  for (Int_t isensor=0; isensor<nsensors; isensor++) { // loop over sensors
    AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
    Double_t val=entry->GetValue(timeSec);
    if (below) {
      if (val<threshold) array[outside++] = entry->GetIdDCS();
    } else {
      if (val>threshold) array[outside++] = entry->GetIdDCS();
    }    
  }
  array.Set(outside);
  return array;
}
 
//_____________________________________________________________________________
Int_t AliDCSSensorArray::GetFirstIdDCS() const
{
 //
 //  Return DCS Id of first sensor
 //
 if ( fSensors != 0 ) {
    return ((AliDCSSensor*)fSensors->At(0))->GetIdDCS();
 } else {
    return 0;
 }
}

//_____________________________________________________________________________
Int_t AliDCSSensorArray::GetLastIdDCS() const 
{
 //
 //  Return DCS Id of last sensor
 //
 if ( fSensors != 0 ) {
    Int_t last = fSensors->GetEntries();
    return ((AliDCSSensor*)fSensors->At(last-1))->GetIdDCS();
 } else {
    return 0;
 }
}
//_____________________________________________________________________________
void AliDCSSensorArray::ClearGraph()
{
  //
  // Delete DCS graphs from all sensors in array
  //
   
   Int_t nsensors = fSensors->GetEntries();
   for ( Int_t isensor=0; isensor<nsensors; isensor++) {
     AliDCSSensor *sensor = (AliDCSSensor*)fSensors->At(isensor);
     TGraph *gr = sensor->GetGraph();
     if ( gr != 0 ) {
       delete gr;
       gr = 0;
     }
     sensor->SetGraph(0);
   }
}
//_____________________________________________________________________________
void AliDCSSensorArray::ClearFit()
{
  //
  // Delete spline fits from all sensors in array
  //

   Int_t nsensors = fSensors->GetEntries();
   for ( Int_t isensor=0; isensor<nsensors; isensor++) {
     AliDCSSensor *sensor = (AliDCSSensor*)fSensors->At(isensor);
     AliSplineFit *fit = sensor->GetFit();
     if ( fit != 0 ) {
       delete fit;
       fit = 0;
     }
     sensor->SetFit(0);
   }
}
//_____________________________________________________________________________
void AliDCSSensorArray::AddSensors(AliDCSSensorArray *newSensors)
{
  //
  // add sensors from two sensor arrays
  //
  
  Int_t numNew = newSensors->NumSensors();
  Int_t numOld = fSensors->GetEntries();
  fSensors->Expand(numOld+numNew);
  for (Int_t i=0;i<numNew;i++) {
    AliDCSSensor *sens = newSensors->GetSensorNum(i);
    new ((*fSensors)[numOld+i]) AliDCSSensor(*sens);
  }
}  
  
 AliDCSSensorArray.cxx:1
 AliDCSSensorArray.cxx:2
 AliDCSSensorArray.cxx:3
 AliDCSSensorArray.cxx:4
 AliDCSSensorArray.cxx:5
 AliDCSSensorArray.cxx:6
 AliDCSSensorArray.cxx:7
 AliDCSSensorArray.cxx:8
 AliDCSSensorArray.cxx:9
 AliDCSSensorArray.cxx:10
 AliDCSSensorArray.cxx:11
 AliDCSSensorArray.cxx:12
 AliDCSSensorArray.cxx:13
 AliDCSSensorArray.cxx:14
 AliDCSSensorArray.cxx:15
 AliDCSSensorArray.cxx:16
 AliDCSSensorArray.cxx:17
 AliDCSSensorArray.cxx:18
 AliDCSSensorArray.cxx:19
 AliDCSSensorArray.cxx:20
 AliDCSSensorArray.cxx:21
 AliDCSSensorArray.cxx:22
 AliDCSSensorArray.cxx:23
 AliDCSSensorArray.cxx:24
 AliDCSSensorArray.cxx:25
 AliDCSSensorArray.cxx:26
 AliDCSSensorArray.cxx:27
 AliDCSSensorArray.cxx:28
 AliDCSSensorArray.cxx:29
 AliDCSSensorArray.cxx:30
 AliDCSSensorArray.cxx:31
 AliDCSSensorArray.cxx:32
 AliDCSSensorArray.cxx:33
 AliDCSSensorArray.cxx:34
 AliDCSSensorArray.cxx:35
 AliDCSSensorArray.cxx:36
 AliDCSSensorArray.cxx:37
 AliDCSSensorArray.cxx:38
 AliDCSSensorArray.cxx:39
 AliDCSSensorArray.cxx:40
 AliDCSSensorArray.cxx:41
 AliDCSSensorArray.cxx:42
 AliDCSSensorArray.cxx:43
 AliDCSSensorArray.cxx:44
 AliDCSSensorArray.cxx:45
 AliDCSSensorArray.cxx:46
 AliDCSSensorArray.cxx:47
 AliDCSSensorArray.cxx:48
 AliDCSSensorArray.cxx:49
 AliDCSSensorArray.cxx:50
 AliDCSSensorArray.cxx:51
 AliDCSSensorArray.cxx:52
 AliDCSSensorArray.cxx:53
 AliDCSSensorArray.cxx:54
 AliDCSSensorArray.cxx:55
 AliDCSSensorArray.cxx:56
 AliDCSSensorArray.cxx:57
 AliDCSSensorArray.cxx:58
 AliDCSSensorArray.cxx:59
 AliDCSSensorArray.cxx:60
 AliDCSSensorArray.cxx:61
 AliDCSSensorArray.cxx:62
 AliDCSSensorArray.cxx:63
 AliDCSSensorArray.cxx:64
 AliDCSSensorArray.cxx:65
 AliDCSSensorArray.cxx:66
 AliDCSSensorArray.cxx:67
 AliDCSSensorArray.cxx:68
 AliDCSSensorArray.cxx:69
 AliDCSSensorArray.cxx:70
 AliDCSSensorArray.cxx:71
 AliDCSSensorArray.cxx:72
 AliDCSSensorArray.cxx:73
 AliDCSSensorArray.cxx:74
 AliDCSSensorArray.cxx:75
 AliDCSSensorArray.cxx:76
 AliDCSSensorArray.cxx:77
 AliDCSSensorArray.cxx:78
 AliDCSSensorArray.cxx:79
 AliDCSSensorArray.cxx:80
 AliDCSSensorArray.cxx:81
 AliDCSSensorArray.cxx:82
 AliDCSSensorArray.cxx:83
 AliDCSSensorArray.cxx:84
 AliDCSSensorArray.cxx:85
 AliDCSSensorArray.cxx:86
 AliDCSSensorArray.cxx:87
 AliDCSSensorArray.cxx:88
 AliDCSSensorArray.cxx:89
 AliDCSSensorArray.cxx:90
 AliDCSSensorArray.cxx:91
 AliDCSSensorArray.cxx:92
 AliDCSSensorArray.cxx:93
 AliDCSSensorArray.cxx:94
 AliDCSSensorArray.cxx:95
 AliDCSSensorArray.cxx:96
 AliDCSSensorArray.cxx:97
 AliDCSSensorArray.cxx:98
 AliDCSSensorArray.cxx:99
 AliDCSSensorArray.cxx:100
 AliDCSSensorArray.cxx:101
 AliDCSSensorArray.cxx:102
 AliDCSSensorArray.cxx:103
 AliDCSSensorArray.cxx:104
 AliDCSSensorArray.cxx:105
 AliDCSSensorArray.cxx:106
 AliDCSSensorArray.cxx:107
 AliDCSSensorArray.cxx:108
 AliDCSSensorArray.cxx:109
 AliDCSSensorArray.cxx:110
 AliDCSSensorArray.cxx:111
 AliDCSSensorArray.cxx:112
 AliDCSSensorArray.cxx:113
 AliDCSSensorArray.cxx:114
 AliDCSSensorArray.cxx:115
 AliDCSSensorArray.cxx:116
 AliDCSSensorArray.cxx:117
 AliDCSSensorArray.cxx:118
 AliDCSSensorArray.cxx:119
 AliDCSSensorArray.cxx:120
 AliDCSSensorArray.cxx:121
 AliDCSSensorArray.cxx:122
 AliDCSSensorArray.cxx:123
 AliDCSSensorArray.cxx:124
 AliDCSSensorArray.cxx:125
 AliDCSSensorArray.cxx:126
 AliDCSSensorArray.cxx:127
 AliDCSSensorArray.cxx:128
 AliDCSSensorArray.cxx:129
 AliDCSSensorArray.cxx:130
 AliDCSSensorArray.cxx:131
 AliDCSSensorArray.cxx:132
 AliDCSSensorArray.cxx:133
 AliDCSSensorArray.cxx:134
 AliDCSSensorArray.cxx:135
 AliDCSSensorArray.cxx:136
 AliDCSSensorArray.cxx:137
 AliDCSSensorArray.cxx:138
 AliDCSSensorArray.cxx:139
 AliDCSSensorArray.cxx:140
 AliDCSSensorArray.cxx:141
 AliDCSSensorArray.cxx:142
 AliDCSSensorArray.cxx:143
 AliDCSSensorArray.cxx:144
 AliDCSSensorArray.cxx:145
 AliDCSSensorArray.cxx:146
 AliDCSSensorArray.cxx:147
 AliDCSSensorArray.cxx:148
 AliDCSSensorArray.cxx:149
 AliDCSSensorArray.cxx:150
 AliDCSSensorArray.cxx:151
 AliDCSSensorArray.cxx:152
 AliDCSSensorArray.cxx:153
 AliDCSSensorArray.cxx:154
 AliDCSSensorArray.cxx:155
 AliDCSSensorArray.cxx:156
 AliDCSSensorArray.cxx:157
 AliDCSSensorArray.cxx:158
 AliDCSSensorArray.cxx:159
 AliDCSSensorArray.cxx:160
 AliDCSSensorArray.cxx:161
 AliDCSSensorArray.cxx:162
 AliDCSSensorArray.cxx:163
 AliDCSSensorArray.cxx:164
 AliDCSSensorArray.cxx:165
 AliDCSSensorArray.cxx:166
 AliDCSSensorArray.cxx:167
 AliDCSSensorArray.cxx:168
 AliDCSSensorArray.cxx:169
 AliDCSSensorArray.cxx:170
 AliDCSSensorArray.cxx:171
 AliDCSSensorArray.cxx:172
 AliDCSSensorArray.cxx:173
 AliDCSSensorArray.cxx:174
 AliDCSSensorArray.cxx:175
 AliDCSSensorArray.cxx:176
 AliDCSSensorArray.cxx:177
 AliDCSSensorArray.cxx:178
 AliDCSSensorArray.cxx:179
 AliDCSSensorArray.cxx:180
 AliDCSSensorArray.cxx:181
 AliDCSSensorArray.cxx:182
 AliDCSSensorArray.cxx:183
 AliDCSSensorArray.cxx:184
 AliDCSSensorArray.cxx:185
 AliDCSSensorArray.cxx:186
 AliDCSSensorArray.cxx:187
 AliDCSSensorArray.cxx:188
 AliDCSSensorArray.cxx:189
 AliDCSSensorArray.cxx:190
 AliDCSSensorArray.cxx:191
 AliDCSSensorArray.cxx:192
 AliDCSSensorArray.cxx:193
 AliDCSSensorArray.cxx:194
 AliDCSSensorArray.cxx:195
 AliDCSSensorArray.cxx:196
 AliDCSSensorArray.cxx:197
 AliDCSSensorArray.cxx:198
 AliDCSSensorArray.cxx:199
 AliDCSSensorArray.cxx:200
 AliDCSSensorArray.cxx:201
 AliDCSSensorArray.cxx:202
 AliDCSSensorArray.cxx:203
 AliDCSSensorArray.cxx:204
 AliDCSSensorArray.cxx:205
 AliDCSSensorArray.cxx:206
 AliDCSSensorArray.cxx:207
 AliDCSSensorArray.cxx:208
 AliDCSSensorArray.cxx:209
 AliDCSSensorArray.cxx:210
 AliDCSSensorArray.cxx:211
 AliDCSSensorArray.cxx:212
 AliDCSSensorArray.cxx:213
 AliDCSSensorArray.cxx:214
 AliDCSSensorArray.cxx:215
 AliDCSSensorArray.cxx:216
 AliDCSSensorArray.cxx:217
 AliDCSSensorArray.cxx:218
 AliDCSSensorArray.cxx:219
 AliDCSSensorArray.cxx:220
 AliDCSSensorArray.cxx:221
 AliDCSSensorArray.cxx:222
 AliDCSSensorArray.cxx:223
 AliDCSSensorArray.cxx:224
 AliDCSSensorArray.cxx:225
 AliDCSSensorArray.cxx:226
 AliDCSSensorArray.cxx:227
 AliDCSSensorArray.cxx:228
 AliDCSSensorArray.cxx:229
 AliDCSSensorArray.cxx:230
 AliDCSSensorArray.cxx:231
 AliDCSSensorArray.cxx:232
 AliDCSSensorArray.cxx:233
 AliDCSSensorArray.cxx:234
 AliDCSSensorArray.cxx:235
 AliDCSSensorArray.cxx:236
 AliDCSSensorArray.cxx:237
 AliDCSSensorArray.cxx:238
 AliDCSSensorArray.cxx:239
 AliDCSSensorArray.cxx:240
 AliDCSSensorArray.cxx:241
 AliDCSSensorArray.cxx:242
 AliDCSSensorArray.cxx:243
 AliDCSSensorArray.cxx:244
 AliDCSSensorArray.cxx:245
 AliDCSSensorArray.cxx:246
 AliDCSSensorArray.cxx:247
 AliDCSSensorArray.cxx:248
 AliDCSSensorArray.cxx:249
 AliDCSSensorArray.cxx:250
 AliDCSSensorArray.cxx:251
 AliDCSSensorArray.cxx:252
 AliDCSSensorArray.cxx:253
 AliDCSSensorArray.cxx:254
 AliDCSSensorArray.cxx:255
 AliDCSSensorArray.cxx:256
 AliDCSSensorArray.cxx:257
 AliDCSSensorArray.cxx:258
 AliDCSSensorArray.cxx:259
 AliDCSSensorArray.cxx:260
 AliDCSSensorArray.cxx:261
 AliDCSSensorArray.cxx:262
 AliDCSSensorArray.cxx:263
 AliDCSSensorArray.cxx:264
 AliDCSSensorArray.cxx:265
 AliDCSSensorArray.cxx:266
 AliDCSSensorArray.cxx:267
 AliDCSSensorArray.cxx:268
 AliDCSSensorArray.cxx:269
 AliDCSSensorArray.cxx:270
 AliDCSSensorArray.cxx:271
 AliDCSSensorArray.cxx:272
 AliDCSSensorArray.cxx:273
 AliDCSSensorArray.cxx:274
 AliDCSSensorArray.cxx:275
 AliDCSSensorArray.cxx:276
 AliDCSSensorArray.cxx:277
 AliDCSSensorArray.cxx:278
 AliDCSSensorArray.cxx:279
 AliDCSSensorArray.cxx:280
 AliDCSSensorArray.cxx:281
 AliDCSSensorArray.cxx:282
 AliDCSSensorArray.cxx:283
 AliDCSSensorArray.cxx:284
 AliDCSSensorArray.cxx:285
 AliDCSSensorArray.cxx:286
 AliDCSSensorArray.cxx:287
 AliDCSSensorArray.cxx:288
 AliDCSSensorArray.cxx:289
 AliDCSSensorArray.cxx:290
 AliDCSSensorArray.cxx:291
 AliDCSSensorArray.cxx:292
 AliDCSSensorArray.cxx:293
 AliDCSSensorArray.cxx:294
 AliDCSSensorArray.cxx:295
 AliDCSSensorArray.cxx:296
 AliDCSSensorArray.cxx:297
 AliDCSSensorArray.cxx:298
 AliDCSSensorArray.cxx:299
 AliDCSSensorArray.cxx:300
 AliDCSSensorArray.cxx:301
 AliDCSSensorArray.cxx:302
 AliDCSSensorArray.cxx:303
 AliDCSSensorArray.cxx:304
 AliDCSSensorArray.cxx:305
 AliDCSSensorArray.cxx:306
 AliDCSSensorArray.cxx:307
 AliDCSSensorArray.cxx:308
 AliDCSSensorArray.cxx:309
 AliDCSSensorArray.cxx:310
 AliDCSSensorArray.cxx:311
 AliDCSSensorArray.cxx:312
 AliDCSSensorArray.cxx:313
 AliDCSSensorArray.cxx:314
 AliDCSSensorArray.cxx:315
 AliDCSSensorArray.cxx:316
 AliDCSSensorArray.cxx:317
 AliDCSSensorArray.cxx:318
 AliDCSSensorArray.cxx:319
 AliDCSSensorArray.cxx:320
 AliDCSSensorArray.cxx:321
 AliDCSSensorArray.cxx:322
 AliDCSSensorArray.cxx:323
 AliDCSSensorArray.cxx:324
 AliDCSSensorArray.cxx:325
 AliDCSSensorArray.cxx:326
 AliDCSSensorArray.cxx:327
 AliDCSSensorArray.cxx:328
 AliDCSSensorArray.cxx:329
 AliDCSSensorArray.cxx:330
 AliDCSSensorArray.cxx:331
 AliDCSSensorArray.cxx:332
 AliDCSSensorArray.cxx:333
 AliDCSSensorArray.cxx:334
 AliDCSSensorArray.cxx:335
 AliDCSSensorArray.cxx:336
 AliDCSSensorArray.cxx:337
 AliDCSSensorArray.cxx:338
 AliDCSSensorArray.cxx:339
 AliDCSSensorArray.cxx:340
 AliDCSSensorArray.cxx:341
 AliDCSSensorArray.cxx:342
 AliDCSSensorArray.cxx:343
 AliDCSSensorArray.cxx:344
 AliDCSSensorArray.cxx:345
 AliDCSSensorArray.cxx:346
 AliDCSSensorArray.cxx:347
 AliDCSSensorArray.cxx:348
 AliDCSSensorArray.cxx:349
 AliDCSSensorArray.cxx:350
 AliDCSSensorArray.cxx:351
 AliDCSSensorArray.cxx:352
 AliDCSSensorArray.cxx:353
 AliDCSSensorArray.cxx:354
 AliDCSSensorArray.cxx:355
 AliDCSSensorArray.cxx:356
 AliDCSSensorArray.cxx:357
 AliDCSSensorArray.cxx:358
 AliDCSSensorArray.cxx:359
 AliDCSSensorArray.cxx:360
 AliDCSSensorArray.cxx:361
 AliDCSSensorArray.cxx:362
 AliDCSSensorArray.cxx:363
 AliDCSSensorArray.cxx:364
 AliDCSSensorArray.cxx:365
 AliDCSSensorArray.cxx:366
 AliDCSSensorArray.cxx:367
 AliDCSSensorArray.cxx:368
 AliDCSSensorArray.cxx:369
 AliDCSSensorArray.cxx:370
 AliDCSSensorArray.cxx:371
 AliDCSSensorArray.cxx:372
 AliDCSSensorArray.cxx:373
 AliDCSSensorArray.cxx:374
 AliDCSSensorArray.cxx:375
 AliDCSSensorArray.cxx:376
 AliDCSSensorArray.cxx:377
 AliDCSSensorArray.cxx:378
 AliDCSSensorArray.cxx:379
 AliDCSSensorArray.cxx:380
 AliDCSSensorArray.cxx:381
 AliDCSSensorArray.cxx:382
 AliDCSSensorArray.cxx:383
 AliDCSSensorArray.cxx:384
 AliDCSSensorArray.cxx:385
 AliDCSSensorArray.cxx:386
 AliDCSSensorArray.cxx:387
 AliDCSSensorArray.cxx:388
 AliDCSSensorArray.cxx:389
 AliDCSSensorArray.cxx:390
 AliDCSSensorArray.cxx:391
 AliDCSSensorArray.cxx:392
 AliDCSSensorArray.cxx:393
 AliDCSSensorArray.cxx:394
 AliDCSSensorArray.cxx:395
 AliDCSSensorArray.cxx:396
 AliDCSSensorArray.cxx:397
 AliDCSSensorArray.cxx:398
 AliDCSSensorArray.cxx:399
 AliDCSSensorArray.cxx:400
 AliDCSSensorArray.cxx:401
 AliDCSSensorArray.cxx:402
 AliDCSSensorArray.cxx:403
 AliDCSSensorArray.cxx:404
 AliDCSSensorArray.cxx:405
 AliDCSSensorArray.cxx:406
 AliDCSSensorArray.cxx:407
 AliDCSSensorArray.cxx:408
 AliDCSSensorArray.cxx:409
 AliDCSSensorArray.cxx:410
 AliDCSSensorArray.cxx:411
 AliDCSSensorArray.cxx:412
 AliDCSSensorArray.cxx:413
 AliDCSSensorArray.cxx:414
 AliDCSSensorArray.cxx:415
 AliDCSSensorArray.cxx:416
 AliDCSSensorArray.cxx:417
 AliDCSSensorArray.cxx:418
 AliDCSSensorArray.cxx:419
 AliDCSSensorArray.cxx:420
 AliDCSSensorArray.cxx:421
 AliDCSSensorArray.cxx:422
 AliDCSSensorArray.cxx:423
 AliDCSSensorArray.cxx:424
 AliDCSSensorArray.cxx:425
 AliDCSSensorArray.cxx:426
 AliDCSSensorArray.cxx:427
 AliDCSSensorArray.cxx:428
 AliDCSSensorArray.cxx:429
 AliDCSSensorArray.cxx:430
 AliDCSSensorArray.cxx:431
 AliDCSSensorArray.cxx:432
 AliDCSSensorArray.cxx:433
 AliDCSSensorArray.cxx:434
 AliDCSSensorArray.cxx:435
 AliDCSSensorArray.cxx:436
 AliDCSSensorArray.cxx:437
 AliDCSSensorArray.cxx:438
 AliDCSSensorArray.cxx:439
 AliDCSSensorArray.cxx:440
 AliDCSSensorArray.cxx:441
 AliDCSSensorArray.cxx:442
 AliDCSSensorArray.cxx:443
 AliDCSSensorArray.cxx:444
 AliDCSSensorArray.cxx:445
 AliDCSSensorArray.cxx:446
 AliDCSSensorArray.cxx:447
 AliDCSSensorArray.cxx:448
 AliDCSSensorArray.cxx:449
 AliDCSSensorArray.cxx:450
 AliDCSSensorArray.cxx:451
 AliDCSSensorArray.cxx:452
 AliDCSSensorArray.cxx:453
 AliDCSSensorArray.cxx:454
 AliDCSSensorArray.cxx:455
 AliDCSSensorArray.cxx:456
 AliDCSSensorArray.cxx:457
 AliDCSSensorArray.cxx:458
 AliDCSSensorArray.cxx:459
 AliDCSSensorArray.cxx:460
 AliDCSSensorArray.cxx:461
 AliDCSSensorArray.cxx:462
 AliDCSSensorArray.cxx:463
 AliDCSSensorArray.cxx:464
 AliDCSSensorArray.cxx:465
 AliDCSSensorArray.cxx:466
 AliDCSSensorArray.cxx:467
 AliDCSSensorArray.cxx:468
 AliDCSSensorArray.cxx:469
 AliDCSSensorArray.cxx:470
 AliDCSSensorArray.cxx:471
 AliDCSSensorArray.cxx:472
 AliDCSSensorArray.cxx:473
 AliDCSSensorArray.cxx:474
 AliDCSSensorArray.cxx:475
 AliDCSSensorArray.cxx:476
 AliDCSSensorArray.cxx:477
 AliDCSSensorArray.cxx:478
 AliDCSSensorArray.cxx:479
 AliDCSSensorArray.cxx:480
 AliDCSSensorArray.cxx:481
 AliDCSSensorArray.cxx:482
 AliDCSSensorArray.cxx:483
 AliDCSSensorArray.cxx:484
 AliDCSSensorArray.cxx:485
 AliDCSSensorArray.cxx:486
 AliDCSSensorArray.cxx:487
 AliDCSSensorArray.cxx:488
 AliDCSSensorArray.cxx:489
 AliDCSSensorArray.cxx:490
 AliDCSSensorArray.cxx:491
 AliDCSSensorArray.cxx:492
 AliDCSSensorArray.cxx:493
 AliDCSSensorArray.cxx:494
 AliDCSSensorArray.cxx:495
 AliDCSSensorArray.cxx:496
 AliDCSSensorArray.cxx:497
 AliDCSSensorArray.cxx:498
 AliDCSSensorArray.cxx:499
 AliDCSSensorArray.cxx:500
 AliDCSSensorArray.cxx:501
 AliDCSSensorArray.cxx:502
 AliDCSSensorArray.cxx:503
 AliDCSSensorArray.cxx:504
 AliDCSSensorArray.cxx:505
 AliDCSSensorArray.cxx:506
 AliDCSSensorArray.cxx:507
 AliDCSSensorArray.cxx:508
 AliDCSSensorArray.cxx:509
 AliDCSSensorArray.cxx:510
 AliDCSSensorArray.cxx:511
 AliDCSSensorArray.cxx:512
 AliDCSSensorArray.cxx:513
 AliDCSSensorArray.cxx:514
 AliDCSSensorArray.cxx:515
 AliDCSSensorArray.cxx:516
 AliDCSSensorArray.cxx:517
 AliDCSSensorArray.cxx:518
 AliDCSSensorArray.cxx:519
 AliDCSSensorArray.cxx:520
 AliDCSSensorArray.cxx:521
 AliDCSSensorArray.cxx:522
 AliDCSSensorArray.cxx:523
 AliDCSSensorArray.cxx:524
 AliDCSSensorArray.cxx:525
 AliDCSSensorArray.cxx:526
 AliDCSSensorArray.cxx:527
 AliDCSSensorArray.cxx:528
 AliDCSSensorArray.cxx:529
 AliDCSSensorArray.cxx:530
 AliDCSSensorArray.cxx:531
 AliDCSSensorArray.cxx:532
 AliDCSSensorArray.cxx:533
 AliDCSSensorArray.cxx:534
 AliDCSSensorArray.cxx:535
 AliDCSSensorArray.cxx:536
 AliDCSSensorArray.cxx:537
 AliDCSSensorArray.cxx:538
 AliDCSSensorArray.cxx:539
 AliDCSSensorArray.cxx:540
 AliDCSSensorArray.cxx:541
 AliDCSSensorArray.cxx:542
 AliDCSSensorArray.cxx:543
 AliDCSSensorArray.cxx:544
 AliDCSSensorArray.cxx:545
 AliDCSSensorArray.cxx:546
 AliDCSSensorArray.cxx:547
 AliDCSSensorArray.cxx:548
 AliDCSSensorArray.cxx:549
 AliDCSSensorArray.cxx:550
 AliDCSSensorArray.cxx:551
 AliDCSSensorArray.cxx:552
 AliDCSSensorArray.cxx:553
 AliDCSSensorArray.cxx:554
 AliDCSSensorArray.cxx:555
 AliDCSSensorArray.cxx:556
 AliDCSSensorArray.cxx:557
 AliDCSSensorArray.cxx:558
 AliDCSSensorArray.cxx:559
 AliDCSSensorArray.cxx:560
 AliDCSSensorArray.cxx:561
 AliDCSSensorArray.cxx:562
 AliDCSSensorArray.cxx:563
 AliDCSSensorArray.cxx:564
 AliDCSSensorArray.cxx:565
 AliDCSSensorArray.cxx:566
 AliDCSSensorArray.cxx:567
 AliDCSSensorArray.cxx:568
 AliDCSSensorArray.cxx:569
 AliDCSSensorArray.cxx:570
 AliDCSSensorArray.cxx:571
 AliDCSSensorArray.cxx:572
 AliDCSSensorArray.cxx:573
 AliDCSSensorArray.cxx:574
 AliDCSSensorArray.cxx:575
 AliDCSSensorArray.cxx:576
 AliDCSSensorArray.cxx:577
 AliDCSSensorArray.cxx:578
 AliDCSSensorArray.cxx:579
 AliDCSSensorArray.cxx:580
 AliDCSSensorArray.cxx:581
 AliDCSSensorArray.cxx:582
 AliDCSSensorArray.cxx:583
 AliDCSSensorArray.cxx:584
 AliDCSSensorArray.cxx:585
 AliDCSSensorArray.cxx:586
 AliDCSSensorArray.cxx:587
 AliDCSSensorArray.cxx:588
 AliDCSSensorArray.cxx:589
 AliDCSSensorArray.cxx:590
 AliDCSSensorArray.cxx:591
 AliDCSSensorArray.cxx:592
 AliDCSSensorArray.cxx:593
 AliDCSSensorArray.cxx:594
 AliDCSSensorArray.cxx:595
 AliDCSSensorArray.cxx:596
 AliDCSSensorArray.cxx:597
 AliDCSSensorArray.cxx:598
 AliDCSSensorArray.cxx:599
 AliDCSSensorArray.cxx:600
 AliDCSSensorArray.cxx:601
 AliDCSSensorArray.cxx:602
 AliDCSSensorArray.cxx:603
 AliDCSSensorArray.cxx:604
 AliDCSSensorArray.cxx:605
 AliDCSSensorArray.cxx:606
 AliDCSSensorArray.cxx:607
 AliDCSSensorArray.cxx:608
 AliDCSSensorArray.cxx:609
 AliDCSSensorArray.cxx:610
 AliDCSSensorArray.cxx:611
 AliDCSSensorArray.cxx:612
 AliDCSSensorArray.cxx:613
 AliDCSSensorArray.cxx:614
 AliDCSSensorArray.cxx:615
 AliDCSSensorArray.cxx:616
 AliDCSSensorArray.cxx:617
 AliDCSSensorArray.cxx:618
 AliDCSSensorArray.cxx:619
 AliDCSSensorArray.cxx:620
 AliDCSSensorArray.cxx:621
 AliDCSSensorArray.cxx:622
 AliDCSSensorArray.cxx:623
 AliDCSSensorArray.cxx:624
 AliDCSSensorArray.cxx:625
 AliDCSSensorArray.cxx:626
 AliDCSSensorArray.cxx:627
 AliDCSSensorArray.cxx:628
 AliDCSSensorArray.cxx:629
 AliDCSSensorArray.cxx:630
 AliDCSSensorArray.cxx:631
 AliDCSSensorArray.cxx:632
 AliDCSSensorArray.cxx:633
 AliDCSSensorArray.cxx:634
 AliDCSSensorArray.cxx:635
 AliDCSSensorArray.cxx:636
 AliDCSSensorArray.cxx:637
 AliDCSSensorArray.cxx:638
 AliDCSSensorArray.cxx:639
 AliDCSSensorArray.cxx:640
 AliDCSSensorArray.cxx:641
 AliDCSSensorArray.cxx:642
 AliDCSSensorArray.cxx:643
 AliDCSSensorArray.cxx:644
 AliDCSSensorArray.cxx:645
 AliDCSSensorArray.cxx:646
 AliDCSSensorArray.cxx:647
 AliDCSSensorArray.cxx:648
 AliDCSSensorArray.cxx:649
 AliDCSSensorArray.cxx:650
 AliDCSSensorArray.cxx:651
 AliDCSSensorArray.cxx:652
 AliDCSSensorArray.cxx:653
 AliDCSSensorArray.cxx:654
 AliDCSSensorArray.cxx:655
 AliDCSSensorArray.cxx:656
 AliDCSSensorArray.cxx:657
 AliDCSSensorArray.cxx:658
 AliDCSSensorArray.cxx:659
 AliDCSSensorArray.cxx:660
 AliDCSSensorArray.cxx:661
 AliDCSSensorArray.cxx:662
 AliDCSSensorArray.cxx:663
 AliDCSSensorArray.cxx:664
 AliDCSSensorArray.cxx:665
 AliDCSSensorArray.cxx:666
 AliDCSSensorArray.cxx:667
 AliDCSSensorArray.cxx:668
 AliDCSSensorArray.cxx:669
 AliDCSSensorArray.cxx:670
 AliDCSSensorArray.cxx:671
 AliDCSSensorArray.cxx:672
 AliDCSSensorArray.cxx:673
 AliDCSSensorArray.cxx:674
 AliDCSSensorArray.cxx:675
 AliDCSSensorArray.cxx:676
 AliDCSSensorArray.cxx:677
 AliDCSSensorArray.cxx:678
 AliDCSSensorArray.cxx:679
 AliDCSSensorArray.cxx:680
 AliDCSSensorArray.cxx:681
 AliDCSSensorArray.cxx:682
 AliDCSSensorArray.cxx:683
 AliDCSSensorArray.cxx:684
 AliDCSSensorArray.cxx:685
 AliDCSSensorArray.cxx:686
 AliDCSSensorArray.cxx:687
 AliDCSSensorArray.cxx:688
 AliDCSSensorArray.cxx:689
 AliDCSSensorArray.cxx:690
 AliDCSSensorArray.cxx:691
 AliDCSSensorArray.cxx:692
 AliDCSSensorArray.cxx:693
 AliDCSSensorArray.cxx:694
 AliDCSSensorArray.cxx:695
 AliDCSSensorArray.cxx:696
 AliDCSSensorArray.cxx:697
 AliDCSSensorArray.cxx:698
 AliDCSSensorArray.cxx:699
 AliDCSSensorArray.cxx:700
 AliDCSSensorArray.cxx:701
 AliDCSSensorArray.cxx:702
 AliDCSSensorArray.cxx:703