|
2 | 2 |
|
3 | 3 | import java.util.ArrayList; |
4 | 4 | import java.util.List; |
5 | | -import org.jlab.detector.base.DetectorType; |
6 | 5 | import org.jlab.io.base.DataBank; |
7 | 6 | import org.jlab.io.base.DataEvent; |
8 | 7 | import org.jlab.io.evio.EvioDataBank; |
9 | | -import org.jlab.io.evio.EvioFactory; |
10 | | -import org.jlab.clas.detector.*; |
11 | | - |
| 8 | +import org.jlab.clas.detector.DetectorHeader; |
| 9 | +import org.jlab.clas.detector.DetectorParticle; |
12 | 10 | import org.jlab.rec.eb.EBScalers; |
13 | 11 | import org.jlab.rec.eb.EBCCDBEnum; |
14 | 12 | import org.jlab.rec.eb.EBCCDBConstants; |
@@ -101,7 +99,6 @@ public static List<DetectorParticle> readTracks(DataEvent event, int type){ |
101 | 99 | return dpList; |
102 | 100 | } |
103 | 101 |
|
104 | | - |
105 | 102 | public static List<DetectorParticle> readCentralTracks(DataEvent event){ |
106 | 103 | List<DetectorParticle> dpList = new ArrayList<>(); |
107 | 104 | if(event.hasBank("CVTRec::Tracks")==true){ |
@@ -133,200 +130,5 @@ public static List<DetectorParticle> readCentralTracks(DataEvent event){ |
133 | 130 | return dpList; |
134 | 131 | } |
135 | 132 |
|
136 | | - public static boolean isTimeBased(DataEvent de){ |
137 | | - boolean tb = false; |
138 | | - if(de.hasBank("TimeBasedTrkg::TBHits")==true){ |
139 | | - return true; |
140 | | - } |
141 | | - return tb; |
142 | | - } |
143 | | - |
144 | | - public static List<DetectorParticle> readTracks(DataEvent event){ |
145 | | - return readTracks(event,EBio.TRACKS_TB); |
146 | | - } |
147 | | - |
148 | | - |
149 | | - /** |
150 | | - * Creates a DataBank from list of particles. type will |
151 | | - * indicate which bank to create type=TRACKS_HB will create |
152 | | - * a EVENTHB bank, and type=TRACKS_TB will create a bank EVENTTB. |
153 | | - * @param particles list of detector particles |
154 | | - * @param type type of the bank to create (Time based or Hit based) |
155 | | - * @return |
156 | | - */ |
157 | | - public static DataBank writeTraks(List<DetectorParticle> particles, int type){ |
158 | | - |
159 | | - String bankName = "EVENTHB::particle"; |
160 | | - |
161 | | - switch (type){ |
162 | | - case 1 : bankName = "EVENTHB::particle"; break; |
163 | | - case 2 : bankName = "EVENTTB::particle"; break; |
164 | | - default: break; |
165 | | - } |
166 | | - |
167 | | - EvioDataBank bank = EvioFactory.createBank(bankName, particles.size()); |
168 | | - |
169 | | - for(int i = 0; i < particles.size(); i++){ |
170 | | - |
171 | | - DetectorParticle p = particles.get(i); |
172 | | - |
173 | | - bank.setInt("charge", i, p.getCharge()); |
174 | | - bank.setInt("pid", i, p.getPid()); |
175 | | - |
176 | | - bank.setFloat("beta",i, (float) p.getBeta()); |
177 | | - |
178 | | - bank.setFloat("px", i, (float) p.vector().x()); |
179 | | - bank.setFloat("py", i, (float) p.vector().y()); |
180 | | - bank.setFloat("pz", i, (float) p.vector().z()); |
181 | | - |
182 | | - bank.setFloat("vx", i, (float) p.vertex().x()); |
183 | | - bank.setFloat("vy", i, (float) p.vertex().y()); |
184 | | - bank.setFloat("vz", i, (float) p.vertex().z()); |
185 | | - } |
186 | | - |
187 | | - return bank; |
188 | | - } |
189 | | - |
190 | | - //write cherenkov responses |
191 | | - |
192 | | - public static DataBank writeResponses(List<DetectorResponse> responses, int type ){ |
193 | | - String bankName = "EVENTHB::particle"; |
194 | | - |
195 | | - switch (type){ |
196 | | - case 1 : bankName = "EVENTHB::detector"; break; |
197 | | - case 2 : bankName = "EVENTTB::detector"; break; |
198 | | - default: break; |
199 | | - } |
200 | | - |
201 | | - EvioDataBank bank = EvioFactory.createBank(bankName, responses.size()); |
202 | | - |
203 | | - for(int i = 0; i < responses.size();i++){ |
204 | | - bank.setInt("pindex", i,responses.get(i).getAssociation()); |
205 | | - bank.setInt("index", i,i); |
206 | | - bank.setInt("detector", i, responses.get(i).getDescriptor().getType().getDetectorId()); |
207 | | - bank.setInt("sector", i, responses.get(i).getDescriptor().getSector()); |
208 | | - bank.setInt("layer", i, responses.get(i).getDescriptor().getLayer()); |
209 | | - |
210 | | - bank.setFloat("X", i, (float) responses.get(i).getPosition().x()); |
211 | | - bank.setFloat("Y", i, (float) responses.get(i).getPosition().y()); |
212 | | - bank.setFloat("Z", i, (float) responses.get(i).getPosition().z()); |
213 | | - |
214 | | - bank.setFloat("hX", i, (float) responses.get(i).getMatchedPosition().x()); |
215 | | - bank.setFloat("hY", i, (float) responses.get(i).getMatchedPosition().y()); |
216 | | - bank.setFloat("hZ", i, (float) responses.get(i).getMatchedPosition().z()); |
217 | | - |
218 | | - bank.setFloat("path", i, (float) responses.get(i).getPath()); |
219 | | - bank.setFloat("time", i, (float) responses.get(i).getTime()); |
220 | | - bank.setFloat("energy", i, (float) responses.get(i).getEnergy()); |
221 | | - |
222 | | - } |
223 | | - return bank; |
224 | | - } |
225 | | - |
226 | | - public static DataBank writeCherenkovResponses(List<CherenkovResponse> responses, int type ) { |
227 | | - String bankName = "EVENTHB::particle"; |
228 | | - |
229 | | - switch (type){ |
230 | | - case 1 : bankName = "EVENTHB::cherenkov"; break; |
231 | | - case 2 : bankName = "EVENTTB::cherenkov"; break; |
232 | | - default: break; |
233 | | - } |
234 | | - EvioDataBank bank = EvioFactory.createBank(bankName, responses.size()); |
235 | | - for(int i = 0; i < responses.size();i++){ |
236 | | - bank.setInt("pindex", i,responses.get(i).getAssociation()); |
237 | | - bank.setInt("index", i,i); |
238 | | - bank.setFloat("X", i, (float) responses.get(i).getHitPosition().x()); |
239 | | - bank.setFloat("Y", i, (float) responses.get(i).getHitPosition().y()); |
240 | | - bank.setFloat("Z", i, (float) responses.get(i).getHitPosition().z()); |
241 | | - bank.setFloat("time", i, (float) responses.get(i).getTime()); |
242 | | - bank.setFloat("nphe", i, (float) responses.get(i).getEnergy()); |
243 | | - } |
244 | | - return bank; |
245 | | - } |
246 | | - |
247 | | - public static DataBank writeTrigger(DetectorEvent event){ |
248 | | - String bankName = "Trigger::info"; |
249 | | - EvioDataBank bank = EvioFactory.createBank(bankName, 1); |
250 | | - //bank.setDouble("starttime", 0, event.getEventTrigger().getStartTime()); |
251 | | - //bank.setDouble("vertextime",0, event.getEventTrigger().getVertexTime()); |
252 | | - //bank.setDouble("rftime", 0, event.getEventTrigger().getRFTime()); |
253 | | - //bank.setInt("id",0,event.getEventTrigger().getTriggerID()); |
254 | | - return bank; |
255 | | - } |
256 | | - |
257 | | - public static List<DetectorResponse> readECAL(DataEvent event){ |
258 | | - List<DetectorResponse> ecal = new ArrayList<>(); |
259 | | - if(event.hasBank("ECDetector::clusters")==true){ |
260 | | - EvioDataBank bank = (EvioDataBank) event.getBank("ECDetector::clusters"); |
261 | | - int nrows = bank.rows(); |
262 | | - for(int i = 0; i < nrows; i++){ |
263 | | - int sector = bank.getInt("sector", i); |
264 | | - int layer = bank.getInt("layer", i); |
265 | | - DetectorResponse resp = new DetectorResponse(); |
266 | | - resp.getDescriptor().setType(DetectorType.ECAL); |
267 | | - resp.getDescriptor().setSectorLayerComponent(sector, layer, 0); |
268 | | - resp.setPosition( |
269 | | - bank.getDouble("X", i),bank.getDouble("Y", i), |
270 | | - bank.getDouble("Z", i) |
271 | | - ); |
272 | | - resp.setTime(bank.getDouble("time", i)); |
273 | | - resp.setEnergy(bank.getDouble("energy", i)); |
274 | | - ecal.add(resp); |
275 | | - } |
276 | | - } |
277 | | - return ecal; |
278 | | - } |
279 | | - |
280 | | - public static List<DetectorResponse> readFTOF(DataEvent event){ |
281 | | - List<DetectorResponse> ftof = new ArrayList<>(); |
282 | | - if(event.hasBank("FTOFRec::ftofhits")==true){ |
283 | | - EvioDataBank bank = (EvioDataBank) event.getBank("FTOFRec::ftofhits"); |
284 | | - int nrows = bank.rows(); |
285 | | - for(int i = 0; i < nrows; i++){ |
286 | | - int sector = bank.getInt("sector", i); |
287 | | - int layer = bank.getInt("panel_id", i); |
288 | | - int paddle = bank.getInt("paddle_id", i); |
289 | | - if(layer==2||layer==3){ |
290 | | - DetectorResponse resp = new DetectorResponse(); |
291 | | - resp.getDescriptor().setType(DetectorType.FTOF); |
292 | | - resp.getDescriptor().setSectorLayerComponent(sector, layer, paddle); |
293 | | - resp.setPosition( |
294 | | - bank.getFloat("x", i),bank.getFloat("y", i), |
295 | | - bank.getFloat("z", i) |
296 | | - ); |
297 | | - resp.setTime(bank.getFloat("time", i)); |
298 | | - resp.setEnergy(bank.getFloat("energy", i)); |
299 | | - ftof.add(resp); |
300 | | - } |
301 | | - } |
302 | | - } |
303 | | - return ftof; |
304 | | - } |
305 | | - |
306 | | - public static List<CherenkovResponse> readHTCC(DataEvent event) { |
307 | | - List<CherenkovResponse> htcc = new ArrayList<>(); |
308 | | - if(event.hasBank("HTCCRec::clusters")==true){ |
309 | | - |
310 | | - EvioDataBank bank = (EvioDataBank) event.getBank("HTCCRec::clusters"); |
311 | | - int nrows = bank.rows(); |
312 | | - for(int i = 0; i < nrows; i++){ |
313 | | - int nphe = bank.getInt("nphe", i); |
314 | | - double dtheta = bank.getDouble("dtheta",i); |
315 | | - double dphi = bank.getDouble("dphi",i); |
316 | | - double x = bank.getDouble("x",i); |
317 | | - double y = bank.getDouble("y",i); |
318 | | - double z = bank.getDouble("z",i); |
319 | | - double time = bank.getFloat("time",i); |
320 | | - CherenkovResponse che = new CherenkovResponse(dtheta,dphi); |
321 | | - che.setHitPosition(x, y, z); |
322 | | - che.setEnergy(nphe); |
323 | | - che.setTime(time); |
324 | | - che.getDescriptor().setType(DetectorType.HTCC); |
325 | | - htcc.add(che); |
326 | | - |
327 | | - } |
328 | | - } |
329 | | - return htcc; |
330 | | - } |
331 | 133 | } |
332 | 134 |
|
0 commit comments