//*CMZ : 1.00/02 04/07/97 16.48.20 by Nick van Eijndhoven (UU/CERN) //*-- Author : Nick van Eijndhoven (UU/CERN) 04/07/97 ////////////////////////////////////////////////////////////////////////// // History of updates // ////////////////////////////////////////////////////////////////////////// 04-jul-1997 NvE First release of the package 11-jul-1997 NvE Class Invmass added to /GENUTILS and directories /PHYSICS and /TRACKING created to hold Jet and Track classes resp. 15-aug-1997 NvE Pilot patch *RALICE removed and automatic installation now completely performed by pure CMZ commands in the INSTALL macro. 12-sep-1997 NvE Signal of central cluster module and position in user coordinates for all modules introduced in the Calorimetry package. Also all "float vec[]" replaced by "float* vec" in the Lorbo class for stylistic reasons. 20-sep-1997 NvE Name of member function "getc()" of Calorimeter changed to "get_c()" to avoid clash with native C function. Also protection added in Calorimeter::group() against cases where no modules fired. 23-sep-1997 NvE Macro "install" modified to also enable automatic installation of a G++ or ROOT loadable shared library 'ralice.sl'. 24-sep-1997 NvE Class "Calorimeter" optimized by introduction of pointers for the Module matrix instead of an indexed array. 26-sep-1997 NvE Directory /ROOT added to hold the universal ROOT dictionaries (dict.h and dict.cc) as generated by "rootcint" for all the classes of this RALICE package. This will allow automatic installation of the RALICE library without running "rootcint". 30-sep-1997 NvE 2-body decay added to class Track and invokation of "delete []" only performed in case the object exists in the destructors of the Calorimeter, Jet and Track classes. 02-oct-1997 NvE Installation for MSVC++ added into macro "install" and several "return 0.;" statements added in some "Sample" member functions. The latter caused MSVC++ compiler errors. Also 'int ..=fabs(int..)' changed to 'int ..=int(fabs(int..))' in "Cluster::Add()" to prevent G++ warning. 03-oct-1997 NvE The above code is now ANSI compatible, but MSVC++ 5.0 still gives an error when comp. extensions are switched off (flag /Za). The reason is probably an incorrect implementation of the ANSI type conversion rules in MSVC++. To satisfy MSVC++ for the moment the code in in "Cluster::Add()" has been changed to 'int ..=int(fabs(double(int..)))' so that at least a Microsoft compatible RALICE.DLL can be produced. As soon as G++ is able to produce Microsoft compatible dll's the support for MSVC++ will be dropped for ralice.cmz. Message to all : USE G++ AS COMPILATION STANDARD ! Also CMZ standard adopted to include a "$" in the DECK names which contain KEEP definitions. 13-oct-1997 NvE Compiler directive for g++ changed in "flogon" and "install" to provide warning for each non-ANSI C++ statement. Also ROOT libs linked with g++ in "install" in case of ROOT loadable shared library creation. Unused variables removed in "Calorimeter::add_ring" and "Track::decay". 14-oct-1997 NvE Strict ANSI requirements dropped for ROOT loadable lib creation to avoid many harmless warnings from rootcint generated code. Class "Random" added to /GENUTILS and /ROOT updated accordingly. 14-oct-1997 NvE Class "Random" extended with user definable distribution and /ROOT updated accordingly. 19-oct-1997 NvE Class "Random" extended with vector facility for user defined dist. and also bug fixed. /ROOT updated accordingly. 27-oct-1997 NvE Class "Random" optimised for user definable distribution and /ROOT updated accordingly. 10-dec-1997 NvE Creation of MSVC++ loadable library introduced in "install". 12-dec-1997 NvE Keep and Deck in /ROOT given unique names to enable loading of this package together with other packages. 20-jan-1998 NvE New ralicedict produced because of new ROOT 1.03/09 version. 23-mar-1998 NvE Macro "install" modified to support HP-CC. Multiple usage of for-loop index names removed to satisfy HP-CC compiler (although the original code was ANSI C++). Cluster data just reset to 'empty cluster' in case of cluster 'creation' or 'start' for edge module or no-signal module. 31-mar-1998 NvE Array index bug fixed in class Jet. 03-apr-1998 NvE Jet and Invmass classes optimised by using pointers and compiler options /GD and /DWIN32 introduced for msvc++ in order to optimize for windows DLL's and ensure correct pre-processing in RConfig.h for ROOT library creation. 13-apr-1998 NvE ROOTCINT processing implemented in $KUMACS/INSTALL and contents of /ROOT updated accordingly. Class Vertex added to /TRACKING and classes Track and Jet protected against modifying of returned addresses. 14-apr-1998 NvE "rm .def" removed for Unix systems in $KUMACS/INSTALL since on Unix no .def file is created by ROOTCINT. 17-apr-1998 NvE Return type Track& changed to Track* in the get_trk() member functions of the Jet and Vertex classes. 21-apr-1998 NvE Classes Track, Vertex, Jet, Lorbo and Invmass derived from TObject to enable ROOT I/O. $KUMACS/FLOGON and $KUMACS/INSTALL updated accordingly. 26-apr-1998 NvE Classes Module, Cluster and Calorimeter derived from TObject to enable ROOT I/O. Functionality of class Calorimeter has also been extended to enable re-clustering of original Module signals. 28-apr-1998 NvE Decay produced Tracks in class Track stored also into TObjArray to allow direct I/O. 03-jun-1998 NvE MSVC++ compiler option /DWIN32 removed in $KUMACS/INSTALL because of bug fix in ROOT version 2.00. Printout of version number introduced in $KUMACS/FLOGON and DOC section updated for new email and www address. 17-aug-1998 NvE New ALICE coding conventions adopted and automatic marking of 'edge modules' introduced in class AliCalorimeter. The automatic treatment of edge modules required new member- functions EdgeUp() and EdgeDown() in class AliModule. 19-aug-1998 NvE Call to LoadMatrix() added in AliCalorimeter::Group() to correctly treat different event sizes (i.e. empty events) when reading data from input file(s). 25-aug-1998 NvE AliCalorimeter::GetModule() introduced to provide quick access to all 'fired' modules. 27-aug-1998 NvE GetSignal() and GetClusteredSignal() of AliModule now return 0 in case the module was marked as dead. Because of the above, protection against row=col=0 introduced in AliCalorimeter::Group(). To enable access of modified calorimeter module data via AliCalorimeter::GetModule() after reading in, the "fModules" elements are updated in AliCalorimeter::LoadMatrix(). 16-sep-1998 NvE Correct deletion of the module matrix introduced in the AliCalorimeter destructor and AliCalorimeter::LoadMatrix(). 16-oct-1998 NvE New ALICE coding conventions adopted. This resulted in modifications in /$KUMACS and /ROOT (.cxx extension instead of .cc) and /HEADERS (public class area in front of private). #include added in AliCluster (thanks to A.Zvyagin). 19-oct-1998 NvE Protections agains crazy row,col numbers introduced in AliCalorimeter (thanks to E. van der Pijll). 22-oct-1998 NvE Bug fixed in setting edge values in SetDead() and SetAlive() of AliCalorimeter (thanks to E. van der Pijll). Also row and column dispersion introduced in AliCluster. 24-oct-1998 NvE Memberfunctions DrawModules() and DrawClusters() introduced in AliCalorimeter. Also AliRandom derived from TObject to enable ROOT I/O. 26-oct-1998 NvE DrawModules() and DrawClusters() histogram axes defined such that the X and Y axis corresponds to columns and rows resp. in AliCalorimeter. This view matches the 'common sense'. 06-nov-1998 NvE SetDirectory(0) invoked for the histos created in DrawModules() and DrawClusters() to suppress global character of the histo pointer. 16-nov-1998 NvE New class AliMath implemented in /GENUTILS and /ROOT updated accordingly. 23-jan-1999 NvE New class AliSignal implemented and AliCalorimeter extended to contain veto signal information. 25-jan-1999 NvE Most of the private areas modified into protected areas to enable the use of inheritance. Also support for veto signal information introduced in AliCluster. 04-feb-1999 NvE Cluster array for internal use removed in AliCalorimeter; now only the "TObjArray* fClusters" is used for performance optimalisation. 06-feb-1999 NvE New class AliPosition implemented for universal position handling and AliSignal, AliCluster and AliVertex all derived from AliPosition. AliModule inherits from AliSignal and arguments of SetPosition() and GetPosition() in AliCalorimeter updated to match the AliSignal inheritance of AliModule. 11-mar-1999 NvE All types changed to Int_t, Float_t etc... in order to guarantee portability of all data within the ROOT framework. 12-mar-1999 NvE Default destructors added in AliInvmass, AliLorbo and AliSample. 30-mar-1999 NvE New base class Ali3Vector introduced for universal 3D vector handling and AliPosition derived from it. In AliSignal::Reset() memberfunction call introduced instead of setting datamembers; this enhances flexibility for base class development. 01-apr-1999 NvE "car" introduced as default frame for Ali3Vector::Print(). 03-apr-1999 NvE New base class Ali4Vector introduced for universal handling of Lorentz 4-vectors. Also class AliBoost introduced to perform Lorentz boosts on Ali4Vector objects. This class will replace the old AliLorbo. Memberfunction Print() renamed to Info() for Ali3Vector, Ali4Vector and AliBoost to prevent clash with TObject::Print(). 05-apr-1999 NvE Functionality of Ali3Vector and Ali4Vector extended with += etc... 06-apr-1999 NvE Class AliTrack derived from Ali4Vector and updated accordingly. Also class AliJet modified by deriving it from AliTrack. 08-apr-1999 NvE Class AliVertex derived from AliJet and updated accordingly. Also recursive printing facilities List() and ListAll() introduced for AliTrack, AliJet and AliVertex. 09-apr-1999 NvE Obsolete classes AliLorbo and AliInvmass removed. A new AliInvmass class is planned to provide invariant mass reconstruction functionality to serve e.g. di-lepton and pi0 studies. 16-apr-1999 NvE New class AliInvmass introduced for invariant mass and comb. bkg. reconstruction. 21-apr-1999 NvE AliBoost::SetGamma() introduced for enhanced accuracy in boost parameters. 27-apr-1999 NvE AliModule and AliCluster classes renamed to AliCalmodule and AliCalcluster resp. in view of future general Aliroot base classes AliModule and AliCluster. 28-jun-1999 NvE Ali4Vector casting changed in AliVertex::Add() and some explicit type conversions added and an unused variable removed in AliInvmass to prevent g++ errors/warnings (thanks to Eugene van der Pijll). 23-sep-1999 NvE Errors and error propagation introduced in Ali3Vector in view of track reconstruction/extrapolation development. Also AliPosition and AliSignal updated accordingly by introducing the SetPositionErrors(), SetSignalErrors() and Get memberfunctions. Note : Errors (propagation) not yet fully implemented in Ali4Vector and AliBoost. 24-sep-1999 NvE In Ali4Vector internally the Lorentz invariant (x^mu x_mu) is now stored instead of the scalar part x^0. This will yield better precision and e.g. automatically conserves the particle identity (mass) in elastic collisions. 08-oct-1999 NvE GetResultError() introduced in Ali3Vector to provide error information on results obtained from operations which yield a scalar. Examples are the error on the norm (GetNorm) and the dotproduct (Dot). 13-oct-1999 NvE Errors and error propagation fully implemented in Ali4Vector. 15-oct-1999 NvE Algorithms for error calculations optimised for accuracy in Ali3Vector and Ali4Vector. Also particle mass datamember removed from AliTrack, since this is now automatically handled via the SetInvariant()/GetInvariant() memberfunctions of Ali4Vector. 16-oct-1999 NvE Storage of multiple signal values (with errors) implemented in AliSignal and AliCalmodule updated accordingly. All documentation moved from the .h files into the .cxx files and also Copyright and cvs logs introduced. Html documentation generated for all classes using the ROOT automatic documentation generator facility. 18-oct-1999 NvE Classes Ali3VectorObj, Ali4VectorObj and AliPositionObj introduced. 20-oct-1999 NvE AliTrack::AddSignal() & co. added to enable relating AliSignals to a certain AliTrack object in view of track reconstruction development. Also memberfunction Info() added to AliSignal. 24-oct-1999 NvE Full error propagation implemented in AliBoost and obsolete memberfunction AliBoost::SetGamma() removed. 25-oct-1999 NvE Undefined "dtheta2" fixed in Ali3Vector::GetErrors() thanks to Rene Brun. 29-oct-1999 NvE Compress() invoked for TObjArray fModules after removal of a single module in AliCalorimeter::Reset(). Begin- and endpoint introduced for AliTrack. 30-oct-1999 NvE Pointer handling introduced instead of object copying in AliCalorimeter::Sortm to enhance speed. Also AliCalorimeter::GetModule(row,col) introduced. Array creation moved out of default constructor of AliSignal to comply with ROOT I/O requirements. 31-oct-1999 NvE AliCalmodule::GetSignal() removed; the AliSignal memberfunction is used instead and AliCalorimeter::GetSignal() takes care of the dead modules. AliCalcluster::Start updated accordingly. New memberfunctions GetVetoLevel() and HasVetoHit() introduced for AliCalcluster. 18-jan-2000 NvE AliCalorimeter updated to remove memory leak and to enable event mixing. Module and position pointers and various attributes (like edge values etc...) are now saved in separate matrices for the complete calorimeter. AliCalmodule and AliCalcluster updated accordingly and also cleaned up a little to remove unneeded datamembers. 03-mar-2000 NvE AliCalorimeter::SetSignal() updated to provide position for new modules and AliCalorimeter::AddSignal() updated to invoke AliCalorimeter::SetSignal() in case of new modules instead of having duplicate code. (Thanks to Eugene van der Pijll). 12-mar-2000 NvE Computation of Integer Order Modified Bessel functions I_n(x) and K_n(x) introduced in class AliMath. Also already existing AliMath facilities converted to Double_t handling to enhance flexibility. 06-jun-2000 NvE AliMath::K() etc... renamed to AliMath::BesselK() etc... for clarity. 07-jun-2000 NvE Vertex linking of AliVertex::Add(AliVertex&) made more sophisticated by introduction of automatic generation of connecting track. 26-jan-2001 NvE File RALICELinkDef.h updated to allow the automatic schema evolution as introduced in ROOT 3.00/05. 27-may-2001 NvE New class AliEvent introduced and RALICELinkDef.h & co. updated accordingly. Also RALICELinkDef.h changed back to old schema evolution (i.e. "+" removed) because of problems with I/O in ROOT 3.00/06 w.r.t. multiple inheritance. 29-may-2001 NvE Position reset added in AliVertex::Reset(). 01-jun-2001 NvE Memberfunctions Add() renamed explicitly to AddTrack(), AddJet() and AddVertex() in AliJet and AliVertex. 03-jun-2001 NvE Treatment of masshypotheses introduced in AliTrack. 04-jun-2001 NvE CVS Log text and keyword replaced by Id in .cxx files and C++ comment indicator /* ... */ replaced by // in the Id record of the .h files to prevent problems. 06-jun-2001 NvE CVS Date keyword introduced in 'Modified' field in .cxx files so that the modification date is updated automatically in the html docs. 09-jun-2001 NvE Script mklibs.bat modified to match its new location in the SCRIPTS subdirectory and file RALICEHeaders.h moved back to the RALICE directory again to enable universal installation scripts. Also name AliEvent.cxx added in Makefile. 11-jun-2001 NvE ResultError correctly set in GetMomentum() of AliTrack and AliJet. 12-jun-2001 NvE Error calculation improved for spherical and cylindrical coord. in Ali3Vector::GetErrors(). 13-jun-2001 NvE Memberfunctions GetVecTrans() and GetVecLong() introduced for Ali3Vector and Ali4Vector. Also GetScaTrans(), GetScaLong() and GetPseudoRapidity() introduced for Ali4Vector to provide a basis for e.g. E_trans and E_long calc. Memberfunctions GetPt(), GetPl(), GetEt(), GetEl() and GetMt() introduced for AliTrack and AliJet. For AliTrack there is an additional GetMt(j) to provide the Mt value for the jth mass hypothesis. 14-jun-2001 NvE Memberfunction GetRapidity() introduced for AliTrack and AliJet and accuracy improved in Ali3Vector::GetPseudoRapidity(). 27-jun-2001 NvE Overloaded memberfunction names Add(AliJet*) and Add(AliVertex*) corrected into AddJet(AliJet*) and AddVertex(AliVertex*) in class AliVertex. 29-jun-2001 NvE TrackCopy mode introduced in AliJet. 02-jul-2001 NvE Misplaced statement corrected in AliJet::SetNtinit(). 03-jul-2001 NvE Protections added in AliJet::GetTrack() and AliVertex::GetVertex() and VertexCopy introduced in AliVertex. Naming facility introduced in AliCalorimeter in order to identify different calorimeter systems in an event structure. Storage of jets introduced in AliVertex on the same footing as the storage of (secondary) vertices. 04-jul-2001 NvE Storage of calorimeters introduced in AliEvent and ResetVertices() added to AliVertex. 05-jul-2001 NvE Clone() facility used in AddTrack() etc... of AliEvent & co. instead of "new" in the case of TrackCopy etc... This in order to enable 'permanent' AliTrack etc... storage in AliEvent & co. Also (Ali4Vector&) casting stmt. in AliVertex::ResetVertices() changed to make it ANSI compatible for all compilers/platforms. 09-jul-2001 NvE Support for impact points and user identifier introduced in AliTrack. Also user identifier facility introduced for AliJet and AliVertex. 12-jul-2001 NvE Memberfunction GetDistance() introduced for AliPosition and support for point of closest approach introduced in AliTrack. 24-jul-2001 NvE Support for Chi2 and NDF information of track fit introduced in AliTrack.