ROOT logo
/**************************************************************************
 * Copyright(c) 2006-07, 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.                  *
 **************************************************************************/


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Class describing the Vdrift dependencies on E,T,P and GasComposition      //
// Authors: Stefan Rossegger, Haavard Helstrup                               //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "TSystem.h"
#include "TObject.h"
#include "TMath.h"
#include "AliTPCTempMap.h"
#include "AliTPCSensorTempArray.h"

#include "AliTPCCalibVdrift.h"

ClassImp(AliTPCCalibVdrift)

namespace paramDefinitions {
    
  // Standard Conditions used as origin in the Magbolz simulations
  // Dimesions E [kV/cm], T [K], P [TORR], Cco2 [%], Cn2 [%]
  const Double_t kstdE = 400;
  const Double_t kstdT = 293;
  const Double_t kstdP = 744;
  const Double_t kstdCco2 = 9.52;
  const Double_t kstdCn2 = 4.76;
  // Driftvelocity at Standardcontitions [cm/microSec]
  const Double_t kstdVdrift = 2.57563;
  
  // Vdrift dependencies simulated with Magbolz [%(Vdrift)/[unit]]
  const Double_t kdvdE = 0.24;
  const Double_t kdvdT = 0.30;
  const Double_t kdvdP = -0.13;
  const Double_t kdvdCco2 = -6.60;
  const Double_t kdvdCn2 = -1.74;
  // 2nd order effect Taylor expansion
  const Double_t kdvdE2nd = -0.00107628;
  const Double_t kdvdT2nd = -0.00134441;
  const Double_t kdvdP2nd = 0.000135325;
  const Double_t kdvdCco22nd = 0.328761;
  const Double_t kdvdCn22nd = 0.151605;

  const Double_t torrTokPascal = 0.750061683;
 
  Double_t krho = 0.934246; // density of TPC-Gas [kg/m^3]
                            // method of calculation: weighted average
  Double_t kg = 9.81;

  //
  // Nominal value obtained from 2008 data
  //
  const Double_t kKelvin       =273.15; // degree to Kelvin
  const Double_t kNominalTemp  =19.03;  // mean between A and C side  in degree
  const Double_t kNominalPress =973.9;  // pressure sensor - in mbar- 
                                        // calibDB->GetPressure(tstamp,irun,1)
}


using namespace paramDefinitions;

AliTPCCalibVdrift::AliTPCCalibVdrift():
  TNamed(),
  fSensTemp(0),
  fSensPres(0),
  fTempMap(0),
  fSensGasComp(0),
  fNominalTemp(0),    // nominal temperature in Kelvin
  fNominalPress(0)    // nominal pressure    in mbar 
{
  //
  //  default constructor
  //
}

AliTPCCalibVdrift::AliTPCCalibVdrift(AliTPCSensorTempArray *SensTemp, AliDCSSensor *SensPres, TObject *SensGasComp):
  TNamed(),
  fSensTemp(0),
  fSensPres(0),
  fTempMap(0),
  fSensGasComp(0),
  fNominalTemp(0),    // nominal temperature in Kelvin
  fNominalPress(0)    // nominal pressure    in mbar 
{
  //
  //  Standard constructor
  //

  fSensTemp = SensTemp;
  fSensPres = SensPres;
  if (fSensTemp) {
    fTempMap  = new AliTPCTempMap(fSensTemp);
  } else {
    fTempMap = 0;
  }
  fSensGasComp = SensGasComp;
  fNominalTemp = kNominalTemp;
  fNominalPress= kNominalPress;
}

//_____________________________________________________________________________
AliTPCCalibVdrift::AliTPCCalibVdrift(const AliTPCCalibVdrift& source) :
  TNamed(source),
  fSensTemp(source.fSensTemp),
  fSensPres(source.fSensPres),
  fTempMap(source.fTempMap),
  fSensGasComp(source.fSensGasComp),
  fNominalTemp(source.fNominalTemp),    // nominal temperature in Kelvin
  fNominalPress(source.fNominalPress)    // nominal pressure    in mbar 

{
  //
  //  Copy constructor
  //
}

//_____________________________________________________________________________
AliTPCCalibVdrift& AliTPCCalibVdrift::operator=(const AliTPCCalibVdrift& source){
  //
  // assignment operator
  //
  if (&source == this) return *this;
  new (this) AliTPCCalibVdrift(source);
  
  return *this;  
}

