FEDRA emulsion software from the OPERA Collaboration
dataIO.cpp File Reference
#include <unistd.h>
Include dependency graph for dataIO.cpp:
This graph shows which files directly or indirectly include this file:

Functions

char * ED_COPY_AND_DISPLACE (void *dst, void *src, int size)
 
int FreeMemory (void **ppData)
 
int ReadCatalog (void **ppData, char *name)
 
int ReadFragment (void **ppData, char *name)
 
int ReadMap (void **ppData, char *mapname)
 
void TRY_READ_B (FILE *HFile, int br, void *dst, int size)
 

Function Documentation

◆ ED_COPY_AND_DISPLACE()

char * ED_COPY_AND_DISPLACE ( void dst,
void src,
int  size 
)
73{
74 memcpy(dst,src,size);
75 return (char*)dst+size;
76}
void dst(int numt=-1)
Definition: RecDispMC.C:1422

◆ FreeMemory()

int FreeMemory ( void **  ppData)
68{
69 return 1;
70}

◆ ReadCatalog()

int ReadCatalog ( void **  ppData,
char *  name 
)
323{
324 IO_Header Hdr;
325 FILE* F;
326 int i;
327
328 printf("ReadCatalog: %s\n",name);
329 for(int i=0; i<3; i++) {
330 F=fopen(name,"r");
331 if(!F) sleep(50); // attempt to solve slow network problems (VT)
332 else break;
333 }
334 if(!F) return 0;
335 fread(&Hdr.InfoType,1,sizeof(Hdr.InfoType),F);
336 fread(&Hdr.HeaderFormat,1,sizeof(Hdr.HeaderFormat),F);
337
338 IO_VS_Catalog Cat;
339 Cat.Hdr.Type = Hdr;
340 char *p = 0, *pData = 0;
341 VS_Config *pConfigs = 0;
342 int *pFragmentIndices = 0;
343 unsigned int PSpace = 0;
344 for (i = 0; i < 4; i++) fread(&Cat.Hdr.ID.Part[i], 1,sizeof(Cat.Hdr.ID.Part[i]), F);
345 fread( &Cat.Area.XMin, 1,sizeof(Cat.Area.XMin), F);
346 fread( &Cat.Area.XMax, 1,sizeof(Cat.Area.XMax), F);
347 fread( &Cat.Area.YMin, 1,sizeof(Cat.Area.YMin), F);
348 fread( &Cat.Area.YMax, 1,sizeof(Cat.Area.YMax), F);
349 fread( &Cat.Area.XStep, 1,sizeof(Cat.Area.XStep), F);
350 fread( &Cat.Area.YStep, 1,sizeof(Cat.Area.YStep), F);
351 fread( &Cat.Area.XViews, 1,sizeof(Cat.Area.XViews), F);
352 fread( &Cat.Area.YViews, 1,sizeof(Cat.Area.YViews), F);
353 fread( &Cat.Area.Fragments, 1,sizeof(Cat.Area.Fragments), F);
354 fread( &Cat.Config.CountOfConfigs, 1,sizeof(Cat.Config.CountOfConfigs), F);
355
356 pConfigs = (VS_Config *)malloc((sizeof(VS_Config) * Cat.Config.CountOfConfigs));
357
358 for (i = 0; i < Cat.Config.CountOfConfigs; i++) pConfigs[i].Config.pItems = 0;
359 for (i = 0; i < Cat.Config.CountOfConfigs; i++)
360 {
361 fread( &pConfigs[i].ClassName,1, sizeof(pConfigs[i].ClassName), F);
362 fread( &pConfigs[i].Config.Name,1, sizeof(pConfigs[i].Config.Name), F);
363 fread( &pConfigs[i].Config.CountOfItems,1, sizeof(pConfigs[i].Config.CountOfItems), F);
365 PSpace+= fread( pConfigs[i].Config.pItems,1, ((SYSAL_MAXCONFIG_ENTRY_NAME_LEN + SYSAL_MAXCONFIG_ENTRY_VALUE_LEN) * pConfigs[i].Config.CountOfItems), F);
366 };
367
368 pFragmentIndices = (int *)malloc(sizeof(int) * Cat.Area.XViews * Cat.Area.YViews);
369 fread( pFragmentIndices, 1,(sizeof(int) * Cat.Area.XViews * Cat.Area.YViews),F);
370 fread( &Cat.Reserved, 1,sizeof(Cat.Reserved), F);
371
372 p = pData = (char *)malloc((sizeof(Cat) + sizeof(VS_Config) * Cat.Config.CountOfConfigs + PSpace + sizeof(int) * Cat.Area.XViews * Cat.Area.YViews));
373
374 p= ED_COPY_AND_DISPLACE(p, &Cat, sizeof(Cat));
375 ((IO_VS_Catalog *)pData)->Config.pConfigs = (VS_Config *)p;
376 for (i = 0; i < Cat.Config.CountOfConfigs; i++)
377 p= ED_COPY_AND_DISPLACE(p, &pConfigs[i], sizeof(pConfigs[i]));
378 for (i = 0; i < Cat.Config.CountOfConfigs; i++)
379 {
380 ((IO_VS_Catalog *)pData)->Config.pConfigs[i].Config.pItems = (char *)p;
381 p= ED_COPY_AND_DISPLACE(p, pConfigs[i].Config.pItems, (SYSAL_MAXCONFIG_ENTRY_NAME_LEN + SYSAL_MAXCONFIG_ENTRY_VALUE_LEN) * pConfigs[i].Config.CountOfItems);
382 };
383 ((IO_VS_Catalog *)pData)->pFragmentIndices = (int *)p;
384 p= ED_COPY_AND_DISPLACE(p, pFragmentIndices, (sizeof(int) * Cat.Area.XViews * Cat.Area.YViews));
385
386 if (pFragmentIndices) free(pFragmentIndices);
387 if (pConfigs)
388 {
389 for (i = 0; i < Cat.Config.CountOfConfigs; i++)
390 if (pConfigs[i].Config.pItems) free(pConfigs[i].Config.pItems);
391 free(pConfigs);
392 };
393 *ppData = (IO_VS_Catalog *)pData;
394
395 fclose(F);
396 return 1;
397}
#define SYSAL_MAXCONFIG_ENTRY_VALUE_LEN
Definition: Config.h:6
#define SYSAL_MAXCONFIG_ENTRY_NAME_LEN
Definition: Config.h:5
char * ED_COPY_AND_DISPLACE(void *dst, void *src, int size)
Definition: dataIO.cpp:72
for(int i=0;i< nentries;i++)
Definition: check_shower.C:42
fclose(pFile)
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24
Definition: id.h:13
WORD HeaderFormat
Definition: id.h:15
BYTE InfoType
Definition: id.h:14
Definition: vscan_ds.h:60
float YMax
Definition: vscan_ds.h:74
int CountOfConfigs
Definition: vscan_ds.h:84
float YMin
Definition: vscan_ds.h:74
unsigned char Reserved[256]
Definition: vscan_ds.h:88
float XStep
Definition: vscan_ds.h:75
struct IO_VS_Catalog::@27 Area
float XMin
Definition: vscan_ds.h:74
float YStep
Definition: vscan_ds.h:75
IO_Header Type
Definition: vscan_ds.h:66
struct IO_VS_Catalog::@28 Config
Identifier ID
Definition: vscan_ds.h:67
int XViews
Definition: vscan_ds.h:76
int Fragments
Definition: vscan_ds.h:77
float XMax
Definition: vscan_ds.h:74
int YViews
Definition: vscan_ds.h:76
struct IO_VS_Catalog::@26 Hdr
int Part[4]
Definition: AcqPlateChanger.h:32
long CountOfItems
Definition: Config.h:11
char * pItems
Definition: Config.h:12
Definition: vscan_ds.h:34
SySalConfig Config
Definition: vscan_ds.h:36
p
Definition: testBGReduction_AllMethods.C:8

