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

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  MCM configuraton handler                                              //
//                                                                        //
//  Author: U. Westerhoff                                                 //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include "AliTRDtrapConfigHandler.h"

#include <iostream>
#include <sstream>
#include <iomanip>

#include "AliLog.h"

#include "AliTRDfeeParam.h"
#include "AliTRDtrapConfig.h"
#include "AliTRDmcmSim.h"
#include "AliTRDgeometry.h"
#include "AliTRDcalibDB.h"

#include "TMath.h"
#include "TGeoMatrix.h"
#include "TGraph.h"

#include "Cal/AliTRDCalOnlineGainTable.h"
#include "Cal/AliTRDCalOnlineGainTableROC.h"
#include "Cal/AliTRDCalOnlineGainTableMCM.h"

using namespace std;

AliTRDtrapConfigHandler::AliTRDtrapConfigHandler(AliTRDtrapConfig *cfg) :
     ltuParam()
     , fRestrictiveMask((0x3ffff << 11) | (0x1f << 6) | 0x3f)
     , fTrapConfig(cfg)
     , fGtbl()
{

}


AliTRDtrapConfigHandler::~AliTRDtrapConfigHandler()
{

}

void AliTRDtrapConfigHandler::Init()
{
  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return;
  }

  // setup of register allocation
  // I/O configuration which we don't care about
  fTrapConfig->SetTrapRegAlloc(AliTRDtrapConfig::kSEBDOU, AliTRDtrapConfig::kAllocNone);
  // position look-up table by layer
  for (Int_t iBin = 0; iBin < 128; iBin++)
    fTrapConfig->SetTrapRegAlloc((AliTRDtrapConfig::TrapReg_t) (AliTRDtrapConfig::kTPL00 + iBin), AliTRDtrapConfig::kAllocByLayer);
  // ... individual
  fTrapConfig->SetTrapRegAlloc(AliTRDtrapConfig::kC14CPUA, AliTRDtrapConfig::kAllocByMCM);
  fTrapConfig->SetTrapRegAlloc(AliTRDtrapConfig::kC15CPUA, AliTRDtrapConfig::kAllocByMCM);

  // setup of DMEM allocation
  for(Int_t iAddr = AliTRDtrapConfig::fgkDmemStartAddress;
            iAddr < (AliTRDtrapConfig::fgkDmemWords + AliTRDtrapConfig::fgkDmemStartAddress); iAddr++) {

    if(iAddr == AliTRDmcmSim::fgkDmemAddrDeflCorr)
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocByMCMinSM);

    else if(iAddr == AliTRDmcmSim::fgkDmemAddrNdrift)
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocByDetector);

    else if((iAddr >= AliTRDmcmSim::fgkDmemAddrDeflCutStart) && (iAddr <= AliTRDmcmSim::fgkDmemAddrDeflCutEnd))
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocByMCMinSM);

    else if((iAddr >= AliTRDmcmSim::fgkDmemAddrTrackletStart) && (iAddr <= AliTRDmcmSim::fgkDmemAddrTrackletEnd))
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocByMCM);

    else if((iAddr >= AliTRDmcmSim::fgkDmemAddrLUTStart) && (iAddr <= AliTRDmcmSim::fgkDmemAddrLUTEnd))
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocGlobal);

    else if(iAddr == AliTRDmcmSim::fgkDmemAddrLUTcor0)
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocByMCMinSM);

    else if(iAddr == AliTRDmcmSim::fgkDmemAddrLUTcor1)
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocByMCMinSM);

    else if(iAddr == AliTRDmcmSim::fgkDmemAddrLUTnbins)
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocGlobal);

    else if(iAddr == AliTRDmcmSim::fgkDmemAddrLUTLength)
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocGlobal);

    else
      fTrapConfig->SetDmemAlloc(iAddr, AliTRDtrapConfig::kAllocGlobal);
  }
}

void AliTRDtrapConfigHandler::ResetMCMs()
{
   //
   // Reset all MCM registers and DMEM
   //

  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return;
  }

   fTrapConfig->ResetRegs();
   fTrapConfig->ResetDmem();
}


