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

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  TRD front end electronics parameters class                            //
//  Contains all FEE (MCM, TRAP, PASA) related                            //
//  parameters, constants, and mapping.                                   //
//                                                                        //
//  New release on 2007/08/17:                                            //
//   The default raw data version (now fRAWversion ) is set to 3          //
//   in the constructor because version 3 raw data read and write         //
//   are fully debugged.                                                  //
//                                                                        //
//  Author:                                                               //
//    Ken Oyama (oyama@physi.uni-heidelberg.de)                           //
//                                                                        //
//  many things now configured by AliTRDtrapConfig reflecting             //
//  the real memory structure of the TRAP (Jochen)                        //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

//#include <TMath.h>

#include "AliLog.h"

#include "AliTRDfeeParam.h"
//#include "AliTRDgeometry.h"
#include "AliTRDCommonParam.h"

ClassImp(AliTRDfeeParam)

AliTRDfeeParam *AliTRDfeeParam::fgInstance   = 0;
Bool_t          AliTRDfeeParam::fgTerminated = kFALSE;
Bool_t          AliTRDfeeParam::fgTracklet = kTRUE;

//_____________________________________________________________________________
AliTRDfeeParam* AliTRDfeeParam::Instance()
{
  //
  // Instance constructor
  //

  if (fgTerminated != kFALSE) {
    return 0;
  }

  if (fgInstance == 0) {
    fgInstance = new AliTRDfeeParam();
  }  

  return fgInstance;

}

//_____________________________________________________________________________
void AliTRDfeeParam::Terminate()
{
  //
  // Terminate the class and release memory
  //
  
  fgTerminated = kTRUE;

  if (fgInstance != 0) {
    delete fgInstance;
    fgInstance = 0;
  }

}

//_____________________________________________________________________________
AliTRDfeeParam::AliTRDfeeParam()
  :TObject()
  ,fCP(0)
  ,fRAWversion(3)
{
  //
  // Default constructor
  //
  
  fCP  = AliTRDCommonParam::Instance();
}

//_____________________________________________________________________________
AliTRDfeeParam::AliTRDfeeParam(TRootIoCtor *)
  :TObject()
  ,fCP(0)
  ,fRAWversion(0)
{
  //
  // IO constructor
  //

}

//_____________________________________________________________________________
AliTRDfeeParam::AliTRDfeeParam(const AliTRDfeeParam &p)
  :TObject(p)
  ,fCP(p.fCP)
  ,fRAWversion(p.fRAWversion)
{
  //
  // AliTRDfeeParam copy constructor
  //

}

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

}

//_____________________________________________________________________________
AliTRDfeeParam &AliTRDfeeParam::operator=(const AliTRDfeeParam &p)
{
  //
  // Assignment operator
  //

  if (this != &p) {
    ((AliTRDfeeParam &) p).Copy(*this);
  }

  return *this;

}

