ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, 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$ */

///////////////////////////////////////////////////////////////////
// Implementation of the class containing SDD DCS data           //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//         V. Pospisil, CTU Praguem gdermog@seznam.cz            //
///////////////////////////////////////////////////////////////////

#include "AliITSDCSDataSDD.h"
#include "AliLog.h"

#define AUTORESIZE 50

ClassImp(AliITSDCSDataSDD)

const Float_t AliITSDCSDataSDD::fgkTPrec = 100.0;
const Float_t AliITSDCSDataSDD::fgkMVPrec = 1000.0;

//---------------------------------------------------------------------------
AliITSDCSDataSDD::AliITSDCSDataSDD(): TObject(),
fTempLeft(0),
fTempLeftTimeStamp(0),
fTempLeftMaxPoints(0),
fTempLeftSetPoints(0),
fTempRight(0),
fTempRightTimeStamp(0),
fTempRightMaxPoints(0),
fTempRightSetPoints(0),
fHV(0),
fHVTimeStamp(0),
fHVMaxPoints(0),
fHVSetPoints(0),
fMV(0),
fMVTimeStamp(0),
fMVMaxPoints(0),
fMVSetPoints(0),
fStatus(0),
fStatusTimeStamp(0),
fStatusMaxPoints(0),
fStatusSetPoints(0)
{
// default constructor
} /*AliITSDCSDataSDD::AliITSDCSDataSDD*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetNPointsTempLeft( Int_t npts )
{
  // dimension arrays with left side temperatures
  //

  if( npts < fTempLeftSetPoints)
  {                     // Cannot resize arrays - some elements would be lost
    AliWarning("Attemp to reduce size of full array (SDD DCS _TEMP_L)"); 
    return;
  } /*if*/

  fTempLeft.Set( npts );
  fTempLeftTimeStamp.Set( npts );
                        // Both temperature and tme stamp arrays are resized

  fTempLeftMaxPoints = npts;
                        // New size is stored
} /*AliITSDCSDataSDD::SetNPointsTempLeft*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetNPointsTempRight( Int_t npts )
{
  // dimension arrays with right side temperatures
  //

  if( npts < fTempRightSetPoints)
  {                     // Cannot resize arrays - some elements would be lost
    AliWarning("Attemp to reduce size of full array (SDD DCS _TEMP_R)");
    return;
  } /*if*/

  fTempRight.Set( npts );
  fTempRightTimeStamp.Set( npts );
                        // Both temperature and tme stamp arrays are resized

  fTempRightMaxPoints = npts;
                        // New size is stored
} /*AliITSDCSDataSDD::SetNPointsTempRight*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetNPointsHV( Int_t npts )
{
  // dimension arrays with HV values
  //

  if( npts < fHVSetPoints)
  {                     // Cannot resize arrays - some elements would be lost
    AliWarning("Attemp to reduce size of full array (SDD DCS _HV)");
    return;
  } /*if*/

  fHV.Set( npts );
  fHVTimeStamp.Set( npts );
                        // Both temperature and tme stamp arrays are resized

  fHVMaxPoints = npts;  // New size is stored

}/*AliITSDCSDataSDD::SetNPointsHV*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetNPointsMV( Int_t npts )
{
  // dimension arrays with   MV values
  //

  if( npts < fMVSetPoints)
  {                     // Cannot resize arrays - some elements would be lost
    AliWarning("Attemp to reduce size of full array (SDD DCS _MV)");
    return;
  } /*if*/

  fMV.Set( npts );
  fMVTimeStamp.Set( npts );
                        // Both temperature and tme stamp arrays are resized

  fMVMaxPoints = npts;  // New size is stored 

} /*AliITSDCSDataSDD::SetNPointsMV*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetNPointsStatus( Int_t npts )
{
  // dimension arrays withn DCS channel status
  //

  if( npts < fStatusSetPoints)
  {                     // Cannot resize arrays - some elements would be lost
    AliWarning("Attemp to reduce size of full array (SDD DCS Status)");
    return;
  } /*if*/

  fStatus.Set( npts );
  fStatusTimeStamp.Set( npts );
                        // Both temperature and tme stamp arrays are resized

  fStatusMaxPoints = npts;
                        // New size is stored 

} /*AliITSDCSDataSDD::SetNPointsMV*/

