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


//This class contains all the necessary methods to create the Raw Data
//files (slides) for the ITS data challenges for:
//SPD 
//SDD
//SSD

#include <stdlib.h>
//#include <Riostream.h>
#include <TClonesArray.h>
#include <TTree.h>
#include "AliITSdigit.h"
#include "AliITSDDLRawData.h"
#include "AliRawDataHeaderSim.h"
#include "AliITSRawStreamSPD.h"
#include "AliITSRawStreamSDD.h"
#include "AliITSDDLModuleMapSDD.h"
#include "AliITSRawStreamSSD.h"
#include "AliITSIntMap.h"
#include "AliBitPacking.h"
#include "AliDAQ.h"
#include "AliFstream.h"
#include "AliITSFOSignalsSPD.h"

using std::ofstream;
using std::ios;
using std::endl;
ClassImp(AliITSDDLRawData)

////////////////////////////////////////////////////////////////////////////////////////
AliITSDDLRawData::AliITSDDLRawData():
fVerbose(0),
fIndex(-1),
fHalfStaveModule(-1),
fSDDRawFormat(7){
  //Default constructor

}

////////////////////////////////////////////////////////////////////////////////////////

AliITSDDLRawData::AliITSDDLRawData(const AliITSDDLRawData &source) : 
    TObject(source),
fVerbose(source.fVerbose),
fIndex(source.fIndex),
fHalfStaveModule(source.fHalfStaveModule),
fSDDRawFormat(source.fSDDRawFormat){
  //Copy Constructor
}

////////////////////////////////////////////////////////////////////////////////////////

AliITSDDLRawData& AliITSDDLRawData::operator=(const AliITSDDLRawData &source){
  //Assigment operator
  if(this==&source) return *this;
  fIndex=source.fIndex;
  fHalfStaveModule=source.fHalfStaveModule;
  fVerbose=source.fVerbose;
  fSDDRawFormat=source.fSDDRawFormat;
  return *this;
}

////////////////////////////////////////////////////////////////////////////////////////
//STRIP 
//

void AliITSDDLRawData::GetDigitsSSD(TClonesArray *ITSdigits,Int_t mod,Int_t modR,Int_t ddl,UInt_t *buf){
  //This method packs the SSD digits in a proper 32 bits structure
  // Revised by Enrico Fragiacomo
  Int_t ix;
  Int_t iz;
  Int_t is;
  UInt_t word;
  UInt_t baseWord;
  Int_t ndigits = ITSdigits->GetEntries();
  AliITSdigit *digs;
  ofstream ftxt;
  if(ndigits){
    if (fVerbose==2){
      ftxt.open("SSDdigits.txt",ios::app);
    }
    for (Int_t digit=0;digit<ndigits;digit++) {
      digs = (AliITSdigit*)ITSdigits->UncheckedAt(digit);
      iz=digs->GetCoord1();  // If iz==0, O side and if iz=1 N side
      ix=digs->GetCoord2();  // Strip Number
      is=digs->GetCompressedSignal();  // ADC Signal
      // cout<<" Module:"<<mod-500<<" N/P side:"<<iz<<" Strip Number:"<<ix<<" Amplidute:"<<is-1<<endl;
      if(is<0) is = 0;
      if(is>4095) is = 4095;
      if (fVerbose==2)
	ftxt<<"DDL:"<<ddl<<" Mod: "<<modR<<" N/P: "<<iz<<" Strip: "<<ix<<" Value: "<<is-1<<endl;

      baseWord=0;

      word=is;
      AliBitPacking::PackWord(word,baseWord,0,11);//ADC data

      word = (iz==0) ? ix : 1535-ix ; // on N-side 1535-768 -> 0-767
      AliBitPacking::PackWord(word,baseWord,12,22);//Strip Number

      word = mod%12; // ADC-number (12 ADCs per AD module)
      word += ( word<6 ) ? 0 : 2; // ADC range 0-5 and 8-13
      AliBitPacking::PackWord(word,baseWord,24,27);//ADC Channel

      word = mod/12+1; // AD-number (AD module index ranges 1-9)
      AliBitPacking::PackWord(word,baseWord,28,31);//AD slot
      fIndex++;
      buf[fIndex]=baseWord;
    }//end for
  }//end if
  if (fVerbose==2)
    ftxt.close();
  return;
}//end GetDigitsSSD

