View Javadoc

1   /*
2    * To change this template, choose Tools | Templates
3    * and open the template in the editor.
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   *A filter based on the cutoff values in a SeedStrategy. 
17   * @author cozzy
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  }