]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RALICE/AliEvent.cxx
01-feb-2003 NvE Memberfunction Info() renamed to Data() in various classes in order to
[u/mrichter/AliRoot.git] / RALICE / AliEvent.cxx
index 08e645fb7cb1e60a6e0097154c8eb4efd1807e02..4ef2b3cab35274290b3383fa09fe239e4548441f 100644 (file)
@@ -13,7 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-// $Id: AliEvent.cxx,v 1.5 2002/01/18 08:46:59 nick Exp $
+// $Id: AliEvent.cxx,v 1.9 2003/01/09 16:06:35 nick Exp $
 
 ///////////////////////////////////////////////////////////////////////////
 // Class AliEvent
@@ -52,6 +52,8 @@
 //    creating only one AliCalorimeter instance in the main programme and using the
 //    AliCalorimeter::Reset() and AliCalorimeter parameter setting memberfunctions.
 //
+// See also the documentation provided for the memberfunction SetOwner(). 
+//
 // Coding example to make an event consisting of a primary vertex,
 // 2 secondary vertices and a calorimeter.
 // --------------------------------------------------------------
 //        jx=v2.GetJet(2);
 //        evt.AddJet(jx,0); 
 // 
-//        evt.Info("sph");
+//        evt.Data("sph");
 //        v1.ListAll();
 //        v2.List("cyl");
 //
 //        Float_t loc[3];
 //        evt.GetPosition(loc,"sph");
 //        AliPosition r=v1.GetPosition();
-//        r.Info(); 
+//        r.Data(); 
 //        Int_t nt=v2.GetNtracks();
 //        AliTrack* tv=v2.GetTrack(1); // Access track number 1 of Vertex v2
 //
 // Note : All quantities are in GeV, GeV/c or GeV/c**2
 //
 //--- Author: Nick van Eijndhoven 27-may-2001 UU-SAP Utrecht
-//- Modified: NvE $Date: 2002/01/18 08:46:59 $ UU-SAP Utrecht
+//- Modified: NvE $Date: 2003/01/09 16:06:35 $ UU-SAP Utrecht
 ///////////////////////////////////////////////////////////////////////////
 
 #include "AliEvent.h"
@@ -204,9 +206,11 @@ AliEvent::AliEvent()
  fAproj=0;
  fZproj=0;
  fPnucProj=0;
+ fIdProj=0;
  fAtarg=0;
  fZtarg=0;
  fPnucTarg=0;
+ fIdTarg=0;
  fNcals=0;
  fCalorimeters=0;
  fCalCopy=0;
@@ -222,9 +226,11 @@ AliEvent::AliEvent(Int_t n): AliVertex(n)
  fAproj=0;
  fZproj=0;
  fPnucProj=0;
+ fIdProj=0;
  fAtarg=0;
  fZtarg=0;
  fPnucTarg=0;
+ fIdTarg=0;
  fNcals=0;
  fCalorimeters=0;
  fCalCopy=0;
@@ -245,15 +251,18 @@ void AliEvent::Reset()
 // Reset all variables to default values
 // The max. number of tracks is set to the initial value again
 // The max. number of vertices is set to the default value again
+// Note : The CalCopy mode is maintained as it was set by the user before.
  fDaytime.Set();
  fRun=0;
  fEvent=0;
  fAproj=0;
  fZproj=0;
  fPnucProj=0;
+ fIdProj=0;
  fAtarg=0;
  fZtarg=0;
  fPnucTarg=0;
+ fIdTarg=0;
 
  fNcals=0;
  if (fCalorimeters)
@@ -265,6 +274,35 @@ void AliEvent::Reset()
  AliVertex::Reset();
 }
 ///////////////////////////////////////////////////////////////////////////