////////////////////////////////////////////////////////////////////////////////////////
//Silicon Drift Detector
//

void AliITSDDLRawData::GetDigitsSDDCompressed(TClonesArray *ITSdigits, Int_t mod, UInt_t *buf){ 
//This method packs the SDD digits in the compressed format (32 bit per digit)
// see AliITSRawStreamSDDCompressed for details on the dta format

  UInt_t dataWord=0;
  Int_t ndigits = ITSdigits->GetEntries();
  AliITSdigit *digs;
  if(ndigits){
    for (Int_t digit=0;digit<ndigits;digit++) {
      digs = (AliITSdigit*)ITSdigits->UncheckedAt(digit);
      Int_t iz=digs->GetCoord1();  // Anode
      Int_t ix=digs->GetCoord2();  // Time
      Int_t is=digs->GetCompressedSignal();  // ADC Signal - 8 bit
      dataWord=mod<<27;
      Int_t sid=0;
      if(iz>=256){
	sid=1;
	iz-=256;
      }
      dataWord+=sid<<26;
      dataWord+=iz<<18;
      dataWord+=ix<<10;
      UInt_t adcEncoded=0;
      Int_t shift=0;
      if(is < 8) shift=2;
      else if(is<16) shift=3;
      else if(is<32) shift=4;
      else if(is<64) shift=5;
      else if(is<128) shift=6;
      else shift=7;
      adcEncoded=shift+((is-(1<<shift))<<3);
      dataWord+=adcEncoded;
      fIndex++;
      buf[fIndex]=dataWord;
    }
  }
  UInt_t finalWord=UInt_t(15)<<28;
  finalWord+=mod;
  fIndex++;
  buf[fIndex]=finalWord;  
}

//______________________________________________________________________