//---------------------------------------------------------------------------
void AliITSDCSDataSDD::SetValueTempLeft(Int_t time, Float_t temperature )
{
  // insert a value for left temperature data point
  //

   if( fTempLeftMaxPoints == fTempLeftSetPoints )
    SetNPointsTempLeft( fTempLeftMaxPoints + AUTORESIZE );
                        // Enlarges arrays if necessary

   Int_t i =  FindIndex( time, fTempLeftTimeStamp, fTempLeftSetPoints );
                        // Finds place where the new value have to be inserted

   if( i < 0 )
    i = 0;              // New value have to be inserted before the first one in the array
   else
    i++;                // New value will be put somewhere in the middle of the array
                        //  or at the end

   if( i < fTempLeftSetPoints )
   {
      Short_t *fromPtrF = fTempLeft.GetArray() + i;
                       // Sets pointer to cell which have to be filled by new value
      Short_t *toPtrF = fromPtrF + 1;
                       // Sets pointer to cell where the array content have to be shifted 

      memmove( toPtrF, fromPtrF, (fTempLeftSetPoints - i)*sizeof(Short_t) );
                       // Shifts array content. Now there is vacant place for new value to be inserted

      Int_t *fromPtrI = fTempLeftTimeStamp.GetArray() + i;
      Int_t *toPtrI = fromPtrI + 1;
      memmove( toPtrI, fromPtrI, (fTempLeftSetPoints - i)*sizeof(Int_t) );
                       // Do the same for time stamp array
   } /*if*/

   UShort_t val = (UShort_t)( temperature * fgkTPrec );
                       // Float value of temperature is stored as UShort_t with given precision

   fTempLeft.AddAt( (Short_t)val, i );
   fTempLeftTimeStamp.AddAt( time, i );
   fTempLeftSetPoints++;
                       // New values are inserted
} /*AliITSDCSDataSDD::SetValueTempLeft*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetValueTempRight(Int_t time, Float_t temperature )
{
  // insert a value for right temperature data point
  //

   if( fTempRightMaxPoints == fTempRightSetPoints )
    SetNPointsTempRight( fTempRightMaxPoints + AUTORESIZE );
                        // Enlarges arrays if necessary

   Int_t i =  FindIndex( time, fTempRightTimeStamp, fTempRightSetPoints );
                        // Finds place where the new value have to be inserted

   if( i < 0 )
    i = 0;              // New value have to be inserted before the first one in the array
   else
    i++;                // New value will be put somewhere in the middle of the array
                        //  or at the end

   if( i < fTempRightSetPoints )
   {                    // Some values have to be moved
      Short_t *fromPtrF = fTempRight.GetArray() + i;
                       // Sets pointer to cell which have to be filled by new value
      Short_t *toPtrF = fromPtrF + 1;
                       // Sets pointer to cell where the array content have to be shifted 

      memmove( toPtrF, fromPtrF, (fTempRightSetPoints - i)*sizeof(Short_t) );
                       // Shifts array content. Now there is vacant place for new value to be inserted

      Int_t *fromPtrI = fTempRightTimeStamp.GetArray() + i;
      Int_t *toPtrI = fromPtrI + 1;
      memmove( toPtrI, fromPtrI, (fTempRightSetPoints - i)*sizeof(Int_t) );
                       // Do the same for time stamp array
   } /*if*/

   UShort_t val = (UShort_t)( temperature * fgkTPrec );
                       // Float value of temperature is stored as UShort_t with given precision

   fTempRight.AddAt( (Short_t)val, i );
   fTempRightTimeStamp.AddAt( time, i );
   fTempRightSetPoints++;
                       // New values are inserted
} /*AliITSDCSDataSDD::SetValueTempRight*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetValueHV(Int_t time, Float_t voltage )
{
  // insert a value for HV data point
  //

   if( fHVMaxPoints == fHVSetPoints )
    SetNPointsHV( fHVMaxPoints + AUTORESIZE );
                        // Enlarges arrays if necessary

   Int_t i =  FindIndex( time, fHVTimeStamp, fHVSetPoints );
                        // Finds place where the new value have to be inserted

   if( i < 0 )
    i = 0;              // New value have to be inserted before the first one in the array
   else
    i++;                // New value will be put somewhere in the middle of the array
                        //  or at the end

   if( i < fHVSetPoints )
   {
      Float_t *fromPtrF = fHV.GetArray() + i;
                       // Sets pointer to cell which have to be filled by new value
      Float_t *toPtrF = fromPtrF + 1;
                       // Sets pointer to cell where the array content have to be shifted 

      memmove( toPtrF, fromPtrF, (fHVSetPoints - i)*sizeof(Float_t) );
                       // Shifts array content. Now there is vacant place for new value to be inserted

      Int_t *fromPtrI = fHVTimeStamp.GetArray() + i;
      Int_t *toPtrI = fromPtrI + 1;
      memmove( toPtrI, fromPtrI, (fHVSetPoints - i)*sizeof(Int_t) );
                       // Do the same for time stamp array
   } /*if*/

   fHV.AddAt( voltage, i );
   fHVTimeStamp.AddAt( time, i );
   fHVSetPoints++;
                       // New values are inserted
} /*AliITSDCSDataSDD::SetValueHV*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetValueMV(Int_t time, Float_t voltage )
{
  // insert a value for MV data point
  //

   if( fMVMaxPoints == fMVSetPoints )
    SetNPointsMV( fMVMaxPoints + AUTORESIZE );
                        // Enlarges arrays if necessary

   Int_t i =  FindIndex( time, fMVTimeStamp, fMVSetPoints );
                        // Finds place where the new value have to be inserted

   if( i < 0 )
    i = 0;              // New value have to be inserted before the first one in the array
   else
    i++;                // New value will be put somewhere in the middle of the array
                        //  or at the end

   if( i < fMVSetPoints )
   {
      Short_t *fromPtrF = fMV.GetArray() + i;
                       // Sets pointer to cell which have to be filled by new value
      Short_t *toPtrF = fromPtrF + 1;
                       // Sets pointer to cell where the array content have to be shifted 

      memmove( toPtrF, fromPtrF, (fMVSetPoints - i)*sizeof(Short_t) );
                       // Shifts array content. Now there is vacant place for new value to be inserted

      Int_t *fromPtrI = fMVTimeStamp.GetArray() + i;
      Int_t *toPtrI = fromPtrI + 1;
      memmove( toPtrI, fromPtrI, (fMVSetPoints - i)*sizeof(Int_t) );
                       // Do the same for time stamp array
   } /*if*/

   UShort_t val = (UShort_t)( voltage * fgkMVPrec );
                       // Float value of temperature is stored as UShort_t with given precision

   fMV.AddAt( (Short_t)val, i );
   fMVTimeStamp.AddAt( time, i );
   fMVSetPoints++;
                       // New values are inserted
} /*AliITSDCSDataSDD::SetValueMV*/