//_____________________________________________________________________________
void AliTRDfeeParam::Copy(TObject &p) const
{
  //
  // Copy function
  //

  ((AliTRDfeeParam &) p).fCP          = fCP;
  ((AliTRDfeeParam &) p).fRAWversion  = fRAWversion;
  
  TObject::Copy(p);

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetPadRowFromMCM(Int_t irob, Int_t imcm) const
{
  //
  // Return on which pad row this mcm sits
  //
  
  return fgkNmcmRobInRow*(irob/2) + imcm/fgkNmcmRobInCol;

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetPadColFromADC(Int_t irob, Int_t imcm, Int_t iadc) const
{
  //
  // Return which pad is connected to this adc channel.
  //
  // Return virtual pad number even if ADC is outside chamber
  // to keep compatibility of data processing at the edge MCM.
  // User has to check that this is in the chamber if it is essential.
  // Return -100 if iadc is invalid.
  //
  // Caution: ADC ordering in the online data is opposite to the pad column ordering.
  // And it is not one-by-one correspondence. Precise drawing can be found in:
  // http://wiki.kip.uni-heidelberg.de/ti/TRD/index.php/Image:ROB_MCM_numbering.pdf
  //

  if (iadc < 0 || iadc > fgkNadcMcm ) return -100;
  Int_t mcmcol = imcm%fgkNmcmRobInCol + GetRobSide(irob)*fgkNmcmRobInCol;  // MCM column number on ROC [0..7]
  Int_t padcol = mcmcol*fgkNcolMcm + fgkNcolMcm + 1 - iadc;
  if( padcol < 0 || padcol >= fgkNcol ) return -1;   // this is commented because of reason above OK

  return padcol;

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetExtendedPadColFromADC(Int_t irob, Int_t imcm, Int_t iadc) const
{     
  //
  // Return which pad coresponds to the extended digit container pad numbering
  // Extended digit container is designed to store all pad data including shared pad, 
  // so we have to introduce new virtual pad numbering scheme for this purpose. 
  //
    
  if (iadc < 0 || iadc > fgkNadcMcm ) return -100;
  Int_t mcmcol = imcm%fgkNmcmRobInCol + GetRobSide(irob)*fgkNmcmRobInCol;  // MCM column number on ROC [0..7]
  Int_t padcol = mcmcol*fgkNadcMcm + fgkNcolMcm + 2 - iadc;

  return padcol;

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetMCMfromPad(Int_t irow, Int_t icol) const
{
  //
  // Return on which MCM this pad is directry connected.
  // Return -1 for error.
  //

  if ( irow < 0 || icol < 0 || irow > fgkNrowC1 || icol > fgkNcol ) return -1;

  return (icol%(fgkNcol/2))/fgkNcolMcm + fgkNmcmRobInCol*(irow%fgkNmcmRobInRow);

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetMCMfromSharedPad(Int_t irow, Int_t icol) const
{
  //
  // Return on which MCM this pad is directry connected.
  // Return -1 for error.
  //
  
  if ( irow < 0 || icol < 0 || irow > fgkNrowC1 || icol > fgkNcol+8*3 ) return -1;

  Int_t adc = 20 - (icol%18) -1;
  switch(adc) {
    case 2:  icol += 5; break;
    case 18: icol -= 5; break;
    case 19: icol -= 5; break;
    default: icol += 0; break;
  }

  return (icol%(fgkNcol/2))/fgkNcolMcm + fgkNmcmRobInCol*(irow%fgkNmcmRobInRow);

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetROBfromPad(Int_t irow, Int_t icol) const
{
  //
  // Return on which rob this pad is
  //

  return (irow/fgkNmcmRobInRow)*2 + GetColSide(icol);

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetROBfromSharedPad(Int_t irow, Int_t icol) const
{
  //
  // Return on which rob this pad is for shared pads
  //

  if(icol<72) return (irow/fgkNmcmRobInRow)*2 + GetColSide(icol+5);
  else return (irow/fgkNmcmRobInRow)*2 + GetColSide(icol-5);

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetRobSide(Int_t irob) const
{
  //
  // Return on which side this rob sits (A side = 0, B side = 1)
  //

  if ( irob < 0 || irob >= fgkNrobC1 ) return -1;

  return irob%2;

}

//_____________________________________________________________________________
Int_t AliTRDfeeParam::GetColSide(Int_t icol) const
{
  //
  // Return on which side this column sits (A side = 0, B side = 1)
  //

  if ( icol < 0 || icol >= fgkNcol ) return -1;

  return icol/(fgkNcol/2);

}



UInt_t AliTRDfeeParam::AliToExtAli(Int_t rob, Int_t aliid)
{
   if(aliid!= 127)
      return ( (1 << 10) | (rob << 7) | aliid);

   return 127;
}


Int_t AliTRDfeeParam::ExtAliToAli(UInt_t dest, UShort_t linkpair, UShort_t rocType, Int_t *mcmList, Int_t listSize)
{
   // Converts an extended ALICE ID which identifies a single MCM or a group of MCMs to
   // the corresponding list of MCMs. Only broadcasts (127) are encoded as 127 
   // The return value is the number of MCMs in the list

  mcmList[0]=-1;

  Short_t nmcm = 0;
  UInt_t mcm, rob, robAB;
  UInt_t cmA = 0, cmB = 0;  // Chipmask for each A and B side
  
  // Default chipmask for 4 linkpairs (each bit correponds each alice-mcm)
  static const UInt_t gkChipmaskDefLp[4] = { 0x1FFFF, 0x1FFFF, 0x3FFFF, 0x1FFFF };
  
  rob = dest >> 7;                              // Extract ROB pattern from dest.
  mcm = dest & 0x07F;                           // Extract MCM pattern from dest.
  robAB = GetRobAB( rob, linkpair ); // Get which ROB sides are selected.
  
  // Abort if no ROB is selected
  if( robAB == 0 ) {
    return 0;
  }
  
  // Special case
  if( mcm == 127 ) {
    if( robAB == 3 ) {      // This is very special 127 can stay only if two ROBs are selected
      mcmList[0]=127;      // broadcase to ALL
      mcmList[1]=-1;
      return 1;
    }
    cmA = cmB = 0x3FFFF;
  } else if( (mcm & 0x40) != 0 ) { // If top bit is 1 but not 127, this is chip group.
    if( (mcm & 0x01) != 0 )                  { cmA |= 0x04444; cmB |= 0x04444; } // chip_cmrg
    if( (mcm & 0x02) != 0 )                  { cmA |= 0x10000; cmB |= 0x10000; } // chip_bmrg
    if( (mcm & 0x04) != 0 && rocType == 0 ) { cmA |= 0x20000; cmB |= 0x20000; } // chip_hm3
    if( (mcm & 0x08) != 0 && rocType == 1 ) { cmA |= 0x20000; cmB |= 0x20000; } // chip_hm4
    if( (mcm & 0x10) != 0 )                  { cmA |= 0x01111; cmB |= 0x08888; } // chip_edge
    if( (mcm & 0x20) != 0 )                  { cmA |= 0x0aaaa; cmB |= 0x03333; } // chip_norm
  } else { // Otherwise, this is normal chip ID, turn on only one chip.
    cmA = 1 << mcm;
    cmB = 1 << mcm;
  }
  
  // Mask non-existing MCMs
  cmA &= gkChipmaskDefLp[linkpair];
  cmB &= gkChipmaskDefLp[linkpair];
  // Remove if only one side is selected
  if( robAB == 1 ) 
    cmB = 0;
  if( robAB == 2 ) 
    cmA = 0;
  if( robAB == 4 && linkpair != 2 ) 
    cmA = cmB = 0; // Restrict to only T3A and T3B
  
  // Finally convert chipmask to list of slaves
  nmcm = ChipmaskToMCMlist( cmA, cmB, linkpair, mcmList, listSize);
  
  return nmcm;
}


Short_t AliTRDfeeParam::GetRobAB( UShort_t robsel, UShort_t linkpair )
{
  // Converts the ROB part of the extended ALICE ID to robs

  if( (robsel & 0x8) != 0 ) { // 1000 .. direct ROB selection. Only one of the 8 ROBs are used.
    robsel = robsel & 7;
    if( (robsel % 2) == 0 && (robsel / 2) == linkpair ) 
      return 1;  // Even means A side (position 0,2,4,6)
    if( (robsel % 2) == 1 && (robsel / 2) == linkpair ) 
      return 2;  // Odd  means B side (position 1,3,5,7)
    return 0;
  }
  
  // ROB group
  if( robsel == 0 ) { return 3; } // Both   ROB
  if( robsel == 1 ) { return 1; } // A-side ROB
  if( robsel == 2 ) { return 2; } // B-side ROB
  if( robsel == 3 ) { return 3; } // Both   ROB
  if( robsel == 4 ) { return 4; } // Only T3A and T3B
  // Other number 5 to 7 are ignored (not defined) 
  
  return 0;
}


Short_t AliTRDfeeParam::ChipmaskToMCMlist( UInt_t cmA, UInt_t cmB, UShort_t linkpair, Int_t *mcmList, Int_t listSize )
{
  // Converts the chipmask to a list of MCMs 
  
  Short_t nmcm = 0;
  Short_t i;
  for( i = 0 ; i < 18 ; i++ ) {  // 18: number of MCMs on a ROB
     if( (cmA & (1 << i)) != 0 && nmcm<listSize) {
        mcmList[nmcm] = ((linkpair*2) << 7) | i;
	++nmcm;
    }
    if( (cmB & (1 << i)) != 0  && nmcm<listSize) {
       mcmList[nmcm] = ((linkpair*2+1) << 7) | i;
       ++nmcm;
    }
  }

  mcmList[nmcm]=-1;
  return nmcm;
}


//_____________________________________________________________________________
void AliTRDfeeParam::SetRAWversion( Int_t rawver )
{
  //
  // Set raw data version (major number only)
  // Maximum available number is preset in fgkMaxRAWversion
  //

  if( rawver >= 0 && rawver <= fgkMaxRAWversion ) {
    fRAWversion = rawver;
  } 
  else {
    AliError(Form("Raw version is out of range: %d",rawver));
  }

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