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()-daughter2.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));
}
}
}
}
|