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

//-----------------------------------------------------------------------------
/// \class AliMUONRawWriter
/// MUON Raw Data generaton in ALICE-MUON
/// Raw data structure could be found in Alice-note.
///
/// Implemented non-constant buspatch numbers for tracking
/// with correct DDL id (first guess)
/// (Ch. Finck, dec 2005)
///
/// Digits2Raw:
/// Generates raw data for MUON tracker and finally for trigger
/// Using real mapping (inverse) for tracker
/// For trigger there is no mapping (mapping could be found in AliMUONTriggerCircuit)
/// Ch. Finck, July 04
/// Use memcpy instead of assignment elt by elt
/// Introducing variable DSP numbers, real manu numbers per buspatch for st12
/// Implemented scaler event for Trigger
/// Ch. Finck, Jan. 06
/// Using bus itr in DDL instead of simple incrementation
/// treat correctly the DDL & buspatch for station 3.
/// Using informations from AliMUONTriggerCrateStore for 
/// empty slots and non-notified cards in trigger crates.
/// Ch. Finck, August 06.
/// Using AliMpDDLStore::GetBusPatchId.
///
/// \author Ch. Finck, Feb. 07.
//-----------------------------------------------------------------------------


#include "AliMUONRawWriter.h"

#include "AliMUONBlockHeader.h"
#include "AliMUONBusStruct.h"
#include "AliMUONConstants.h"
#include "AliMUONDarcHeader.h"
#include "AliMUONVDigit.h"
#include "AliMUONVDigitStore.h"
#include "AliMUONDspHeader.h"
#include "AliMUONGlobalTrigger.h"
#include "AliMUONLocalStruct.h"
#include "AliMUONLocalTrigger.h"
#include "AliMUONLocalTriggerBoard.h"
#include "AliMUONRegionalTrigger.h"
#include "AliMUONRegHeader.h"

#include "AliMUONVTriggerStore.h"
#include "AliCodeTimer.h"

#include "AliMpCDB.h"
#include "AliMpDDLStore.h"
#include "AliMpDDL.h"
#include "AliMpRegionalTrigger.h"
#include "AliMpTriggerCrate.h"
#include "AliMpLocalBoard.h"
#include "AliMpDetElement.h"
#include "AliMpDEManager.h"
#include "AliMpExMap.h"
#include "AliMpConstants.h"
#include "AliMpPlaneType.h"
#include "AliMpSegmentation.h"
#include "AliMpStationType.h"
#include "AliMpVSegmentation.h"

#include "AliRawReader.h"
#include "AliRawDataHeaderSim.h"
#include "AliBitPacking.h" 
#include "AliDAQ.h"
#include "AliLog.h"

#include "TObjArray.h"
#include "TStopwatch.h"
#include <Riostream.h>

/// \cond CLASSIMP
ClassImp(AliMUONRawWriter) // Class implementation in ROOT context
/// \endcond

//__________________________________________________________________________
AliMUONRawWriter::AliMUONRawWriter()
  : TObject(),
    fBlockHeader(new AliMUONBlockHeader()),
    fDspHeader(new AliMUONDspHeader()),
    fDarcHeader(new AliMUONDarcHeader()),
    fRegHeader(new AliMUONRegHeader()),
    fLocalStruct(new AliMUONLocalStruct()),
    fDDLStore(AliMpDDLStore::Instance()),
    fScalerEvent(kFALSE),
    fHeader(0x0),
    fBufferSize((((43*AliMpConstants::ManuNofChannels() + 4)*5 + 10)*5 + 8)*2),
    fBuffer(new Int_t [fBufferSize])
{
  /// Standard Constructor

  AliDebug(1,"Standard ctor");

  // setting data key to default value (only for writting)
  fBlockHeader->SetDataKey(fBlockHeader->GetDefaultDataKey());
  fDspHeader->SetDataKey(fDspHeader->GetDefaultDataKey());

  // Load mapping
  if ( ! fDDLStore ) {
    if ( ! AliMpCDB::LoadDDLStore() ) {
      AliFatal("Could not access mapping from OCDB !");
    }
    fDDLStore = AliMpDDLStore::Instance();
  }  
}