//_____________________________________________________________________________
AliTPCCalibVdrift::~AliTPCCalibVdrift()
{
  //
  // AliTPCCalibVdrift destructor
  // 

}

//_____________________________________________________________________________
Double_t AliTPCCalibVdrift::GetPTRelative(UInt_t absTimeSec, Int_t side){
  //
  // Get Relative difference of p/T for given time stamp
  // absTimeSec - absolute time in secounds
  // side: 0 - A side |  1 - C side
  //

  TTimeStamp tstamp(absTimeSec);

  if (!fSensPres||!fSensTemp) return 0;
  Double_t pressure = fSensPres->GetValue(tstamp);
  TLinearFitter * fitter = fTempMap->GetLinearFitter(3,side,tstamp);
  if (!fitter) return 0;
  TVectorD vec;
  fitter->GetParameters(vec);
  delete fitter;
  if (vec[0]<10) return 0;
  //
  //
  //
  Double_t  temperature = vec[0];  //vec[0] temeperature 
  Double_t  tpnom       = (fNominalTemp+kKelvin)/(fNominalPress);
  Double_t  tpmeasured  = (temperature+kKelvin)/(pressure);
  Double_t  result      = (tpmeasured-tpnom)/tpnom;

  return result;

}


//_____________________________________________________________________________
Double_t AliTPCCalibVdrift::VdriftLinearHyperplaneApprox(Double_t dE, Double_t dT, Double_t dP, Double_t dCco2, Double_t dCn2) 
{
  //
  // Returns approximated value for the driftvelocity change (in percent)
  // based on a Hyperplane approximation (~ Taylorapproximation of 2nd order)
  //

  Double_t termE   = dE*kdvdE + TMath::Power(dE,2)*kdvdE2nd;
  Double_t termT   = dT*kdvdT + TMath::Power(dT,2)*kdvdT2nd;
  Double_t termP   = dP*kdvdP + TMath::Power(dP,2)*kdvdP2nd;
  Double_t termCo2 = dCco2*kdvdCco2 + TMath::Power(dCco2,2)*kdvdCco22nd;
  Double_t termN2  = dCn2*kdvdCn2 + TMath::Power(dCn2,2)*kdvdCn22nd;

  Double_t vdChange = termE+termT+termP+termCo2+termN2;

  return vdChange;

}

//_____________________________________________________________________________

Double_t AliTPCCalibVdrift::GetVdriftNominal() 
{
  // returns nominal Driftvelocity at StandardConditions
  return kstdVdrift;
}

//_____________________________________________________________________________

Double_t AliTPCCalibVdrift::GetVdriftChange(Double_t x, Double_t y, Double_t z, UInt_t absTimeSec)
{
  // 
  // Calculates Vdrift change in percent of Vdrift_nominal 
  // (under nominal conditions) at x,y,z at absolute time (in sec)
  //

  TTimeStamp tstamp(absTimeSec);

  // Get E-field Value --------------------------
  Double_t dE = 0.23; // StandardOffset if CE is set to 100kV

  // Get Temperature Value ----------------------  
  AliTPCTempMap *tempMap = fTempMap;
  Double_t dT = 0;
  if (fTempMap) {
    Double_t tempValue = tempMap->GetTemperature(x, y, z, tstamp);
    dT = tempValue + 273.15 - kstdT;
  }
    
  // Get Main Pressure Value ---------------------
  Double_t dP = 0;
  if (fSensPres==0) {
    // Just the pressure drop over the TPC height
    dP = - krho*kg*y/10000*torrTokPascal;
  } else {
    // pressure sensors plus additional 0.4mbar overpressure within the TPC
    Double_t pressure = fSensPres->GetValue(tstamp) + 0.4; 
    // calculate pressure drop according to height in TPC and transform to
    // TORR (with simplified hydrostatic formula)
    dP = (pressure - krho*kg*y/10000) * torrTokPascal - kstdP;
  }

  // Get GasComposition
  // FIXME: include Goofy values for CO2 and N2 conzentration out of OCDB
  //        Goofy not yet reliable ... 
  Double_t dCco2 = 0;
  Double_t dCn2 = 0;

  // Calculate change in drift velocity in terms of Vdrift_nominal
  Double_t vdChange = VdriftLinearHyperplaneApprox(dE, dT, dP, dCco2, dCn2); 
  
  return vdChange;
    
}

//_____________________________________________________________________________

