protect data members, add functions to handle protected TObjArray
authorjchudoba <jchudoba@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 31 Oct 2001 16:34:26 +0000 (16:34 +0000)
committerjchudoba <jchudoba@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 31 Oct 2001 16:34:26 +0000 (16:34 +0000)
MUON/AliMUONTransientDigit.cxx
MUON/AliMUONTransientDigit.h

index 77b8829fa37be60b573b9cd18cdf9eba829464c4..0df9e18717b2d05ce6284e18de8a6c3bbad69a48 100644 (file)
@@ -19,6 +19,7 @@ $Log $
 
 #include "AliMUONTransientDigit.h"
 #include <TObjArray.h>
+#include "TVector.h"
 
 ClassImp(AliMUONTransientDigit)
 
@@ -38,18 +39,59 @@ AliMUONTransientDigit::AliMUONTransientDigit(Int_t ich, Int_t *digits):
     // Creates a MUON digit list object
     //
     fChamber     = ich;
-    fTrackList   = new TObjArray;
+    fTrackList   = new TObjArray(5);   
+    // 5 is arbitrary number, just to decrease default 16
 }
 
+////////////////////////////////////////////////////////////////////////
 AliMUONTransientDigit::~AliMUONTransientDigit() 
 {
-delete fTrackList;
+  fTrackList->Delete();
+  delete fTrackList;
 }
 
+////////////////////////////////////////////////////////////////////////
 AliMUONTransientDigit& AliMUONTransientDigit::operator =(const AliMUONTransientDigit& rhs)
 {
 // Dummy assignment operator
     return *this;
 }
 
+////////////////////////////////////////////////////////////////////////
+void AliMUONTransientDigit::AddToTrackList(Int_t track, Int_t charge)
+{
+  TVector *pTrInfo = new TVector(2);
+  TVector &trInfo = *pTrInfo;
+  trInfo(0) = track;
+  trInfo(1) = charge;
+  fTrackList->Add(pTrInfo);
+}
+
+////////////////////////////////////////////////////////////////////////
+void AliMUONTransientDigit::UpdateTrackList(Int_t track, Int_t charge)
+{
+  Int_t lastEntry = fTrackList->GetLast();
+  TVector *pVect = static_cast<TVector*>(fTrackList->At(lastEntry));
+  if ( static_cast<Int_t>((*pVect)(0)) == track) {
+    (*pVect)(1) += charge;  // update charge
+  } else {
+    AddToTrackList(track,charge);
+  }
+}
 
+////////////////////////////////////////////////////////////////////////
+Int_t AliMUONTransientDigit::GetTrack(Int_t i)
+{
+  if (i > fTrackList->GetEntriesFast()) return 0;
+  TVector *pVect = static_cast<TVector*>(fTrackList->At(i));
+  return static_cast<Int_t>((*pVect)(0));
+}
+
+
+////////////////////////////////////////////////////////////////////////
+Int_t AliMUONTransientDigit::GetCharge(Int_t i)
+{
+  if (i > fTrackList->GetEntriesFast()) return 0;
+  TVector *pVect = static_cast<TVector*>(fTrackList->At(i));
+  return static_cast<Int_t>((*pVect)(1));
+}
index e266d2dfb04d0c7c7da9c4d9d3b7db03d378aa74..12440f562047244e4beabcc574ae984dffdc8f6d 100644 (file)
@@ -7,11 +7,10 @@
 /* $Id$ */
 
 #include "AliMUONDigit.h"
-class TObjArray;
-
+#include "TObjArray.h"
 
 class AliMUONTransientDigit : public AliMUONDigit {
- public:
+ protected:
     Int_t          fChamber;       // chamber number of pad
     TObjArray     *fTrackList;     // List of tracks contributing
  public:
@@ -20,8 +19,11 @@ class AliMUONTransientDigit : public AliMUONDigit {
     AliMUONTransientDigit(Int_t rpad, Int_t *digits);
     virtual ~AliMUONTransientDigit();
     Int_t Chamber() {return fChamber;}
-           
-    TObjArray  *TrackList()   {return fTrackList;}
+    Int_t GetNTracks() {return fTrackList->GetEntriesFast();}
+    Int_t GetTrack(Int_t i);
+    Int_t GetCharge(Int_t i);
+    void AddToTrackList(Int_t track, Int_t charge);
+    void UpdateTrackList(Int_t track, Int_t charge);
     AliMUONTransientDigit & operator =(const AliMUONTransientDigit & rhs);
     
     ClassDef(AliMUONTransientDigit,1)  // Transient digit for MUON