1 package org.lcsim.analysis;
2
3 import java.util.Map;
4 import org.lcsim.event.EventHeader;
5 import org.lcsim.util.Driver;
6
7
8
9
10
11
12
13 public class StripIdrupEvent extends Driver
14 {
15
16 private boolean _debug = true;
17 private int _idrupToWrite;
18 private int _numberToWrite;
19 private int _numberWritten;
20
21 protected void process(EventHeader event)
22 {
23
24 Map<String, int[]> iparams = event.getIntegerParameters();
25 int idrup = 0;
26 if (iparams.containsKey("idrup")) {
27 idrup = iparams.get("idrup")[0];
28 }
29 if (iparams.containsKey("_idrup")) {
30 idrup = iparams.get("_idrup")[0];
31 }
32
33 Map<String, float[]> fparams = event.getFloatParameters();
34 float weight = 1.0f;
35 if (fparams.containsKey("_weight")) {
36 weight = fparams.get("_weight")[0];
37 }
38 if (_debug) {
39 System.out.println("idrup= " + idrup + " : weight= " + weight);
40 }
41 boolean skipEvent = true;
42
43 if (idrup == _idrupToWrite) {
44 if (_numberWritten < _numberToWrite) {
45 ++_numberWritten;
46 System.out.println("writing event "+_numberWritten+" of "+_numberToWrite+" with idrup= " + idrup + " : weight= " + weight);
47 skipEvent = false;
48 }
49 }
50
51 if (skipEvent) {
52 throw new Driver.NextEventException();
53 }
54
55
56
57
58
59
60
61
62 }
63
64 public void setDebug(boolean debug)
65 {
66 _debug = debug;
67 }
68
69 public void setIdrup(int idrup)
70 {
71 _idrupToWrite = idrup;
72 }
73
74 public void setNumberToWrite(int numberToWrite)
75 {
76 _numberToWrite = numberToWrite;
77 }
78 }