3 /* Different small routines for reading and testing
8 #include "AliL3FileHandler.h"
9 #include "AliL3DigitData.h"
10 #include "AliL3Transform.h"
11 #include "AliL3Logger.h"
17 void read(Char_t *path="./",Int_t min=0,Int_t max=35)
19 AliL3Transform::Init(path);
21 for(Int_t slice=0; slice<35; slice++)
24 sprintf(fname,"%s/digits_%d_0.raw",path,slice);
25 AliL3FileHandler *file = new AliL3FileHandler();
26 if(!file->SetBinaryInput(fname))
28 cerr<<"Error opening file "<<fname<<endl;
33 file->Init(slice,0,row);
36 AliL3DigitRowData *data = file->CompBinary2Memory(size);
38 for(Int_t r=0; r<175; r++)
40 UInt_t padrow=data->fRow;
41 AliL3DigitData *dPt = (AliL3DigitData*)data->fDigitData;
42 cout<<"padrow "<<padrow<<" ndigits "<<data->fNDigit<<endl;
44 for(Int_t d=0; d<(Int_t)data->fNDigit; d++)
46 if(d>0 && dPt[d].fPad == dPt[d-1].fPad && dPt[d].fTime == dPt[d-1].fTime)
47 cout<<"Slice "<<slice<<" padrow "<<padrow<<" pad "<<(int)dPt[d].fPad<<" time "
48 <<(int)dPt[d].fTime<<" charge "<<(int)dPt[d].fCharge<<endl;
51 file->UpdateRowPointer(data);
54 file->CloseBinaryInput();
59 void read_ali(Char_t *fname, Int_t sl=0, Int_t sh=35)
61 //need galice file or alirunfile.root link
62 if(AliL3Transform::Init(fname,kTRUE))
64 cout << "created temp init file!" << endl;
67 AliL3FileHandler *fileHandler = new AliL3FileHandler();
69 if(!fileHandler->SetAliInput(fname))
71 cerr<<"Error opening file "<<fname<<endl;
78 for(Int_t slice=sl; slice<=sl; slice++){
79 for(Int_t patch=0;patch<AliL3Transform::GetNPatches();patch++){
81 cerr<<"reading slice: "<<slice<<" patch: "<<patch<<endl;
84 fileHandler->Init(slice,patch);
85 AliL3DigitRowData *data=fileHandler->AliDigits2Memory(nrow,event);
86 if(!data) cerr << "Obscure error while reading data." << endl;
87 cerr<<" found "<< nrow << " rows" <<endl;
90 fileHandler->CloseAliInput();
93 void read_pp(Char_t *path="./",Int_t min=0,Int_t max=35,Int_t ev=0)
95 AliL3Transform::Init(path);
97 for(Int_t slice=min; slice<max; slice++)
100 sprintf(fname,"%s/digits_%d_%d_-1.raw",path,ev,slice);
101 AliL3FileHandler *file = new AliL3FileHandler();
102 if(!file->SetBinaryInput(fname))
104 cerr<<"Error opening file "<<fname<<endl;
108 file->Init(slice,-1);
111 AliL3DigitRowData *data;
112 data=(AliL3DigitRowData*)file->Allocate(); //size from binary input
113 file->Binary2Memory(size,data);
115 for(Int_t r=AliL3Transform::GetFirstRow(-1); r<AliL3Transform::GetLastRow(-1); r++)
118 UInt_t padrow=data->fRow;
119 AliL3DigitData *dPt = (AliL3DigitData*)data->fDigitData;
120 cout<<r<<" "<<"padrow "<<padrow<<" ndigits "<<data->fNDigit<<endl;
122 for(Int_t d=0; d<(Int_t)data->fNDigit; d++)
124 //if((int)dPt[d]->fTime>1023)
125 cout<<"Slice "<<slice<<" padrow "<<padrow<<" pad "<<(int)dPt[d].fPad<<" time "
126 <<(int)dPt[d].fTime<<" charge "<<(int)dPt[d].fCharge<<" mc "<<(int)dPt[d].fTrackID[0]<<endl;
129 file->UpdateRowPointer(data);
132 file->CloseBinaryInput();
137 void read_event_tree(Char_t *rootfile,Int_t startev=0)
139 AliL3FileHandler *handler = new AliL3FileHandler();
140 if(!handler->SetAliInput(rootfile)){
141 cerr<<" Error opening file: "<<rootfile<<endl;
145 //Looping over slices and the over events
150 cout<<"\nEvent " << ev << " Loading slices "<<flush;
151 for(Int_t slice=0 ; slice<1 ; slice++){
152 handler->Init(slice,-1);
153 if(!handler->AliAltroDigits2Memory(size,ev)){
154 cout << " not a valid event, breaking!!!" <<endl;
162 handler->FreeDigitsTree();