ZOOM CLHEP Package Release Notes
Fermilab Physics Class Library Task Force
Mark Fischler (mf@fnal.gov)
9/15/04
CLHEP v1.10.0; cvs rtag V01-10-00
HepPDT
Repair two-stage lookup flaws exposed by gcc 3.4.1.
Random
Suppress warning message about 32-bit shifting on 32-bit machines.
5/14/04
CLHEP v1.9.9; cvs rtag V01-09-09
Generalize RandEngineBuilder
For those engines that rely on an underlying C library function
(such as RandEngine) this removes some of the dependence on that
function's eccentricities. Nevertheless, we strongly recommend
against the use of RandEngine.
Fix some misbehavior in rapidity()
The rapidity() member function was misbehaving in the special
case of a light-like particle moving along the -z axis. This has
been fixed.
1/31/04
CLHEP v1.9.6, cvs rtag V01-09-06
General
Major internal reorganization with everything split into
separate packages. This should be invisible from the outside.
Geometry
Template implementation of clases Point3D, Vector3D and Normal3D .
Random
Repair RandEngine, which was producing seriously flawed variates
under Linux. Once again, we strongly recommend against
the use of RandEngine even aside from this flaw.
Vector
Use standard library exceptions when ZMthrowA would otherwise
abort.
9/15/03
CLHEP v1.9.3, cvs rtag V01-09-03
Vector
Supply several previously ommitted methods such as
RotationX * LorentzRotation
Repair a bug in LorentzVector::deltaR() which could return
large values when the phi values are close to +/- pi.
Correct a typo in Boost::vectorMutiplication().
This affected
off-axis boosts applied to a LorentzVector when the x- and/or y-
components of both the Boost and the LorentzVector are not small.
Boosts in the z-direction are unaffected and Boosts dominantly
in the z-direction suffered only second-order effects.
Rectify misbehaviour when isNear() is taken between a specialized
or general Boost and a general LorentzRotation.
Update the Formulas and Definitions document.
Define the ranges
of phi and psi for Euler angles and give the definition of the
dictionary ordering comparison of Rotations.
Update the accompanying tests including those which had been
part of PhysicsVectors.
5/15/03
CLHEP v1.9.0, cvs rtag V01-09-00
GenericFunctions
PtRelFcn now includes <float.h> to overcome a compilation error
Vector
eulerAngles() method of HepRotation modified.
The original method could produce badly flawed results in certain
circmstances when the rotation matrix has strayed from perfect
orthogonality (particularly if the rotation axis is close to but
not precisely on the Z axis).
The phi() and psi() methods are left untouched except in cases where
the improvement is potentially crucial (sin theta < .01) in which
case the new eulerAngles() method is used.
4/4/03
CLHEP v1.8.3, cvs rtag V01-08-03
GNUmakefile cleanup relevant for IRIX6 systems in:
GenericFunctions
Elimination of MetaProxy scheme
Finally got rid of the MetaProxy scheme in favor of something much
simpler: putting all the code that calls gsl into .icc files.
That makes CLHEP independent of the external package.
(User code that includes Bessels, Spherical Bessels/Neumanns, or
Elliptic Integral functions will develop a dependency on the gsl
package.)
New functions:
Logistic equation
Function accumulators
PtRel function
Runge Kutte Integrators
with an adaptive stepsize algorithm, to
integrate N first-order autonomous differential equations
In Vector package:
Put PhysicsVectors tbins into working condition:
Rotation classes to work with more specializations
added operator << for LoretzTransformation and Rotation
In StdHep package:
use string.h since the version must be accessable from C
10/28/02
CLHEP v1.8.2, cvs rtag V01-08-02
GenericFunctions
ParamToArgAdaptor.icc
removed use of numeric_limits class, use of which limits
portability
Correct a warning about double to int
caused by using a 1.0 in an expression
being used as int argument to factorial in Psi2hydrogen.
HepMC
Documentaion clarifications and examples enhancement.
9/13/02
CLHEP v1.8.1, cvs rtag V01-08-01
In the Matrix sub-package:
Fix a bug that was in trace() from time immemorial!
Trace had been returning the column sum of the first column,
rather than the sum of the diagonal elements.
No tests of trace() had been present to catch this.
Warning -- this fix may introduce changed rsults
in some existing programs.
In cases of changed resluts, the old behavior likely was
erroneous due to the improper trace() behavior.
In the Geometry sub-package:
Improved meaning of operator== for Transform3D.
It now means "is exactly equal to," rather than
"shares the identical address" or "is very nearly equal to."
This is the idiom that C++ coders will expect.
In the Evaluator sub-package:
Fixed a memory leak.
Fix done at CERN.
Thanks due to Martin Liendl for finding and exploing the issue.
In the HepPDT sub-package:
Compilation-related tweaks:
- ParticleDataT.hh explicitly includes Constituent.hh.
- examDMF.cc vetted for KCC.
In the Random sub-package:
The Random package has been declared production.
(No longer beta version.)
Some documentation was moved from CLHEP/doc to CLHEP/Random/doc.
New sub-package: HepMC
This is the physical particle layer of StdHepC++.
- Data pertaining to a specific particle, including momentum,
spin-state, and so forth.
- Information structuring particles into Collisions and Events.
- Links to HepPDT
to obtain inherent properties
(listed in the Review of Particle Physics, various
generator tables, or elsewhere) of the particle.
New sub-package: StdHep
This is the layer of StdHepC++ that interfaces to particle generators
and I/O mechanisms.
- This extends from the
HepMC
phsysical particle layer and the
HepPDT
particle property layer to complete the StdHepC++
package.
- The StdHep layer provides the remaining functionallity
of the original StdHep Fortran package, beyond what
is covered by those two lower layers.
7/24/02
CLHEP v1.8, cvs rtag V01-08-00
Packages have been brought into synch with the official CERN release of
CLHEP 1.8
General changes include doxygen-style comments and elimination
of the use of HepDouble for double.
Newly created sub-package: HepMC
Actual particle class (as opposed to particle properties in HepPDT)
and event container classes. This starts from the ATLAS HepMC
but uses HepPDT to when obtaining particle properties.
Newly created sub-package: StdHep
- Based on HepMC and HepPDT
- Connection between events and various generators such as Pythia.
- This sub-package provides the remaining
functionallity of the original STDHEP product, including
connection to the Fortran COMMON blocks used by that product.
- StdHepC++ has been removed
In the HepPDT sub-package:
Avoidance of global block/shared library headaches
by making the FTN common block material templated.
Stuff from CERN cvs, mostly doxygen-style comments.
In Vector package:
Fix acos range problem
Various Rotation routines need to take acos of
a quantity built from the rotation components,
which due to roundoff was slightly greater than 1.
A safe version of acos was substituted.
Bring up to date with respect to CLHEP changes
Accomodations for platforms not in use at FNAL.
In the Matrix sub-package:
Use of HepDouble eliminated in favor of double.
In the Random sub-package:
Template argument name change
Change the name of a template argument in testRandDists.cc for a
CumulativeDistribution Function.
CDF turns out to be an unlucky choice of initials, clashing with
certain user code.
Accomodations made at CERN to accomodate Apple platform.
In Drand48 and RandStudentT
In the GenericFunctions sub-package:
New Genfunction Psi2Hydrogen for hydrogenic wavefunction
Added an Absolute Value function
Generic functions to use all-include file for wrappered routines
This pushes responsibility of finding gsl onto the user, but allows
building of the CLHEP library (especially in the ZOOM context) to go
much more rapidly.
In the Geometry sub-package:
Added isNear() method and modified operator== for Transform3D.
Added an isNear() function on a request from Jim Kowalkowski and
modified operator == to use it instead of what it was doing.
(Comparison previous would never show equality, due to roundoff
discrepancies, in any nontrivial case.)
isNear() uses a tolerance
(default 2.2E-14) which the user can fetch or change.
The isNear() tests are on the absolute differences of member data items.
This change is not yet fed back into CERN CLHEP, since we are not
editors of the Geometry package.
4/23/02
CLHEP v1.7.12, cvs rtag V01-07-12
Removed three packages:
These had been deprecated and designated for removal years ago.
They are finally gone from official CLHEP.
In Vector package:
Inline all the Rotation*Vector and Rotation*Rotation operations
This changes was made to bring the speed of the Vector
package back up to that of CLHEP 1.6.
For example, Rotation*vector is now 3.5 times faster than it
had been in CLHEP 1.7.
Remove virtuallity of specialized Rotations.
(e.g., RotationX)
Necessary to effectively perform the above optimization.
Inline multiplication for, and remove virtuallity of:
HepLorentzRotation, HepBoost, HepBoostX, HepBoostY, and HepBoostZ
Significantly reduce the role of Hep3RotationInterface and
Hep4RotationInterface classes.
Repair a missing include in two test programs.
Minor fixes to Random package:
- Fix of improper deletion of theIntegralPdf in two places in
RandGeneral.
- Validation of RandGamma added to testRandDists test.
GenericFunctions
Fixed warnings for GCC 3
coming from IncompleteGamma.
Previous attempts to fix this had introduced an error which in some
cases could cause the routine to hang. This is corrected.
CLHEP HepPDT
Bring into synch with version in CLHEP 1.8
which has various minor
improvements made by Lynn Garren, including cures for gcc 3 warnings.
Caveats:
- At this point, we recommend using this only to obtain particle
properties. Decay channel mechanisms are still undergoing
testing.
02/07/02
CLHEP v1.7.8, cvs rtag V01-07-08
The definition of HEP_DIFFERENT_EXCEPTIONS has been moved into
CLHEP.h.
g++ defines a different signature than expected for the
ANSI-C-Standard routine drand48: it defines it as with a throw()
specification. While this is fine C++, there is no way our
DRand48Engine implementation can expect this signature. Thus the
#define. The only change is to move the definition is from the
GNUmakefile into CLHEP.h where it belonged the entire time.
12/21/01
CLHEP v1.7.7, cvs rtag V01-07-07
The main GNUmakefile defines HEP_DIFFERENT_EXCEPTIONS for gcc 3+.
gcc version 3 and above defines a different signature than
expected for the ANSI-C-Standard routine drand48: it defines
it as with a throw() specification. While this is fine C++,
there is no way our DRand48Engine implementation can expect
this signature. Thus the #define.
CLHEP HepPDT
This is the particle properties layer of StdHepC++.
- Properties (from the Review of Particle Physics, various
generator tables, or elsewhere) of particles.
- Decay channel information.
- Mechanism for forcing custom decay chains.
Fix an array-size problem
Correct code to eliminate g++ -pedantic warnings
Caveats:
- At this point, we recommend using this only to obtain particle
properties. Decay channel mechanisms are still undergoing
testing.
Minor fixes to CLHEP Random package:
- HepRandomEngine::operator== and != made const.
Note: This method tests whether two engines known by
reference are actually one and the same, so that getting a
number from one advances the state of both.
- Eliminated unimplemented method HepRandomEngine::getTableSeeds().
- setSeed() in MtwistEngine now also properly resets count624 so
that after two setSeed using the same arguments, you always
will get the same state.
- operator= in some engines, including Ranshi, had not been copying
the see information kept in the base HepRandomEngine class if
this derived class saw no need for these seeds.
This is rectified.
CLHEP GenericFunctions
Compilation of the gsl C code
removed from GNUmakefile.
There is now available a kit (installable via ups/upd and so
forth) containing the Gnue Scientific Library special
functions.
The kit is called gsl, and may be installed via upd.
To link the library in, setup gsl , and find the library
under $GSL_DIR as for any ups product.
This makes for significantly shorter intial builds of CLHEP, and
also corrects a situation on some combinations of platform and build
options where the build of the C
code for gsl was wiping out the remainder of the C++ modules from
the CLHEP library.
11/29/01
CLHEP v1.7.6, cvs rtag V01-07-06
Cleanup of how config area was used
Properly reflecting differences in the way ZOOM and CERN cvs
are built and deal with portability issues.
AS IS packages warning elimination
Fixed a number of warnings, including those reported when
S. Snyder started trying gcc 3, some reported by the CERN
cvs crowd, and others noted when building for ZOOM, in
CLHEP various sub-packages.
Reminder: Alist and
Combinations have for some time been deprecated
by CLHEP, and will disappear when version 1.8 is released.
In Vector package:
deltaR() more sensible for vectors near phi = - PI:
Corrected a poorly conceived behavior when phi of
the two Hep3Vectors or HepLorentzVectors are on
opposite sides of the negative Y axis. In that case,
the deltaPhi used should be small, not almost 2 PI.
Now deltaR() uses deltaPhi() whichis always in the
range (-PI,PI].
New method v1.deltaPhi(v2)
v1.phi() - v2.phi(), normalized to the
range (-PI,PI]. deltaR() and azimAngle() now make use of
deltaPhi().
azimAngle() always in range (-PI,PI]
The non-reference-vector form of azimAngle() had merely
been taking the differnce in phi, sithout normalizing
to (-PI,PI].
polarAngle() now always returns a positive theta.
The documentation implied that the polar angle between
two vectors is always in [0,PI) and this is now the case.
Fix bug in isNear() for EulerAngles
The bug had in some cases caused EulerAngles
to appear to be much farther apart than was really the case.
eta(Hep3Vector(0,0,0)) returns 0
The ill-defined concept of pseudorapidity of a zero vector
now returns 0 rather than a large positive number.
Input operator>>accepts same format as output
operator<<
For AxisAngle and EulerAngles and
Hep2Vector,
the result of reading in the characters ouput by
operator<< will now be the same object, within the
precision originally output. This is accomplished by
providing more flexible input acceptance; the forms
previously accepted will still be accepted.
Hep3Vector now also uses this flexible form of input,
and thus can be input as either
x y z
or
(x, y, z)
set(x,y) method for Hep2Vector
This method is provided for completeness.
Fix pedantic compiler warnings
Mostly these have to do with constructors for
HepRotation, which now
explicitly initialize the base Hep3Rotation class.
Similarly, constructors for HepLorentzRotation
and related classes explicitly initialize the base
Hep4Rotation class.
CLHEP HepPDT
This is the particle properties layer of StdHepC++.
- Properties (from the Review of Particle Physics, various
generator tables, or elsewhere) of particles.
- Decay channel information.
- Mechanism for forcing custom decay chains.
Ready for use with HepMC
Immediate intent is to distribute HepMC via CLHEP rather than
continuing to have an ATLAS repository distribute it.
Coding cleanup
Compiles without warnings on a wider variety of
platforms supported by CLHEP
Caveats:
- At this point, we recommend using this only to obtain particle
properties. Decay channel mechanisms are still undergoing
testing.
10/19/01
CLHEP v1.7.3, cvs rtag V01-07-03
GenericFunctions
Added elliptic integrals
8/28/01
CLHEP v1.7, cvs rtag V01-07-00
New sub-package: HepPDT
This is the particle properties layer of StdHepC++.
- Properties (from the Review of Particle Physics, various
generator tables, or elsewhere) of particles.
- Decay channel information.
- Mechanism for forcing custom decay chains.
Internal version number for HepPDT is
1.0.1.
Caveats:
- At this point, we recommend using this only to obtain particle
properties. Decay channel mechaisms are still undergoing
testing.
In Vector package:
- Improved Error Message:
Corrected a confusing error message given when
constructing a boost providing zero as the direction.
- Production status:
The Vector subpackage is now declared
to be in production.
See the related PhysicsVectors
package for FeatureLog and ProblemTracking.
In Matrix package:
-
Pedantic changes for compilation of standard-strict HP compiler.
-
The Matrix
subpackage is now declared in production status.
A FeatureLog and ProblemTracking are in CLHEP/Matrix.
In Geometry package:
- Brought up to current version in CERN cvs repository.
CLHEP 1.7
This brings all the CLHEP packages into synch with
the CLHEP 1.7 official distribution (or later changes).
7/11/01
CLHEP v1.6.10, cvs rtag V01-06-10
In the Matrix sub-package:
Silent operation on singular inversion
When inverting a 4x4, 5x5, or 6x6) HepSymMatrix
(or for that matter a HepMatrix) which is singular,
the code will only set ifail to 1, and will not
send a message to cerr . This matches the
original CLHEP behavior and the behavior for matrices of other
sizes.
Improved invert() for HepMatrix
Speed improvements for inversion
of 6x6, 5x5, and 4x4 general matrices. This
involves Haywood's determinant-based techniques
(which are slightly faster than the general case inversion for
matrices of these sizes).
The improvement is not as great as it was for the symmetric
case (which was implemented in v1.6.8):
a factor of 3.7 for 4x4, 2.2 for 5x5, and just 1.2 for 6x6.
Coming soon:
Minor update of (mostly the non-ZOOM-validated) sub-packages to reflect
the recent release of CLHEP 1.7.
5/30/01
CLHEP v1.6.8, cvs rtag V01-06-08
In the Matrix sub-package:
Improved invert() for HepSymMatrix
Significant speed improvements for inversion
of 6x6, 5x5, and 4x4 symmetric matrices. This
involves a mix of inversion based on Cholesky
decomposition (which is very fast for positive definite
matrices) and Haywood's determinant-based techniques
(which are better than the general case inversion for
matrices of these sizes).
5/2/01
CLHEP v1.6.5, cvs rtag V01-06-05
In the Matrix sub-package:
- Memory initialization for SymMatrix and GenMatrix
When a matrix object is constructed, 25 words of
memory assigned locally, for use if the matrix is
relatively small. The memory used for the matrix
was not being initialized; this led to some
spurious floating point exceptions on Intel chips.
The data used by the matrix is now zero-ed on
construction, whether it is on the heap or local.
4/17/01
CLHEP v1.6.3, cvs rtag V01-06-03
Polishing in Vector package:
- `NaN-proofing':
No methods will silently produce infinities or NaN's.
Every place which could potentially (due to peculiar argument
values, roundoff, or other reasons) generate a NaN or infinity,
or call system methods such as log or acos with an invalid
argument, will first ZMthrow.
Only if the user has caused this ZMthrow to be ignored will
the program continue, having produced a NaN or infinity.
- Repaired code in Boost::rectify() which would have
produced a spurious warning message.
- Removed a typo in the Formulas and Definitions document,
in the definition of howParallel for HepLorentzVector.
Minor fix to Random package:
- All engine saveState() methods output endl at the end.
Minor reorganization in Matrix:
- The method
Matrix::operator=(const HepRotation &)
is moved out of Matrix.cc into its own file MatrixEqRotation.cc.
- Moves toward decoupling Matrix from Vector.
- Breakout was needed to be able to suppress warnings
in linking under KAI without breaking linking under
gcc 2.95.2.
4/4/01
CLHEP v1.6.2, cvs rtag V01-06-02
Synchronize with current contents of CERN cvs repository
- Use of HepStd where appropriate
- Indexing in syntaxes t(i,j) and t[i][j] in Geometry/Transform3D
Minor fixes to validated packages:
- In AxisAngle and EulerAngles, distance() is non-virtual
- Implemented HepRotation::operator=(Hep3RotationInterface)
- DRand48 accomodation for gnu cc changed to be friendlier to
other platforms
Organizational change:
Detailed tests of random distributions moved into subdirectory
Random/test
Correct errors with regards to gcc in Evaluator
New Package: RandomObjects
- Intended for classes that depend on both Random and some other
CLHEP object such as Vector and Matrix (in the Matrix package).
- Current contents: RandMultiGauss
- RandMultiGauss had not been added to the library when building; now
it is.
Deprecated package: Tools
Used to contain RandMultiGauss and related files. Currently empty;
will soon disappear.
1/22/01
CLHEP v1.6.1, cvs rtag V01-06-01
Added new package - GenericFunctions
Function objects which represent a wide spectrum of functions and may
be combined and manipulated according to the rules of function
composition.
Added new package - Evaluator
Utility to go from a string expressing an expression, to the
value of that expression. Thus a program can accept an expression
as input and use it in its calculations.
Disabled and removed dreprecated packages:
Bug Fixes and warning cures:
Fixed bug in Geometry package in Plane3D::transform()
Added definition of HepSTL in CLHEP.h
Backward incompatibiliites:
The long-deprecated HepAList, HepString, and Combinations
packages are no longer present.
9/12/00
CLHEP v1.5.17, cvs rtag V01-05-17
Repaired features in release:
Corrected operator== bug in Matrix.
S. Snyder had discovered that GenMatrix::operator==
used incorrect indexing; this was repaired.
Backward incompatibiliites:
HepAList and the Combinations package are deprecated and will
go away in the next offical CLHEP release.
5/16/00
CLHEP v1.5, cvs rtag V01-05-00
New Features in release:
Matches the official CLHEP 1.5.
The Hist module, which had been
obsolete, is disabled
Other packages considered "as is"
for ZOOM users have minor
improvements.
Parent Pages:
Release Notes by Package Page -
ZOOM Home Page -
Fermilab at Work -
Fermilab Home