void AliITSDDLRawData::GetDigitsSDD(TClonesArray *ITSdigits,Int_t mod,Int_t modR,Int_t ddl,UInt_t *buf){  
  //This method packs the SDD digits in a proper 32 bits structure
  Int_t ix;
  Int_t iz;
  Int_t is;
  UInt_t word=0;
  UInt_t baseWord=0;
  Int_t ndigits = ITSdigits->GetEntries();
  AliITSdigit *digs;
  ofstream ftxt;
  Int_t digarr[512][256];
  for(Int_t i=0;i<512;i++){
    for(Int_t j=0;j<256;j++){
      digarr[i][j]=0;
    }
  }
  //word to select the 12 carlos for the 12 modules
  UInt_t carlosid=0x30000000+mod;
  
  fIndex++;
  buf[fIndex]=carlosid;
  Int_t first=0;
  Int_t last=0;
  Int_t diff=0;
  Int_t nbit=0;
  UInt_t word2=0;
  Bool_t flag = kFALSE;
  baseWord=0;
  Int_t bitinfo1[4] = {3,8,3,7}; //vector with info on bit for timebin info 
  Int_t wordinfo1[4]= {0,0,0,0}; //vector with word info for timebin info 
  Int_t bitinfo2[2] = {3,18};    //vector with info on bit for EOR (end of row) info
  Int_t wordinfo2[3]= {1,65593}; //vector with word info for anode info

  /* for time bin info: word          n bits   meaning
                         0               3      next info is timebin 
                         8               3      next word is 8 bit long
                       tb value          8      timebin value
		       n (2->7)          3      next info is n bit long
		        signal           n      signal value

     for anode info:     1               3      next 18 bits are for EOR 
                                                increments the anode value

                         EOR             18     error codes + other info
  */
             
  if(ndigits){
    if (fVerbose==2)
      ftxt.open("SDDdigits.txt",ios::app);
    for (Int_t digit=0;digit<ndigits;digit++) {
      digs = (AliITSdigit*)ITSdigits->UncheckedAt(digit);
      iz=digs->GetCoord1();  // Anode
      ix=digs->GetCoord2();  // Time
      is=digs->GetCompressedSignal();  // ADC Signal
      digarr[iz][ix]=is;
      if (fVerbose==2)
	ftxt<<"DDL:"<<ddl<<" MID:"<<modR<<" An:"<<iz<<" T:"<<ix<<" A:"<<is<<endl;
      if (is>255){Error("GetDigitsSDD", "bits words is needed)!!!");}
    }
      
    for(Int_t anode=0;anode<512;anode++){
      if(flag){
	last = first+diff-1;
	AliBitPacking::PackWord(word2,baseWord,first,last);
	flag = kFALSE;
	first = last+1;
	diff=0;
      }
      if(anode == 256){
	last = 0;
	first = 0;
	flag = kFALSE;
	diff = 0;
	word2=0;
      }
      
      for(Int_t tb=0;tb<256;tb++){
	if(digarr[anode][tb]!=0){
	  if(flag){      
	    last = first+diff-1;
	    AliBitPacking::PackWord(word2,baseWord,first,last);
	    flag = kFALSE;
	    first = last+1;
	    diff=0;
	  }
	  wordinfo1[1] = tb;
	  //non lossy compression as it is done in Carlos 
	  //(data are already 10to8bit compressed by AMBRA

	  /* if value < 8  value = value - (1 << 2) (word is 2 bit long) 
             if value < 16 value = value - (1 << 3) (word is 3 bit long)
             if value < 32 value = value - (1 << 4) (word is 4 bit long)
	     if value < 64 value = value - (1 << 5) (word is 5 bit long)
	     if value <128 value = value - (1 << 6) (word is 6 bit long)
	     if value >=128value = value - (1 << 7) (word is 7 bit long)

	  */
	  //if(digarr[anode][tb]<4) continue; // not write <4 cnts above tL
	  if(digarr[anode][tb]<8){
	    bitinfo1[3] = 2;
	    wordinfo1[2] = 2;
	    wordinfo1[3] = digarr[anode][tb]-(1 << bitinfo1[3]);
	  }	  	  
	  if(digarr[anode][tb]>=8 && digarr[anode][tb]<16){
	    bitinfo1[3] = 3;
	    wordinfo1[2] = 3;
	    wordinfo1[3] = digarr[anode][tb]-(1 << bitinfo1[3]);
	  }
	  if(digarr[anode][tb]>=16 && digarr[anode][tb]<32){
	    bitinfo1[3] = 4;
	    wordinfo1[2] = 4;
	    wordinfo1[3] = digarr[anode][tb]-(1 << bitinfo1[3]);
	  }
	  if(digarr[anode][tb]>=32 && digarr[anode][tb]<64){
	    bitinfo1[3] = 5;
	    wordinfo1[2] = 5;
	    wordinfo1[3] = digarr[anode][tb]-(1 << bitinfo1[3]);
	  }
	  if(digarr[anode][tb]>=64 && digarr[anode][tb]<128){
	    bitinfo1[3] = 6;
	    wordinfo1[2] = 6;
	    wordinfo1[3] = digarr[anode][tb]-(1 << bitinfo1[3]);
	  }
	  if(digarr[anode][tb]>=128){
	    bitinfo1[3] = 7;
	    wordinfo1[2] = 7;
	    wordinfo1[3] = digarr[anode][tb]-(1 << bitinfo1[3]);
	  }
	  
	  for(Int_t ie=0;ie<4;ie++){
	    
	    if(flag){      
	      last = first+diff-1;
	      AliBitPacking::PackWord(word2,baseWord,first,last);
	      flag = kFALSE;
	      first = last+1;
	      diff=0;
	    }
	    last = first+bitinfo1[ie]-1;
	    if(first < 30 && last < 30){	  	  
	      AliBitPacking::PackWord(wordinfo1[ie],baseWord,first,last); 
	      first = last+1;
	    }
	    else{
	      if(first<=29){
		UInt_t w = AliBitPacking::UnpackWord(wordinfo1[ie],0,29-first);
		AliBitPacking::PackWord(w,baseWord,first,29);
		Int_t lb = 29-first+1;
		diff = bitinfo1[ie]-lb;
		word2 = AliBitPacking::UnpackWord(wordinfo1[ie],lb,lb+diff-1);
		flag = kTRUE;
		if(anode<256) word = 2;//channel 0 of carlos
		else word = 3; //channel 1 of carlos
		AliBitPacking::PackWord(word,baseWord,30,31);
		fIndex++;
		buf[fIndex]=baseWord;
		first=0;
		last = 0;
		baseWord=0;
		word = 0;
	      }
	      else{
		word2 = wordinfo1[ie];
		diff = bitinfo1[ie];
		flag = kTRUE;
		if(anode<256) word = 2; //channel 0 of carlos
		else word = 3; //channel 1 of carlos
		AliBitPacking::PackWord(word,baseWord,30,31);
		fIndex++;
		buf[fIndex]=baseWord;
		first=0;
		last=0;
		baseWord=0;
		word = 0;
	      }
	    }
	  }
	  
	}//END IF
	
      }//end loop on tb
    
      for(Int_t i=0;i<2;i++){
	if(flag){      
	  last = first+diff-1;
	  AliBitPacking::PackWord(word2,baseWord,first,last);
	  flag = kFALSE;
	  first = last+1;
	  diff=0;
	}
	
	word = wordinfo2[i];
	nbit = bitinfo2[i];
	last = first+nbit-1;
	if(first < 30 && last < 30){	  	  
	  AliBitPacking::PackWord(word,baseWord,first,last); //3 bit code =1 -> next 18 bits for EOR
	  first = last+1;
	}
	
	else{
	  if(first<=29){
	    UInt_t w = AliBitPacking::UnpackWord(word,0,29-first);
	    AliBitPacking::PackWord(w,baseWord,first,29);
	    Int_t lb = 29-first+1;
	    diff = nbit-lb;	   
	    word2 = AliBitPacking::UnpackWord(word,lb,lb+diff-1);
	    flag = kTRUE;
	    if(anode<256) word = 2;
	    else word = 3;
	    AliBitPacking::PackWord(word,baseWord,30,31);
	    fIndex++;
	    buf[fIndex]=baseWord;
	    first=0;
	    last = 0;
	    baseWord=0;
	    if(anode==255){
	      flag=kFALSE;
	      word2=0;
	    }
	  }
	  else{
	    word2 = word;
	    diff = nbit;
	    flag = kTRUE;
	    if(anode<256) word = 2;
	    else word = 3;
	    AliBitPacking::PackWord(word,baseWord,30,31);
	    fIndex++;
	    buf[fIndex]=baseWord;
	    first=0;
	    last=0;
	    baseWord=0;
	    if(anode==255){
	      flag=kFALSE;
	      word2=0;
	    }
	  }
	}
      }
    } //end for
    
  }
  if(fVerbose==2)
    ftxt.close();
  return;
}//end GetDigitsSDD

