1 package org.lcsim.lcio;
2
3 import hep.io.sio.SIOInputStream;
4 import hep.io.sio.SIOOutputStream;
5
6 import java.io.IOException;
7 import java.util.HashMap;
8 import java.util.Map;
9 import org.lcsim.event.EventHeader.LCMetaData;
10
11
12
13
14
15
16
17 class SIOLCParameters
18 {
19 private Map<String,int[]> _intMap = new HashMap<String,int[]>();
20 private Map<String,float[]> _floatMap = new HashMap<String,float[]>();
21 private Map<String,String[]> _stringMap = new HashMap<String,String[]>();
22
23
24 Map<String,int[]> getIntMap()
25 {
26 return _intMap;
27 }
28 Map<String,float[]> getFloatMap()
29 {
30 return _floatMap;
31 }
32 Map<String,String[]> getStringMap()
33 {
34 return _stringMap;
35 }
36 SIOLCParameters()
37 {
38
39 }
40 SIOLCParameters(SIOInputStream in) throws IOException
41 {
42 int nIntParameters = in.readInt();
43 for (int i = 0; i < nIntParameters; i++)
44 {
45 String key = in.readString();
46 int nInt = in.readInt() ;
47 int[] iv = new int[nInt] ;
48 for (int j = 0; j < nInt; j++)
49 {
50 iv[j] = in.readInt() ;
51 }
52 _intMap.put( key , iv ) ;
53 }
54 int nFloatParameters = in.readInt();
55 for (int i = 0; i < nFloatParameters; i++)
56 {
57 String key = in.readString();
58 int nFloat = in.readInt() ;
59 float[] fv = new float[nFloat] ;
60 for (int j = 0; j < nFloat; j++)
61 {
62 fv[j] = in.readFloat() ;
63 }
64 _floatMap.put( key , fv ) ;
65 }
66
67 int nStringParameters = in.readInt();
68 for (int i = 0; i < nStringParameters; i++)
69 {
70 String key = in.readString();
71 int nString = in.readInt() ;
72 String[] sv = new String[nString] ;
73 for (int j = 0; j < nString; j++)
74 {
75 sv[j] = in.readString() ;
76 }
77 _stringMap.put( key , sv ) ;
78 }
79 }
80 static void write(Map<String,int[]> intMap, Map<String,float[]> floatMap, Map<String,String[]> stringMap, SIOOutputStream out) throws IOException
81 {
82 out.writeInt(intMap.size());
83 for (Map.Entry<String,int[]> entry : intMap.entrySet())
84 {
85 out.writeString(entry.getKey());
86 int[] values = entry.getValue();
87 out.writeInt(values.length) ;
88 for (int v : values)
89 {
90 out.writeInt(v);
91 }
92 }
93 out.writeInt(floatMap.size());
94 for (Map.Entry<String,float[]> entry : floatMap.entrySet())
95 {
96 out.writeString(entry.getKey());
97 float[] values = entry.getValue();
98 out.writeInt(values.length) ;
99 for (float v : values)
100 {
101 out.writeFloat(v);
102 }
103 }
104 out.writeInt(stringMap.size());
105 for (Map.Entry<String,String[]> entry : stringMap.entrySet())
106 {
107 out.writeString(entry.getKey());
108 String[] values = entry.getValue();
109 out.writeInt(values.length) ;
110 for (String v : values)
111 {
112 out.writeString(v);
113 }
114 }
115 }
116 }