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

void AliTOFRawDataRead(Int_t iEvent=0);

void AliTOFRawDataRead(Int_t iEvent)
{
  //
  // To read TOF raw data
  //

  AliTOFrawData *tofRawDatum=new AliTOFrawData();
  TTree *PackedDataTree= new TTree("PackedDataTree", "Decoded Packed Data");
  PackedDataTree->Branch("HitData", "AliTOFrawData", &tofRawDatum);

  TClonesArray *clonesRawData = new TClonesArray("AliTOFrawData",1000);
  Int_t fPackedDigits=0;

  Int_t detectorIndex[5] = {-1, -1, -1, -1, -1};
  Int_t dummy = -1;

  AliRawReader *reader = new AliRawReaderFile(iEvent);
  reader->RewindEvents();

  ofstream ftxt;
  ftxt.open("TOFrawDataReading.txt",ios::app);

  while (reader->NextEvent()) {

    AliTOFRawMap *rawMap = new AliTOFRawMap(clonesRawData);

    Int_t slot[4] = {-1, -1, -1, -1};

   for (Int_t indexDDL = 0; indexDDL < AliDAQ::NumberOfDdls("TOF"); indexDDL++) {

     reader->Reset();
     AliTOFRawStream stream(reader);
     stream.LoadRawData(indexDDL);

     clonesRawData = (TClonesArray*)stream.GetRawData();

     for (Int_t iRawData = 0; iRawData<clonesRawData->GetEntriesFast(); iRawData++) {

       tofRawDatum = (AliTOFrawData*)clonesRawData->UncheckedAt(iRawData);

       if (tofRawDatum->GetTOT()==-1 || tofRawDatum->GetTOF()==-1) continue;

       if (indexDDL<10) ftxt << "  " << indexDDL;
       else             ftxt << " " << indexDDL;
       if (tofRawDatum->GetTRM()<10) ftxt << "  " << tofRawDatum->GetTRM();
       else                          ftxt << " " << tofRawDatum->GetTRM();
       ftxt << "  " << tofRawDatum->GetTRMchain();
       if (tofRawDatum->GetTDC()<10) ftxt << "  " << tofRawDatum->GetTDC();
       else                          ftxt << " " << tofRawDatum->GetTDC();
       ftxt << "  " << tofRawDatum->GetTDCchannel();

       stream.EquipmentId2VolumeId(indexDDL, tofRawDatum->GetTRM(), tofRawDatum->GetTRMchain(),
				   tofRawDatum->GetTDC(), tofRawDatum->GetTDCchannel(), detectorIndex);
       dummy = detectorIndex[3];
       detectorIndex[3] = detectorIndex[4];
       detectorIndex[4] = dummy;

       if (detectorIndex[0]<10) ftxt  << "  ->  " << detectorIndex[0];
       else                     ftxt  << "  -> " << detectorIndex[0];
       ftxt << "  " << detectorIndex[1];
       if (detectorIndex[2]<10) ftxt << "  " << detectorIndex[2];
       else                     ftxt << " " << detectorIndex[2];
       ftxt << "  " << detectorIndex[3];
       if (detectorIndex[4]<10) ftxt << "  " << detectorIndex[4];
       else                     ftxt << " " << detectorIndex[4];

       if (tofRawDatum->GetTOT()<10)                                            ftxt << "        " << tofRawDatum->GetTOT();
       else if (tofRawDatum->GetTOT()>=10 && tofRawDatum->GetTOT()<100)         ftxt << "       " << tofRawDatum->GetTOT();
       else if (tofRawDatum->GetTOT()>=100 && tofRawDatum->GetTOT()<1000)       ftxt << "      " << tofRawDatum->GetTOT();
       else if (tofRawDatum->GetTOT()>=1000 && tofRawDatum->GetTOT()<10000)     ftxt << "     " << tofRawDatum->GetTOT();
       else if (tofRawDatum->GetTOT()>=10000 && tofRawDatum->GetTOT()<100000)   ftxt << "    " << tofRawDatum->GetTOT();
       else if (tofRawDatum->GetTOT()>=100000 && tofRawDatum->GetTOT()<1000000) ftxt << "   " << tofRawDatum->GetTOT();
       else                                                                     ftxt << "  " << tofRawDatum->GetTOT();
       if (tofRawDatum->GetTOF()<10)                                            ftxt << "        " << tofRawDatum->GetTOF() << endl;
       else if (tofRawDatum->GetTOF()>=10 && tofRawDatum->GetTOF()<100)         ftxt << "       " << tofRawDatum->GetTOF() << endl;
       else if (tofRawDatum->GetTOF()>=100 && tofRawDatum->GetTOF()<1000)       ftxt << "      " << tofRawDatum->GetTOF() << endl;
       else if (tofRawDatum->GetTOF()>=1000 && tofRawDatum->GetTOF()<10000)     ftxt << "     " << tofRawDatum->GetTOF() << endl;
       else if (tofRawDatum->GetTOF()>=10000 && tofRawDatum->GetTOF()<100000)   ftxt << "    " << tofRawDatum->GetTOF() << endl;
       else if (tofRawDatum->GetTOF()>=100000 && tofRawDatum->GetTOF()<1000000) ftxt << "   " << tofRawDatum->GetTOF() << endl;
       else                                                                     ftxt << "  " << tofRawDatum->GetTOF() << endl;

       PackedDataTree->Fill();
     } // end loop

   } // endl loop on DDL files

   iEvent++;

  } // end while loop on event

  ftxt.close();
  TFile fileOut("TOF_rawQA_OldDecoder.root", "RECREATE");
  PackedDataTree->Write();
  fileOut.Close();

}

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