(NvE) Also memberfunction MakeCopy introduced in class AliCalorimeter.
authornick <nick@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 3 Oct 2003 14:00:42 +0000 (14:00 +0000)
committernick <nick@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 3 Oct 2003 14:00:42 +0000 (14:00 +0000)
RALICE/AliCalorimeter.cxx
RALICE/AliCalorimeter.h
RALICE/history.txt

index dba11d15b67428e52a1bd09fa67475e2e5b31207..d4115dd2f86b489b87cb77c7270b52bf7b97e314 100644 (file)
@@ -200,23 +200,19 @@ AliCalorimeter::AliCalorimeter(AliCalorimeter& c) : TObject(c)
  }
 
  Int_t size=0;
- Int_t n=0;
- if (c.fAttributes)
- {
-  size=c.fAttributes->GetSize();
-  n=c.fAttributes->GetEntries();
- }
+ if (c.fAttributes) size=c.fAttributes->GetSize();
  if (size)
  {
   fAttributes=new TObjArray(size);
   fAttributes->SetOwner();
-  for (Int_t ia=0; ia<n; ia++)
+  for (Int_t ia=0; ia<size; ia++)
   {
    AliAttribObj* a=(AliAttribObj*)(c.fAttributes->At(ia));
-   if (a) fAttributes->Add(new AliAttribObj(*a));
+   if (a) fAttributes->AddAt(new AliAttribObj(*a),ia);
   }
  }
 
+ Int_t n=0;
  n=c.GetNclusters();
  if (n)
  {
@@ -1692,3 +1688,15 @@ Int_t AliCalorimeter::GetSwapMode()
  return fSwap;
 }
 ///////////////////////////////////////////////////////////////////////////
+AliCalorimeter* AliCalorimeter::MakeCopy(AliCalorimeter& c)
+{
+// Make a deep copy of the input object and provide the pointer to the copy.
+// 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 AliEvent when adding objects in case the
+// container owns the objects.
+
+ AliCalorimeter* cal=new AliCalorimeter(c);
+ return cal;
+}
+///////////////////////////////////////////////////////////////////////////
index f5f1d46d8f40f8719fdf4fc77e73ef36e6eb593b..ae6cb4b91b1992c0f60ea5b38dbdb95af61d16b7 100644 (file)
@@ -26,6 +26,7 @@ class AliCalorimeter : public TObject
   AliCalorimeter(Int_t nrow,Int_t ncol);           // Create a calorimeter matrix
   virtual ~AliCalorimeter();                       // Destructor
   AliCalorimeter(AliCalorimeter& c);               // Copy constructor
+  virtual AliCalorimeter* MakeCopy(AliCalorimeter& c); // Make a deep copy and provide pointer of the copy
   Int_t GetNrows();                                // Return number of rows of the matrix
   Int_t GetNcolumns();                             // Return number of columns of the matrix
   void SetSignal(Int_t row,Int_t col,Float_t s);   // Set signal for a certain module
@@ -85,6 +86,6 @@ class AliCalorimeter : public TObject
   AliObjMatrix* fPositions;                  //! The matrix of module position pointers
   TString fName;                             // Name of the calorimeter system
  
- ClassDef(AliCalorimeter,4) // Description of a modular calorimeter system.
+ ClassDef(AliCalorimeter,5) // Description of a modular calorimeter system.
 };
 #endif
index 116d9311bca6582c57b11384f67b659554883953..2a90dc973ea04cea8a076e00e54b6f1e6b764afb 100644 (file)
                 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.