+void AliEvent::SetOwner(Bool_t own)
+{
+// Set ownership of all added objects. 
+// The default parameter is own=kTRUE.
+//
+// Invokation of this memberfunction also sets all the copy modes
+// (e.g. TrackCopy & co.) according to the value of own.
+//
+// This function (with own=kTRUE) is particularly useful when reading data
+// from a tree/file, since Reset() will then actually remove all the
+// added objects from memory irrespective of the copy mode settings
+// during the tree/file creation process. In this way it provides a nice way
+// of preventing possible memory leaks in the reading/analysis process.
+//
+// In addition this memberfunction can also be used as a shortcut to set all
+// copy modes in one go during a tree/file creation process.
+// However, in this case the user has to take care to only set/change the
+// ownership (and copy mode) for empty objects (e.g. newly created objects
+// or after invokation of the Reset() memberfunction) otherwise it will
+// very likely result in inconsistent destructor behaviour.
+
+ Int_t mode=1;
+ if (!own) mode=0;
+ if (fCalorimeters) fCalorimeters->SetOwner(own);
+ fCalCopy=mode;
+
+ AliVertex::SetOwner(own);
+}
+///////////////////////////////////////////////////////////////////////////
 void AliEvent::SetDayTime(TDatime& stamp)
 {
 // Set the date and time stamp for this event
@@ -301,12 +339,14 @@ Int_t AliEvent::GetEventNumber()
  return fEvent;
 }
 ///////////////////////////////////////////////////////////////////////////
-void AliEvent::SetProjectile(Int_t a,Int_t z,Double_t pnuc)
+void AliEvent::SetProjectile(Int_t a,Int_t z,Double_t pnuc,Int_t id)
 {
-// Set the projectile A, Z and momentum value per nucleon.
+// Set the projectile A, Z, momentum per nucleon and user defined particle ID.
+// By default the particle ID is set to zero.
  fAproj=a;
  fZproj=z;
  fPnucProj=pnuc;
+ fIdProj=id;
 }
 ///////////////////////////////////////////////////////////////////////////
 Int_t AliEvent::GetProjectileA()
@@ -327,12 +367,20 @@ Double_t AliEvent::GetProjectilePnuc()
  return fPnucProj;
 }
 ///////////////////////////////////////////////////////////////////////////
-void AliEvent::SetTarget(Int_t a,Int_t z,Double_t pnuc)
+Int_t AliEvent::GetProjectileId()
 {
-// Set the target A, Z and momentum value per nucleon.
+// Provide the user defined particle ID of the projectile.
+ return fIdProj;
+}
+///////////////////////////////////////////////////////////////////////////
+void AliEvent::SetTarget(Int_t a,Int_t z,Double_t pnuc,Int_t id)
+{
+// Set the target A, Z, momentum per nucleon and user defined particle ID.
+// By default the particle ID is set to zero.
  fAtarg=a;
  fZtarg=z;
  fPnucTarg=pnuc;
+ fIdTarg=id;
 }
 ///////////////////////////////////////////////////////////////////////////
 Int_t AliEvent::GetTargetA()
@@ -353,7 +401,13 @@ Double_t AliEvent::GetTargetPnuc()
  return fPnucTarg;
 }
 ///////////////////////////////////////////////////////////////////////////
-void AliEvent::HeaderInfo()
+Int_t AliEvent::GetTargetId()
+{
+// Provide the user defined particle ID of the target.
+ return fIdTarg;
+}
+///////////////////////////////////////////////////////////////////////////
+void AliEvent::HeaderData()
 {
 // Provide event header information
  Int_t date=fDaytime.GetDate();
@@ -369,7 +423,7 @@ void AliEvent::HeaderInfo()
  char* c[12]={"jan","feb","mar","apr","may","jun",
               "jul","aug","sep","oct","nov","dec"};
 
- cout << " *AliEvent::Info* Run : " << fRun << " Event : " << fEvent;
+ cout << " *AliEvent::Data* Run : " << fRun << " Event : " << fEvent;
  cout.fill('0');
  cout << " Date : " << setw(2) << day << "-" << c[month-1] << "-" << year
       << " Time : " << setw(2) << hh << ":" << setw(2) << mm << ":" << setw(2) << ss;
@@ -377,11 +431,11 @@ void AliEvent::HeaderInfo()
  cout << " Ncalorimeters : " << fNcals << endl;
 }
 ///////////////////////////////////////////////////////////////////////////
-void AliEvent::Info(TString f)
+void AliEvent::Data(TString f)
 {
 // Provide event information within the coordinate frame f
- HeaderInfo();
- AliVertex::Info(f);
+ HeaderData();
+ AliVertex::Data(f);
 } 
 ///////////////////////////////////////////////////////////////////////////
 Int_t AliEvent::GetNcalorimeters()