Int_t AliTRDtrapConfigHandler::LoadConfig()
{
  // load a default configuration which is suitable for simulation
  // for a detailed description of the registers see the TRAP manual
  // if you want to resimulate tracklets on real data use the appropriate config instead

  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return -1;
  }

  // prepare ltuParam
  // ndrift (+ 5 binary digits)
  ltuParam.SetNtimebins(20 << 5);
  // deflection + tilt correction
  ltuParam.SetRawOmegaTau(0.16133);
  // deflection range table
  ltuParam.SetRawPtMin(0.1);
  // magnetic field
  ltuParam.SetRawMagField(0.0);
  // scaling factors for q0, q1
  ltuParam.SetRawScaleQ0(0);
  ltuParam.SetRawScaleQ1(0);
  // disable length correction and tilting correction
  ltuParam.SetRawLengthCorrectionEnable(kFALSE);
  ltuParam.SetRawTiltCorrectionEnable(kFALSE);

  for (Int_t iDet = 0; iDet < 540; iDet++) {
    // HC header configuration bits
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kC15CPUA, 0x2102, iDet); // zs, deh

    // no. of timebins
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kC13CPUA, 24, iDet);

    // pedestal filter
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFPNP, 4*10, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFPTC, 0, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFPBY, 0, iDet); // bypassed!

    // gain filter
    for (Int_t adc = 0; adc < 20; adc++) {
      fTrapConfig->SetTrapReg(AliTRDtrapConfig::TrapReg_t(AliTRDtrapConfig::kFGA0+adc), 40, iDet);
      fTrapConfig->SetTrapReg(AliTRDtrapConfig::TrapReg_t(AliTRDtrapConfig::kFGF0+adc), 15, iDet);
    }
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFGTA, 20, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFGTB, 2060, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFGBY, 0, iDet);  // bypassed!

    // tail cancellation
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFTAL, 200, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFTLL, 0, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFTLS, 200, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kFTBY, 0, iDet);

    // tracklet calculation
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPQS0, 5, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPQE0, 10, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPQS1, 11, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPQE1, 20, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPFS, 5, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPFE, 20, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPVBY, 0, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPVT, 10, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPHT, 150, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPFP, 40, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPCL, 1, iDet);
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kTPCT, 10, iDet);

    // apply ltuParams
    ConfigureDyCorr(iDet);
    ConfigureDRange(iDet); // deflection range
    ConfigureNTimebins(iDet);  // timebins in the drift region
    ConfigurePIDcorr(iDet);  // scaling parameters for the PID

    // event buffer
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kEBSF, 1, iDet);  // 0: store filtered; 1: store unfiltered

    // zs applied to data stored in event buffer (sel. by EBSF)
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kEBIS, 15, iDet); // single indicator threshold (plus two digits)
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kEBIT, 30, iDet); // sum indicator threshold (plus two digits)
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kEBIL, 0xf0, iDet);   // lookup table
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kEBIN, 0, iDet);      // neighbour sensitivity

    // raw data
    fTrapConfig->SetTrapReg(AliTRDtrapConfig::kNES, (0x0000 << 16) | 0x1000, iDet);
  }

  // ****** hit position LUT

  // now calculate it from PRF
  AliTRDcalibDB *cal = AliTRDcalibDB::Instance();

  Double_t padResponse[3]; // pad response left, central, right
  Double_t padResponseR[3]; // pad response left, central, right
  Double_t padResponseL[3]; // pad response left, central, right

  for (Int_t iLayer = 0; iLayer < 6; iLayer++) {
    TGraph gr(128);
    for (Int_t iBin = 0; iBin < 256*0.5; iBin++) {
      cal->PadResponse(1., iBin*1./256.,    iLayer, padResponse);
      cal->PadResponse(1., iBin*1./256.-1., iLayer, padResponseR);
      cal->PadResponse(1., iBin*1./256.+1., iLayer, padResponseL);
      gr.SetPoint(iBin, (0.5 * (padResponseR[1] - padResponseL[1])/padResponse[1] * 256), iBin);
    }
    for (Int_t iBin = 0; iBin < 128; iBin++) {
      Int_t corr = (Int_t) (gr.Eval(iBin)) - iBin;
      if (corr < 0)
        corr = 0;
      else if (corr > 31)
        corr = 31;
      for (Int_t iStack = 0; iStack < 540/6; iStack++) {
        fTrapConfig->SetTrapReg((AliTRDtrapConfig::TrapReg_t) (AliTRDtrapConfig::kTPL00 + iBin), corr, 6*iStack + iLayer);
      }
    }
  }
  // ****** hit position LUT configuration end

  return 0;
}