Double_t AliTPCCalibVdrift::GetMeanZVdriftChange(Double_t x, Double_t y, UInt_t absTimeSec)
{
  // 
  // Calculates Meanvalue in z direction of Vdrift change in percent 
  // of Vdrift_nominal (under standard conditions) at position x,y,absTimeSec
  // with help of 'nPopints' base points
  //
  
  Int_t nPoints = 5;
 
  Double_t vdriftSum = 0;

  for (Int_t i = 0; i<nPoints; i++) {
    Double_t z = (Double_t)i/(nPoints-1)*500-250;
    vdriftSum = vdriftSum + GetVdriftChange(x, y, z, absTimeSec);
  }
  
  Double_t meanZVdrift = vdriftSum/nPoints;

  return meanZVdrift;

}

//_____________________________________________________________________________

TGraph *AliTPCCalibVdrift::MakeGraphMeanZVdriftChange(Double_t x, Double_t y, Int_t nPoints)
{
  //
  // Make graph from start time to end time of Mean Drift Velocity in 
  // Z direction at given x and y position
  //

  UInt_t startTime = fSensTemp->GetStartTime();
  UInt_t endTime = fSensTemp->GetEndTime();
  
  UInt_t stepTime = (endTime - startTime)/nPoints;


  Double_t *xvec = new Double_t[nPoints];
  Double_t *yvec = new Double_t[nPoints];

  for (Int_t ip=0; ip<nPoints; ip++) {
    xvec[ip] = startTime+ip*stepTime;
    yvec[ip] = GetMeanZVdriftChange(x, y, fSensTemp->GetStartTime().GetSec() + ip*stepTime);
  }

  TGraph *graph = new TGraph(nPoints,xvec,yvec);

  delete [] xvec;
  delete [] yvec;

  graph->GetXaxis()->SetTimeDisplay(1);
  graph->GetXaxis()->SetLabelOffset(0.02);
  graph->GetXaxis()->SetTimeFormat("#splitline{%d/%m}{%H:%M}");

  return graph;
}
 AliTPCCalibVdrift.cxx:1
 AliTPCCalibVdrift.cxx:2
 AliTPCCalibVdrift.cxx:3
 AliTPCCalibVdrift.cxx:4
 AliTPCCalibVdrift.cxx:5
 AliTPCCalibVdrift.cxx:6
 AliTPCCalibVdrift.cxx:7
 AliTPCCalibVdrift.cxx:8
 AliTPCCalibVdrift.cxx:9
 AliTPCCalibVdrift.cxx:10
 AliTPCCalibVdrift.cxx:11
 AliTPCCalibVdrift.cxx:12
 AliTPCCalibVdrift.cxx:13
 AliTPCCalibVdrift.cxx:14
 AliTPCCalibVdrift.cxx:15
 AliTPCCalibVdrift.cxx:16
 AliTPCCalibVdrift.cxx:17
 AliTPCCalibVdrift.cxx:18
 AliTPCCalibVdrift.cxx:19
 AliTPCCalibVdrift.cxx:20
 AliTPCCalibVdrift.cxx:21
 AliTPCCalibVdrift.cxx:22
 AliTPCCalibVdrift.cxx:23
 AliTPCCalibVdrift.cxx:24
 AliTPCCalibVdrift.cxx:25
 AliTPCCalibVdrift.cxx:26
 AliTPCCalibVdrift.cxx:27
 AliTPCCalibVdrift.cxx:28
 AliTPCCalibVdrift.cxx:29
 AliTPCCalibVdrift.cxx:30
 AliTPCCalibVdrift.cxx:31
 AliTPCCalibVdrift.cxx:32
 AliTPCCalibVdrift.cxx:33
 AliTPCCalibVdrift.cxx:34
 AliTPCCalibVdrift.cxx:35
 AliTPCCalibVdrift.cxx:36
 AliTPCCalibVdrift.cxx:37
 AliTPCCalibVdrift.cxx:38
 AliTPCCalibVdrift.cxx:39
 AliTPCCalibVdrift.cxx:40
 AliTPCCalibVdrift.cxx:41
 AliTPCCalibVdrift.cxx:42
 AliTPCCalibVdrift.cxx:43
 AliTPCCalibVdrift.cxx:44
 AliTPCCalibVdrift.cxx:45
 AliTPCCalibVdrift.cxx:46
 AliTPCCalibVdrift.cxx:47
 AliTPCCalibVdrift.cxx:48
 AliTPCCalibVdrift.cxx:49
 AliTPCCalibVdrift.cxx:50
 AliTPCCalibVdrift.cxx:51
 AliTPCCalibVdrift.cxx:52
 AliTPCCalibVdrift.cxx:53
 AliTPCCalibVdrift.cxx:54
 AliTPCCalibVdrift.cxx:55
 AliTPCCalibVdrift.cxx:56
 AliTPCCalibVdrift.cxx:57
 AliTPCCalibVdrift.cxx:58
 AliTPCCalibVdrift.cxx:59
 AliTPCCalibVdrift.cxx:60
 AliTPCCalibVdrift.cxx:61
 AliTPCCalibVdrift.cxx:62
 AliTPCCalibVdrift.cxx:63
 AliTPCCalibVdrift.cxx:64
 AliTPCCalibVdrift.cxx:65
 AliTPCCalibVdrift.cxx:66
 AliTPCCalibVdrift.cxx:67
 AliTPCCalibVdrift.cxx:68
 AliTPCCalibVdrift.cxx:69
 AliTPCCalibVdrift.cxx:70
 AliTPCCalibVdrift.cxx:71
 AliTPCCalibVdrift.cxx:72
 AliTPCCalibVdrift.cxx:73
 AliTPCCalibVdrift.cxx:74
 AliTPCCalibVdrift.cxx:75
 AliTPCCalibVdrift.cxx:76
 AliTPCCalibVdrift.cxx:77
 AliTPCCalibVdrift.cxx:78
 AliTPCCalibVdrift.cxx:79
 AliTPCCalibVdrift.cxx:80
 AliTPCCalibVdrift.cxx:81
 AliTPCCalibVdrift.cxx:82
 AliTPCCalibVdrift.cxx:83
 AliTPCCalibVdrift.cxx:84
 AliTPCCalibVdrift.cxx:85
 AliTPCCalibVdrift.cxx:86
 AliTPCCalibVdrift.cxx:87
 AliTPCCalibVdrift.cxx:88
 AliTPCCalibVdrift.cxx:89
 AliTPCCalibVdrift.cxx:90
 AliTPCCalibVdrift.cxx:91
 AliTPCCalibVdrift.cxx:92
 AliTPCCalibVdrift.cxx:93
 AliTPCCalibVdrift.cxx:94
 AliTPCCalibVdrift.cxx:95
 AliTPCCalibVdrift.cxx:96
 AliTPCCalibVdrift.cxx:97
 AliTPCCalibVdrift.cxx:98
 AliTPCCalibVdrift.cxx:99
 AliTPCCalibVdrift.cxx:100
 AliTPCCalibVdrift.cxx:101
 AliTPCCalibVdrift.cxx:102
 AliTPCCalibVdrift.cxx:103
 AliTPCCalibVdrift.cxx:104
 AliTPCCalibVdrift.cxx:105
 AliTPCCalibVdrift.cxx:106
 AliTPCCalibVdrift.cxx:107
 AliTPCCalibVdrift.cxx:108
 AliTPCCalibVdrift.cxx:109
 AliTPCCalibVdrift.cxx:110
 AliTPCCalibVdrift.cxx:111
 AliTPCCalibVdrift.cxx:112
 AliTPCCalibVdrift.cxx:113
 AliTPCCalibVdrift.cxx:114
 AliTPCCalibVdrift.cxx:115
 AliTPCCalibVdrift.cxx:116
 AliTPCCalibVdrift.cxx:117
 AliTPCCalibVdrift.cxx:118
 AliTPCCalibVdrift.cxx:119
 AliTPCCalibVdrift.cxx:120
 AliTPCCalibVdrift.cxx:121
 AliTPCCalibVdrift.cxx:122
 AliTPCCalibVdrift.cxx:123
 AliTPCCalibVdrift.cxx:124
 AliTPCCalibVdrift.cxx:125
 AliTPCCalibVdrift.cxx:126
 AliTPCCalibVdrift.cxx:127
 AliTPCCalibVdrift.cxx:128
 AliTPCCalibVdrift.cxx:129
 AliTPCCalibVdrift.cxx:130
 AliTPCCalibVdrift.cxx:131
 AliTPCCalibVdrift.cxx:132
 AliTPCCalibVdrift.cxx:133
 AliTPCCalibVdrift.cxx:134
 AliTPCCalibVdrift.cxx:135
 AliTPCCalibVdrift.cxx:136
 AliTPCCalibVdrift.cxx:137
 AliTPCCalibVdrift.cxx:138
 AliTPCCalibVdrift.cxx:139
 AliTPCCalibVdrift.cxx:140
 AliTPCCalibVdrift.cxx:141
 AliTPCCalibVdrift.cxx:142
 AliTPCCalibVdrift.cxx:143
 AliTPCCalibVdrift.cxx:144
 AliTPCCalibVdrift.cxx:145
 AliTPCCalibVdrift.cxx:146
 AliTPCCalibVdrift.cxx:147
 AliTPCCalibVdrift.cxx:148
 AliTPCCalibVdrift.cxx:149
 AliTPCCalibVdrift.cxx:150
 AliTPCCalibVdrift.cxx:151
 AliTPCCalibVdrift.cxx:152
 AliTPCCalibVdrift.cxx:153
 AliTPCCalibVdrift.cxx:154
 AliTPCCalibVdrift.cxx:155
 AliTPCCalibVdrift.cxx:156
 AliTPCCalibVdrift.cxx:157
 AliTPCCalibVdrift.cxx:158
 AliTPCCalibVdrift.cxx:159
 AliTPCCalibVdrift.cxx:160
 AliTPCCalibVdrift.cxx:161
 AliTPCCalibVdrift.cxx:162
 AliTPCCalibVdrift.cxx:163
 AliTPCCalibVdrift.cxx:164
 AliTPCCalibVdrift.cxx:165
 AliTPCCalibVdrift.cxx:166
 AliTPCCalibVdrift.cxx:167
 AliTPCCalibVdrift.cxx:168
 AliTPCCalibVdrift.cxx:169
 AliTPCCalibVdrift.cxx:170
 AliTPCCalibVdrift.cxx:171
 AliTPCCalibVdrift.cxx:172
 AliTPCCalibVdrift.cxx:173
 AliTPCCalibVdrift.cxx:174
 AliTPCCalibVdrift.cxx:175
 AliTPCCalibVdrift.cxx:176
 AliTPCCalibVdrift.cxx:177
 AliTPCCalibVdrift.cxx:178
 AliTPCCalibVdrift.cxx:179
 AliTPCCalibVdrift.cxx:180
 AliTPCCalibVdrift.cxx:181
 AliTPCCalibVdrift.cxx:182
 AliTPCCalibVdrift.cxx:183
 AliTPCCalibVdrift.cxx:184
 AliTPCCalibVdrift.cxx:185
 AliTPCCalibVdrift.cxx:186
 AliTPCCalibVdrift.cxx:187
 AliTPCCalibVdrift.cxx:188
 AliTPCCalibVdrift.cxx:189
 AliTPCCalibVdrift.cxx:190
 AliTPCCalibVdrift.cxx:191
 AliTPCCalibVdrift.cxx:192
 AliTPCCalibVdrift.cxx:193
 AliTPCCalibVdrift.cxx:194
 AliTPCCalibVdrift.cxx:195
 AliTPCCalibVdrift.cxx:196
 AliTPCCalibVdrift.cxx:197
 AliTPCCalibVdrift.cxx:198
 AliTPCCalibVdrift.cxx:199
 AliTPCCalibVdrift.cxx:200
 AliTPCCalibVdrift.cxx:201
 AliTPCCalibVdrift.cxx:202
 AliTPCCalibVdrift.cxx:203
 AliTPCCalibVdrift.cxx:204
 AliTPCCalibVdrift.cxx:205
 AliTPCCalibVdrift.cxx:206
 AliTPCCalibVdrift.cxx:207
 AliTPCCalibVdrift.cxx:208
 AliTPCCalibVdrift.cxx:209
 AliTPCCalibVdrift.cxx:210
 AliTPCCalibVdrift.cxx:211
 AliTPCCalibVdrift.cxx:212
 AliTPCCalibVdrift.cxx:213
 AliTPCCalibVdrift.cxx:214
 AliTPCCalibVdrift.cxx:215
 AliTPCCalibVdrift.cxx:216
 AliTPCCalibVdrift.cxx:217
 AliTPCCalibVdrift.cxx:218
 AliTPCCalibVdrift.cxx:219
 AliTPCCalibVdrift.cxx:220
 AliTPCCalibVdrift.cxx:221
 AliTPCCalibVdrift.cxx:222
 AliTPCCalibVdrift.cxx:223
 AliTPCCalibVdrift.cxx:224
 AliTPCCalibVdrift.cxx:225
 AliTPCCalibVdrift.cxx:226
 AliTPCCalibVdrift.cxx:227
 AliTPCCalibVdrift.cxx:228
 AliTPCCalibVdrift.cxx:229
 AliTPCCalibVdrift.cxx:230
 AliTPCCalibVdrift.cxx:231
 AliTPCCalibVdrift.cxx:232
 AliTPCCalibVdrift.cxx:233
 AliTPCCalibVdrift.cxx:234
 AliTPCCalibVdrift.cxx:235
 AliTPCCalibVdrift.cxx:236
 AliTPCCalibVdrift.cxx:237
 AliTPCCalibVdrift.cxx:238
 AliTPCCalibVdrift.cxx:239
 AliTPCCalibVdrift.cxx:240
 AliTPCCalibVdrift.cxx:241
 AliTPCCalibVdrift.cxx:242
 AliTPCCalibVdrift.cxx:243
 AliTPCCalibVdrift.cxx:244
 AliTPCCalibVdrift.cxx:245
 AliTPCCalibVdrift.cxx:246
 AliTPCCalibVdrift.cxx:247
 AliTPCCalibVdrift.cxx:248
 AliTPCCalibVdrift.cxx:249
 AliTPCCalibVdrift.cxx:250
 AliTPCCalibVdrift.cxx:251
 AliTPCCalibVdrift.cxx:252
 AliTPCCalibVdrift.cxx:253
 AliTPCCalibVdrift.cxx:254
 AliTPCCalibVdrift.cxx:255
 AliTPCCalibVdrift.cxx:256
 AliTPCCalibVdrift.cxx:257
 AliTPCCalibVdrift.cxx:258
 AliTPCCalibVdrift.cxx:259
 AliTPCCalibVdrift.cxx:260
 AliTPCCalibVdrift.cxx:261
 AliTPCCalibVdrift.cxx:262
 AliTPCCalibVdrift.cxx:263
 AliTPCCalibVdrift.cxx:264
 AliTPCCalibVdrift.cxx:265
 AliTPCCalibVdrift.cxx:266
 AliTPCCalibVdrift.cxx:267
 AliTPCCalibVdrift.cxx:268
 AliTPCCalibVdrift.cxx:269
 AliTPCCalibVdrift.cxx:270
 AliTPCCalibVdrift.cxx:271
 AliTPCCalibVdrift.cxx:272
 AliTPCCalibVdrift.cxx:273
 AliTPCCalibVdrift.cxx:274
 AliTPCCalibVdrift.cxx:275
 AliTPCCalibVdrift.cxx:276
 AliTPCCalibVdrift.cxx:277
 AliTPCCalibVdrift.cxx:278
 AliTPCCalibVdrift.cxx:279
 AliTPCCalibVdrift.cxx:280
 AliTPCCalibVdrift.cxx:281
 AliTPCCalibVdrift.cxx:282
 AliTPCCalibVdrift.cxx:283
 AliTPCCalibVdrift.cxx:284
 AliTPCCalibVdrift.cxx:285
 AliTPCCalibVdrift.cxx:286
 AliTPCCalibVdrift.cxx:287
 AliTPCCalibVdrift.cxx:288
 AliTPCCalibVdrift.cxx:289
 AliTPCCalibVdrift.cxx:290
 AliTPCCalibVdrift.cxx:291
 AliTPCCalibVdrift.cxx:292
 AliTPCCalibVdrift.cxx:293
 AliTPCCalibVdrift.cxx:294
 AliTPCCalibVdrift.cxx:295
 AliTPCCalibVdrift.cxx:296
 AliTPCCalibVdrift.cxx:297
 AliTPCCalibVdrift.cxx:298
 AliTPCCalibVdrift.cxx:299
 AliTPCCalibVdrift.cxx:300
 AliTPCCalibVdrift.cxx:301
 AliTPCCalibVdrift.cxx:302
 AliTPCCalibVdrift.cxx:303
 AliTPCCalibVdrift.cxx:304
 AliTPCCalibVdrift.cxx:305
 AliTPCCalibVdrift.cxx:306
 AliTPCCalibVdrift.cxx:307
 AliTPCCalibVdrift.cxx:308
 AliTPCCalibVdrift.cxx:309
 AliTPCCalibVdrift.cxx:310
 AliTPCCalibVdrift.cxx:311
 AliTPCCalibVdrift.cxx:312
 AliTPCCalibVdrift.cxx:313
 AliTPCCalibVdrift.cxx:314
 AliTPCCalibVdrift.cxx:315
 AliTPCCalibVdrift.cxx:316
 AliTPCCalibVdrift.cxx:317