////////////////////////////////////////////////////////////////////////////////////////
//PIXEL 
//

void AliITSDDLRawData::GetDigitsSPD(TClonesArray *ITSdigits,Int_t mod,Int_t ddl, UInt_t *buf, AliITSFOSignalsSPD* foSignals){
  //This method packs the SPD digits in a proper 32 structure
  //Since data is zero suppressed,the coordinates for the chip having zero digits 
  //doesn't get listed in the galice.root file. However the SPD format requires 
  //the empty chip to be written with chip header and chip trailer.

  Int_t chipLow  = AliITSRawStreamSPD::GetOnlineChipFromOffline(mod,0);
  Int_t chipHigh = AliITSRawStreamSPD::GetOnlineChipFromOffline(mod,159);

  if (chipLow>chipHigh) {chipLow  -= 4; chipHigh += 4;}
  UInt_t eq = AliITSRawStreamSPD::GetOnlineEqIdFromOffline(mod);
  UInt_t hs = AliITSRawStreamSPD::GetOnlineHSFromOffline(mod);

  // create int map to later hold all digits sorted
  AliITSIntMap* digMap = new AliITSIntMap();

  UInt_t baseWord=0;
 
  Int_t ndigits = ITSdigits->GetEntries(); //number of digits in the current module
  //cout<<"      Number of digits in the current module:"<<ndigits<<" module:"<<mod<<endl;

  // _______________________________________________________________________
  // Preprocess the digits - sort them in integer map (Henrik Tydesjo)
  // Needed to have exact same order as in real raw data
  AliITSdigit *digs;
 ofstream ftxt;
  if (ndigits) {
    //loop over digits
    if (fVerbose==2) ftxt.open("SPDdigits.txt",ios::app);
    for (Int_t digit=0; digit<ndigits; digit++) {
      digs = (AliITSdigit*) ITSdigits->UncheckedAt(digit);
      /*---------------------------------------------------------------------------
       *     Each module contains 5 read out chips of 256 rows and 32 columns.
       *     So, the cell number in Z direction varies from 0 to 159.
       *     ---------------------------------------------------------------------*/
      Int_t iz=digs->GetCoord1();  // Cell number in Z direction 
      Int_t ix=digs->GetCoord2();  // Cell number in X direction

      if(fVerbose==2) ftxt<<"DDL:"<<ddl<<" Mod:"<<mod<<" Row:"<<ix<<" Col:"<<iz<<endl;
      UInt_t dummyDDL, dummyHS, chip, col, row;
      AliITSRawStreamSPD::OfflineToOnline(mod,iz,ix,dummyDDL,dummyHS,chip,col,row);

      //  insert digit into map...
      // (reverse order of cols and rows as in real raw data)
      digMap->Insert(chip*256*32+(31-col)*256+(255-row),row);
    }
  }

   // _______________________________________________________________________
  // Procedure for writing raw data (Henrik Tydesjo)
  // Reimplemented because of unreadability (5 Mar 2009)
  // Now also with fast-or signals
  Int_t  previousChip = chipLow-1;
  Int_t  chip         = chipLow-1;
  UInt_t chipHitCount = 0;


  UInt_t nrHits = digMap->GetNrEntries();
  for (UInt_t nHit=0; nHit<nrHits; nHit++) {

    Int_t key  = digMap->GetKeyIndex(nHit);
    chip = key/(256*32);
    Int_t col  = 31 - (key%(256*32))/256;
    Int_t row  = digMap->GetValIndex(nHit);

    // add trailer for previous chip (if there was one...)
    if (chip>previousChip && previousChip>chipLow-1) {
      WriteChipTrailer(buf, chipHitCount, foSignals->GetSignal(eq,hs,previousChip), baseWord);
    }

    // add headers/trailers for chips without hits (if any)
    for (Int_t ch=previousChip+1; ch<chip; ch++) {
      WriteChipHeader(ch, hs, baseWord);
      WriteChipTrailer(buf, 0, foSignals->GetSignal(eq,hs,ch), baseWord);
    }

    // if new chip, add header
    if (chip>previousChip) {
      WriteChipHeader(chip, hs, baseWord);
      chipHitCount = 0;
      previousChip = chip;
    }

    chipHitCount++;

    // add pixel hit
    WriteHit(buf,row,col,baseWord);

  }

  // add trailer for last chip (if there was one...)
  if (chip>chipLow-1) {
    WriteChipTrailer(buf, chipHitCount, foSignals->GetSignal(eq,hs,chip), baseWord);
  }

  // add REMAINING headers/trailers for chips without hits (if any)
  for (Int_t ch=chip+1; ch<=chipHigh; ch++) {
    WriteChipHeader(ch, hs, baseWord);
    WriteChipTrailer(buf, 0, foSignals->GetSignal(eq,hs,ch), baseWord);
  }
  // _______________________________________________________________________


  delete digMap;

  if(fVerbose==2)
    ftxt.close();
  return;
}//end GetDigitsSPD

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Int_t AliITSDDLRawData::RawDataSPD(TBranch* branch, AliITSFOSignalsSPD* foSignals){
  //This method creates the Raw data files for SPD detectors
  const Int_t kSize=21000; //256*32*5=40960 max number of digits per module
  UInt_t buf[kSize];      //One buffer cell can contain 2 digits 
  fIndex=-1;

  TClonesArray*& digits = * (TClonesArray**) branch->GetAddress();
  TString fileName;
  AliFstream* outfile;         // logical name of the output file 
  AliRawDataHeaderSim header;

  //loop over DDLs
  for(Int_t ddl=0;ddl<AliDAQ::NumberOfDdls("ITSSPD");ddl++){
    fileName.Form("%s",AliDAQ::DdlFileName("ITSSPD",ddl)); //The name of the output file.
    outfile = new AliFstream(fileName.Data());
    //write Dummy DATA HEADER
    UInt_t dataHeaderPosition=outfile->Tellp();
    outfile->WriteBuffer((char*)(&header),sizeof(header));
    //Loops over Modules of a particular DDL
    for (Int_t mod=0; mod<AliITSRawStreamSPD::kModulesPerDDL; mod++){
      Int_t moduleNumber = AliITSRawStreamSPD::GetModuleNumber(ddl, mod);
      digits->Clear();
      branch->GetEvent(moduleNumber);
      //For each Module, buf contains the array of data words in Binary format	  
      //fIndex gives the number of 32 bits words in the buffer for each module
      GetDigitsSPD(digits, moduleNumber, ddl, buf, foSignals);
      outfile->WriteBuffer((char *)buf,((fIndex+1)*sizeof(UInt_t)));
      for(Int_t i=0;i<(fIndex+1);i++){
	buf[i]=0;
      }//end for
      fIndex=-1;
    }//end for
    
    //Write REAL DATA HEADER
    UInt_t currentFilePosition=outfile->Tellp();
    outfile->Seekp(dataHeaderPosition);
    header.fSize=currentFilePosition-dataHeaderPosition;
    outfile->WriteBuffer((char*)(&header),sizeof(header));
    delete outfile;
  }//end for

  return 0;  
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Int_t AliITSDDLRawData::RawDataSSD(TBranch* branch){

    //This method creates the Raw data files for SSD detectors
  const Int_t kSize=1536;//768*2 Number of stripe * number of sides(N and P)
  UInt_t buf[kSize];      
  fIndex=-1;

  TClonesArray*& digits = * (TClonesArray**) branch->GetAddress();
  TString fileName;
  AliFstream* outfile;         // logical name of the output file 
  AliRawDataHeaderSim header;

  //loop over DDLs  
  for(Int_t i=0;i<AliDAQ::NumberOfDdls("ITSSSD");i++){
    fileName.Form("%s",AliDAQ::DdlFileName("ITSSSD",i)); //The name of the output file.
    outfile = new AliFstream(fileName.Data());
    //write Dummy DATA HEADER
    UInt_t dataHeaderPosition=outfile->Tellp();
    outfile->WriteBuffer((char*)(&header),sizeof(header));
    
    //Loops over Modules of a particular DDL
    for (Int_t mod=0; mod<AliITSRawStreamSSD::kModulesPerDDL; mod++){
      Int_t moduleNumber = AliITSRawStreamSSD::GetModuleNumber(i, mod);
      if(moduleNumber!=-1){
	digits->Clear();
	branch->GetEvent(moduleNumber);
	//For each Module, buf contains the array of data words in Binary format	  
	//fIndex gives the number of 32 bits words in the buffer for each module
	GetDigitsSSD(digits,mod,moduleNumber,i,buf);
	outfile->WriteBuffer((char *)buf,((fIndex+1)*sizeof(UInt_t)));
	fIndex=-1;
      }//end if
    }//end for

    //Write REAL DATA HEADER
    UInt_t currentFilePosition=outfile->Tellp();
    outfile->Seekp(dataHeaderPosition);
    header.fSize=currentFilePosition-dataHeaderPosition;
    header.SetAttribute(0);  // valid data
    outfile->WriteBuffer((char*)(&header),sizeof(header));
    delete outfile;
  }//end for

  return 0;  
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Int_t AliITSDDLRawData::RawDataSDD(TBranch* branch, const AliITSDDLModuleMapSDD* ddlsdd){
    //This method creates the Raw data files for SDD detectors
  const Int_t kSize=131072; //256*512
  UInt_t buf[kSize];      
  fIndex=-1;

  TClonesArray*& digits = * (TClonesArray**) branch->GetAddress();
  TString fileName;
  AliFstream* outfile;             // logical name of the output file 
  AliRawDataHeaderSim header;
  
  if(fSDDRawFormat!=0){ 
    for(Int_t ibit=0; ibit<8; ibit++) header.SetAttribute(ibit);
  }else{
    for(Int_t ibit=0; ibit<5; ibit++) header.SetAttribute(ibit);
    for(Int_t ibit=5; ibit<8; ibit++) header.ResetAttribute(ibit);  
  }
  UInt_t skippedword=0; 
  UInt_t carlosFooterWord=0;
  UInt_t fifoFooterWord=0;
  UInt_t jitterWord=0;
  Bool_t retcode;
  retcode = AliBitPacking::PackWord(0x3FFFFFFF,carlosFooterWord,0,31);
  if(!retcode)AliError("AliBitPacking error\n");
  retcode = AliBitPacking::PackWord(0x3F1F1F1F,fifoFooterWord,0,31);
  if(fSDDRawFormat!=0) retcode = AliBitPacking::PackWord(0x7F000000,jitterWord,0,31);
  else retcode = AliBitPacking::PackWord(0x80000000,jitterWord,0,31);
 
  //loop over DDLs  
  for(Int_t i=0;i<AliDAQ::NumberOfDdls("ITSSDD");i++){
    fileName.Form("%s",AliDAQ::DdlFileName("ITSSDD",i)); //The name of the output file.
    outfile = new AliFstream(fileName.Data());
    //write Dummy DATA HEADER
    UInt_t dataHeaderPosition=outfile->Tellp();
    outfile->WriteBuffer((char*)(&header),sizeof(header));


    //first 1 "dummy" word to be skipped
    if(fSDDRawFormat!=0){
      retcode = AliBitPacking::PackWord(0xFFFFFFFF,skippedword,0,31);
      outfile->WriteBuffer((char*)(&skippedword),sizeof(skippedword));
    }

    //Loops over Modules of a particular DDL
    for (Int_t mod=0; mod<AliITSRawStreamSDD::kModulesPerDDL; mod++){
      Int_t moduleNumber = ddlsdd->GetModuleNumber(i, mod);
      if(moduleNumber!=-1){
	digits->Clear();
	branch->GetEvent(moduleNumber);

	//For each Module, buf contains the array of data words in Binary format	  
	//fIndex gives the number of 32 bits words in the buffer for each module
	//	cout<<"MODULE NUMBER:"<<mapSDD[i][mod]<<endl;
	if(fSDDRawFormat==0){
	  GetDigitsSDDCompressed(digits,mod,buf);
	  outfile->WriteBuffer((char *)buf,((fIndex+1)*sizeof(UInt_t)));
	}else{
	  GetDigitsSDD(digits,mod,moduleNumber,i,buf);
	  outfile->WriteBuffer((char *)buf,((fIndex+1)*sizeof(UInt_t)));
	  for(Int_t iw=0;iw<3;iw++) outfile->WriteBuffer((char*)(&carlosFooterWord),sizeof(carlosFooterWord));
	}
	fIndex=-1;
      }//end if
    }//end for
    // 12 words with FIFO footers (=4 FIFO x 3 3F1F1F1F words per DDL)
    if(fSDDRawFormat!=0){
      for(Int_t iw=0;iw<12;iw++) outfile->WriteBuffer((char*)(&fifoFooterWord),sizeof(fifoFooterWord));
    }
    outfile->WriteBuffer((char*)(&jitterWord),sizeof(jitterWord));      
    //Write REAL DATA HEADER
    UInt_t currentFilePosition=outfile->Tellp();
    outfile->Seekp(dataHeaderPosition);
    header.fSize=currentFilePosition-dataHeaderPosition;
    header.SetAttribute(0);  // valid data
    outfile->WriteBuffer((char*)(&header),sizeof(header));
    delete outfile;
  }//end for

  return 0;  
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void AliITSDDLRawData::WriteChipHeader(Int_t ChipAddr,Int_t halfStave,UInt_t &BaseWord){
  //This method writes a chip header 
  //cout<<"Chip: "<<ChipAddr<<" Half Stave module:"<<halfStave<<endl;
  BaseWord=0;
  AliBitPacking::PackWord(ChipAddr,BaseWord,16,19);
  //  At the moment the event count is always 0 (bits 20-26)
  AliBitPacking::PackWord(0,BaseWord,20,26);
  AliBitPacking::PackWord(halfStave,BaseWord,27,29);
  AliBitPacking::PackWord(0x1,BaseWord,30,31);
  return;
}//end WriteChipHeader

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void  AliITSDDLRawData::WriteChipTrailer(UInt_t *buf, Int_t ChipHitCount, Bool_t foBit, UInt_t &BaseWord){
  //This method writes a chip trailer
  //pixel fill word
  if((ChipHitCount%2)!=0){
    AliBitPacking::PackWord(0xC000,BaseWord,16,31);
  }
  AliBitPacking::PackWord(ChipHitCount,BaseWord,0,11);
  AliBitPacking::PackWord(0x0,BaseWord,12,12);
  AliBitPacking::PackWord(foBit,BaseWord,13,13);
  AliBitPacking::PackWord(0x0,BaseWord,14,15);
  fIndex++;
  buf[fIndex]=BaseWord;
  BaseWord=0;
  return;
}//end WriteChipTrailer

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void  AliITSDDLRawData::WriteHit(UInt_t *buf,Int_t RowAddr,Int_t HitAddr,UInt_t &BaseWord){
  //This method writs an hit
  if(!BaseWord){
    AliBitPacking::PackWord(HitAddr,BaseWord,16,20);
    AliBitPacking::PackWord(RowAddr,BaseWord,21,28);
    AliBitPacking::PackWord(2,BaseWord,30,31);
  }//end if
  else{
    AliBitPacking::PackWord(HitAddr,BaseWord,0,4);
    AliBitPacking::PackWord(RowAddr,BaseWord,5,12);
    AliBitPacking::PackWord(2,BaseWord,14,15);
    fIndex++;
    buf[fIndex]=BaseWord;
    BaseWord=0;
  }//end else
  return;
}//end WriteHit

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