Version 1.5.5 (4 Aug 2003)
- Fixed lcd.jar file which had missing classes.
- Remove some obsolete references to hep.analysis.job
Version 1.5.4 (17 May 2003)
- SDJan03 detector added
- AbstractCalorimeterCell, CalorimeterCellNewTag, and AbstractCluster
modified to allow an angular correction to energy.
- lcd.mc.analysis package added - contains CreateFSParticleList, which
creates a final state MCParticle list in Event.
- ExampleEfficiencyDriver added. Example Driver to make efficiency plots for
an arbitrary cluster list.
- ReplaceCalorimeterHits modified to use a FSParticleList for assigning
- lcd.recon.cluster.analysis.EfficiencyProcessor added for efficiency
- lcd.recon.cluster.analysis.EfficiencyPlotProcessor added to produce plots
and pages overlaying efficiency plots for comparisons.
Version 1.5.1 (5 December 2002)
- Changes to Driver/Processor to fix bugs and to allow set/get an
EventPrefix to be appended to anything added to an event.
- Contrib is back in the build
- A new area, shared, contains code which is not to be compiled.
- Bug fix in ClusterCheater which was putting RefinedClusters into the
- T02 detector added
- Remove MCFastProcessor class added in too much of a hurry for 1.5
Version 1.5 (5 November 2002)
- contrib area is no longer included in build by default
- examples area added (also not in build by default)
- Added muon reconstruction system from Rich Markeloff
- Split MCFast into separate sub-processors for tracking and calorimetry
- Added new FastCal simulation from Saurav Pathak as optional alternative to
Mike Ronan's FastMC calorimetry simulation (see
- Updated ZVTop from Wolfgang (details unknown?)
Cluster Finding, Cluster ID and Reconstructed Particle
- revised ClusterID files in related directories
- added code for ClusterID in new directories:
added ReconstructedParticle Interface to
added the cjnn.jar to lib
- detector sdmnocalgaps added
- interfaces added to lcd.event: IdentifiedCluster and ExtendedParticleType
- IdentifiedCluster extends Cluster with particle type information
- ExtendedParticleType allows for non-PDGID particles
- lcd.geometry.component - abstract class Calorimeter modified to allow
- lcd.geometry -
- SegmentedDetectorComponent - modified to allow changing
- CalorimeterCell - Functionality added to interface:
- setThetaRange,setPhiRange,setLayerRange - expand adjacency definition when
returning list of adjacent cells
- FindIDfromXXXX -
return cell ID for a set of coordinates
- ConstructID - return
cell ID from tag fields
- findSystem - return
the Calorimeter at the input r,z
- getSamplingFractions -
return sampling fractions for the current EM and HAD calorimeters
- getNumEMLayers -
return the # of layers for the current EM calorimeter
- CalorimeterCellNewTag - implement the additional functionality +
expand getNeighboringCells to cross EM-HAD border
- lcd.recon.cluster.cheat - ClusterCheater expanded to fill RefinedClusters
combining EM and HAD hits
- lcd.recon.cluster.simple - SimpleClusterBuilder expanded to find
RefinedClusters and to allow redefinition of adjacency
- ChangeSegmentation - new processor to reduce the segmentation
for a calorimeter
- ReplaceCalorimeterHits - new processor to rewrite hits with the
energy contributions from a consistent set of MCParticles
- ShapeIdentifiedCluster - new class implementing
- ClusterParticleType - new class implementing
- AbstractCluster - new functionality:
getEEM,getEHAD,getScaledContributedEnergy return sampling fraction corrected
- calculateEnergyTensor calculates
and stores shape parameters
getInnermostHitLayer uses a combined layer # (combined HAD layer = HAD layer +
max EM layer)
- getXXX - XXX interesting
parameters of EnergyTensor (Eigenvalues, Eigenvectors, CenterofEnergy,
hep.lcd.vertexing.mc package added.
Switch to using frisbee and latest freehep build tools
Various documentation updates
Support for writing SIO files added.
Support for overlaying events added (see hep.lcd.util.event.MergedEvent)
Some speed-ups in SIO.
Make constructor for PythiaParticlePropertyProvider public
3Vector methods of MC reconstructed track now refer to momentum not position
Update hep.lcd.mc.fast.MCFast, ReconTrackParameters and
for curvature flip option. This is needed by the
Update hep.lcd.util.swim.Helix for curvature flip option.
Add hep.lcd.util.swim.HelixSwim, which is needed by updated WiredLCDClient.
Add Vertex, VertexList and FitStatus to hep.lcd.event package.
Fix to LCD Event Display for tracks with large impact parameters.
Add ZvTopVertexer R1.00 as first version to this release.
Add line to put current LCDEvent into hash in Driver.java.
Set default detector to "ldmar01" in Detector.java.
Updated new track error matrices for ldmar01, sdmar01 and p1
detectors to Bruce's matrices of end of April 2001.
For sdmar01 detector: Copied HitSmearing.ini, ClusterParameters.ini
and TrackParameters.ini from s2 detector to make it working. These
files probably need verification. (w.w., 05/29/01)
Added hep.lcd.contrib.physics.PythiaParticlePropertyProvider (from bobw)
Add Si and P1 detector files (See Web help pages for
Add SamplingFractions class to return sampling fractions for
Add Carbon and Stainless Steel to DeDx and RadLengths classes
Add getCalorimeterMomentum() method to MCParticle
Bug fix in AddRandomBkg (is it correct?)
Add MC Particle Table to LCDPlugin
This release contains several changes that are not backward
compatible, in particular the definition of getStatusCode() in
MCParticle has changed, and the handling of detector geometry, in
particular calorimeter cell objects, has been changed. See the
notes below for more details.
The reconstruction code has not been completely tested under
this release, and should be treated with some suspicion. The
RadialClusterFinder does not work in this release (the
SimpleClusterFinder should be OK).
- MCPrint.getStatusCode() changed to return StdHEP
status for generator particles, DOCUMENTATION for
particles created by Gismo.
- L2 and S2 Detector.ini files updated to correspond to XML
- New resolution files from Bruce Schumm for Fast MC.
- Two new methods have been added to LCDEvent:
- Detector getDetector();
- CalorimeterCell getCalorimeterCell();
- For full simulation events these return the
Detector and CalorimeterCell geometry
respectively for which the event was simulated.
In the next release we will support combining
multiple calorimeter cells into one, allowing the
CalorimeterCell to be overriden.
- CalorimeterCell is now an interface, instead of new
CalorimeterCell you should get it from the event.
Similarly for the Detector, you should not use
Detector.instance() anymore, but instead get the current
detector from the event.
- A new setDetector() method in Processor marks a
convenient place to set-up detector dependent geometry.
It is called at least once, before the first call to
process(), and subsequently each time the detector
- New MCFast tracking package from Wolfgang:
- Includes now the full error matrix for smearing
of the track parameters.
This means, that it only works together with
the detector types 'S2' and 'L2'!
Detector("name")) before calling
add(new MCFast()) to select one.
MCFast may now be called with an optional
argument for the use of the beamspot
constraint error matrix lookup tables.
- new Interface TrackParameters and concrete
implementation in DocaTrackParameters.
DocaTrackParameters calculates the 2-dim DOCA
from a MCParticle and provides methods to access
locations and momenta along the (ideal) helical
(Note that the old class TrackParameters has been
renamed to TrackResolutionTables.)
- SmearTrack provides the static Method smearTrack
to smear TrackParameters according to a given
full covariance matrix.
- Note, that this package relies on new methods in
hep.physics.VecOp and statistical functions coded
- The error matrix lookup tables are kept in
hep/lcd/detector/l2. Note, that these
currently contain Detector.ini files which are
copies of the ones for the small/large detector
specifications, ie these descriptions are
incorrect for the S2/L2 design. However,
the fast simulation makes no use of the
parameters specified there so far.
- All classes in package hep.lcd.physics have now been
removed, since they all have equivalents in the
hep.physics package which is part of JAS. Note: This
means this release requires JAS 2.2 or greater. This
change may effect user code, note in particular the
- hep.lcd.physics.IHep3Vector (interface) --
- lcd.physics.IHepLorentzVector (interface) --
- lcd.physics.Hep3Vector --
- lcd.physics.HepLorentzVector --
- All of the jet finding routines have moved to
- Fix bug in class which convert stdhep events to LCD
events (null parent)
- Add new DIM for reading SIO files.
- Changes and additions to hep.lcd.physics package to
support Gary Bower's new Diagnostic Generator (currently
distributed separately, contact Gary for details)
- New jet finding algorithms from Gary Bower
- Small enhancements to support Wired Event Display
- New state added to MCParticle: MAXSTEPS
- Extra methods added to TrackerHit to return the the
system # and flags for Endcap hits
- Removed inconsistency in 2D impact parameter signing
convention between track finder and helical swimmer.
Because track finder uses helical swimmer for calculating
expected hit positions, this inconsistency caused some
inefficiency in track finding (about 5%).
- A lot of efforts were made to optimise track finder
parameters and algorithms for increasing track finding
efficiency. This problem of inefficiency is more severe
for small detector, where there are too few hits
available for reconstruction of the tracks. Test with
ttbar events indicates that after all this efforts track
finder finds about 99.5% of all tracks satisfying finder
cuts (minimum curvature radius, number of hits on track
and so on). For small detector this number is about 99%
for the same events.
- The best performance of the track finding-fitting is
achived with usage not only external tracker but also
vertex detector for track finding (combined finder). This
method is used in recommended track reconstruction class
TrackReco. However, if for any reason somebody wants to
use only TPC (or external Silicon Microstrip Tracker in
the case of small detector) as a sole tracking device for
track finding, he may use TrackRecoTPC class. This option
was not available in previous release. This class
intentionally left with it's original algorithms, (as
inherited from BaBar track finder). Result is that it is
slower and less efficient (especially for small
detector). We can modify it later to use the same
algorithms as in combined finder. Of course, TrackRecoTPC
includes vertex detector information for track fitting.
- A new method setAssumedMassFor3Vectors() in
AbstractJetFinder gives the user control over the default
mass used for 3-vectors passed to the jet finder.
New Contributed Classes (from David Wagner)
- Two new classes for dealing with "Gaussian
Boxes" in package hep.lcd.contrib.util.function
- GaussianBoxFunction fits to a box function that
has been convoluted with a Gaussian resolution
function (i.e. it can be used to fit to the
energy of particles in a calorimeter, where the
particles come from a two-body decay of a
particle with a unique energy in the lab frame,
such as the spectrum of electron energies from
- GaussianBoxRandom is a function that I used to
test the above function; it will generate random
numbers sampled from a box distribution that has
been convoluted with a Gaussian resolution
- The JRBClusterFinder has been renamed
RadialClusterBuilder, and a number of bugs have been
- Fixed bug in reconstruction, which affected
reconstruction efficiency (hits in TPC were marked as
used at the first attemt to build track, even if track
building was not successfull. This quickly depleted pool
of hits for track building and lead to low efficiency).
- Track finding and fitting is completely independent now.
There is no need to worry about track finding efficiency
if there is anything wrong in fitting code. If tracks are
reconstructed but don't pass fit they still will be
recorded in the track list. Method boolean fitSuccess()
of Track interface can be used to see if fit was
- MC particle assigning to the reconstructed tracks is
- Assigning hits in vertex detector to track is made
differently now - it is based on building vectors
composed from vxd hits and comparison of direction of
this vectors with direction of track in this area.
Because of high hits density in VXD and large spacial
error in the track extrapolation from TPC into VXD, this
metod is much more efficient than just assigning hits
based on their distance from extrapolated track
- Few bugs in track fitting related to calculation of
weight matrix for the fit were removed.It lead to greatly
improved fitting efficiency - about 95% of all good
tracks have good fit now.
- After fixing bug in reconstruction (see 1) speed of recon
decreased dramatically. Some changes were made to recover
from this - more efficient selection of candidate points
and so on. It gave some gain of factor of 3-5 in speed,
however it is still slower than it was before (with bug
in place). Events with large background hit density still
may take pretty long time to reconstruct, and this may
become serious problem with realistic background added to
simulation. This problem should have farther attention.
- TrkMCTruth class is added. It builds the table of MC
particle which are seen in tracking system and estimates
their reconstructability from the known criteria of
tracking reconstruction. This estimation does not take
into account such effects as hits scattering away from
their expected positions - if track has hits in one of
the triplets of the layers used in pattern recognition
and if it has curvature passing curvature cut and has
enough hits to pass required number of hits cut it is
considered reconstructable. This class was useful for
debugging track reconstruction.
- Some cleanup in the code organisation took place, which
is transparent for users and have only effect for code
- Bug which prevented event display from working fixed
New Contributed Classes (from David Wagner)
- hep.lcd.contrib.physics.TransMassReco (two body mass
- hep.lcd.contrib.util.EventScan (print out interesting
quantities from the event)
Note: A few routines now contain conditional
compilation directives to allow the hep.lcd code to be targeted
to either JAS 1.0 or JAS2.0. These conditional compilation
directives are microsoft specific (boo hiss) so they will make it
harder to compile the code with non-microsoft compilers. These
directives will be removed as soon as the transition to JAS 2.0
- Track now has new methods for fitted tracks, and for
getting raw track parameters and error matrix elements
- Track fitting has now been implemented by Nic Sinev, and
is turned on by default.
- Some changes to default track finding parameters from
small detector to improve efficiency
- FastMC now fills diagonal elements into error matrix
- FastMC now parameterizes tracks in terms of tanLambda
rather than lambda
- Several bugs fixed, plus improved documentation (and more
- Bug in FastMC track origin smearing fixed (thanks to
Bruce Schumm for finding this bug).
- Bug in EventShape routine fixed by Gary (details??)
- Helical swimmer fixed to use B field properly
- Added Constructionors to AddReconTrks for case where no
Vertex detector is available
- Thresholds for SimpleClusterBuilder changed to double
from int (thanks to David Wagner for finding this bug).
- Hit Smearing package now correctly sets parameters for
small and large detector.
Non-Backwards compatible changes:
- in class hep.lcd.event.Track getMomentumX - getPX
etc. for compatibility with MCParticle
- getMomentumX etc. is still available for
backwards compatibility for the time being
- in class hep.lcd.event.Cluster the return type of
getClusterStartDepth is now double (was int)
- hep.lcd.util.driver.Driver now implements Processor to
allow Drivers to drive other Drivers
- Track now implements 3 vector, to allow it to be passed
to the JetFinder
- Improvements to tracking from Nic Sinev
- Tracking now takes geometry from detector
- Tracking now works for small & large
- Workaround for VTX layer bug
- New hit smearing package hep.lcd.mc.smear, written by Nic
- JRB cluster builder now compiles (& works?)
- More fixes to tracking from Mike Ronan
- Possible to get magnetic field, coil geometry and
materials from detector info
- New hep.lcd.contrib package for example analysis
software. First items from Mike Ronan include:
- hep.lcd.contrib.recon.tracking.analysis - Sample
- hep.lcd.contrib.mc.analysis - Some useful
routines for classifing MC events
Changes Promised but not actually ready in time
- Cluster now implements 3 vector, to allow it to be passed
to the JetFinder
- New Function for concatenating lcd files
- Bug in boost routine fixed
- Cluster theta was being calculated incorrectly
- Masses returned by MCParticle.getMass are in MeV not GeV
- Smearing/Calorimetry not correctly changing geometry!
- BinaryReader isnt working.
- Event Display doesn't work properly under Windows 95/98