//*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. 01-dec-2001 NvE SetOwner() introduced for certain TObjArray's in AliCalcluster, AliEvent, AliInvmass, AliJet, AliTrack and AliVertex to adapt to the new memory management of ROOT 3.01 (and later) in case of reading trees. 06-dec-2001 NvE Memory usage optimised for AliVertex & co. and memory leak due to cloning solved. 07-dec-2001 NvE ClassDef() and ClassImp() statements introduced for AliSample. 17-dec-2001 NvE Copy constructor and Init() memberfunction introduced for AliTrack & co. 14-jan-2002 NvE New schema evolution activated via the "+" behind the classnames in RALICELinkDef.h. Note that the new schema evolution only works correctly for ROOT version 3.02/07 and later. 14-feb-2002 NvE Support for name tag introduced in AliSignal to indicate the kind of signal. Missing comment lines added in SetName() and GetName() of AliCalorimeter and AliSignal. 19-mar-2002 NvE AliVertex::Draw() introduced to enable 3D event display. 25-apr-2002 NvE Projectile and target specifications introduced in AliEvent. 26-apr-2002 NvE AddVetoSignal(AliSignal) introduced in AliCalorimeter and AliCalcluster to provide more flexibility and allow automatic calculation of hit association confidence level based on position uncertainties. 29-apr-2002 NvE Memberfunction GetNvalues() and copy constructor introduced in AliSignal. 25-jun-2002 NvE Memberfunction SetOwner() introduced in AliJet, AliVertex and AliEvent to allow to set ownership of "added objects" in the case of reading data from a file. In this way possible memory leaks can always be prevented. Also automatic extrapolation and confidence level calculation of associated veto hits introduced in AliCalorimeter and AliCalcluster. 28-oct-2002 NvE "Riostream.h" introduced to replace the standard C++ includes and static_cast introduced in AliVertex::Draw to prevent a warning message for the new gcc compiler version. 25-nov-2002 NvE User defined particle id code introduced in AliTrack. 27-nov-2002 NvE New class AliCollider introduced and RALICEHeaders.h and RALICELinkdef.h updated accordingly. 29-nov-2002 NvE Typo corrected in AliCollider.cxx. 30-nov-2002 NvE Vertex position errors based on fResolution introduced in AliCollider.cxx. 02-dec-2002 NvE Facility for user defined projectile and target particle ID introduced in AliEvent and projectile/target information provided in the AliCollider created event structure. 11-dec-2002 NvE Copyright notice added into AliCollider.h and AliCollider.cxx. Also small (integer division) modification made in AliCollider.cxx to prevent an innocent warning of the g++ compiler under Linux. 08-jan-2003 NvE Delete statements for fMatrix[i] and fPositions[i] added in the dtor of AliCalorimeter to fix a memory leak. 09-jan-2003 NvE Different modes introduced for AliCalorimeter::Reset() to prevent memory leaks in reading back AliCalorimeter objects from a data file. Also unnecessary "LoadMatrix()" statement removed in AliCalorimeter::Reset(). Irrelevant cout statement removed from AliEvent constructor. 01-feb-2003 NvE Memberfunction Info() renamed to Data() in various classes in order to prevent problems w.r.t. TObject::Info due to probable root/cint bug. 03-feb-2003 NvE File "gcclib" added to subdirectory "scripts" to provide Ralice installation script for Linux machines using gcc. Class AliObjMatrix introduced. 08-feb-2003 NvE Class AliSignal modified such that the maximum number of signal slots is handled completely dynamically at runtime. Memberfunctions SetSignal() and AddSignal() of class AliCalmodule declared virtual to enable inheritance. 09-feb-2003 NvE Class AliCalcluster derived from AliSignal to enable automatic signal setting for various rings of modules around the cluster center. 10-feb-2003 NvE Class AliSignal modified such that also signals without errors can be stored. This may minimise memory occupation and output file size. 18-feb-2003 NvE Memberfunction ShowCalorimeters() introduced in AliEvent to display an overview of all available calorimeter systems. Date/time format changed and ShowCalorimeters() invoked in AliEvent::HeaderData(). 08-mar-2003 NvE Compiler option /GR introduced for MSVC++ in mklibs.bat to explicitly enable the C++ RTTI. This prevents a warning when creating shared libraries using the "old streamer method" (i.e. NO "+" behind the class names in the Linkdef file). 10-mar-2003 NvE AliPosition datamembers of AliTrack changed into AliPositionObj* to enable minimisation of memory occupation and output file size in case a track has not all attributes set. 13-mar-2003 NvE Memberfunction SetZero() introduced for Ali3Vector and Ali4Vector. 20-mar-2003 NvE Statement #include "Riostream.h" moved from header file into implementation file for all classes and MSVC compiler option /Za replaced by /Ze in order to prevent ANSI compliant compiler problems. 15-apr-2003 NvE Waveform histogram introduced in AliSignal. 29-apr-2003 NvE Memberfunction MakeCopy introduced for AliSignal and AliCalmodule. This memberfunction enables automatic creation of new objects of the correct type depending on the argument type, a feature which may be very useful for containers like AliCalorimeter when adding objects in case the container owns the objects. This feature allows e.g. AliCalorimeter to store either AliCalmodule objects or objects derived from AliCalmodule, provided these derived classes also have a proper MakeCopy memberfunction. 17-jun-2003 NvE All TString objects "s" replaced by "s.Data()" in cout statements to comply with MSVC++7.NET compiler and allow mixing with MSVC++6 libraries. The classes in which these modifications were made are Ali3Vector, Ali4Vector, AliSignal and AliEvent. 20-jun-2003 NvE Copy constructor introduced for nearly all classes and also all destructors explicitly declared virtual. 11-jul-2003 NvE Functionality of AliObjMatrix extended by enabling removal of objects and introduction of a linear object array for fast looping over the stored objects. 15-aug-2003 NvE Usage of TMCParticle removed from AliCollider; only Pythia intrinsic functionality is used. 01-sep-2003 NvE Explicit initialisation of TObject() introduced in default constructor of AliObjMatrix. 16-sep-2003 NvE Parent track pointer introduced for AliTrack. Functionality of AliSignal extended and support for gains and offsets introduced. Gain datamember removed from AliCalmodule. 17-sep-2003 NvE Memberfunction AddTrack with second argument "copy" of AliJet moved into the "protected" area to avoid confusion among users. The user has now only access to the AddTrack memberfunction with only the track (pointer) as argument. 23-sep-2003 NvE New classes AliAttrib and AliAttribObj introduced to centralise the handling of name, gain, offset, edge and dead value attributes for a certain slot. Classes AliSignal and AliCalmodule updated accordingly. 28-sep-2003 NvE Facility for automatic gain etc... correction introduced in AliSignal::GetSignal(). 30-sep-2003 NvE New version of AliCalorimeter introduced, making use of AliObjMatrix and AliAttribObj and supporting full treatment of module gains, offsets etc... Also class AliCalcluster updated to take gain etc... correction into account. 02-oct-2003 NvE Memberfunction Load() moved from Ali3VectorObj and Ali4VectorObj to Ali3Vector and Ali4Vector respectively. This allows to use this memberfunction also in all the derived classes (e.g. AliPosition, AliSignal, AliTrack, etc...). Therefore the Load() memberfunction has been removed from AliPositionObj. 03-oct-2003 NvE Typos fixed in AliCalorimeter.cxx. Also memberfunction MakeCopy introduced in class AliCalorimeter. 07-oct-2003 NvE Arguments of SetSignal and AddSignal memberfunctions of AliCalmodule corrected to comply with the corresponding virtual functions of AliSignal. AliCalorimeter modified accordingly. 09-oct-2003 NvE Argument of all MakeCopy memberfunctions removed to obey the ANSI C++ rules for virtual functions and to prepare for a common base class. Due to the fact that not all compilers seem to accept the standard ANSI rule that a virtual function is allowed to differ in return type from the corresponding virtual function in the base class, the MakeCopy() memberfunctions have all been given a return type of TObject*. Also AliAttrib::Data renamed to AliAttrib::List to prevent violation of ANSI virtual function rules and class AliSignal updated accordingly. Memberfunction ResetPosition() moved from AliSignal to AliPosition. Explicitly declared all memberfunctions virtual in the derived classes in case the corresponding memberfunctions were also declared virtual in the base class. Various memberfunctions which were declared virtual but were actually not meant to be overridden declared as non-virtual in various low-level classes like Ali3Vector, Ali4Vector, AliPosition etc... 13-oct-2003 NvE Argument 'npt' of AliCollider::MakeEvent also made optional. 24-oct-2003 NvE Private memberfunction Dump of AliTrack and AliVertex renamed to Dumps in order not to override the Dump memberfunction of TObject. Also definition of AliVertex::Draw slightly modified to comply with the standard ANSI virtual function rules concerning TObject::Draw. Invokation of ClassName() used in printout of AliSignal::Data to make the output information more generic. 25-oct-2003 NvE Memberfunction AddCalorimeter of AliEvent replaced by memberfunction AddDevice to make the functionality more generic. To comply with the enhanced flexibility of AliEvent::AddDevice the class AliCalorimeter has been derived from TNamed and the MakeCopy() memberfunction has been replaced by Clone() to override the default one of TNamed. The specific GetName and SetName memberfunctions of AliCalorimeter have been removed. 26-oct-2003 NvE Class AliSignal derived from TNamed and MakeCopy() memberfunction replaced by Clone() like was done for AliCalorimeter. The latter was also done for AliCalmodule and AliAttribObj. 29-oct-2003 NvE Obsolete include of AliCalorimeter.h removed from AliEvent header file. 11-nov-2003 NvE Double_t dum=GetScalar() replaced by e[0]=GetScalar() in Ali4Vector.cxx to prevent a warning for the gcc compiler (thanks to Thomas Burgess). AliJet derived from TNamed instead of TObject to allow identification via name. 12-nov-2003 NvE fDaytime datamember of AliEvent changed from TDatime to TTimeStamp in order to obtain nanosecond precision. Setting of date and time via a TDatime argument is still supported to provide backward compatibility. 13-nov-2003 NvE Invokation of AliAttrib memberfunction Data() replaced by List() in the example in AliAttrib.cxx (was just a typo; thanks Adam Bouchta). Also test on pointer value introduced in AliAttrib::GetSlotIndex to prevent crash when first slot is empty (thanks to Adam Bouchta). 21-nov-2003 NvE Variable names of type "const" started with the character "k" in various memberfunctions of AliMath in order to comply with the strict Alice coding conventions. 22-nov-2003 NvE Support for various computation modes introduced in AliMath::Prob. 23-nov-2003 NvE New memberfunctions GetBetaVector(), GetBeta() and GetGamma() introduced in Ali4Vector. 03-dec-2003 NvE Message removed from AliEvent::GetDevice in case there are no devices present. 05-dec-2003 NvE Memberfunction SetStable introduced in AliCollider for the user's convenience. 08-dec-2003 NvE AliTrack derived from TNamed to enhance labeling flexibility and also specific Clone memberfunction introduced to enable storage of derived objects in AliJet & co. Also specific Clone memberfunctions introduced for AliJet, AliVertex and AliEvent and for the already existing specific Clone memberfunctions the default argument was set to the empty string "". 15-dec-2003 NvE Datamembers fNdec and fNsig removed from AliTrack since these data are now retrieved directly from the corresponding arrays. Support for hypothesis probability introduced in AliTrack and old mass hypothesis machinery extended to provide now full track hypotheses. 18-dec-2003 NvE Support for object references from the various signal slots introduced in AliSignal. Since this is mainly intended for "backward references" to AliTrack objects, the AliTrack class has been slightly updated for this to provide pointer consistency in case the corresponding AliTrack object is deleted. 19-dec-2003 NvE Slight modification in AliVertex.h and AliAttribObj.cxx to prevent gcc compiler warning concerning an unused variable. 22-dec-2003 NvE Event selection introduced in AliCollider. 24-dec-2003 NvE Some cosmetics in printout of AliVertex, AliEvent and AliCollider. Support for spectator tracks introduced in AliCollider. 28-dec-2003 NvE Facility introduced in AliCollider to set minimal momentum for spectator tracks to be stored. 06-feb-2004 NvE "char* name" changed to "const char* name" in all specific Clone memberfunctions to prevent compiler warnings on Sun. Memberfunction Set() of TTimeStamp used in AliEvent instead of setting the date/time via the TTimeStamp constructor. This is only possible with ROOT version 3.10/02 or later, since for earlier versions the TTimeStamp::Set memberfunctions were erroneously declared private. 11-feb-2004 NvE In script "gcclib" the option -Wno-long-long added to prevent warnings from the usage of type "long long" in Rtypes.h 12-feb-2004 NvE In AliCollider::MakeEvent the statement "char* name" was replaced by "char name[16]" to comply with TPythia6 convention. Also the hardcoded values of the p and n masses have been replaced by masses obtained from the Pythia system via a call to GetPMAS(). Because of a bug in TPythia6 the function Pymass() couldn't be used directly. 13-feb-2004 NvE AliCollider::GetPyname introduced to provide a correctly stripped character string for the particle names. The name returned by TPythia6::Pyname contains trailing characters due to an incorrect stripping process. AliCollider::MakeEvent was updated accordingly to make use of this new memberfunction. 04-mar-2004 NvE Functionality of AliObjMatrix extended to provide the number of references and (row,col) indices of all the occurrences of the stored objects. Also an additional memberfunction AliObjMatrix::RemoveObject introduced to allow more flexibility in specifying objects to be removed. 09-mar-2004 NvE Additional memberfunction AliObjMatrix::RemoveObject renamed to RemoveObjects to prevent confusion and ambiguity in usage. Linking facility of AliSignal extended by enabling multiple links to a specific signal slot. Also call to AliSignal::ResetLink changed to AliSignal::ResetLinks() in the dtor of AliTrack to adopt the extended AliSignal linking facility and output in AliTrack::ListAll() limited to only the referring signal slots to prevent long output lists. 12-mar-2004 NvE Additional "cout << endl;" in front of AliCollider initialisation message in order to always have the initialisation message starting on a new line. On some systems the fortran carriage control of the pure Pythia doesn't get treated correctly. 04-apr-2004 NvE SetMass() invoked from AliTrack::Set3Momentum to get also the energy properly initialised. 09-apr-2004 NvE Support for specification of unit scale introduced in AliPosition. 19-apr-2004 NvE Memberfunction GetPrimed introduced for Ali3Vector. 04-may-2004 NvE Various memberfunctions declared "const" to satisfy the strict Alice coding rules and also to allow better compiler optimisation. 12-may-2004 NvE Track reference-point introduced in AliTrack. 02-jun-2004 NvE Memberfunction GetUnprimed introduced for Ali3Vector. 17-jun-2004 NvE New class AliHelix introduced and "macgcclib" added to create ralice libs on MAC. 24-jun-2004 NvE Coefficient kp7 changed from 7.4e-5 to 7.4e-6 in AliMath::BesselK0 to correct typo (thanks Josh de Bever). Typos corrected (i.e. abs() replaced by fabs() in several places) in AliHelix to satisfy the Intel compiler (thanks Fons Rademakers). 25-jun-2004 NvE Protection introduced in AliSignal::GetNlinks. 29-jun-2004 NvE New class AliDevice introduced. New memberfunctions and datamembers introduced in AliEvent to support investigation and ordering of hits of various (classes of) devices. 01-jul-2004 NvE AliCalorimeter derived from AliDevice to extend functionality (e.g. allow definition of sets of calorimeters and investigate all the hits of a certain set via the AliEvent structure). To prevent matrix swapping restrictions, the memberfuctions SetSwapMode and GetSwapMode of AliCalorimeter have been renamed to SetMatrixSwapMode and GetMatrixSwapMode, respectively. Examples in the AliEvent.cxx documentation updated accordingly. Backward links reset for non-owned hits in AliDevice destructor. 06-jul-2004 NvE AliCalorimeter hit I/O only via the linear array to decrease filesize on disk and improve I/O speed. Internal temp. arrays used for hit sorting in AliDevice and AliEvent and array pointers returned instead of the arrays themselves. This will provide more flexibility in usage. Sorting and clustering procedures in AliCalorimeter modified to use TObjArray pointers to enable direct use of the AliDevice linear sorting facility. Default for AliDevice changed such that now all registered hits are by default owned by the AliDevice object. 06-oct-2004 NvE Full support for data access via slotname specification introduced in AliAttrib and AliSignal. 07-oct-2004 NvE Docs of AliAttrib and AliSignal updated for new data access via slotname specification. 12-oct-2004 NvE Display facility introduced in AliDevice and device backward linking updated for new "owning device" in AliSignal. 13-oct-2004 NvE Hit investigation facilities extended in AliDevice and AliEvent. 15-oct-2004 NvE Optimisation of MC parameters for nucleus-nucleus and astrophysics processes introduced in AliCollider. Also facilities added to provide full user control. 26-nov-2004 NvE Printout of UniqueID added in AliSignal::Data() and AliEvent::ShowDevices() in view of addressing specific signals or devices during data analysis. Memberfunction GetIdHit introduced in AliDevice and AliEvent and AliJet::GetIdTrack optimised for speed. Memberfunction GetIdDevice introduced in AliEvent. 27-nov-2004 NvE Protection for j<1 introduced in AliSignal::SetWaveform(). The waveforms in AliSignal have now become completely decoupled from signal slots, so support for setting waveforms by specifying a slotname has been removed. Printout info in AliSignal::Data() and AliSignal::List() improved and memberfunctions ListWaveform() and GetWaveformIndex() introduced in AliSignal. 28-nov-2004 NvE User definable status word introduced in AliDevice to allow indication of different versions of readout electronics etc... 29-nov-2004 NvE Additional sub-directories (e.g. wa98) introduced which contain Ralice implementations to serve data analysis efforts for various experiments. 01-dec-2004 NvE Install scripts like e.g. "gcclib" renamed to "gcclib.sh" etc... in /scripts. The old scripts (i.e. without the .sh extension) will be deleted in due time. 12-jan-2005 NvE Bug fix in AliAttrib::GetSlotIndex() by exiting as soon as matching name is found. 20-jan-2005 NvE Modification in AliSignal::GetNwaveforms() to return last index instead of array size to take into account the fact that a TObjArray always gets a default size of 16 when reading data from a file. Also the standard ROOT file libNew.lib is now automatically renamed to libNew.lix in the Ralice windows installation script mklibs.bat to prevent linking with this libNew.lib which is inconsistent with the binary ROOT executable release. 09-feb-2005 NvE New class AliTimestamp introduced to support timestamp information for astrophysical research (i.e. Julian dates etc...) without the restrictions of class TTimeStamp. 10-feb-2005 NvE AliEvent modified such that it is derived from AliTimestamp. This will allow events to be synchronised with astrophysical phenomena without the restrictions imposed by TTimeStamp. All existing user functions have been kept to provide full backward compatibility in usage. However, a side effect of the new structure is that when reading data files containing the old event structures, the original date/time stamp information is lost and replaced by the date/time at the moment of reading the data. This implies that to restore the original event date/time, the data files have to be re-created. This I/O backward incompatibility could not be avoided in the effort of eliminating the TTimeStamp restrictions. 04-mar-2005 NvE Installation scripts named amdgcclib.sh introduced in all /scripts directories to enable shared library creation on AMD 64 (Athlon and Opteron) machines. 31-mar-2005 NvE AliObjMatrix derived from TNamed instead of from TObject to allow specification of a name and title for this class. 13-apr-2005 NvE New memberfunctions SetFitDetails and GetFitDetails introduced in AliTrack to enable a versatile facility to store details of various fit procedures for a certain track. This new facility is based on the original idea of Adam Bouchta. Destructor of AliSignal modified to remove the corresponding AliSignal instance first from all related tracks before deleting the link matrix area. 14-apr-2005 NvE Functionality of ShowDevices extended in AliEvent. Also memberfunction HeaderData() modified to prevent long output lists when many devices (and/or tracks) are present. New memberfunction ShowTracks introduced in AliJet and memberfunction Data() updated. 18-apr-2005 NvE New memberfunction GetTracks introduced in AliJet to provide various track selections. 19-apr-2005 NvE Memberfunctions GetNtracks and GetTracks of AliJet extended in functionality. 20-apr-2005 NvE Id of owning device added to the output of AliSignal::Data(). 10-may-2005 NvE Support for timestamps introduced in AliTrack and AliPosition. Memberfunction GetX introduced in Ali3Vector for easy component access. Picosecond support and calculation of time difference introduced in AliTimestamp to enable investigation of both very short (i.e. time of flight analysis in particle physics experiments) and very long (i.e. astrophysical phenomena) time intervals. 17-may-2005 NvE Functionality of AliTimestamp extended w.r.t. treatment of time intervals and accuracy bug fixed in the calculation of time difference. 19-may-2005 NvE AliTimestamp* pointer arguments supported in AliTimestamp::GetDifference for convenience when investigating e.g. TOF or trigger times for tracks and/or hits in analysing AliEvent structures. Also GetMJD() invoked in GetDifference to ensure to always have updated Julian parameters. 22-may-2005 NvE Class AliMath extended to provide full distribution functions of several standard distributions (e.g. Binomial, Poisson, Gauss) and key statistics (e.g. Chi-squared, Student's T, F-test) in view of analysis using Bayesian logic. The various distributions are provided as TF1 objects. In addition, functions to provide the P-values of the various key statistics are also introduced to allow a classical frequentist analysis as well. 25-may-2005 NvE Declaration of unused variable pi removed in AliMath::StudentDist and explicit double specification of integer first argument to pow() in AliMath::FratioPvalue in order to prevent messages from the gcc compiler (thanks Dipo, Philippe and Peter). 02-jun-2005 NvE Bug fix in copy ctor of AliPosition and beginpoint etc... setting of AliTrack. In AliTrack all points are now set after first deleting the existing AliPositionObj object instead of using the Ali3Vector::Load() memberfunction. The bug arose because of the extension of AliPosition with the possibility to store an AliTimestamp. This made AliPosition differ from Ali3Vector w.r.t. datamembers. Also "cout << endl;" introduced after the Pylist() call in AliCollider in order to separate the Pythia event listing from subsequent output due to the mis-interpretation of Fortran carriage-control characters on some systems. 17-jun-2005 NvE New class AliJob introduced to provide a flexible (physics) analysis environment. Bug (forgotten ps transfer in AliTimestamp::SetTJD) fixed (thanks Federico Carminati).