]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTransientDigit.cxx
04-mar-2004 NvE Functionality of AliObjMatrix extended to provide the number of refer...
[u/mrichter/AliRoot.git] / MUON / AliMUONTransientDigit.cxx
index 6d9c7973232ab44c66ccf8975ac52382ae1def3d..9586d67ed7d0752e1fed7a9f3ff273df6a6d1577 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log $
-*/
+/* $Id$ */
 
 #include "AliMUONTransientDigit.h"
 #include <TObjArray.h>
+#include "TVector.h"
 
 ClassImp(AliMUONTransientDigit)
 
  
 //____________________________________________________________________________
 
-AliMUONTransientDigit::AliMUONTransientDigit(const AliMUONTransientDigit& digit)
+  AliMUONTransientDigit::AliMUONTransientDigit(const AliMUONTransientDigit& digit):AliMUONDigit(digit)
 {
 // dummy copy constructor
 }
@@ -37,21 +36,61 @@ 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)
+////////////////////////////////////////////////////////////////////////
+AliMUONTransientDigit& AliMUONTransientDigit::operator =(const AliMUONTransientDigit& /*rhs*/)
 {
 // Dummy assignment operator
     return *this;
 }
 
+////////////////////////////////////////////////////////////////////////
+void AliMUONTransientDigit::AddToTrackList(Int_t track, Int_t charge)
+{
+  TVector *pTrInfo = new TVector(3);
+  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) const
+{
+  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) const
+{
+  if (i > fTrackList->GetEntriesFast()) return 0;
+  TVector *pVect = static_cast<TVector*>(fTrackList->At(i));
+  return static_cast<Int_t>((*pVect)(1));
+}