Int_t AliTRDtrapConfigHandler::LoadConfig(TString filename)
{
   //
  // load a TRAP configuration from a file
   // The file format is the format created by the standalone
   // command coder scc / show_cfdat but without the running number
   // scc /show_cfdat adds as the first column
   // which are two tools to inspect/export configurations from wingDB
   //

  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return -1;
  }

   Int_t ignoredLines=0;
   Int_t ignoredCmds=0;
   Int_t readLines=0;


   AliDebug(5, Form("Processing file %s", filename.Data()));
   std::ifstream infile;
   infile.open(filename.Data(), std::ifstream::in);
   if (!infile.is_open()) {
    AliError(Form("Can not open MCM configuration file %s", filename.Data()));
    return kFALSE;
   }

   UInt_t cmd;
   Int_t extali, addr, data;

   // reset restrictive mask
   fRestrictiveMask = (0x3ffff << 11) | (0x1f << 6) | 0x3f;
   char linebuffer[512];
   istringstream line;

   while(infile.getline(linebuffer, 512) && infile.good()) {
      line.clear();
      line.str(linebuffer);
      cmd=999;
      extali=-1;
      addr=-1;
      data=-1;
      line >> std::skipws >> cmd >> addr >> data >> extali;  // the lines read from config file can contain additional columns.
      // Therefore the detour via istringstream

      if(cmd!=999 && addr != -1 && data!= -1 && extali!=-1) {

	 if(cmd==fgkScsnCmdWrite) {
	    for(Int_t det=0; det<AliTRDgeometry::Ndet(); det++) {
	       UInt_t rocpos = (1 << (AliTRDgeometry::GetSector(det)+11)) | (1 << (AliTRDgeometry::GetStack(det)+6)) | (1 << AliTRDgeometry::GetLayer(det));
	       AliDebug(1, Form("checking restriction: mask=0x%08x, rocpos=0x%08x", fRestrictiveMask, rocpos));
	       if ((fRestrictiveMask & rocpos) == rocpos) {
		 AliDebug(1, Form("match: %i %i %i %i", cmd, extali, addr, data));
		  AddValues(det, cmd, extali, addr, data);
	       }
	    }
	 }

	 else if(cmd == fgkScsnLTUparam) {
	    ProcessLTUparam(extali, addr, data);
	 }

	 else if(cmd == fgkScsnCmdRestr) {
	    fRestrictiveMask = data;
	   AliDebug(1, Form("updated restrictive mask to 0x%08x", fRestrictiveMask));
	 }

	 else if((cmd == fgkScsnCmdReset) ||
		 (cmd == fgkScsnCmdRobReset)) {
	   fTrapConfig->ResetRegs();
	 }

	 else if (cmd == fgkScsnCmdSetHC) {
	   Int_t fullVersion = ((data & 0x7F00) >> 1) | (data & 0x7f);

	   for (Int_t iDet = 0; iDet < AliTRDgeometry::Ndet(); iDet++) {
	     Int_t smls = (AliTRDgeometry::GetSector(iDet) << 6) | (AliTRDgeometry::GetLayer(iDet) << 3) | AliTRDgeometry::GetStack(iDet);

	     for (Int_t iRob = 0; iRob < 8; iRob++) {
	       // HC mergers
	       fTrapConfig->SetTrapReg(AliTRDtrapConfig::kC14CPUA, 0xc << 16, iDet, iRob, 17);
	       fTrapConfig->SetTrapReg(AliTRDtrapConfig::kC15CPUA, ((1<<29) | (fullVersion<<15) | (1<<12) | (smls<<1) | (iRob%2)), iDet, iRob, 17);

	       // board mergers
	       fTrapConfig->SetTrapReg(AliTRDtrapConfig::kC14CPUA, 0, iDet, iRob, 16);
	       fTrapConfig->SetTrapReg(AliTRDtrapConfig::kC15CPUA, ((1<<29) | (fullVersion<<15) | (1<<12) | (smls<<1) | (iRob%2)), iDet, iRob, 16);

	       // and now for the others
	       for (Int_t iMcm = 0; iMcm < 16; iMcm++) {
		 fTrapConfig->SetTrapReg(AliTRDtrapConfig::kC14CPUA, iMcm | (iRob << 4) | (3 << 16), iDet, iRob, iMcm);
		 fTrapConfig->SetTrapReg(AliTRDtrapConfig::kC15CPUA, ((1<<29) | (fullVersion<<15) | (1<<12) | (smls<<1) | (iRob%2)), iDet, iRob, iMcm);
	       }
	     }
	   }
	 }

	 else if((cmd == fgkScsnCmdRead) ||
		 (cmd == fgkScsnCmdPause) ||
		 (cmd == fgkScsnCmdPtrg) ||
		 (cmd == fgkScsnCmdHwPtrg) ||
		 (cmd == fgkScsnCmdRobPower) ||
		 (cmd == fgkScsnCmdTtcRx) ||
		 (cmd == fgkScsnCmdMcmTemp) ||
		 (cmd == fgkScsnCmdOri) ||
		 (cmd == fgkScsnCmdPM) ) {
	   AliDebug(2, Form("ignored SCSN command: %i %i %i %i", cmd, addr, data, extali));
	 }

	 else {
            AliWarning(Form("unknown SCSN command: %i %i %i %i", cmd, addr, data, extali));
	    ignoredCmds++;
	 }

	 readLines++;
      }

      else if(!infile.eof() && !infile.good()) {
	 infile.clear();
	 infile.ignore(256, '\n');
	 ignoredLines++;
      }

      if(!infile.eof())
	 infile.clear();
   }

   infile.close();

   AliDebug(5, Form("Ignored lines: %i, ignored cmds: %i", ignoredLines, ignoredCmds));


   if(ignoredLines>readLines)
      AliError(Form("More than 50 %% of the input file could not be processed. Perhaps you should check the input file %s", filename.Data()));


   return kTRUE;
}