//---------------------------------------------------------------------------

void AliITSDCSDataSDD::SetValueStatus(Int_t time, Char_t status )
{
  // insert a value for channel status
  //

   if( fStatusMaxPoints == fStatusSetPoints )
    SetNPointsStatus( fStatusMaxPoints + AUTORESIZE );
                        // Enlarges arrays if necessary

   Int_t i =  FindIndex( time, fStatusTimeStamp, fStatusSetPoints );
                        // Finds place where the new value have to be inserted

   if( i < 0 )
    i = 0;              // New value have to be inserted before the first one in the array
   else
    i++;                // New value will be put somewhere in the middle of the array
                        //  or at the end

   if( i < fStatusSetPoints )
   {
      Char_t *fromPtrF = fStatus.GetArray() + i;
                       // Sets pointer to cell which have to be filled by new value
      Char_t *toPtrF = fromPtrF + 1;
                       // Sets pointer to cell where the array content have to be shifted 

      memmove( toPtrF, fromPtrF, (fStatusSetPoints - i)*sizeof(Char_t) );
                       // Shifts array content. Now there is vacant place for new value to be inserted

      Int_t *fromPtrI = fStatusTimeStamp.GetArray() + i;
      Int_t *toPtrI = fromPtrI + 1;
      memmove( toPtrI, fromPtrI, (fStatusSetPoints - i)*sizeof(Int_t) );
                       // Do the same for time stamp array
   } /*if*/

   fStatus.AddAt( status, i );
   fStatusTimeStamp.AddAt( time, i );
   fStatusSetPoints++;
                       // New values are inserted

} /*AliITSDCSDataSDD::SetValueStatus*/


//---------------------------------------------------------------------------

void AliITSDCSDataSDD::Compress()
{
// Minimize array sizes

   SetNPointsTempLeft( fTempLeftSetPoints );
   SetNPointsTempRight( fTempRightSetPoints );
   SetNPointsHV( fHVSetPoints );
   SetNPointsMV( fMVSetPoints );
   SetNPointsStatus( fStatusSetPoints );

} /*AliITSDCSDataSDD::Compress*/

//---------------------------------------------------------------------------

Float_t AliITSDCSDataSDD::GetDriftField( Int_t timeStamp ) const
{
// Returns drift field counted for specific time

   Int_t   cathodesNumber = 291;
   Float_t cathodesPitch = 0.0120;

   Float_t hv = GetHV( timeStamp );
   Float_t mv = GetMV( timeStamp );

   if( hv < 0.0 || mv < 0.0 ) return -1.0;
                        // HV or MV is unknown at this time

   return ( hv - mv ) / ( cathodesNumber * cathodesPitch );

} /*AliITSDCSDataSDD::GetDriftField*/

