3 // Author: Anders Vestbo <mailto:vestbo$fi.uib.no>
4 //*-- Copyright © ASV
10 #include "AliL3Compress.h"
11 #include "AliL3TrackArray.h"
12 #include "AliL3ModelTrack.h"
15 ClassImp(AliL3Compress)
17 AliL3Compress::AliL3Compress()
22 AliL3Compress::~AliL3Compress()
27 void AliL3Compress::Write2File(AliL3TrackArray *tracks)
29 FILE *file = fopen("data.raw","w");
30 Short_t ntracks = tracks->GetNTracks();
31 cout<<"Writing "<<ntracks<<" tracks to file"<<endl;
32 //Write the number of tracks at the beginning:
33 //fwrite(&ntracks,sizeof(Short_t),1,file);
35 for(Int_t i=0; i<ntracks; i++)
37 AliL3ModelTrack *track = (AliL3ModelTrack*)tracks->GetCheckedTrack(i);
39 AliL3TrackModel *model = track->GetModel();
40 cout<<"Writing "<<model->fFirstPointX<<endl;
41 if(fwrite(model,sizeof(AliL3TrackModel),1,file)!=1) break;
42 for(Int_t j=0; j<model->fNClusters; j++)
44 AliL3ClusterModel *cl = track->GetClusterModel(j);
45 fwrite(cl,sizeof(AliL3ClusterModel),1,file);
51 void AliL3Compress::ReadFile()
53 FILE *file = fopen("data.raw","r");
55 AliL3TrackArray *tracks = new AliL3TrackArray("AliL3ModelTrack");
60 AliL3ModelTrack *track = (AliL3ModelTrack*)tracks->NextTrack();
62 AliL3TrackModel *model = track->GetModel();
63 AliL3ClusterModel *clusters = track->GetClusters();
64 if(fread(model,sizeof(AliL3TrackModel),1,file)!=1) break;
65 cout<<"Read model "<<model->fFirstPointX<<endl;
66 if(fread(clusters,(model->fNClusters)*sizeof(AliL3ClusterModel),1,file)!=1) break;
71 cout<<"Read "<<ntracks<<" tracks from file"<<endl;
75 void AliL3Compress::CompressFile()
78 BIT_FILE *output = OpenOutputBitFile("test.raw");
79 FILE *input = fopen("data.raw","r");
81 AliL3TrackModel track;
82 AliL3ClusterModel cluster;
87 if(fread(&track,sizeof(AliL3TrackModel),1,input)!=1) break;
88 cout<<"Writing "<<sizeof(AliL3TrackModel)<<endl;
89 fwrite(&track,sizeof(AliL3TrackModel),1,output->file);
91 for(Int_t i=0; i<track.fNClusters; i++)
93 if(fread(&cluster,sizeof(AliL3ClusterModel),1,input)!=1) break;
94 Int_t flag = cluster.fPresent;
95 OutputBit(output,flag);
98 temp = (Int_t)cluster.fDTime;
103 OutputBits(output,abs(temp),8);
104 temp = (Int_t)cluster.fDPad;
109 OutputBits(output,abs(temp),8);
111 temp = (Int_t)cluster.fDCharge;
112 OutputBits(output,temp,10);
115 //Short_t temp=(Short_t)cluster.fDTime;
116 cout<<"flag "<<(int)flag<<" dtime "<<(int)cluster.fDTime<<" dpad "<<(int)cluster.fDPad<<" charge "<<cluster.fDCharge<<endl;
122 CloseOutputBitFile(output);
125 void AliL3Compress::ExpandFile()
127 BIT_FILE *input = OpenInputBitFile("test.raw");
129 AliL3TrackModel track;
130 AliL3ClusterModel cluster;
132 fread(&track,sizeof(AliL3TrackModel),1,input->file);
133 for(Int_t i=0; i<track.fNClusters; i++)
136 temp = InputBit(input);
138 sign=InputBit(input);
139 temp = InputBits(input,8);
142 cout<<"Dtime "<<temp;
143 sign=InputBit(input);
144 temp = InputBits(input,8);
147 cout<<" DPad "<<temp;
148 temp=InputBits(input,10);
149 cout<<" Charge "<<temp<<endl;
151 CloseInputBitFile(input);