//__________________________________________________________________________
AliMUONRawWriter::~AliMUONRawWriter(void)
{
  /// Destructor

  AliDebug(1,"dtor");
  
  delete fBlockHeader;
  delete fDspHeader;
  delete fDarcHeader;
  delete fRegHeader;
  delete fLocalStruct;
  delete[] fBuffer;
}

//____________________________________________________________________
void  AliMUONRawWriter::LocalWordPacking(UInt_t& word, UInt_t locId, UInt_t locDec, 
					 UInt_t trigY, UInt_t posY, UInt_t posX, 
					 UInt_t sdevX, UInt_t devX)
{
/// pack local trigger word

    AliBitPacking::PackWord(locId,word,19,22); //card id number in crate
    AliBitPacking::PackWord(locDec,word,15,18);
    AliBitPacking::PackWord(trigY,word,14,14);
    AliBitPacking::PackWord(posY,word,10,13);
    AliBitPacking::PackWord(sdevX,word,9,9);
    AliBitPacking::PackWord(devX,word,5,8);
    AliBitPacking::PackWord(posX,word,0,4);

}

//____________________________________________________________________
Int_t AliMUONRawWriter::Digits2Raw(const AliMUONVDigitStore* digitStore,
                                   const AliMUONVTriggerStore* triggerStore)
{
  /// convert digits of the current event to raw data

  AliCodeTimerAuto("",0)
  
  Int_t idDDL;

  // tracking chambers
  
  if ( digitStore ) 
  {
    AliCodeTimerAuto("for Tracker",1)

    AliMpExMap busPatchMap;

    Int_t nDDLs = AliDAQ::NumberOfDdls("MUONTRK");
    
    Int_t nofBusPatches(0);
    
    for (Int_t iDDL = 0; iDDL < nDDLs; ++iDDL ) 
    {
      AliMpDDL* ddl = fDDLStore->GetDDL(iDDL);
      nofBusPatches += ddl->GetNofBusPatches();
    }
    
    busPatchMap.SetSize(nofBusPatches);
    
    Digits2BusPatchMap(*digitStore,busPatchMap);

    for (Int_t iDDL = 0; iDDL < nDDLs; ++iDDL ) 
    {
      WriteTrackerDDL(busPatchMap,iDDL);
    }
    AliDebug(1,"Tracker written");
  }
 
  if ( triggerStore )
  {
    AliCodeTimerAuto("for Trigger",1)

    // trigger chambers
    
    AliFstream* file[2];
    
    // open files
    idDDL = 0;// MUTR
    file[0] = new AliFstream(AliDAQ::DdlFileName("MUONTRG",idDDL));
    
    idDDL = 1;// MUTR
    file[1] = new AliFstream(AliDAQ::DdlFileName("MUONTRG",idDDL));
      
    WriteTriggerDDL(*triggerStore,file);
      
    // reset and close
    delete file[0];
    delete file[1];
      
    AliDebug(1,"Trigger written");
  }
  
  return kTRUE;
}