Int_t AliTRDtrapConfigHandler::SetGaintable(AliTRDCalOnlineGainTable const &gtbl)
{
   fGtbl=gtbl;
   return 0;
}


void AliTRDtrapConfigHandler::ProcessLTUparam(Int_t dest, Int_t addr, UInt_t data)
{
   //
   // Process the LTU parameters and stores them in internal class variables
   // or transfer the stored values to AliTRDtrapConfig, depending on the dest parameter
   //

   switch (dest) {

   case 0: // set the parameters in AliTRDtrapConfig
      for(Int_t det=0; det<AliTRDgeometry::Ndet(); det++) {
	 ConfigureDyCorr(det);
	 ConfigureDRange(det); // deflection range
	 ConfigureNTimebins(det);  // timebins in the drift region
	 ConfigurePIDcorr(det);  // scaling parameters for the PID
      }
      break;

   case 1: // set variables
      switch (addr) {

      case 0: ltuParam.SetPtMin(data); break; // pt_min in GeV/c (*1000)
      case 1: ltuParam.SetMagField(data); break; // B in T (*1000)
      case 2: ltuParam.SetOmegaTau(data); break; // omega*tau
      case 3: ltuParam.SetNtimebins(data); break;
	// ntimbins: drift time (for 3 cm) in timebins (5 add. bin. digits)
      case 4: ltuParam.SetScaleQ0(data); break;
      case 5: ltuParam.SetScaleQ1(data); break;
      case 6: ltuParam.SetLengthCorrectionEnable(data); break;
      case 7: ltuParam.SetTiltCorrectionEnable(data); break;
      }
      break;

   default:
      AliError(Form("dest %i not implemented", dest));
   }

}


void AliTRDtrapConfigHandler::ConfigureNTimebins(Int_t det)
{
   //
   // Set timebins in the drift region
   //

  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return;
  }

  AddValues(det, fgkScsnCmdWrite, 127, AliTRDmcmSim::fgkDmemAddrNdrift, ltuParam.GetNtimebins());
}



void AliTRDtrapConfigHandler::ConfigureDyCorr(Int_t det)
{
   //
   //  Deflection length correction
   //  due to Lorentz angle and tilted pad correction
   //  This correction is in units of padwidth / (256*32)
   //

  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return;
  }

   Int_t nRobs = AliTRDgeometry::GetStack(det) == 2 ? 6 : 8;

  for (Int_t r = 0; r < nRobs; r++) {
    for (Int_t m = 0; m < 16; m++) {
      Int_t dest =  1<<10 | r<<7 | m;
      Int_t dyCorrInt = ltuParam.GetDyCorrection(det, r, m);
      AddValues(det, fgkScsnCmdWrite, dest, AliTRDmcmSim::fgkDmemAddrDeflCorr, dyCorrInt);
    }
  }
}





