2 Author: Constantin Loizides <mailto: loizides@ikf.physik.uni-frankfurt.de
7 #include "AliL3RootTypes.h"
8 #include "AliL3Logger.h"
9 #include "AliL3MemHandler.h"
10 #include "AliL3AltroMemHandler.h"
11 #include "AliL3DigitData.h"
12 #include "AliL3Transform.h"
15 Example program how to open and read a raw datafile.
16 In addition it shows, how to store results in an Altro like
20 int main(int argc,char **argv)
24 Bool_t altroout=kFALSE;
29 l.Set(AliL3Logger::kAll);
36 cout<<"Usage: read datafile [slice] [patch] [altrodatfile]"<<endl;
47 afile=fopen(argv[4],"w");
50 //Loading all specific aliroot version quantities, needed.
52 strcpy(fname,argv[1]);
53 AliL3Transform::Init(dirname(fname));
54 strcpy(fname,argv[1]);
59 //Give slice and patch information (see filename convention)
60 if((patch>=0)&&(patch<6)) file.Init(slice,patch);
62 Int_t srows[2]={0,175};
63 file.Init(slice,0,srows);
67 if(!file.SetBinaryInput(argv[1]))
69 cerr<<"Error opening file "<<argv[1]<<endl;
73 //Create an RowData object to access the data
74 AliL3DigitRowData *digits=0;
77 //Read the file, and store the data in memory. Return value is a pointer to the data.
78 digits = file.CompBinary2Memory(nrows);
80 //Create an ALtroMemHandler object
81 AliL3AltroMemHandler altromem;
82 if(altroout) altroout=altromem.SetASCIIOutput(afile);
86 Int_t row=file.GetRowMin()-1,crows=0,lrow=row;
88 for(UInt_t r=0; r<nrows; r++) //Loop over padrows
90 //Get the data on this padrow:
91 AliL3DigitData *dataPt = (AliL3DigitData*)digits->fDigitData;
93 if(lrow+1==row) crows++;
95 //Loop over all digits on this padrow:
96 for(UInt_t ndig=0; ndig<digits->fNDigit; ndig++)
97 //for(UInt_t ndig=digits->fNDigit;ndig>0;ndig--)
100 pad = dataPt[ndig].fPad;
101 time = dataPt[ndig].fTime;
102 charge = dataPt[ndig].fCharge;
103 cout << "Padrow " << row << " pad " << (int)pad << " time " <<(int) time << " charge " << (int)charge << endl;
104 if(altroout) altromem.Write(row,pad,charge,time);
107 //Move the pointer to the next padrow:
108 file.UpdateRowPointer(digits);
112 altromem.WriteFinal();
116 //cerr << "Rows: " << (file.GetRowMax()-file.GetRowMin()+1) << " Consecutive: " << crows << endl;