//______________________________________________________________________________
void 
AliMUONRawWriter::Digits2BusPatchMap(const AliMUONVDigitStore& digitStore,
                                     AliMpExMap& busPatchMap)
{
  /// Create bus patch structures corresponding to digits in the store
  
  AliCodeTimerAuto("",0)
  
  static const Int_t kMAXADC = (1<<12)-1; // We code the charge on a 12 bits ADC.
    
  // DDL event one per half chamber
  
  // raw data
  Char_t parity = 0x4;
  UShort_t manuId = 0;
  UChar_t channelId = 0;
  UShort_t charge = 0;
  Int_t busPatchId = 0;
  Int_t currentBusPatchId = -1;
  UInt_t word;
  
  AliMUONBusStruct* busStruct(0x0);
  
  TIter next(digitStore.CreateTrackerIterator());
  AliMUONVDigit* digit;
  
  while ( ( digit = static_cast<AliMUONVDigit*>(next()) ) )
  {
    charge = digit->ADC();
    if ( charge > kMAXADC )
    {
      // This is most probably an error in the digitizer (which should insure
      // the adc is below kMAXADC), so make it a (non-fatal) error indeed.
      AliError(Form("adc value %d above 0x%x for DE %d . Setting to 0x%x. Digit is:",
                    charge,kMAXADC,digit->DetElemId(),kMAXADC));
      StdoutToAliError(digit->Print());
      charge = kMAXADC;
    }
    
    // inverse mapping
    busPatchId = GetBusPatch(*digit);

    if (busPatchId<0) continue;
    
    if ( digit->ManuId() > 0x7FF ||
         digit->ManuChannel() > 0x3F )
    {
      StdoutToAliError(digit->Print(););
      AliFatal("ManuId,ManuChannel are invalid for the digit above.");
    }
    
    manuId = ( digit->ManuId() & 0x7FF ); // 11 bits
    channelId = ( digit->ManuChannel() & 0x3F ); // 6 bits
    
    //packing word
    word = 0;
    AliBitPacking::PackWord((UInt_t)manuId,word,18,28);
    AliBitPacking::PackWord((UInt_t)channelId,word,12,17);
    AliBitPacking::PackWord((UInt_t)charge,word,0,11);
    
    // parity word
    parity = word & 0x1;
    for (Int_t i = 1; i <= 30; ++i) 
    {
      parity ^=  ((word >> i) & 0x1);
    }
    AliBitPacking::PackWord((UInt_t)parity,word,31,31);

    if ( currentBusPatchId != busPatchId ) 
    {
      busStruct = 
        static_cast<AliMUONBusStruct*>(busPatchMap.GetValue(busPatchId));
      currentBusPatchId = busPatchId;
    }
    
    if (!busStruct)
    {
      busStruct = new AliMUONBusStruct;
      busStruct->SetDataKey(busStruct->GetDefaultDataKey());
      busStruct->SetBusPatchId(busPatchId);
      busStruct->SetLength(0);
      busPatchMap.Add(busPatchId,busStruct);
    }
    
    // set sub Event
    busStruct->AddData(word);
  }
}