void AliTRDtrapConfigHandler::ConfigureDRange(Int_t det)
{
   //
   // deflection range LUT
   // range calculated according to B-field (in T) and pt_min (in GeV/c)
   // if pt_min < 0.1 GeV/c the maximal allowed range for the tracklet
   // deflection (-64..63) is used
   //

  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return;
  }

  Int_t nRobs = AliTRDgeometry::GetStack(det) == 2 ? 6 : 8;

  Int_t dyMinInt;
  Int_t dyMaxInt;

   for (Int_t r = 0; r < nRobs; r++) {
      for (Int_t m = 0; m < 16; m++) {
	 for (Int_t c = 0; c < 18; c++) {

	   // cout << "maxdefl: " << maxDeflAngle << ", localPhi " << localPhi << endl;
	   // cout << "r " << r << ", m" << m << ", c " << c << ", min angle: " << localPhi-maxDeflAngle << ", max: " << localPhi+maxDeflAngle
	   // 	<< ", min int: " << dyMinInt << ", max int: " << dyMaxInt << endl;
	   Int_t dest =  1<<10 | r<<7 | m;
	   Int_t lutAddr = AliTRDmcmSim::fgkDmemAddrDeflCutStart + 2*c;
	   ltuParam.GetDyRange(det, r, m, c, dyMinInt, dyMaxInt);
	   AddValues(det, fgkScsnCmdWrite, dest, lutAddr+0, dyMinInt);
	   AddValues(det, fgkScsnCmdWrite, dest, lutAddr+1, dyMaxInt);
	 }
      }
   }
}

void AliTRDtrapConfigHandler::PrintGeoTest()
{
   //
   // Prints some information about the geometry. Only for debugging
   //

   int sm=0;
   //   for(int sm=0; sm<6; sm++) {
   for(int stack=0; stack<5; stack++) {
      for(int layer=0; layer<6; layer++) {

	 Int_t det = sm*30+stack*6+layer;
	 for (Int_t r = 0; r < 6; r++) {
	    for (Int_t m = 0; m < 16; m++) {
	       for (Int_t c = 7; c < 8; c++) {
		 cout << stack << ";" << layer << ";" << r << ";" << m
		      << ";" << ltuParam.GetX(det, r, m)
		      << ";" << ltuParam.GetLocalY(det, r, m, c)
		      << ";" << ltuParam.GetLocalZ(det, r, m) << endl;
	       }
	    }
	 }
      }
   }
   // }
}


void AliTRDtrapConfigHandler::ConfigurePIDcorr(Int_t det)
{
   //
   // Calculate the MCM individual correction factors for the PID
   // and transfer them to AliTRDtrapConfig
   //

  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return;
  }

   static const Int_t addrLUTcor0 = AliTRDmcmSim::fgkDmemAddrLUTcor0;
   static const Int_t addrLUTcor1 = AliTRDmcmSim::fgkDmemAddrLUTcor1;

   UInt_t cor0;
   UInt_t cor1;

   Int_t nRobs = AliTRDgeometry::GetStack(det) == 2 ? 6 : 8;

   for (Int_t r=0; r<nRobs; r++) {
      for(Int_t m=0; m<16; m++) {
	 Int_t dest =  1<<10 | r<<7 | m;
	 if(fGtbl.GetGainTableROC(det) && fGtbl.GetGainTableROC(det)->GetGainTableMCM(r, m))
	    ltuParam.GetCorrectionFactors(det, r, m, 9, cor0, cor1, fGtbl.GetGainTableROC(det)->GetGainTableMCM(r, m)->GetMCMGain());
	 else
	    ltuParam.GetCorrectionFactors(det, r, m, 9, cor0, cor1);
	 AddValues(det, fgkScsnCmdWrite, dest, addrLUTcor0, cor0);
	 AddValues(det, fgkScsnCmdWrite, dest, addrLUTcor1, cor1);
    }
  }
}


Bool_t AliTRDtrapConfigHandler::AddValues(UInt_t det, UInt_t cmd, UInt_t extali, Int_t addr, UInt_t data)
{
   // transfer the informations provided by LoadConfig to the internal class variables

  if (!fTrapConfig) {
    AliError("No TRAPconfig given");
    return kFALSE;
  }

  if(cmd != fgkScsnCmdWrite) {
    AliError(Form("Invalid command received: %i", cmd));
    return kFALSE;
  }

  AliTRDtrapConfig::TrapReg_t mcmReg = fTrapConfig->GetRegByAddress(addr);
  Int_t rocType = AliTRDgeometry::GetStack(det) == 2 ? 0 : 1;

  static const int mcmListSize=40;  // 40 is more or less arbitrary
  Int_t mcmList[mcmListSize];

  // configuration registers
  if(mcmReg >= 0 && mcmReg < AliTRDtrapConfig::kLastReg) {

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