◆ ReadFragment()

int ReadFragment ( void **  ppData,
char *  name 
)
90{
91 IO_Header Hdr;
92 FILE *F,*HFile;
93 for(int i=0; i<3; i++) {
94 F=fopen(name,"r");
95 if(!F) sleep(50); // attempt to solve slow network problems (VT)
96 else break;
97 }
98 if(!F) return 0;
99 HFile=F;
100 fread(&Hdr.InfoType, 1, sizeof(Hdr.InfoType), F);
101 fread(&Hdr.HeaderFormat, 1, sizeof(Hdr.HeaderFormat), F);
102
103 Identifier Id;
104 fread(&Id.Part[0], 1, sizeof(Id.Part[0]), F);
105 fread(&Id.Part[1], 1, sizeof(Id.Part[1]), F);
106 fread(&Id.Part[2], 1, sizeof(Id.Part[2]), F);
107 fread(&Id.Part[3], 1, sizeof(Id.Part[3]), F);
108
109 IO_VS_Fragment2 Frag;
110 Frag.Hdr.Type.InfoType = Hdr.InfoType;
112 Frag.Hdr.ID = Id;
113 int br=0;
114 char *p = 0, *pData = 0;
115 VS_View2 *pViews = 0;
116 char *pCorr = 0;
117 VS_View2::t_LayerInfo *pLayers = 0;
118 int TSpace = 0;
119 int GSpace = 0;
120 int LSpace = 0;
121 int i, j, k;
122 TRY_READ_B(HFile, br, &Frag.Fragment.Index, sizeof(Frag.Fragment.Index));
123 TRY_READ_B(HFile, br, &Frag.Fragment.StartView, sizeof(Frag.Fragment.StartView));
124 TRY_READ_B(HFile, br, &Frag.Fragment.CountOfViews, sizeof(Frag.Fragment.CountOfViews));
126 TRY_READ_B(HFile, br, &Frag.Fragment.CodingMode, sizeof(Frag.Fragment.CodingMode));
127 TRY_READ_B(HFile, br, &Frag.Reserved, sizeof(Frag.Reserved));
128
129 switch (Frag.Fragment.CodingMode)
130 {
133 };
134
135 pCorr = (char *)malloc(Frag.Fragment.FitCorrectionDataSize);
136 pViews = (VS_View2 *)malloc(sizeof(VS_View2) * Frag.Fragment.CountOfViews);
137 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
138 pViews[i].pTracks[0] = pViews[i].pTracks[1] = 0;
139 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
140 {
141 TRY_READ_B(HFile, br, &pViews[i].TileX, sizeof(pViews[i].TileX));
142 TRY_READ_B(HFile, br, &pViews[i].TileY, sizeof(pViews[i].TileY));
143 TRY_READ_B(HFile, br, &pViews[i].X[0], sizeof(pViews[i].X[0]));
144 TRY_READ_B(HFile, br, &pViews[i].X[1], sizeof(pViews[i].X[1]));
145 TRY_READ_B(HFile, br, &pViews[i].Y[0], sizeof(pViews[i].Y[0]));
146 TRY_READ_B(HFile, br, &pViews[i].Y[1], sizeof(pViews[i].Y[1]));
147 TRY_READ_B(HFile, br, &pViews[i].MapX[0], sizeof(pViews[i].MapX[0]));
148 TRY_READ_B(HFile, br, &pViews[i].MapX[1], sizeof(pViews[i].MapX[1]));
149 TRY_READ_B(HFile, br, &pViews[i].MapY[0], sizeof(pViews[i].MapY[0]));
150 TRY_READ_B(HFile, br, &pViews[i].MapY[1], sizeof(pViews[i].MapY[1]));
151 for (int i1=0; i1<2; i1++)
152 for (int i2=0; i2<2; i2++)
153 for (int i3=0; i3<2; i3++)
154 TRY_READ_B(HFile, br,
155 &pViews[i].ImageMat[i1][i2][i3], sizeof(pViews[i].ImageMat[i1][i2][i3]));
156
157 for (j = 0; j < 2; j++) TRY_READ_B(HFile, br, &pViews[i].Layers[j].Count, sizeof(pViews[i].Layers[j].Count));
158 TRY_READ_B(HFile, br, &pViews[i].RelevantZs.TopExt, sizeof(pViews[i].RelevantZs.TopExt));
159 TRY_READ_B(HFile, br, &pViews[i].RelevantZs.TopInt, sizeof(pViews[i].RelevantZs.TopInt));
160 TRY_READ_B(HFile, br, &pViews[i].RelevantZs.BottomExt, sizeof(pViews[i].RelevantZs.BottomExt));
161 TRY_READ_B(HFile, br, &pViews[i].RelevantZs.BottomInt, sizeof(pViews[i].RelevantZs.BottomInt));
162 for (j = 0; j < 2; j++) TRY_READ_B(HFile, br, &pViews[i].Status[j], sizeof(pViews[i].Status[j]));
163 for (j = 0; j < 2; j++) TRY_READ_B(HFile, br, &pViews[i].TCount[j], sizeof(pViews[i].TCount[j]));
164 LSpace += pViews[i].Layers[0].Count + pViews[i].Layers[1].Count;
165 TSpace += pViews[i].TCount[0] + pViews[i].TCount[1];
166 };
167 pLayers = (VS_View2::t_LayerInfo *)malloc(sizeof(VS_View2::t_LayerInfo) * LSpace);
168 if (Hdr.HeaderFormat == VS_HEADER_TYPE)
169 {
170 for (i = 0; i < LSpace; i++)
171 {
172 TRY_READ_B(HFile, br, &pLayers[i].Clusters, sizeof(pLayers[i].Z));
173 TRY_READ_B(HFile, br, &pLayers[i].Z, sizeof(pLayers[i].Z));
174 }
175 }
176 else
177 for (i = 0; i < LSpace; i++)
178 {
179 pLayers[i].Clusters = 0;
180 TRY_READ_B(HFile, br, &pLayers[i].Z, sizeof(pLayers[i].Z));
181 }
182 TSpace = 0;
183 if (Hdr.HeaderFormat == VS_HEADER_TYPE)
184 {
185 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
186 for (j = 0; j < 2; j++)
187 {
188 pViews[i].pTracks[j] = (Track2 *)malloc(sizeof(Track2) * pViews[i].TCount[j]);
189 for (k = 0; k < pViews[i].TCount[j]; k++)
190 {
191 Track2 &t = pViews[i].pTracks[j][k];
192 t.Field = i;
193 TRY_READ_B(HFile, br, &t.AreaSum, sizeof(t.AreaSum));
194 TRY_READ_B(HFile, br, &t.Grains, sizeof(t.Grains));
195 TRY_READ_B(HFile, br, &t.Intercept.X, sizeof(t.Intercept.X));
196 TRY_READ_B(HFile, br, &t.Intercept.Y, sizeof(t.Intercept.Y));
197 TRY_READ_B(HFile, br, &t.Intercept.Z, sizeof(t.Intercept.Z));
198 TRY_READ_B(HFile, br, &t.Slope.X, sizeof(t.Slope.X));
199 TRY_READ_B(HFile, br, &t.Slope.Y, sizeof(t.Slope.Y));
200 TRY_READ_B(HFile, br, &t.Slope.Z, sizeof(t.Slope.Z));
201 TRY_READ_B(HFile, br, &t.Sigma, sizeof(t.Sigma));
202 TRY_READ_B(HFile, br, &t.FirstZ, sizeof(t.FirstZ));
203 TRY_READ_B(HFile, br, &t.LastZ, sizeof(t.LastZ));
204 t.Valid = true;
205 TSpace++;
206 GSpace += t.Grains;
207 };
208 };
209 }
210 else
211 {
212 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
213 for (j = 0; j < 2; j++)
214 {
215 pViews[i].pTracks[j] = (Track2 *)malloc(sizeof(Track2) * pViews[i].TCount[j]);
216 for (k = 0; k < pViews[i].TCount[j]; k++)
217 {
218 Track2 &t = pViews[i].pTracks[j][k];
219 t.Field = i;
220 t.AreaSum = 0;
221 static TVector Dummy;
222 TRY_READ_B(HFile, br, &t.Grains, sizeof(t.Grains));
223 TRY_READ_B(HFile, br, &t.Intercept.X, sizeof(t.Intercept.X));
224 TRY_READ_B(HFile, br, &t.Intercept.Y, sizeof(t.Intercept.Y));
225 TRY_READ_B(HFile, br, &t.Intercept.Z, sizeof(t.Intercept.Z));
226 TRY_READ_B(HFile, br, &t.Slope, sizeof(t.Slope));
227 TRY_READ_B(HFile, br, &t.Sigma, sizeof(t.Sigma));
228 TRY_READ_B(HFile, br, &t.FirstZ, sizeof(t.FirstZ));
229 TRY_READ_B(HFile, br, &t.LastZ, sizeof(t.LastZ));
230 TRY_READ_B(HFile, br, &Dummy, sizeof(Dummy));
231 TRY_READ_B(HFile, br, &Dummy, sizeof(Dummy));
232 t.Valid = true;
234 {
235 TRY_READ_B(HFile, br, pCorr, Frag.Fragment.FitCorrectionDataSize);
236 };
237 TSpace++;
238 GSpace += t.Grains;
239 };
240 };
241 }
242
243 p = pData = (char *)malloc((sizeof(Frag) + sizeof(VS_View2) * Frag.Fragment.CountOfViews + (sizeof(VS_View2::t_LayerInfo) * LSpace) +
244 (sizeof(Track2)) * TSpace + (( (Frag.Fragment.CodingMode == VS_COMPRESSION_GRAIN_SUPPRESSION)) ?
245 0 : (sizeof(Grain) * GSpace))));
246
247 p= ED_COPY_AND_DISPLACE(p, &Frag, sizeof(Frag));
248 ((IO_VS_Fragment2 *)pData)->Fragment.pViews = (VS_View2 *)p;
249 p= ED_COPY_AND_DISPLACE(p, pViews, (sizeof(VS_View2) * Frag.Fragment.CountOfViews));
250 LSpace = 0;
251 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
252 for (j = 0; j < 2; j++)
253 {
254 ((IO_VS_Fragment2 *)pData)->Fragment.pViews[i].Layers[j].pLayerInfo = (VS_View2::t_LayerInfo *)p + LSpace;
255 LSpace += ((IO_VS_Fragment2 *)pData)->Fragment.pViews[i].Layers[j].Count;
256 };
257 p= ED_COPY_AND_DISPLACE(p, pLayers, sizeof(VS_View2::t_LayerInfo) * LSpace);
258 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
259 for (j = 0; j < 2; j++)
260 {
261 ((IO_VS_Fragment2 *)pData)->Fragment.pViews[i].pTracks[j] = (Track2 *)p;
262 p= ED_COPY_AND_DISPLACE(p, pViews[i].pTracks[j], sizeof(Track2) * pViews[i].TCount[j]);
263 };
264 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
265 for (j = 0; j < 2; j++)
266 for (k = 0; k < pViews[i].TCount[j]; k++)
267 ((IO_VS_Fragment2 *)pData)->Fragment.pViews[i].pTracks[j][k].pCorrection = 0;
268
270 {
271 if (Hdr.HeaderFormat == VS_HEADER_TYPE)
272 {
273
274 for (i=0; i<GSpace; i++) {
275 Grain g;
276 TRY_READ_B(HFile, br, &g, sizeof(g));
277 ((Grain *)p + i)->Area = g.Area;
278 ((Grain *)p + i)->X = g.X;
279 ((Grain *)p + i)->Y = g.Y;
280 ((Grain *)p + i)->Z = g.Z;
281 }
282 }
283 else
284 for (i = 0; i < GSpace; i++)
285 {
286 ((Grain *)p + i)->Area = 0;
287 TRY_READ_B(HFile, br, &((Grain *)p + i)->X, sizeof(((Grain *)p + i)->X));
288 TRY_READ_B(HFile, br, &((Grain *)p + i)->Y, sizeof(((Grain *)p + i)->Y));
289 TRY_READ_B(HFile, br, &((Grain *)p + i)->Z, sizeof(((Grain *)p + i)->Z));
290 };
291 GSpace = 0;
292 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
293 for (j = 0; j < 2; j++)
294 for (k = 0; k < pViews[i].TCount[j]; k++)
295 {
296 ((IO_VS_Fragment2 *)pData)->Fragment.pViews[i].pTracks[j][k].pGrains = (Grain *)(p + sizeof(Grain) * GSpace);
297 GSpace += pViews[i].pTracks[j][k].Grains;
298 };
299 }
300 else
301 {
302 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
303 for (j = 0; j < 2; j++)
304 for (k = 0; k < pViews[i].TCount[j]; k++)
305 ((IO_VS_Fragment2 *)pData)->Fragment.pViews[i].pTracks[j][k].pGrains = 0;
306 };
307 if (pViews)
308 {
309 for (i = 0; i < Frag.Fragment.CountOfViews; i++)
310 for (j = 0; j < 2; j++)
311 if (pViews[i].pTracks[j]) free(pViews[i].pTracks[j]);
312 free(pViews);
313 };
314 if (pCorr) free(pCorr);
315 if (pLayers) free(pLayers);
316 *ppData = (IO_VS_Fragment2 *)pData;
317 // free(pData);
318 fclose(F);
319 return 1;
320}
Definition: Fragment.h:9
void TRY_READ_B(FILE *HFile, int br, void *dst, int size)
Definition: dataIO.cpp:78
int Layers
Definition: hwinit.C:65
TTree * t
Definition: check_shower.C:4
Double_t X
Definition: tlg2couples.C:76
Double_t Y
Definition: tlg2couples.C:76
Double_t Z
Definition: tlg2couples.C:104
UInt_t Count
Definition: tlg2couples.C:101
Definition: Struct.h:33
float Y
Definition: Track2.h:13
unsigned short Area
Definition: Track2.h:11
float Z
Definition: Track2.h:14
float X
Definition: Track2.h:12
Definition: vscan_ds.h:106
Identifier ID
Definition: vscan_ds.h:113
unsigned char Reserved[256]
Definition: vscan_ds.h:116
struct IO_VS_Fragment2::@30 Hdr
IO_Header Type
Definition: vscan_ds.h:112
VS_Fragment2 Fragment
Definition: vscan_ds.h:115
Definition: AcqPlateChanger.h:31
Definition: TVectors.h:8
Definition: Track2.h:18
unsigned Grains
Definition: Track2.h:20
int FitCorrectionDataSize
Definition: vscan_ds.h:54
int StartView
Definition: vscan_ds.h:52
int Index
Definition: vscan_ds.h:51
int CountOfViews
Definition: vscan_ds.h:53
int CodingMode
Definition: vscan_ds.h:55
Definition: VSRawData.h:48
int Clusters
Definition: VSRawData.h:49
int Count
Definition: VSRawData.h:54
Definition: VSRawData.h:35
Track2 * pTracks[2]
Definition: VSRawData.h:59
int TCount[2]
Definition: VSRawData.h:58
struct VS_View2::t_Layers2 Layers[2]
#define VS_COMPRESSION_NULL
Definition: vscan_ds.h:28
const int VS_COMPRESSION_GRAIN_SUPPRESSION
Definition: vscan_ds.linux.h:35
const int VS_HEADER_TYPE
Definition: vscan_ds.linux.h:28

◆ ReadMap()

int ReadMap ( void **  ppData,
char *  mapname 
)
84{
85 cout << "read map not implemented " << endl;
86 return 0;
87}

◆ TRY_READ_B()

void TRY_READ_B ( FILE *  HFile,
int  br,
void dst,
int  size 
)
79{
80 fread(dst,1,size,HFile);
81}