//______________________________________________________________________________
void
AliMUONRawWriter::WriteTrackerDDL(AliMpExMap& busPatchMap, Int_t iDDL)
{
  /// Write DDL file for one tracker DDL
  
  // buffer size (max'ed out)
  // (((43 manus max per bus patch *64 channels + 4 bus patch words) * 5 bus patch 
  //   + 10 dsp words)*5 dsps + 8 block words)*2 blocks 
 
  AliCodeTimerAuto("",0)

  if (fHeader == 0x0) {
    AliError("Raw data header must be set");
    return;
  }
  memset(fBuffer,0,fBufferSize*sizeof(Int_t));
  
  AliMpDDL* ddl = fDDLStore->GetDDL(iDDL);
  Int_t iDspMax = ddl->GetMaxDsp();
  Int_t iBusPerDSP[5]; //number of bus patches per DSP
  ddl->GetBusPerDsp(iBusPerDSP);
  Int_t busIter = 0;
  
  Int_t totalDDLLength = 0;
  
  Int_t index = 0;
  
  // two blocks A and B per DDL
  for (Int_t iBlock = 0; iBlock < 2; ++iBlock) 
  {
    // block header
    Int_t length = fBlockHeader->GetHeaderLength();
    memcpy(&fBuffer[index],fBlockHeader->GetHeader(),length*4);
    Int_t indexBlk = index;
    index += length; 
    
    // 5 DSP's max per block
    for (Int_t iDsp = 0; iDsp < iDspMax; ++iDsp) 
    {
      // DSP header
      Int_t dspHeaderLength = fDspHeader->GetHeaderLength();
      memcpy(&fBuffer[index],fDspHeader->GetHeader(),dspHeaderLength*4);
      Int_t indexDsp = index;
      index += dspHeaderLength; 
      
      // 5 buspatches max per DSP
      for (Int_t i = 0; i < iBusPerDSP[iDsp]; ++i) 
      {
        Int_t iBusPatch = ddl->GetBusPatchId(busIter++);
        
        // iteration over bus patch in DDL
        if (iBusPatch == -1) 
        {
          AliWarning(Form("Error in bus itr in DDL %d\n", iDDL));
          continue;
        }
        
        AliMUONBusStruct* busStructPtr = static_cast<AliMUONBusStruct*>(busPatchMap.GetValue(iBusPatch));
        
        // check if buspatchid has digit
        if (busStructPtr) 
        {
          // add bus patch structure header
          Int_t busHeaderLength = busStructPtr->GetHeaderLength();
          memcpy(&fBuffer[index],busStructPtr->GetHeader(),busHeaderLength*4);
          index += busHeaderLength;
          
          // add bus patch data
          Int_t busLength = busStructPtr->GetLength();
          memcpy(&fBuffer[index],busStructPtr->GetData(),busLength*4);
          index += busLength;
        } 
        else 
        {
          // writting anyhow buspatch structure (empty ones)
          fBuffer[index++] = busStructPtr->GetDefaultDataKey(); // fill it also for empty data size
          fBuffer[index++] = busStructPtr->GetHeaderLength(); // header length
          fBuffer[index++] = 0; // raw data length
          fBuffer[index++] = iBusPatch; // bus patch
        }
      } // bus patch
      
      // check if totalLength even
      // set padding word in case
      // Add one word 0xBEEFFACE at the end of DSP structure
      Int_t totalDspLength  = index - indexDsp;
      if ((totalDspLength % 2) == 1) 
      { 
        fBuffer[indexDsp + fDspHeader->GetHeaderLength() - 2] = 1;
        fBuffer[index++] = fDspHeader->GetDefaultPaddingWord();
        totalDspLength++;
      }
      
      Int_t dspLength     = totalDspLength - fDspHeader->GetHeaderLength();
      
      fBuffer[indexDsp+1] = totalDspLength; // dsp total length
      fBuffer[indexDsp+2] = dspLength; // data length  
      
    } // dsp
    
    Int_t totalBlkLength  = index - indexBlk;
    Int_t blkLength       = totalBlkLength - fBlockHeader->GetHeaderLength();
    totalDDLLength       += totalBlkLength;
    
    fBuffer[indexBlk+1] = totalBlkLength; // total block length
    fBuffer[indexBlk+2] = blkLength;
        
  } // block
  
    // add twice the end of CRT structure data key
    // hope it's good placed (ChF)
    fBuffer[index++] = fBlockHeader->GetDdlDataKey();
    fBuffer[index++] = fBlockHeader->GetDdlDataKey();
    totalDDLLength  += 2;
  
  // writting onto disk
  // total length in bytes
  // DDL header

  Int_t headerSize = sizeof(AliRawDataHeaderV3)/4;
  
  fHeader->fSize = (totalDDLLength + headerSize) * 4;
  
  AliFstream* file = new AliFstream(AliDAQ::DdlFileName("MUONTRK",iDDL));
  
  file->WriteBuffer((char*)fHeader,headerSize*4);
  file->WriteBuffer((char*)fBuffer,sizeof(int)*index);
  delete file;
}

//______________________________________________________________________________
Int_t AliMUONRawWriter::GetBusPatch(const AliMUONVDigit& digit) const
{
  /// Determine the BusPatch this digit belongs to.

    return fDDLStore->GetBusPatchId(digit.DetElemId(),digit.ManuId());
}

