ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)

// Root include files
#include "TClonesArray.h"

// AliRoot include files
#include "AliDAQ.h"
#include "AliHitMap.h"

#include "AliRawReader.h"
#include "AliRawReaderFile.h"

#include "AliTOFrawData.h"
#include "AliTOFRawMap.h"
#include "AliTOFRawStream.h"

#endif

extern gBenchmark;

void AliTOFRawDataReadBuffer(Int_t iEvent=0);

void AliTOFRawDataReadBuffer(Int_t iEvent)
{

  //
  // To read TOF raw data
  //

  Int_t Volume[5];
  AliTOFHitData *HitData;
  AliTOFHitDataBuffer *DataBuffer;
  AliTOFHitDataBuffer *PackedDataBuffer;

  /* create a tree for decoded data */
  TTree DataTree("DataTree", "Decoded Data");
  DataTree.Branch("HitData", "AliTOFHitData", &HitData);

  /* create a tree for decoded packed data */
  TTree PackedDataTree("PackedDataTree", "Decoded Packed Data");
  PackedDataTree.Branch("HitData", "AliTOFHitData", &HitData);
  
  AliRawReaderFile reader(iEvent);
  AliTOFRawStream stream(&reader);

  reader.RewindEvents();

  gBenchmark->Reset();
  /* loop over events */
  for (Int_t iEvent = 0; reader.NextEvent(); iEvent++) {
    printf("processing event %d\n", iEvent);

    /* reset buffers (actually not needed)*/
    stream.ResetBuffers();
    
    /* decode all DDLs */
    gBenchmark->Start("time");
    stream.DecodeDDL(0, AliDAQ::NumberOfDdls("TOF") - 1,0);
    gBenchmark->Stop("time");
    
    /* loop over DDLs */
    for (Int_t iDDL = 0; iDDL < AliDAQ::NumberOfDdls("TOF"); iDDL++){
      
      /* read decoded data */
      DataBuffer = stream.GetDataBuffer(iDDL);
      PackedDataBuffer = stream.GetPackedDataBuffer(iDDL);
      
      /* get buffer entries */
      Int_t nDBEntries = DataBuffer->GetEntries();
      Int_t nPDBEntries = PackedDataBuffer->GetEntries();

      /* read data buffer hits */
      for (Int_t iHit = 0; iHit < nDBEntries; iHit++){
      	HitData = DataBuffer->GetHit(iHit);
	HitData->SetDDLID(iDDL);
	/* add volume information to hit */
	stream.EquipmentId2VolumeId(HitData, HitData->GetVolume());
	DataTree.Fill();
      }
      /* reset buffer */
      DataBuffer->Reset();
      
      /* read data buffer hits */
      for (Int_t iHit = 0; iHit < nPDBEntries; iHit++){
      	HitData = PackedDataBuffer->GetHit(iHit);
	HitData->SetDDLID(iDDL);
	/* add volume information to hit */
	stream.EquipmentId2VolumeId(HitData, HitData->GetVolume());
	PackedDataTree.Fill();
      }
      /* reset buffer */
      PackedDataBuffer->Reset();
    }
    
  }
  gBenchmark->Print("time");

  TFile fileOut("TOF_rawQA.root", "RECREATE");
  DataTree.Write();
  PackedDataTree.Write();
  fileOut.Close();
  

}
 AliTOFRawDataReadBuffer.C:1
 AliTOFRawDataReadBuffer.C:2
 AliTOFRawDataReadBuffer.C:3
 AliTOFRawDataReadBuffer.C:4
 AliTOFRawDataReadBuffer.C:5
 AliTOFRawDataReadBuffer.C:6
 AliTOFRawDataReadBuffer.C:7
 AliTOFRawDataReadBuffer.C:8
 AliTOFRawDataReadBuffer.C:9
 AliTOFRawDataReadBuffer.C:10
 AliTOFRawDataReadBuffer.C:11
 AliTOFRawDataReadBuffer.C:12
 AliTOFRawDataReadBuffer.C:13
 AliTOFRawDataReadBuffer.C:14
 AliTOFRawDataReadBuffer.C:15
 AliTOFRawDataReadBuffer.C:16
 AliTOFRawDataReadBuffer.C:17
 AliTOFRawDataReadBuffer.C:18
 AliTOFRawDataReadBuffer.C:19
 AliTOFRawDataReadBuffer.C:20
 AliTOFRawDataReadBuffer.C:21
 AliTOFRawDataReadBuffer.C:22
 AliTOFRawDataReadBuffer.C:23
 AliTOFRawDataReadBuffer.C:24
 AliTOFRawDataReadBuffer.C:25
 AliTOFRawDataReadBuffer.C:26
 AliTOFRawDataReadBuffer.C:27
 AliTOFRawDataReadBuffer.C:28
 AliTOFRawDataReadBuffer.C:29
 AliTOFRawDataReadBuffer.C:30
 AliTOFRawDataReadBuffer.C:31
 AliTOFRawDataReadBuffer.C:32
 AliTOFRawDataReadBuffer.C:33
 AliTOFRawDataReadBuffer.C:34
 AliTOFRawDataReadBuffer.C:35
 AliTOFRawDataReadBuffer.C:36
 AliTOFRawDataReadBuffer.C:37
 AliTOFRawDataReadBuffer.C:38
 AliTOFRawDataReadBuffer.C:39
 AliTOFRawDataReadBuffer.C:40
 AliTOFRawDataReadBuffer.C:41
 AliTOFRawDataReadBuffer.C:42
 AliTOFRawDataReadBuffer.C:43
 AliTOFRawDataReadBuffer.C:44
 AliTOFRawDataReadBuffer.C:45
 AliTOFRawDataReadBuffer.C:46
 AliTOFRawDataReadBuffer.C:47
 AliTOFRawDataReadBuffer.C:48
 AliTOFRawDataReadBuffer.C:49
 AliTOFRawDataReadBuffer.C:50
 AliTOFRawDataReadBuffer.C:51
 AliTOFRawDataReadBuffer.C:52
 AliTOFRawDataReadBuffer.C:53
 AliTOFRawDataReadBuffer.C:54
 AliTOFRawDataReadBuffer.C:55
 AliTOFRawDataReadBuffer.C:56
 AliTOFRawDataReadBuffer.C:57
 AliTOFRawDataReadBuffer.C:58
 AliTOFRawDataReadBuffer.C:59
 AliTOFRawDataReadBuffer.C:60
 AliTOFRawDataReadBuffer.C:61
 AliTOFRawDataReadBuffer.C:62
 AliTOFRawDataReadBuffer.C:63
 AliTOFRawDataReadBuffer.C:64
 AliTOFRawDataReadBuffer.C:65
 AliTOFRawDataReadBuffer.C:66
 AliTOFRawDataReadBuffer.C:67
 AliTOFRawDataReadBuffer.C:68
 AliTOFRawDataReadBuffer.C:69
 AliTOFRawDataReadBuffer.C:70
 AliTOFRawDataReadBuffer.C:71
 AliTOFRawDataReadBuffer.C:72
 AliTOFRawDataReadBuffer.C:73
 AliTOFRawDataReadBuffer.C:74
 AliTOFRawDataReadBuffer.C:75
 AliTOFRawDataReadBuffer.C:76
 AliTOFRawDataReadBuffer.C:77
 AliTOFRawDataReadBuffer.C:78
 AliTOFRawDataReadBuffer.C:79
 AliTOFRawDataReadBuffer.C:80
 AliTOFRawDataReadBuffer.C:81
 AliTOFRawDataReadBuffer.C:82
 AliTOFRawDataReadBuffer.C:83
 AliTOFRawDataReadBuffer.C:84
 AliTOFRawDataReadBuffer.C:85
 AliTOFRawDataReadBuffer.C:86
 AliTOFRawDataReadBuffer.C:87
 AliTOFRawDataReadBuffer.C:88
 AliTOFRawDataReadBuffer.C:89
 AliTOFRawDataReadBuffer.C:90
 AliTOFRawDataReadBuffer.C:91
 AliTOFRawDataReadBuffer.C:92
 AliTOFRawDataReadBuffer.C:93
 AliTOFRawDataReadBuffer.C:94
 AliTOFRawDataReadBuffer.C:95
 AliTOFRawDataReadBuffer.C:96
 AliTOFRawDataReadBuffer.C:97
 AliTOFRawDataReadBuffer.C:98
 AliTOFRawDataReadBuffer.C:99
 AliTOFRawDataReadBuffer.C:100
 AliTOFRawDataReadBuffer.C:101
 AliTOFRawDataReadBuffer.C:102
 AliTOFRawDataReadBuffer.C:103
 AliTOFRawDataReadBuffer.C:104
 AliTOFRawDataReadBuffer.C:105