/*
 * ClusterIDZMassReconAtZPole.java
 *
 * Created on October 24, 2002, 1:50 PM
 */

import hep.analysis.*;
import hep.lcd.util.driver.*;
import hep.physics.*;
import hep.physics.jets.*;
import hep.lcd.recon.particle.*;
import java.util.*;

/**
 *
 * @author  Gary R. Bower, SLAC
 */
public class ClusterIDZMassReconAtZPole extends AbstractProcessor
{
      
   public void process(hep.lcd.event.LCDEvent event)
   {
      HistogramFolder.setDefaultFolder("/FullZPoleRecon");
      BasicReconstructedParticleVector recvec =
      (BasicReconstructedParticleVector) event.get("FastTracksFullCalReconstructedParticles");
      Vector finals = new Vector();
      Enumeration e = recvec.getParticles();
      BasicHepLorentzVector v;
      while (e.hasMoreElements())
      {
         BasicReconstructedParticle rp = (BasicReconstructedParticle) e.nextElement();
         finals.addElement(rp.getHepLorentzVector());
      }
      histogram("nfinals").fill(finals.size());
      if ( finals.size() < 20 ) return;
      
      EventShape es = new EventShape();
      es.setEvent(finals.elements());
      histogram("cth thrustAxis").fill(es.thrustAxis().z());
      if ( es.thrustAxis().z() > 0.5 ) return;
	  Enumeration ez = finals.elements();
	  HepLorentzVector sum = new BasicHepLorentzVector();
	  while ( ez.hasMoreElements() )
	  {
		  HepLorentzVector vec = (HepLorentzVector) ez.nextElement();
		  sum = VecOp.add(sum,vec);
	  }
	  histogram("zpolemass").fill(sum.lorMag());  
   }       
}