//______________________________________________________________________________
Int_t AliMUONRawWriter::WriteTriggerDDL(const AliMUONVTriggerStore& triggerStore, AliFstream* file[2])
{
  /// Write trigger DDL
  
  AliCodeTimerAuto("",0)

  if (fHeader == 0x0) {
    AliError("Raw data header must be set");
    return 0;
  }

 // DDL event one per half chamber

 // DDL header size
  Int_t headerSize = sizeof(AliRawDataHeaderV3)/4;

  // global trigger for trigger pattern
  AliMUONGlobalTrigger* gloTrg = triggerStore.Global();
  if (!gloTrg) 
  {
    return 0;
  }
  
  Int_t gloTrigResp = gloTrg->GetGlobalResponse();
  UInt_t *gloTrigInput = gloTrg->GetGlobalInput();

  UInt_t word;
  Int_t* buffer = 0;
  Int_t index;
  UChar_t locDec, trigY, posY, posX, regOut;
  UInt_t regInpLpt;
  UInt_t regInpHpt;

  UInt_t devX;
  UChar_t sdevX;
  UInt_t version = 1; // software version
  UInt_t eventPhys = 1; // trigger type: 1 for physics, 0 for software
  UInt_t serialNb = 0xF; // serial nb of card: all bits on for the moment
  Int_t globalFlag = 0; // set to 1 if global info present in DDL else set to 0

  // size of headers
  static const Int_t kDarcHeaderLength   = fDarcHeader->GetDarcHeaderLength();
  static const Int_t kGlobalHeaderLength = fDarcHeader->GetGlobalHeaderLength();
  static const Int_t kDarcScalerLength   = fDarcHeader->GetDarcScalerLength();
  static const Int_t kGlobalScalerLength = fDarcHeader->GetGlobalScalerLength();
  static const Int_t kRegHeaderLength    = fRegHeader->GetHeaderLength();
  static const Int_t kRegScalerLength    = fRegHeader->GetScalerLength();
  static const Int_t kLocHeaderLength    = fLocalStruct->GetLength();
  static const Int_t kLocScalerLength    = fLocalStruct->GetScalerLength();

  // [16(local)*6 words + 6 words]*8(reg) + 8 words = 824 
  static const Int_t kBufferSize = (16 * (kLocHeaderLength+1) +  (kRegHeaderLength+1))* 8 
      +  kDarcHeaderLength + kGlobalHeaderLength + 2;

  // [16(local)*51 words + 16 words]*8(reg) + 8 + 10 + 8 words scaler event 6682 words
  static const Int_t kScalerBufferSize = (16 * (kLocHeaderLength +  kLocScalerLength +1) +  
					 (kRegHeaderLength + kRegScalerLength +1))* 8 +
                                         (kDarcHeaderLength + kDarcScalerLength + 
					  kGlobalHeaderLength + kGlobalScalerLength + 2);
  if(fScalerEvent) {
    eventPhys = 0; //set to generate scaler events
    fHeader->fWord2 |= (0x1 << 14); // set L1SwC bit on
  }
  if(fScalerEvent)
    buffer = new Int_t [kScalerBufferSize];
  else
    buffer = new Int_t [kBufferSize];

  // reset crate

  // open DDL file, on per 1/2 chamber
  for ( Int_t iDDL = 0; iDDL < 2; ++iDDL ) 
  {
    index = 0; 

    if (iDDL == 0) // suppose global info in DDL one
      globalFlag = 1;
    else 
      globalFlag = 0;

    word = 0;
    // set darc status word
    // see AliMUONDarcHeader.h for details
    AliBitPacking::PackWord((UInt_t)eventPhys,word,30,30);
    AliBitPacking::PackWord((UInt_t)serialNb,word,20,23);
    AliBitPacking::PackWord((UInt_t)globalFlag,word,10,10);
    AliBitPacking::PackWord((UInt_t)version,word,12,19);
    fDarcHeader->SetWord(word);

    memcpy(&buffer[index], fDarcHeader->GetHeader(), (kDarcHeaderLength)*4); 
    index += kDarcHeaderLength;

    // no global input for the moment....
    if (iDDL == 0) {
      fDarcHeader->SetGlobalOutput(gloTrigResp);
      for (Int_t ii = 0; ii < 4; ii++) {
	fDarcHeader->SetGlobalInput(gloTrigInput[ii],ii);
      }
    } else {
      fDarcHeader->SetGlobalOutput(0);
    }

    if (fScalerEvent) {
      // 6 DARC scaler words
      memcpy(&buffer[index], fDarcHeader->GetDarcScalers(),kDarcScalerLength*4);
      index += kDarcScalerLength;
    }
    // end of darc word
    buffer[index++] = fDarcHeader->GetEndOfDarc();

    // 4 words of global board input + Global board output
    memcpy(&buffer[index], fDarcHeader->GetGlobalInput(), (kGlobalHeaderLength)*4); 
    index += kGlobalHeaderLength; 

    if (fScalerEvent) {
      // 10 Global scaler words
      memcpy(&buffer[index], fDarcHeader->GetGlobalScalers(), kGlobalScalerLength*4);
      index += kGlobalScalerLength;
    }

    // end of global word
    buffer[index++] = fDarcHeader->GetEndOfGlobal();
    const AliMpRegionalTrigger* reg = AliMpDDLStore::Instance()->GetRegionalTrigger(); 

    Int_t nCrate = reg->GetNofTriggerCrates()/2;
    // 8 regional cards per DDL
    for (Int_t iReg = 0; iReg < nCrate; ++iReg) {

        // crate info
      AliMpTriggerCrate* crate = AliMpDDLStore::Instance()->GetTriggerCrate(iDDL, iReg);

      if (!crate) {
        AliError(Form("Missing crate number %d in DDL %d\n", iReg, iDDL));
        continue;
      }  

      // regional info tree, make sure that no reg card missing
      AliMUONRegionalTrigger* regTrg  = triggerStore.FindRegional(crate->GetId());
      if (!regTrg) {
        AliError(Form("Missing regional board %d in trigger Store\n", crate->GetId()));
        continue;
      }  
    
      // Regional card header
      word = 0;

      // set darc status word
      fRegHeader->SetDarcWord(word);

      regOut    = regTrg->GetOutput();
      regInpLpt = regTrg->GetLocalOutput(0);
      regInpHpt = regTrg->GetLocalOutput(1);

      // fill darc word, not darc status for the moment (empty)
      //see  AliMUONRegHeader.h for details
      AliBitPacking::PackWord((UInt_t)eventPhys,word,31,31); 
      AliBitPacking::PackWord((UInt_t)serialNb,word,20,25); 
      AliBitPacking::PackWord((UInt_t)version,word,8,15);
      AliBitPacking::PackWord((UInt_t)crate->GetId(),word,16,19);
      AliBitPacking::PackWord((UInt_t)regOut,word,0,7); 
      fRegHeader->SetWord(word);


      // fill header later, need local response
      Int_t indexReg = index;
      index += kRegHeaderLength;

      // 11 regional scaler word
      if (fScalerEvent) {
	memcpy(&buffer[index], fRegHeader->GetScalers(), kRegScalerLength*4);
	index += kRegScalerLength;
      }

      // end of regional word
      buffer[index++] = fRegHeader->GetEndOfReg();
      
      // 16 local card per regional board
      //      UShort_t localMask = 0x0;
      
      Int_t nLocalBoard = AliMpConstants::LocalBoardNofChannels();

      for (Int_t iLoc = 0; iLoc < nLocalBoard; iLoc++) {
	  
	// slot zero for Regional card
	Int_t localBoardId = crate->GetLocalBoardId(iLoc);

	if (localBoardId) { // if not empty slot
	  AliMpLocalBoard* localBoard = AliMpDDLStore::Instance()->GetLocalBoard(localBoardId);

	  if (localBoard->IsNotified()) {// if notified board 
	    AliMUONLocalTrigger* locTrg = triggerStore.FindLocal(localBoardId);

      if (locTrg)
      {
        locDec  = locTrg->GetLoDecision();
        trigY   = locTrg->LoTrigY();
        posY    = locTrg->LoStripY();
        posX    = locTrg->LoStripX();
        devX    = locTrg->LoDev();
        sdevX   = locTrg->LoSdev();
        
        AliDebug(4,Form("loctrg %d, posX %d, posY %d, devX %d\n", 
                        locTrg->LoCircuit(),locTrg->LoStripX(),locTrg->LoStripY(),locTrg->LoDev()));  
        //packing word
        word = 0;
        LocalWordPacking(word, (UInt_t)iLoc, (UInt_t)locDec, (UInt_t)trigY, (UInt_t)posY, 
                         (UInt_t)posX, (UInt_t)sdevX, (UInt_t)devX);
        
        buffer[index++] = (locTrg->GetX1Pattern() | (locTrg->GetX2Pattern() << 16));
        buffer[index++] = (locTrg->GetX3Pattern() | (locTrg->GetX4Pattern() << 16));
        buffer[index++] = (locTrg->GetY1Pattern() | (locTrg->GetY2Pattern() << 16));
        buffer[index++] = (locTrg->GetY3Pattern() | (locTrg->GetY4Pattern() << 16));
        buffer[index++] = (Int_t)word; // data word
      }
	  }
	  // fill copy card X-Y inputs from the notified cards 
	  if (localBoard->GetInputXfrom() && localBoard->GetInputYfrom()) 
	  {
	    // not triggered
	    locDec = 0; trigY = 1; posY = 15; 	 
	    posX   = 0; devX  = 0; sdevX = 1;
	    LocalWordPacking(word, (UInt_t)iLoc, (UInt_t)locDec, (UInt_t)trigY, (UInt_t)posY, 
			     (UInt_t)posX, (UInt_t)sdevX, (UInt_t)devX);

	    Int_t localFromId = localBoard->GetInputXfrom();
	    AliMUONLocalTrigger* locTrgfrom  = triggerStore.FindLocal(localFromId);

      if ( locTrgfrom ) 
      {
        buffer[index++] = 0; // copy only X3-4 & Y1-4
        buffer[index++] = (locTrgfrom->GetX3Pattern() | (locTrgfrom->GetX4Pattern() << 16));
        buffer[index++] = (locTrgfrom->GetY1Pattern() | (locTrgfrom->GetY2Pattern() << 16));
        buffer[index++] = (locTrgfrom->GetY3Pattern() | (locTrgfrom->GetY4Pattern() << 16));
        buffer[index++] = word;
      }
	  }

	} else { 
	  // fill with 10CDEAD word for empty slots
	  for (Int_t i = 0; i < fLocalStruct->GetLength(); i++)
	      buffer[index++] = fLocalStruct->GetDisableWord(); 
	}// condition localBoard
	  
	// 45 regional scaler word
	if (fScalerEvent) {
	  memcpy(&buffer[index], fLocalStruct->GetScalers(), kLocScalerLength*4);
	  index += kLocScalerLength;
	}
	  
	// end of local structure words
	buffer[index++] = fLocalStruct->GetEndOfLocal();
	  
      } // local card 
      // fill regional header with local output
      fRegHeader->SetInput(regInpLpt, 0);
      fRegHeader->SetInput(regInpHpt, 1);
      memcpy(&buffer[indexReg],fRegHeader->GetHeader(),kRegHeaderLength*4);
      
    } // Regional card
    

    // writting onto disk
    // write DDL's
    fHeader->fSize = (index + headerSize) * 4;// total length in bytes
    file[iDDL]->WriteBuffer((char*)fHeader,headerSize*4);
    file[iDDL]->WriteBuffer((char*)buffer,sizeof(int)*index);
  
  }
  delete[] buffer;

  return kTRUE;
}

//____________________________________________________________________
void AliMUONRawWriter::SetScalersNumbers()
{
  /// set numbers for scaler events for trigger headers
  /// since this is provided by the experiment
  /// put dummy numbers to check the monitoring

  fDarcHeader->SetScalersNumbers();
  fRegHeader->SetScalersNumbers();
  fLocalStruct->SetScalersNumbers();
 
  fScalerEvent = kTRUE;
}

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