2 Author: Constantin Loizides <mailto: loizides@ikf.physik.uni-frankfurt.de>
8 #include "AliL3AltroMemHandler.h"
10 /** \class AliL3AltroMemHandler
11 // Converts digits in memory into a backlinked ALTRO like data format.
12 // The file misc/read.cxx shows how to use this class.
13 // As soon as you have more than 35 digits per pad, this class needs to
14 // improved to properly handle the backlinked list.
17 ClassImp(AliL3AltroMemHandler)
19 AliL3AltroMemHandler::AliL3AltroMemHandler(){
23 Bool_t AliL3AltroMemHandler::Write(UShort_t row, UChar_t pad, UShort_t charge, UShort_t time)
27 if((counter==0)||(tcounter==0)){ //new package or new sequence
31 altromem[counter]=charge;
34 } else if ((row==lrow)&&(pad==lpad)) {
35 if(time-ltime==1){ //add charge to sequence
37 altromem[counter]=charge;
41 if(counter==MAX_VALS){
45 } else { //finish old sequence
46 altromem[counter]=ltime;
48 altromem[counter]=tcounter+2;
52 if(counter==MAX_VALS){
59 } else { //finish old package
67 if(redo==kTRUE) Write(row,pad,charge,time);
71 void AliL3AltroMemHandler::Clear(){
72 memset(altromem,0,ALTRO_SIZE);
81 Bool_t AliL3AltroMemHandler::WriteFinal(){
83 altromem[counter]=ltime;
85 altromem[counter]=tcounter+2;
92 void AliL3AltroMemHandler::WriteTrailer(){
94 UShort_t savecounter=counter;
96 altromem[counter]=0x2AA;
99 altromem[counter++]=0x2AA;
100 altromem[counter++]=savecounter;
101 altromem[counter++]=lpad;
102 altromem[counter++]=lrow;
104 UShort_t *ptr=altromem+counter;
105 for (int i=0;i<counter;i++) {
107 if(flag==kTRUE) fwrite(ptr,sizeof(UShort_t),1,fOutBinary);
108 else fprintf(fOutBinary,"%X ",*ptr);
110 if(flag==kFALSE) fprintf(fOutBinary,"\n");
115 Bool_t AliL3AltroMemHandler::SetBinaryInput(FILE *file){
118 //LOG(AliL3Log::kWarning,"AliL3AltroMem::SetBinaryInput","File Open")<<"Pointer to File = 0x0 "<<ENDLOG;
125 Bool_t AliL3AltroMemHandler::SetBinaryOutput(FILE *file){
128 LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::SetBinaryOutput","File Open") <<"Pointer to File = 0x0 "<<ENDLOG;