1
2
3
4
5
6 package org.lcsim.recon.tracking.seedtracker.strategybuilder;
7
8 import hep.physics.vec.BasicHep3Vector;
9 import hep.physics.vec.Hep3Vector;
10 import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
11 import org.lcsim.event.EventHeader;
12 import org.lcsim.event.MCParticle;
13 import org.lcsim.fit.helicaltrack.HelixParamCalculator;
14
15
16
17
18
19 public class StrategyBasedFilter implements IParticleFilter {
20
21 double pt;
22 double dca;
23 double z0;
24 double b;
25 Hep3Vector ip = new BasicHep3Vector(0., 0., 0.);
26
27 public StrategyBasedFilter(SeedStrategy strategy){
28 pt = strategy.getMinPT();
29 dca = strategy.getMaxDCA();
30 z0 = strategy.getMaxZ0();
31
32 }
33
34
35 public boolean passes(MCParticle p) {
36 HelixParamCalculator calc = new HelixParamCalculator(p, b);
37 return (
38 Math.abs(calc.getDCA()) < dca &&
39 Math.abs(calc.getZ0()) < z0 &&
40 calc.getMCTransverseMomentum() > pt
41 );
42 }
43
44 public void setEvent(EventHeader event){
45 b = event.getDetector().getFieldMap().getField(ip).z();
46 }
47
48 }