Hi, the hep.lcd classes live in the LCDPlugin. How you get the classes depends a little on what environment you are using:
1) JAS2. Use the JAS2 Plugin Manager (View->Plugin Manager) to install the LCD Plugin
2) JAS3. Use the JAS3 Plugin Manager (View->Plugin Manager) to install the LCD Plugin -- see: http://jas.freehep.org/jas3/Tutorial/Day2/install/index.html
You can also get the source code from CVS and build it yourself, see:
http://www-sldnt.slac.stanford.edu/jas/Documentation/lcd/source.htm
(the web based CVS source code browser is temporarily broken as it is being migrated to a new server -- but downloading the code from CVS will work).
Tony
> -----Original Message-----
> From: Vaddi, Vikranth [mailto:[log in to unmask]]
> Sent: Monday, January 26, 2004 11:54 AM
> To: lcd-dev
> Subject: Full reconstruction example - Source code error.
>
>
> Hi there ,
>
> I was wondering if someone could lemme know ,where do i
> obtain library files in the path
>
> hep.lcd.*
>
> Im trying to compile the following program and the first
> error is class not found error..
>
> i havent installed any lcd library files..
>
> thanks
>
> vic
>
>
>
>
>
> //
>
>
> // This is an example reconstruction and simple analysis
> // program for LCD events.
> //
> import java.util.*;
> import java.lang.Math;
> import hep.lcd.util.driver.Driver;
> import hep.lcd.util.driver.AbstractProcessor;
>
> import hep.lcd.event.LCDEvent;
>
> import hep.lcd.mc.smear.SmearDriver;
> import hep.lcd.recon.tracking.TrackReco;
> import hep.lcd.event.Track;
> import hep.lcd.event.TrackList;
> import hep.lcd.event.*;
>
> import hep.lcd.recon.cluster.simple.SimpleClusterBuilder;
> import hep.lcd.event.Cluster;
> import hep.lcd.event.ClusterList;
>
> import hep.physics.*;
> import hep.physics.jets.AbstractJetFinder;
> import hep.physics.jets.JadeEJetFinder;
> import hep.physics.jets.DurhamJetFinder;
>
> import hep.lcd.geometry.Detector;
>
> final public class KshortTest extends Driver
> {
> public KshortTest()
> {
>
> // Smear Tracker hits with default resolutions
> add(new SmearDriver());
> // Find tracks in combined inner tracker
> add(new TrackReco());
> // Find Clusters using simple clustering algorithm
> add(new SimpleClusterBuilder());
> // Look at Kshorts
> add(new KshortInfo());
> }
> }
>
>
> // Find Jets using Calorimeter Clusters
> class KshortInfo extends AbstractProcessor
> {
>
> // Default KshortInfo
>
> // Fully qualified Constructor
> public KshortInfo()
> {
>
> }
>
> public double MyFunc(double[] mom)
> {
> return (mom[0]+mom[1]);
> }
>
> public void process(final LCDEvent event)
> {
> // We will use the calorimeter clusters in this example
> to find jets
> double[] testvc = new double[3];
> testvc[0]=0.4;
> testvc[1]=0.65;
> System.out.println ("TestFunc"+MyFunc(testvc));
> Vector finals = new Vector();
> // Get the EM clusters from the event...
> ClusterList em = event.getEMClusters();
> Enumeration eem = em.getClusters();
> // Get the hadronic clusters from the event...
> ClusterList had = event.getHADClusters();
> Enumeration ehad = had.getClusters();
>
> // which detector are we using? Needed to apply
> sampling fractions.
> // This will be automatic in the future.
> Detector det = event.getCurrentDetector();
> // defaults...
> double emscale = 1/.0697; //cng
> double hadscale = 1/.0189; //cng
> if(det.toString().equals("ldmar01"))
> {
> emscale = 1/.0263;
> hadscale = 1/.028;
> }
> else if(det.toString().equals("sdmar01"))
> {
> emscale = 1/.0222;
> hadscale = 1/.0555;
> }
> else if(det.toString().equals("pdmar01"))
> {
> emscale = 1/.0697;
> hadscale = 1/.0189;
> }
>
> //System.out.println ("MCParticle information:");
> ParticleVector pv = event.getMCParticles();
> for (ParticleEnumeration emc = pv.particles();
> emc.hasMoreParticles(); )
> {
> Particle p = emc.nextParticle();
> if (p.getType().getPDGID()==310) // K-short
> {
> ParticleEnumeration dau = p.getDaughters();
> int nDaughters = 0;
> while (dau.hasMoreParticles())
> {
> Particle daughter = dau.nextParticle();
> nDaughters++;
> }
> histogram("K0sNumberOfDaughters").fill(nDaughters);
> if (nDaughters >=2) {
> ParticleEnumeration daughters = p.getDaughters();
> Particle daughter1 = daughters.nextParticle();
> Particle daughter2 = daughters.nextParticle();
>
> //System.out.println(daughter1.getType().getName());
> double[] K0sVertex = new double[3];
> K0sVertex[0]= daughter1.getOriginX();
> K0sVertex[1]= daughter1.getOriginY();
>
> histogram("K0sDaughter").fill(daughter1.getType().getPDGID());
>
> histogram("K0sVertex").fill(Math.sqrt(K0sVertex[0]*K0sVertex[0
> ]+K0sVertex[1]*K0sVertex[1]));
>
> histogram("DaughterMissmatch").fill(daughter1.getOriginX()-dau
> ghter2.getOriginX());
> if (daughter1.getType().getCharge()!=0){
> // good chance that this is K0s-> pi+pi-
> // get hits
> // get tracks
> // get Calorimeter hits
> //
> // GET CLUSTERS (cluster.getHits() )
> // BUILD POINTING CLUSTERS FROM HITS
> ASSOCIATED WITH CLUSTER: FOOTPOINT AND POSITION
> // EXTRAPOLATE POINTING CLUSTER TO
> ASSOCIATE HITS
> // BUILD TRACKLETS FROM POINTING
> CLUSTER AND HITS
> }
> }
> }
> //
> // Count the number of daughters
> //
> ParticleEnumeration daughters = p.getDaughters();
> int nDaughters = 0;
> while (daughters.hasMoreParticles())
> {
> Particle daughter = daughters.nextParticle();
> nDaughters++;
> }
> //
> // Get the rest of the particle information
> //
> ParticleType type = p.getType();
> int pid = type.getPDGID();
> String name = type.getName();
> double energy = p.getEnergy();
> double charge = type.getCharge();
> //System.out.println( pid );
> //System.out.println( type.getName());
>
> double originx = 0.0;
> double originy = 0.0;
> double originz = 0.0;
> double momentumx = 0.0;
> double momentumy = 0.0;
> double momentumz = 0.0;
>
> if (p.getStatusCode() != Particle.DOCUMENTATION)
> {
> originx = p.getOriginX();
> originy = p.getOriginY();
> originz = p.getOriginZ();
> momentumx = p.getPX();
> momentumy = p.getPY();
> momentumz = p.getPZ();
> }
> }
> //System.out.println();
>
> //System.out.println ("Vertex information:");
> TrackerHits hitsVXD = event.getVXDHits();
> //System.out.println (" ");
> //System.out.println (hitsVXD.getNHits());
> histogram("VXD Nhits").fill(hitsVXD.getNHits());
> Enumeration eVXD = hitsVXD.getHits();
> while (eVXD.hasMoreElements())
> {
> TrackerHit h = (TrackerHit) eVXD.nextElement();
> int layer = h.getLayer();
> double[] point = h.getPoint();
> double dedx = h.getDEdx();
> //System.out.println ("layer ");
> //System.out.println (layer);
> histogram("VXD Layer").fill(layer);
> histogram("VXD
> rad").fill(Math.sqrt(point[0]*point[0]+point[1]*point[1]));
> //+ NumStr.format(layer,3) +
> // " (" + NumStr.format(point[0],7,3) +
> // ", " + NumStr.format(point[1],7,3) +
> // ", " + NumStr.format(point[2],7,3) +
> // ") " + NumStr.format(dedx,8,6));
> }
> //System.out.println();
>
>
> //System.out.println ("Tracker information:");
> TrackerHits hits = event.getTrackerHits();
> //System.out.println (" ");
> //System.out.println (hits.getNHits());
> histogram("Tracker Nhits").fill(hits.getNHits());
> Enumeration e = hits.getHits();
> while (e.hasMoreElements())
> {
> TrackerHit h = (TrackerHit) e.nextElement();
> int layer = h.getLayer();
> double[] point = h.getPoint();
> double dedx = h.getDEdx();
> //System.out.println ("layer ");
> //System.out.println (layer);
> histogram("Tracker Layer").fill(layer);
> histogram("Tracker
> rad").fill(Math.sqrt(point[0]*point[0]+point[1]*point[1]));
> //+ NumStr.format(layer,3) +
> // " (" + NumStr.format(point[0],7,3) +
> // ", " + NumStr.format(point[1],7,3) +
> // ", " + NumStr.format(point[2],7,3) +
> // ") " + NumStr.format(dedx,8,6));
> }
> //System.out.println();
>
> double cEn = 0;
> double pt = 0;
> double px = 0;
> double py = 0;
> double pz = 0;
>
> // loop over the EM clusters
> while (eem.hasMoreElements())
> {
> Cluster c = (Cluster) eem.nextElement();
> cEn = emscale*c.getEnergy();
> histogram("Total Cluster Energy").fill(cEn);
> histogram("EM Cluster Energy").fill(cEn);
> histogram("EM Theta").fill(c.getEnergyTheta());
> histogram("EM CosTheta").fill(Math.cos(c.getEnergyTheta()));
> pt = cEn;
> px =
> cEn*Math.sin(c.getEnergyPhi())*Math.sin(c.getEnergyTheta());
> py =
> cEn*Math.cos(c.getEnergyPhi())*Math.sin(c.getEnergyTheta());
> pz = cEn*Math.cos(c.getEnergyTheta());
> // cut out low energy clusters...
> if ( cEn > 0.5 )
> {
> finals.addElement(new
> BasicHepLorentzVector(pt,px,py,pz));
> }
> }
> // Loop over the hadronic clusters
> while (ehad.hasMoreElements())
> {
> Cluster c = (Cluster) ehad.nextElement();
> // scale the energy
> cEn = hadscale*c.getEnergy();
> histogram("HAD Cluster Energy").fill(cEn);
> histogram("Total Cluster Energy").fill(cEn);
> histogram("HAD Theta").fill(c.getEnergyTheta());
> histogram("HAD CosTheta").fill(Math.cos(c.getEnergyTheta()));
> pt = cEn;
> px =
> cEn*Math.sin(c.getEnergyPhi())*Math.sin(c.getEnergyTheta());
> py =
> cEn*Math.cos(c.getEnergyPhi())*Math.sin(c.getEnergyTheta());
> pz = cEn*Math.cos(c.getEnergyTheta());
> // cut out low energy clusters...
> if ( cEn > 0.5 )
> {
> finals.addElement(new BasicHepLorentzVector(pt +
> 0.137,px,py,pz));
> }
> }
> }
> }
>
>
|