//---------------------------------------------------------------------------


Float_t AliITSDCSDataSDD::GetDriftSpeed( Int_t /*timeStamp*/ ) const
{
// Returns drift speed counted for specific time. Calculation is based on temerature
//  taken  from DCS. This metod is not dedicated for normal usage, it should be used
//  only in cases that the injectors for given module fails.
//
// Presently only a prototype, returns -1.0.

   /* PROTOTYPE */

   return -1.0;

} /*AliITSDCSDataSDD::*/

//---------------------------------------------------------------------------


void AliITSDCSDataSDD:: PrintValues( FILE *output ) const
{
// Prints array contents

    Int_t nTLEntries = GetTempLeftRecords();
    Int_t nTREntries = GetTempRightRecords();
    Int_t nHVEntries = GetHVRecords() ;
    Int_t nMVEntries = GetMVRecords();
    Int_t nStatEntries = GetStatusRecords();

    fprintf( output, "+------------------------------------------------------------------------------------------------------------+\n");
    fprintf( output, "|                                                DCS content                                                 |\n" ); 
    fprintf( output, "+----------------------+-----------------------+---------------------+---------------------+-----------------+\n");
    fprintf( output, "|    %05i  records    |    %05i   records    |    %05i  records   |    %05i  records   |  %05i records  |\n",
                          nHVEntries, nMVEntries, nTLEntries, nTREntries, nStatEntries );
    fprintf( output, "|  time (s)     HV     |  time (s)      MV     |  time (s)     TL    |  time (s)     TR    | time (s)   Stat |\n" );
    fprintf( output, "+----------------------+-----------------------+---------------------+---------------------+-----------------+\n");

    Int_t a = (nHVEntries > nMVEntries ) ? nHVEntries : nMVEntries;
    Int_t b = (nTLEntries > nTREntries ) ? nTLEntries : nTREntries;
    if( a < b ) a = b;
    Int_t loopMax = ( a > nStatEntries ) ? a : nStatEntries ;
                 // Finds maximal entry number

    for( Int_t entryLoop = 0; entryLoop < loopMax; entryLoop++ )
    {

        if( entryLoop < nHVEntries )
         fprintf( output, "| %12i %4.2f | ", GetHVTimeIdx(entryLoop), GetHVIdx(entryLoop) );
        else
         fprintf( output, "|                      | ");

        if( entryLoop < nMVEntries )
         fprintf( output, " %12i  %2.3f | ", GetMVTimeIdx(entryLoop), GetMVIdx(entryLoop) );
        else
         fprintf( output, "                      | ");

        if( entryLoop < nTLEntries )
         fprintf( output, "%12i  %2.2f | ", GetTempLeftTimeIdx(entryLoop), GetTempLeftIdx(entryLoop) );
        else
         fprintf( output, "                    | ");

        if( entryLoop < nTREntries )
         fprintf( output, "%12i  %2.2f | ", GetTempRightTimeIdx(entryLoop), GetTempRightIdx(entryLoop) );
        else
         fprintf( output, "                    | ");

        if( entryLoop < nStatEntries )
         fprintf( output, "%12i  %i |\n", GetStatusTimeIdx(entryLoop), GetStatusIdx(entryLoop) );
        else
         fprintf( output, "                |\n");

    } /*for( entryLoop )*/


} /*AliITSDCSDataSDD::PrintValues()*/

//---------------------------------------------------------------------------

Int_t AliITSDCSDataSDD::FindIndex( Int_t timeStamp, const TArrayI &timeStampArray, Int_t n ) const
{
// Provides binary search in the time array. Returns index in the array of time 
//  stamps by selected value. Returns -1 if the time is less than time stamp in 
//  the timeArray[0]

  if( n < 1 ) return -1;// Empty array or wrong value of array size

  if( timeStamp >= timeStampArray.At(n-1) ) return n-1;
                        // Time is larger than last timestamp - last value in the array have
                        //  to be used. This is the most frequent case, so it have sense
                        //  to check it and avoid searching.

  if( timeStamp < timeStampArray.At(0) ) return -1;
                        // Time is less than all time stamp stored in the array

  Int_t left = 0;
  Int_t right = n-1;
  Int_t middle = (left + right)/2;

  while( !( middle == left || middle == right) )
  {                     // Binary search in the time stamp array

     if( timeStampArray.At(middle) < timeStamp )
      left = middle;
     else
      right = middle;
     middle = (left + right)/2;
  } /*while*/

  if( timeStamp >= timeStampArray.At(right) )
   return right;
  else
   return left;

} /*AliITSDCSDataSDD::FindIndexByTimeStamp*/

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