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);
364  pConfigs[i].Config.pItems = (char *)malloc((SYSAL_MAXCONFIG_ENTRY_NAME_LEN + SYSAL_MAXCONFIG_ENTRY_VALUE_LEN) * pConfigs[i].Config.CountOfItems);
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
for(int i=0;i< nentries;i++)
Definition: check_shower.C:42
char * ED_COPY_AND_DISPLACE(void *dst, void *src, int size)
Definition: dataIO.cpp:72
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::@28 Hdr
float XMin
Definition: vscan_ds.h:74
float YStep
Definition: vscan_ds.h:75
IO_Header Type
Definition: vscan_ds.h:66
Identifier ID
Definition: vscan_ds.h:67
struct IO_VS_Catalog::@30 Config
int XViews
Definition: vscan_ds.h:76
int Fragments
Definition: vscan_ds.h:77
float XMax
Definition: vscan_ds.h:74
struct IO_VS_Catalog::@29 Area
int YViews
Definition: vscan_ds.h:76
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  {
131  case VS_COMPRESSION_NULL:
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 }
TTree * t
Definition: check_shower.C:4
Definition: Fragment.h:9
void TRY_READ_B(FILE *HFile, int br, void *dst, int size)
Definition: dataIO.cpp:78
struct @8 Z
int Layers
Definition: hwinit.C:65
Double_t X
Definition: tlg2pattern.C:77
Double_t Y
Definition: tlg2pattern.C:77
UInt_t Count
Definition: tlg2pattern.C:102
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
IO_Header Type
Definition: vscan_ds.h:112
struct IO_VS_Fragment2::@32 Hdr
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 }