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.                  *
 **************************************************************************/

/* $Id$ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
// This class collects the DCS information and does an AliSplineFit       //
//                                                                        //
// Typical use :                                                          //
//                                                                        //
//   AliTRDDataDCS dataDcs;                                               //
//   dataDcs.ExtractDCS(dcs);                                             //
//   ->call a storeRef function                                           //
//   dataDcs.PerformFit();                                                //                        
//   dataDcs.ClearGraphs();                                               //
//   ->call a store function                                              //
//   dataDcs.ClearFits();                                                 //
//                                                                        //
// Author:                                                                //
//   W. Monange   (wilfried.monange@free.fr)                              //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include <TGraph.h>
#include <TObjArray.h>
#include <TMap.h>

#include "AliDCSValue.h"
#include "AliDCSValue.h"
#include "AliLog.h"
#include "AliSplineFit.h"

#include "AliTRDDataDCS.h"

ClassImp(AliTRDDataDCS)

//_____________________________________________________________________________
AliTRDDataDCS::AliTRDDataDCS() 
  :TNamed()       
  ,fGraphsAreIni(kFALSE)
  ,fFitsAreIni(kFALSE)
  ,fNAlias(22)
{
  //
  // Default constructor
  //

  Init ();

}

//_____________________________________________________________________________
AliTRDDataDCS::~AliTRDDataDCS()
{
  //
  // Destructor
  //

  ClearFits();
  ClearGraphs();

}

//_____________________________________________________________________________
void AliTRDDataDCS::Init()
{
  //
  // Initialization
  //

  SetConf(kChamberByteStatus, "trd_chamberByteStatus%03d",'c', 540, kTRUE,kFALSE,       10,10,0,2); 
  SetConf(kPreTrigger, 	      "trd_preTrigger", 	  'c',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyHv, 	      "trd_goofyHv", 		  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyPeakPos,      "trd_goofyPeakPos%02d",     'f',   2, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyPeakArea,     "trd_goofyPeakArea%02d",    'f',   2, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyTemp, 	      "trd_goofyTemp%02d", 	  'f',   2, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyPressure,     "trd_goofyPressure", 	  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyVelocity,     "trd_goofyVelocity", 	  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyGain, 	      "trd_goofyGain%02d", 	  'f',   2, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyCO2, 	      "trd_goofyCO2", 		  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGoofyN2, 	      "trd_goofyN2", 		  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGasO2, 	      "trd_gasO2", 		  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kGasOverpressure,   "trd_gasOverpressure", 	  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kEnvTemp, 	      "trd_envTemp%03d", 	  'f', 540, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kHvAnodeImon,       "trd_hvAnodeImon%03d",   	  'f', 540, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kHvDriftImon,       "trd_hvDriftImon%03d", 	  'f', 540, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kHvAnodeUmon,       "trd_hvAnodeUmon%03d", 	  'f', 540, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kHvDriftUmon,       "trd_hvDriftUmon%03d", 	  'f', 540, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kAdcClkPhase,       "trd_adcClkPhase", 	  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kAtmPressure,       "trd_atmPressure", 	  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kLuminosity, 	      "trd_luminosity", 	  'f',   1, kTRUE, kTRUE, 	10,10,0,2);
  SetConf(kMagneticField,     "trd_magneticField", 	  'f',   1, kTRUE, kTRUE, 	10,10,0,2);		
  
  for (UInt_t iAlias = 0; iAlias < fNAlias; iAlias++) {
    fDatas[iAlias].GetGraph().SetOwner(1);
    fDatas[iAlias].GetFit().SetOwner(1);
  }

}

//_____________________________________________________________________________
void AliTRDDataDCS::SetConf(UInt_t iAlias, const char *amanda, 
			     char dataType, UInt_t nChannel, 
			     Bool_t enableGraph, Bool_t enableFit, Int_t minPoints, 
			     Int_t iter, Double_t maxDelta, Int_t fitReq)
{
  //
  // Configure a DCS alias
  //

  if (iAlias >= fNAlias) {
    AliWarning (Form("Alias %d is not correct", iAlias));
    return;
  }
  
  fConfs[iAlias].SetAmanda(amanda);
  fConfs[iAlias].SetDataType(dataType);
  fConfs[iAlias].SetNChannel(nChannel);
  fConfs[iAlias].SetEnableGraph(enableGraph);
  fConfs[iAlias].SetEnableFit(enableFit);
  fConfs[iAlias].SetMinPoints(minPoints);
  fConfs[iAlias].SetIter(iter);
  fConfs[iAlias].SetMaxDelta(maxDelta);
  fConfs[iAlias].SetFitReq(fitReq);
  
}

//_____________________________________________________________________________
void AliTRDDataDCS::InitFits()
{
  //
  // Initialize the fits
  //

  if (fFitsAreIni)
    return;
  
  UInt_t nChannel;
  for (UInt_t iAlias = 0; iAlias < fNAlias; iAlias++) {
    nChannel = fConfs[iAlias].GetEnableFit() ? fConfs[iAlias].GetNChannel() : 0;
    fDatas[iAlias].GetFit().Expand(nChannel);	
  }
  
  fFitsAreIni = kTRUE;
}

//_____________________________________________________________________________
void AliTRDDataDCS::InitGraphs()
{
  //
  // Initialize the graphs
  //

  if (fGraphsAreIni)
    return;
  
  UInt_t nChannel;	
  for (UInt_t iAlias = 0; iAlias < fNAlias; iAlias++) {
    nChannel = fConfs[iAlias].GetEnableGraph() ? fConfs[iAlias].GetNChannel() : 0;	 
    fDatas[iAlias].GetGraph().Expand(nChannel);
  }
  
  fGraphsAreIni = kTRUE;
}

//_____________________________________________________________________________
void AliTRDDataDCS::ClearFits()
{
  //
  // Clear the fits
  //

  for (UInt_t iAlias = 0; iAlias < fNAlias; iAlias++) {
    fDatas[iAlias].GetFit().Clear();
    fDatas[iAlias].GetFit().Expand(0);
  }
  
  fFitsAreIni = kFALSE;
}

//_____________________________________________________________________________
void AliTRDDataDCS::ClearGraphs()
{
  //
  // Clear the grpahs
  //

  for (UInt_t iAlias = 0; iAlias < fNAlias; iAlias++) {
    fDatas[iAlias].GetGraph().Clear();
    fDatas[iAlias].GetGraph().Expand(0);
  }
  
  fGraphsAreIni = kFALSE;
}

//_____________________________________________________________________________
Bool_t AliTRDDataDCS::ExtractDCS (TMap *dcsAlias)
{
  //
  // Extract the DCS information
  //

  if (dcsAlias == 0x0) {
    AliWarning ("No DCS Map");
    return kFALSE;
  }
  
  ClearGraphs();
  InitGraphs();
  
  TGraph *graphTemp;
  UInt_t nChannel;
  
  for (UInt_t iAlias = 0; iAlias < fNAlias; iAlias++){
    
    // extract dcs only when it is needed
    nChannel = fDatas[iAlias].GetGraph().GetSize();
    
    for (UInt_t iSensor=0; iSensor < nChannel; iSensor++) {
      
      graphTemp = FindAndMakeGraph(dcsAlias, 
				   Form(fConfs[iAlias].GetAmanda().Data(), iSensor), 
				   fConfs[iAlias].GetDataType()); 
      
      fDatas[iAlias].GetGraph().AddAt(graphTemp, iSensor);
    }
  }
  
  return kTRUE;
}

//_____________________________________________________________________________
TGraph *AliTRDDataDCS::FindAndMakeGraph (TMap * const dcsMap
                                       , const char *amandaStr
				       , char dataType)
{
  //
  // Create the graphs
  //

  TGraph *graph;
  
  TPair *pair = (TPair *) dcsMap->FindObject(amandaStr);
  if (pair == 0x0) {
    AliWarning (Form("Can't find %s in dcsMap", amandaStr));
    return 0x0;
  }
  
  TObjArray *valueSet = (TObjArray *) pair->Value();
  
  //
  // Make graph of values read from DCS map
  //   (spline fit parameters will subsequently be obtained from this graph) 
  //
  
  Int_t nEntries = valueSet->GetEntriesFast();
  if (nEntries == 0) {
    AliWarning (Form("Entry %s in dcsMap contain no datas", amandaStr));
    return 0x0;
  }
  
  Float_t * x = new Float_t[nEntries];
  Float_t * y = new Float_t[nEntries];
  
  Bool_t ok = kTRUE;
  Int_t time0 = 0;
  Int_t iEntries;
  for (iEntries = 0;  iEntries< nEntries; iEntries++) {
    
    AliDCSValue *val = (AliDCSValue *) valueSet->At(iEntries);
    
    if (val == 0x0) { 
      ok = false;
      AliError(Form("Entry %s at %d contain no datas", amandaStr, iEntries));
      break;
    }
    
    if (time0 == 0) 
      time0 = val->GetTimeStamp();
    
    
    x[iEntries] = (val->GetTimeStamp() - time0)/3600.0; // give times in fractions of hours 
    
    switch (dataType) {
    case 'f' :
      y[iEntries] = val->GetFloat();
      break;
      
    case 'c' :
      y[iEntries] = (Float_t) val->GetChar();
      break;
      
    default :
      ok = false;
      AliError(Form("Bad type for entry %s", amandaStr));
      break;
    }
  }
  
  if (ok)
    graph = new TGraph(iEntries, x, y);
  else
    graph = 0x0;
  
  delete [] x;
  delete [] y;
  
  return graph;
}

//_____________________________________________________________________________
Bool_t AliTRDDataDCS::PerformFit()
{
  //
  // Do the fit
  //

  AliSplineFit *fitTemp;
  
  ClearFits();
  InitFits();
  
  UInt_t nChannel;
  
  for (UInt_t iAlias = 0; iAlias < fNAlias; iAlias++){
    
    // perform fit only when it is needed
    nChannel = fDatas[iAlias].GetFit().GetSize();
    
    for (UInt_t iSensor=0; iSensor < nChannel; iSensor++) {
      
      fitTemp = Fit((TGraph*)fDatas[iAlias].GetGraph(iSensor),
		     fConfs[iAlias].GetMinPoints(),
		     fConfs[iAlias].GetIter(),
		     fConfs[iAlias].GetMaxDelta(),
		     fConfs[iAlias].GetFitReq()); 
      
      if (fitTemp == 0x0)
	AliInfo(Form("Can't fit %s", Form(fConfs[iAlias].GetAmanda().Data(), iSensor)));
      
      fDatas[iAlias].GetFit().AddAt(fitTemp, iSensor);
    }
  }
  
  return kTRUE;
  
}

//_____________________________________________________________________________
AliSplineFit *AliTRDDataDCS::Fit(const TGraph * const graph, 
			         Int_t  minPoints, Int_t  iter, 
			         Double_t  maxDelta, Int_t  fitReq)
{
  //
  // Do the spline fit
  //

  if (graph == 0x0) {
    AliError("No graph for fit");
    return 0x0;
  }
  
  AliSplineFit *spline = new AliSplineFit();
  spline->InitKnots(new TGraph (*graph), minPoints, iter, maxDelta);
  spline->SplineFit(fitReq);
  spline->Cleanup();   // delete also new TGraph (*graph)
  
  return spline;
}

//_____________________________________________________________________________
void AliTRDDataDCS::Print(const Option_t * const option) const
{
  //
  // Print function
  //

  if (option[0]=='g' || option[0]=='\0'){
    
    if (fGraphsAreIni){
      
      for (UInt_t iAlias = 0; iAlias < fNAlias; iAlias++){
	
	for (Int_t iSensor = 0; iSensor < fDatas[iAlias].GetGraph().GetSize(); iSensor++) {
	  
	  if (fDatas[iAlias].GetGraph(iSensor) != 0x0)
	    AliInfo(Form("Graph %s contain %d point(s)", 
			  Form(fConfs[iAlias].GetAmanda(), iSensor), 
			  ((TGraph*)(fDatas[iAlias].GetGraph(iSensor)))->GetN()));
	}
      }
    }
    else{
      AliInfo("Graphs don't exist");
    }
  }
  
  
  if (option[0] == 'f' || option[0]=='\0'){
    
    AliInfo("no print for fit");
    
  }
  
}

//_____________________________________________________________________________
TGraph *AliTRDDataDCS::GetGraph(UInt_t iAlias, UInt_t iChannel) const
{
  //
  // Get a graph
  //

  if (iAlias >= fNAlias) {
    AliWarning(Form("Alias %d is not correct", iAlias));
    return 0x0;
  }
  
  if (iChannel >= (UInt_t) fDatas[iAlias].GetGraph().GetSize()) {
    AliWarning(Form("Alias %s is not correct", 
		     Form(fConfs[iAlias].GetAmanda().Data(), iChannel)));
    return 0x0;
  }
  
  return (TGraph *)fDatas[iAlias].GetGraph(iChannel);
}

//_____________________________________________________________________________
AliSplineFit *AliTRDDataDCS::GetFit(UInt_t iAlias, UInt_t iChannel) const
{
  //
  // Get the spline fit
  //

  if (iAlias >= fNAlias) {
    AliWarning (Form("Alias %d is not correct", iAlias));
    return 0x0;
  }
  
  if (iChannel >= (UInt_t) fDatas[iAlias].GetFit().GetSize()) {
    AliWarning(Form("Alias %s is not correct", 
		     Form(fConfs[iAlias].GetAmanda().Data(), iChannel)));
    return 0x0;
  }
  
  return (AliSplineFit *) fDatas[iAlias].GetFit(iChannel);
}

//_____________________________________________________________________________
TString AliTRDDataDCS::GetAmandaStr (UInt_t iAlias) const 
{
  //
  // Return the AMANDA string
  //

  if (iAlias < fNAlias)
    return fConfs[iAlias].GetAmanda();
  else return TString ();
}

//_____________________________________________________________________________
UInt_t AliTRDDataDCS::GetNChannel (UInt_t iAlias) const 
{
  //
  // Get the channel number
  //

  if (iAlias < fNAlias)
    return fConfs[iAlias].GetNChannel();
  else return 0;
}
 AliTRDDataDCS.cxx:1
 AliTRDDataDCS.cxx:2
 AliTRDDataDCS.cxx:3
 AliTRDDataDCS.cxx:4
 AliTRDDataDCS.cxx:5
 AliTRDDataDCS.cxx:6
 AliTRDDataDCS.cxx:7
 AliTRDDataDCS.cxx:8
 AliTRDDataDCS.cxx:9
 AliTRDDataDCS.cxx:10
 AliTRDDataDCS.cxx:11
 AliTRDDataDCS.cxx:12
 AliTRDDataDCS.cxx:13
 AliTRDDataDCS.cxx:14
 AliTRDDataDCS.cxx:15
 AliTRDDataDCS.cxx:16
 AliTRDDataDCS.cxx:17
 AliTRDDataDCS.cxx:18
 AliTRDDataDCS.cxx:19
 AliTRDDataDCS.cxx:20
 AliTRDDataDCS.cxx:21
 AliTRDDataDCS.cxx:22
 AliTRDDataDCS.cxx:23
 AliTRDDataDCS.cxx:24
 AliTRDDataDCS.cxx:25
 AliTRDDataDCS.cxx:26
 AliTRDDataDCS.cxx:27
 AliTRDDataDCS.cxx:28
 AliTRDDataDCS.cxx:29
 AliTRDDataDCS.cxx:30
 AliTRDDataDCS.cxx:31
 AliTRDDataDCS.cxx:32
 AliTRDDataDCS.cxx:33
 AliTRDDataDCS.cxx:34
 AliTRDDataDCS.cxx:35
 AliTRDDataDCS.cxx:36
 AliTRDDataDCS.cxx:37
 AliTRDDataDCS.cxx:38
 AliTRDDataDCS.cxx:39
 AliTRDDataDCS.cxx:40
 AliTRDDataDCS.cxx:41
 AliTRDDataDCS.cxx:42
 AliTRDDataDCS.cxx:43
 AliTRDDataDCS.cxx:44
 AliTRDDataDCS.cxx:45
 AliTRDDataDCS.cxx:46
 AliTRDDataDCS.cxx:47
 AliTRDDataDCS.cxx:48
 AliTRDDataDCS.cxx:49
 AliTRDDataDCS.cxx:50
 AliTRDDataDCS.cxx:51
 AliTRDDataDCS.cxx:52
 AliTRDDataDCS.cxx:53
 AliTRDDataDCS.cxx:54
 AliTRDDataDCS.cxx:55
 AliTRDDataDCS.cxx:56
 AliTRDDataDCS.cxx:57
 AliTRDDataDCS.cxx:58
 AliTRDDataDCS.cxx:59
 AliTRDDataDCS.cxx:60
 AliTRDDataDCS.cxx:61
 AliTRDDataDCS.cxx:62
 AliTRDDataDCS.cxx:63
 AliTRDDataDCS.cxx:64
 AliTRDDataDCS.cxx:65
 AliTRDDataDCS.cxx:66
 AliTRDDataDCS.cxx:67
 AliTRDDataDCS.cxx:68
 AliTRDDataDCS.cxx:69
 AliTRDDataDCS.cxx:70
 AliTRDDataDCS.cxx:71
 AliTRDDataDCS.cxx:72
 AliTRDDataDCS.cxx:73
 AliTRDDataDCS.cxx:74
 AliTRDDataDCS.cxx:75
 AliTRDDataDCS.cxx:76
 AliTRDDataDCS.cxx:77
 AliTRDDataDCS.cxx:78
 AliTRDDataDCS.cxx:79
 AliTRDDataDCS.cxx:80
 AliTRDDataDCS.cxx:81
 AliTRDDataDCS.cxx:82
 AliTRDDataDCS.cxx:83
 AliTRDDataDCS.cxx:84
 AliTRDDataDCS.cxx:85
 AliTRDDataDCS.cxx:86
 AliTRDDataDCS.cxx:87
 AliTRDDataDCS.cxx:88
 AliTRDDataDCS.cxx:89
 AliTRDDataDCS.cxx:90
 AliTRDDataDCS.cxx:91
 AliTRDDataDCS.cxx:92
 AliTRDDataDCS.cxx:93
 AliTRDDataDCS.cxx:94
 AliTRDDataDCS.cxx:95
 AliTRDDataDCS.cxx:96
 AliTRDDataDCS.cxx:97
 AliTRDDataDCS.cxx:98
 AliTRDDataDCS.cxx:99
 AliTRDDataDCS.cxx:100
 AliTRDDataDCS.cxx:101
 AliTRDDataDCS.cxx:102
 AliTRDDataDCS.cxx:103
 AliTRDDataDCS.cxx:104
 AliTRDDataDCS.cxx:105
 AliTRDDataDCS.cxx:106
 AliTRDDataDCS.cxx:107
 AliTRDDataDCS.cxx:108
 AliTRDDataDCS.cxx:109
 AliTRDDataDCS.cxx:110
 AliTRDDataDCS.cxx:111
 AliTRDDataDCS.cxx:112
 AliTRDDataDCS.cxx:113
 AliTRDDataDCS.cxx:114
 AliTRDDataDCS.cxx:115
 AliTRDDataDCS.cxx:116
 AliTRDDataDCS.cxx:117
 AliTRDDataDCS.cxx:118
 AliTRDDataDCS.cxx:119
 AliTRDDataDCS.cxx:120
 AliTRDDataDCS.cxx:121
 AliTRDDataDCS.cxx:122
 AliTRDDataDCS.cxx:123
 AliTRDDataDCS.cxx:124
 AliTRDDataDCS.cxx:125
 AliTRDDataDCS.cxx:126
 AliTRDDataDCS.cxx:127
 AliTRDDataDCS.cxx:128
 AliTRDDataDCS.cxx:129
 AliTRDDataDCS.cxx:130
 AliTRDDataDCS.cxx:131
 AliTRDDataDCS.cxx:132
 AliTRDDataDCS.cxx:133
 AliTRDDataDCS.cxx:134
 AliTRDDataDCS.cxx:135
 AliTRDDataDCS.cxx:136
 AliTRDDataDCS.cxx:137
 AliTRDDataDCS.cxx:138
 AliTRDDataDCS.cxx:139
 AliTRDDataDCS.cxx:140
 AliTRDDataDCS.cxx:141
 AliTRDDataDCS.cxx:142
 AliTRDDataDCS.cxx:143
 AliTRDDataDCS.cxx:144
 AliTRDDataDCS.cxx:145
 AliTRDDataDCS.cxx:146
 AliTRDDataDCS.cxx:147
 AliTRDDataDCS.cxx:148
 AliTRDDataDCS.cxx:149
 AliTRDDataDCS.cxx:150
 AliTRDDataDCS.cxx:151
 AliTRDDataDCS.cxx:152
 AliTRDDataDCS.cxx:153
 AliTRDDataDCS.cxx:154
 AliTRDDataDCS.cxx:155
 AliTRDDataDCS.cxx:156
 AliTRDDataDCS.cxx:157
 AliTRDDataDCS.cxx:158
 AliTRDDataDCS.cxx:159
 AliTRDDataDCS.cxx:160
 AliTRDDataDCS.cxx:161
 AliTRDDataDCS.cxx:162
 AliTRDDataDCS.cxx:163
 AliTRDDataDCS.cxx:164
 AliTRDDataDCS.cxx:165
 AliTRDDataDCS.cxx:166
 AliTRDDataDCS.cxx:167
 AliTRDDataDCS.cxx:168
 AliTRDDataDCS.cxx:169
 AliTRDDataDCS.cxx:170
 AliTRDDataDCS.cxx:171
 AliTRDDataDCS.cxx:172
 AliTRDDataDCS.cxx:173
 AliTRDDataDCS.cxx:174
 AliTRDDataDCS.cxx:175
 AliTRDDataDCS.cxx:176
 AliTRDDataDCS.cxx:177
 AliTRDDataDCS.cxx:178
 AliTRDDataDCS.cxx:179
 AliTRDDataDCS.cxx:180
 AliTRDDataDCS.cxx:181
 AliTRDDataDCS.cxx:182
 AliTRDDataDCS.cxx:183
 AliTRDDataDCS.cxx:184
 AliTRDDataDCS.cxx:185
 AliTRDDataDCS.cxx:186
 AliTRDDataDCS.cxx:187
 AliTRDDataDCS.cxx:188
 AliTRDDataDCS.cxx:189
 AliTRDDataDCS.cxx:190
 AliTRDDataDCS.cxx:191
 AliTRDDataDCS.cxx:192
 AliTRDDataDCS.cxx:193
 AliTRDDataDCS.cxx:194
 AliTRDDataDCS.cxx:195
 AliTRDDataDCS.cxx:196
 AliTRDDataDCS.cxx:197
 AliTRDDataDCS.cxx:198
 AliTRDDataDCS.cxx:199
 AliTRDDataDCS.cxx:200
 AliTRDDataDCS.cxx:201
 AliTRDDataDCS.cxx:202
 AliTRDDataDCS.cxx:203
 AliTRDDataDCS.cxx:204
 AliTRDDataDCS.cxx:205
 AliTRDDataDCS.cxx:206
 AliTRDDataDCS.cxx:207
 AliTRDDataDCS.cxx:208
 AliTRDDataDCS.cxx:209
 AliTRDDataDCS.cxx:210
 AliTRDDataDCS.cxx:211
 AliTRDDataDCS.cxx:212
 AliTRDDataDCS.cxx:213
 AliTRDDataDCS.cxx:214
 AliTRDDataDCS.cxx:215
 AliTRDDataDCS.cxx:216
 AliTRDDataDCS.cxx:217
 AliTRDDataDCS.cxx:218
 AliTRDDataDCS.cxx:219
 AliTRDDataDCS.cxx:220
 AliTRDDataDCS.cxx:221
 AliTRDDataDCS.cxx:222
 AliTRDDataDCS.cxx:223
 AliTRDDataDCS.cxx:224
 AliTRDDataDCS.cxx:225
 AliTRDDataDCS.cxx:226
 AliTRDDataDCS.cxx:227
 AliTRDDataDCS.cxx:228
 AliTRDDataDCS.cxx:229
 AliTRDDataDCS.cxx:230
 AliTRDDataDCS.cxx:231
 AliTRDDataDCS.cxx:232
 AliTRDDataDCS.cxx:233
 AliTRDDataDCS.cxx:234
 AliTRDDataDCS.cxx:235
 AliTRDDataDCS.cxx:236
 AliTRDDataDCS.cxx:237
 AliTRDDataDCS.cxx:238
 AliTRDDataDCS.cxx:239
 AliTRDDataDCS.cxx:240
 AliTRDDataDCS.cxx:241
 AliTRDDataDCS.cxx:242
 AliTRDDataDCS.cxx:243
 AliTRDDataDCS.cxx:244
 AliTRDDataDCS.cxx:245
 AliTRDDataDCS.cxx:246
 AliTRDDataDCS.cxx:247
 AliTRDDataDCS.cxx:248
 AliTRDDataDCS.cxx:249
 AliTRDDataDCS.cxx:250
 AliTRDDataDCS.cxx:251
 AliTRDDataDCS.cxx:252
 AliTRDDataDCS.cxx:253
 AliTRDDataDCS.cxx:254
 AliTRDDataDCS.cxx:255
 AliTRDDataDCS.cxx:256
 AliTRDDataDCS.cxx:257
 AliTRDDataDCS.cxx:258
 AliTRDDataDCS.cxx:259
 AliTRDDataDCS.cxx:260
 AliTRDDataDCS.cxx:261
 AliTRDDataDCS.cxx:262
 AliTRDDataDCS.cxx:263
 AliTRDDataDCS.cxx:264
 AliTRDDataDCS.cxx:265
 AliTRDDataDCS.cxx:266
 AliTRDDataDCS.cxx:267
 AliTRDDataDCS.cxx:268
 AliTRDDataDCS.cxx:269
 AliTRDDataDCS.cxx:270
 AliTRDDataDCS.cxx:271
 AliTRDDataDCS.cxx:272
 AliTRDDataDCS.cxx:273
 AliTRDDataDCS.cxx:274
 AliTRDDataDCS.cxx:275
 AliTRDDataDCS.cxx:276
 AliTRDDataDCS.cxx:277
 AliTRDDataDCS.cxx:278
 AliTRDDataDCS.cxx:279
 AliTRDDataDCS.cxx:280
 AliTRDDataDCS.cxx:281
 AliTRDDataDCS.cxx:282
 AliTRDDataDCS.cxx:283
 AliTRDDataDCS.cxx:284
 AliTRDDataDCS.cxx:285
 AliTRDDataDCS.cxx:286
 AliTRDDataDCS.cxx:287
 AliTRDDataDCS.cxx:288
 AliTRDDataDCS.cxx:289
 AliTRDDataDCS.cxx:290
 AliTRDDataDCS.cxx:291
 AliTRDDataDCS.cxx:292
 AliTRDDataDCS.cxx:293
 AliTRDDataDCS.cxx:294
 AliTRDDataDCS.cxx:295
 AliTRDDataDCS.cxx:296
 AliTRDDataDCS.cxx:297
 AliTRDDataDCS.cxx:298
 AliTRDDataDCS.cxx:299
 AliTRDDataDCS.cxx:300
 AliTRDDataDCS.cxx:301
 AliTRDDataDCS.cxx:302
 AliTRDDataDCS.cxx:303
 AliTRDDataDCS.cxx:304
 AliTRDDataDCS.cxx:305
 AliTRDDataDCS.cxx:306
 AliTRDDataDCS.cxx:307
 AliTRDDataDCS.cxx:308
 AliTRDDataDCS.cxx:309
 AliTRDDataDCS.cxx:310
 AliTRDDataDCS.cxx:311
 AliTRDDataDCS.cxx:312
 AliTRDDataDCS.cxx:313
 AliTRDDataDCS.cxx:314
 AliTRDDataDCS.cxx:315
 AliTRDDataDCS.cxx:316
 AliTRDDataDCS.cxx:317
 AliTRDDataDCS.cxx:318
 AliTRDDataDCS.cxx:319
 AliTRDDataDCS.cxx:320
 AliTRDDataDCS.cxx:321
 AliTRDDataDCS.cxx:322
 AliTRDDataDCS.cxx:323
 AliTRDDataDCS.cxx:324
 AliTRDDataDCS.cxx:325
 AliTRDDataDCS.cxx:326
 AliTRDDataDCS.cxx:327
 AliTRDDataDCS.cxx:328
 AliTRDDataDCS.cxx:329
 AliTRDDataDCS.cxx:330
 AliTRDDataDCS.cxx:331
 AliTRDDataDCS.cxx:332
 AliTRDDataDCS.cxx:333
 AliTRDDataDCS.cxx:334
 AliTRDDataDCS.cxx:335
 AliTRDDataDCS.cxx:336
 AliTRDDataDCS.cxx:337
 AliTRDDataDCS.cxx:338
 AliTRDDataDCS.cxx:339
 AliTRDDataDCS.cxx:340
 AliTRDDataDCS.cxx:341
 AliTRDDataDCS.cxx:342
 AliTRDDataDCS.cxx:343
 AliTRDDataDCS.cxx:344
 AliTRDDataDCS.cxx:345
 AliTRDDataDCS.cxx:346
 AliTRDDataDCS.cxx:347
 AliTRDDataDCS.cxx:348
 AliTRDDataDCS.cxx:349
 AliTRDDataDCS.cxx:350
 AliTRDDataDCS.cxx:351
 AliTRDDataDCS.cxx:352
 AliTRDDataDCS.cxx:353
 AliTRDDataDCS.cxx:354
 AliTRDDataDCS.cxx:355
 AliTRDDataDCS.cxx:356
 AliTRDDataDCS.cxx:357
 AliTRDDataDCS.cxx:358
 AliTRDDataDCS.cxx:359
 AliTRDDataDCS.cxx:360
 AliTRDDataDCS.cxx:361
 AliTRDDataDCS.cxx:362
 AliTRDDataDCS.cxx:363
 AliTRDDataDCS.cxx:364
 AliTRDDataDCS.cxx:365
 AliTRDDataDCS.cxx:366
 AliTRDDataDCS.cxx:367
 AliTRDDataDCS.cxx:368
 AliTRDDataDCS.cxx:369
 AliTRDDataDCS.cxx:370
 AliTRDDataDCS.cxx:371
 AliTRDDataDCS.cxx:372
 AliTRDDataDCS.cxx:373
 AliTRDDataDCS.cxx:374
 AliTRDDataDCS.cxx:375
 AliTRDDataDCS.cxx:376
 AliTRDDataDCS.cxx:377
 AliTRDDataDCS.cxx:378
 AliTRDDataDCS.cxx:379
 AliTRDDataDCS.cxx:380
 AliTRDDataDCS.cxx:381
 AliTRDDataDCS.cxx:382
 AliTRDDataDCS.cxx:383
 AliTRDDataDCS.cxx:384
 AliTRDDataDCS.cxx:385
 AliTRDDataDCS.cxx:386
 AliTRDDataDCS.cxx:387
 AliTRDDataDCS.cxx:388
 AliTRDDataDCS.cxx:389
 AliTRDDataDCS.cxx:390
 AliTRDDataDCS.cxx:391
 AliTRDDataDCS.cxx:392
 AliTRDDataDCS.cxx:393
 AliTRDDataDCS.cxx:394
 AliTRDDataDCS.cxx:395
 AliTRDDataDCS.cxx:396
 AliTRDDataDCS.cxx:397
 AliTRDDataDCS.cxx:398
 AliTRDDataDCS.cxx:399
 AliTRDDataDCS.cxx:400
 AliTRDDataDCS.cxx:401
 AliTRDDataDCS.cxx:402
 AliTRDDataDCS.cxx:403
 AliTRDDataDCS.cxx:404
 AliTRDDataDCS.cxx:405
 AliTRDDataDCS.cxx:406
 AliTRDDataDCS.cxx:407
 AliTRDDataDCS.cxx:408
 AliTRDDataDCS.cxx:409
 AliTRDDataDCS.cxx:410
 AliTRDDataDCS.cxx:411
 AliTRDDataDCS.cxx:412
 AliTRDDataDCS.cxx:413
 AliTRDDataDCS.cxx:414
 AliTRDDataDCS.cxx:415
 AliTRDDataDCS.cxx:416
 AliTRDDataDCS.cxx:417
 AliTRDDataDCS.cxx:418
 AliTRDDataDCS.cxx:419
 AliTRDDataDCS.cxx:420
 AliTRDDataDCS.cxx:421
 AliTRDDataDCS.cxx:422
 AliTRDDataDCS.cxx:423
 AliTRDDataDCS.cxx:424
 AliTRDDataDCS.cxx:425
 AliTRDDataDCS.cxx:426
 AliTRDDataDCS.cxx:427
 AliTRDDataDCS.cxx:428
 AliTRDDataDCS.cxx:429
 AliTRDDataDCS.cxx:430
 AliTRDDataDCS.cxx:431
 AliTRDDataDCS.cxx:432
 AliTRDDataDCS.cxx:433
 AliTRDDataDCS.cxx:434
 AliTRDDataDCS.cxx:435
 AliTRDDataDCS.cxx:436
 AliTRDDataDCS.cxx:437
 AliTRDDataDCS.cxx:438
 AliTRDDataDCS.cxx:439
 AliTRDDataDCS.cxx:440
 AliTRDDataDCS.cxx:441
 AliTRDDataDCS.cxx:442
 AliTRDDataDCS.cxx:443
 AliTRDDataDCS.cxx:444
 AliTRDDataDCS.cxx:445
 AliTRDDataDCS.cxx:446
 AliTRDDataDCS.cxx:447
 AliTRDDataDCS.cxx:448
 AliTRDDataDCS.cxx:449
 AliTRDDataDCS.cxx:450
 AliTRDDataDCS.cxx:451
 AliTRDDataDCS.cxx:452
 AliTRDDataDCS.cxx:453
 AliTRDDataDCS.cxx:454
 AliTRDDataDCS.cxx:455
 AliTRDDataDCS.cxx:456
 AliTRDDataDCS.cxx:457
 AliTRDDataDCS.cxx:458
 AliTRDDataDCS.cxx:459
 AliTRDDataDCS.cxx:460
 AliTRDDataDCS.cxx:461
 AliTRDDataDCS.cxx:462
 AliTRDDataDCS.cxx:463
 AliTRDDataDCS.cxx:464
 AliTRDDataDCS.cxx:465
 AliTRDDataDCS.cxx:466
 AliTRDDataDCS.cxx:467
 AliTRDDataDCS.cxx:468
 AliTRDDataDCS.cxx:469
 AliTRDDataDCS.cxx:470
 AliTRDDataDCS.cxx:471
 AliTRDDataDCS.cxx:472
 AliTRDDataDCS.cxx:473
 AliTRDDataDCS.cxx:474
 AliTRDDataDCS.cxx:475
 AliTRDDataDCS.cxx:476
 AliTRDDataDCS.cxx:477
 AliTRDDataDCS.cxx:478
 AliTRDDataDCS.cxx:479
 AliTRDDataDCS.cxx:480
 AliTRDDataDCS.cxx:481
 AliTRDDataDCS.cxx:482
 AliTRDDataDCS.cxx:483
 AliTRDDataDCS.cxx:484