Changing the interface to use digitStore instead of TClonesArrays (Laurent)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 17 Jun 2007 20:44:45 +0000 (20:44 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 17 Jun 2007 20:44:45 +0000 (20:44 +0000)
MUON/AliMUONClusterFinderCOG.cxx
MUON/AliMUONClusterFinderCOG.h
MUON/AliMUONClusterFinderMLEM.cxx
MUON/AliMUONClusterFinderMLEM.h
MUON/AliMUONClusterFinderSimpleFit.cxx
MUON/AliMUONClusterFinderSimpleFit.h
MUON/AliMUONPreClusterFinder.cxx
MUON/AliMUONPreClusterFinder.h
MUON/AliMUONVClusterFinder.h

index 335766f..5746859 100644 (file)
 
 #include "AliLog.h"
 #include "AliMUONCluster.h"
-#include "AliMUONDigit.h"
+#include "AliMUONVDigit.h"
 #include "AliMUONPad.h"
 #include "AliMUONPreClusterFinder.h"
 #include "AliMpArea.h"
-#include "TClonesArray.h"
 #include "TVector2.h"
+#include "AliMUONVDigitStore.h"
 
 /// \class AliMUONClusterFinderCOG
 ///
@@ -61,21 +61,21 @@ AliMUONClusterFinderCOG::~AliMUONClusterFinderCOG()
 //_____________________________________________________________________________
 Bool_t 
 AliMUONClusterFinderCOG::Prepare(const AliMpVSegmentation* segmentations[2],
-                                       TClonesArray* digits[2])
+                                 const AliMUONVDigitStore& digitStore)
 {
   /// Prepare for clustering
   
   // Find out the DetElemId
   Int_t detElemId(-1);
   
-  for ( Int_t i = 0; i < 2; ++i )
+  TIter next(digitStore.CreateIterator());
+  AliMUONVDigit* d;
+
+  d = static_cast<AliMUONVDigit*>(next());
+
+  if (d)
   {
-    AliMUONDigit* d = static_cast<AliMUONDigit*>(digits[i]->First());
-    if (d)
-    {
-      detElemId = d->DetElemId();
-      break;
-    }
+    detElemId = d->DetElemId();
   }
   
   if ( detElemId < 0 )
@@ -86,7 +86,7 @@ AliMUONClusterFinderCOG::Prepare(const AliMpVSegmentation* segmentations[2],
   
   delete fPreClusterFinder;
   fPreClusterFinder = new AliMUONPreClusterFinder;
-  return fPreClusterFinder->Prepare(segmentations,digits);
+  return fPreClusterFinder->Prepare(segmentations,digitStore);
 }
 
 //_____________________________________________________________________________
index c23db59..8c45347 100644 (file)
@@ -25,7 +25,7 @@ public:
   virtual ~AliMUONClusterFinderCOG();
   
   virtual Bool_t Prepare(const AliMpVSegmentation* segmentations[2],
-                         TClonesArray* digits[2]);
+                         const AliMUONVDigitStore& digitStore);
   
   virtual AliMUONCluster* NextCluster();
   
index 9e1b2af..30808ea 100644 (file)
 #include "AliLog.h"
 #include "AliMUONCluster.h"
 #include "AliMUONClusterSplitterMLEM.h"
-#include "AliMUONDigit.h"
+#include "AliMUONVDigit.h"
 #include "AliMUONPad.h"
 #include "AliMUONPreClusterFinder.h"
 #include "AliMpPad.h"
 #include "AliMpVPadIterator.h"
 #include "AliMpVSegmentation.h"
 #include "AliRunLoader.h"
-
+#include "AliMUONVDigitStore.h"
 #include <Riostream.h>
 #include <TH2.h>
 #include <TMinuit.h>
@@ -118,7 +118,7 @@ AliMUONClusterFinderMLEM::~AliMUONClusterFinderMLEM()
 //_____________________________________________________________________________
 Bool_t 
 AliMUONClusterFinderMLEM::Prepare(const AliMpVSegmentation* segmentations[2],
-                                  TClonesArray* digits[2])
+                                  const AliMUONVDigitStore& digitStore)
 {
   /// Prepare for clustering
   
@@ -130,14 +130,12 @@ AliMUONClusterFinderMLEM::Prepare(const AliMpVSegmentation* segmentations[2],
   // Find out the DetElemId
   fDetElemId = -1;
   
-  for ( Int_t i = 0; i < 2; ++i )
+  TIter next(digitStore.CreateIterator());
+  AliMUONVDigit* d = static_cast<AliMUONVDigit*>(next());
+  
+  if (d)
   {
-    AliMUONDigit* d = static_cast<AliMUONDigit*>(digits[i]->First());
-    if (d)
-    {
-      fDetElemId = d->DetElemId();
-      break;
-    }
+    fDetElemId = d->DetElemId();
   }
   
   if ( fDetElemId < 0 )
@@ -156,7 +154,7 @@ AliMUONClusterFinderMLEM::Prepare(const AliMpVSegmentation* segmentations[2],
   
 //  AliDebug(3,Form("EVT %d DE %d",fEventNumber,fDetElemId));
   
-  return fPreClusterFinder->Prepare(segmentations,digits);
+  return fPreClusterFinder->Prepare(segmentations,digitStore);
 }
 
 //_____________________________________________________________________________
index 535f9e6..9d7c39d 100644 (file)
@@ -37,7 +37,7 @@ public:
   virtual ~AliMUONClusterFinderMLEM(); // Destructor
 
   virtual Bool_t Prepare(const AliMpVSegmentation* segmentations[2],
-                         TClonesArray* digits[2]);
+                         const AliMUONVDigitStore& digitStore);
   
   virtual AliMUONCluster* NextCluster();
   
index 52ee92d..7ec9efd 100644 (file)
@@ -22,7 +22,7 @@
 #include "AliMpStationType.h"
 #include "AliMUONCluster.h"
 #include "AliMUONConstants.h"
-#include "AliMUONDigit.h"
+#include "AliMUONVDigit.h"
 #include "AliMUONMathieson.h"
 #include "AliMUONPad.h"
 #include "AliMUONClusterFinderCOG.h"
@@ -32,6 +32,8 @@
 #include "TVector2.h"
 #include "TVirtualFitter.h"
 #include "TF1.h"
+#include "AliMUONVDigitStore.h"
+#include <Riostream.h>
 
 /// \class AliMUONClusterFinderSimpleFit
 ///
@@ -108,7 +110,7 @@ AliMUONClusterFinderSimpleFit::~AliMUONClusterFinderSimpleFit()
 //_____________________________________________________________________________
 Bool_t 
 AliMUONClusterFinderSimpleFit::Prepare(const AliMpVSegmentation* segmentations[2],
-                                       TClonesArray* digits[2])
+                                       const AliMUONVDigitStore& digitStore)
 {
   /// Prepare for clustering
 
@@ -117,19 +119,17 @@ AliMUONClusterFinderSimpleFit::Prepare(const AliMpVSegmentation* segmentations[2
   // Find out the DetElemId
   Int_t detElemId(-1);
   
-  for ( Int_t i = 0; i < 2; ++i )
+  TIter next(digitStore.CreateIterator());
+  AliMUONVDigit* d = static_cast<AliMUONVDigit*>(next());
+  
+  if (d)
   {
-    AliMUONDigit* d = static_cast<AliMUONDigit*>(digits[i]->First());
-    if (d)
-    {
-      detElemId = d->DetElemId();
-      break;
-    }
+    detElemId = d->DetElemId();
   }
-  
-  if ( detElemId < 0 )
+  else
   {
-    AliWarning("Could not find DE. Probably no digits at all ?");
+    AliWarning("Could not find DE. Probably no digits at all : here's the digitStore :");
+    StdoutToAliWarning(digitStore.Print(););
     return kFALSE;
   }
   
@@ -155,7 +155,7 @@ AliMUONClusterFinderSimpleFit::Prepare(const AliMpVSegmentation* segmentations[2
 
   delete fClusterFinder;
   fClusterFinder = new AliMUONClusterFinderCOG;
-  return fClusterFinder->Prepare(segmentations,digits);
+  return fClusterFinder->Prepare(segmentations,digitStore);
 }
 
 //_____________________________________________________________________________
index d93b5c1..96017ae 100644 (file)
@@ -25,7 +25,7 @@ public:
   virtual ~AliMUONClusterFinderSimpleFit();
   
   virtual Bool_t Prepare(const AliMpVSegmentation* segmentations[2],
-                         TClonesArray* digits[2]);
+                         const AliMUONVDigitStore& digitStore);
   
   virtual AliMUONCluster* NextCluster();
   
index ce8cfca..9c19625 100644 (file)
@@ -24,7 +24,8 @@
 #include "AliMpArea.h"
 #include "TVector2.h"
 #include "AliMUONPad.h"
-#include "AliMUONDigit.h"
+#include "AliMUONVDigit.h"
+#include "AliMUONVDigitStore.h"
 
 /// \class AliMUONPreClusterFinder
 ///
@@ -41,7 +42,6 @@ AliMUONPreClusterFinder::AliMUONPreClusterFinder()
 : AliMUONVClusterFinder(),
   fClusters(0x0),
   fSegmentations(0x0),
-  fDigits(0x0),
   fDetElemId(0)
 {
     /// ctor
@@ -83,13 +83,12 @@ AliMUONPreClusterFinder::UsePad(const AliMUONPad& pad)
 //_____________________________________________________________________________
 Bool_t
 AliMUONPreClusterFinder::Prepare(const AliMpVSegmentation* segmentations[2],
-                                 TClonesArray* digits[2]) 
+                                 const AliMUONVDigitStore& digitStore)
 // FIXME : add area on which to look for clusters here.
 {
   /// Prepare for clustering, by giving access to segmentations and digit lists
   
   fSegmentations = segmentations;
-  fDigits = digits;
   
   delete fClusters;
   fClusters = new TClonesArray("AliMUONCluster");
@@ -101,39 +100,35 @@ AliMUONPreClusterFinder::Prepare(const AliMpVSegmentation* segmentations[2],
   
   fDetElemId = -1;
   
-  // Converts digits into pads
-  for ( Int_t cathode = 0; cathode < 2; ++cathode )
+  TIter next(digitStore.CreateIterator());
+  AliMUONVDigit* d;
+  
+  while ( ( d = static_cast<AliMUONVDigit*>(next()) ) )
   {
-    if ( !digits[cathode] ) continue;
-
-    AliMUONDigit* d;
-    TIter next(digits[cathode]);
-    while ( ( d = static_cast<AliMUONDigit*>(next())))
+    Int_t ix = d->PadX();
+    Int_t iy = d->PadY();
+    Int_t cathode = d->Cathode();
+    AliMpPad pad = fSegmentations[cathode]->PadByIndices(AliMpIntPair(ix,iy));
+    TClonesArray& padArray = *(fPads[cathode]);
+    if ( fDetElemId == -1 ) 
     {
-      Int_t ix = d->PadX();
-      Int_t iy = d->PadY();
-      AliMpPad pad = fSegmentations[cathode]->PadByIndices(AliMpIntPair(ix,iy));
-      TClonesArray& padArray = *(fPads[cathode]);
-      if ( fDetElemId == -1 ) 
-      {
-        fDetElemId = d->DetElemId();
-      }
-      else
+      fDetElemId = d->DetElemId();
+    }
+    else
+    {
+      if ( d->DetElemId() != fDetElemId ) 
       {
-        if ( d->DetElemId() != fDetElemId ) 
-        {
-          AliError("Something is seriously wrong with DE. Aborting clustering");
-          return kFALSE;
-        }
+        AliError("Something is seriously wrong with DE. Aborting clustering");
+        return kFALSE;
       }
-      
-      AliMUONPad mpad(fDetElemId,cathode,
-                      ix,iy,pad.Position().X(),pad.Position().Y(),
-                      pad.Dimensions().X(),pad.Dimensions().Y(),
-                      d->Signal());
-      if ( d->IsSaturated() ) mpad.SetSaturated(kTRUE); 
-      new (padArray[padArray.GetLast()+1]) AliMUONPad(mpad);      
     }
+    
+    AliMUONPad mpad(fDetElemId,cathode,
+                    ix,iy,pad.Position().X(),pad.Position().Y(),
+                    pad.Dimensions().X(),pad.Dimensions().Y(),
+                    d->Charge());
+    if ( d->IsSaturated() ) mpad.SetSaturated(kTRUE); 
+    new (padArray[padArray.GetLast()+1]) AliMUONPad(mpad);      
   }
   if ( fPads[0]->GetLast() < 0 && fPads[1]->GetLast() < 0 )
   {
index 8daf8b0..455de2c 100644 (file)
@@ -26,7 +26,7 @@ public:
   virtual ~AliMUONPreClusterFinder();
   
   virtual Bool_t Prepare(const AliMpVSegmentation* segmentations[2],
-                         TClonesArray* digits[2]);
+                         const AliMUONVDigitStore& digitStore);
   
   virtual AliMUONCluster* NextCluster();
 
@@ -43,7 +43,6 @@ private:
 private:
   TClonesArray* fClusters; //!< the clusters we've found (owner)
   const AliMpVSegmentation** fSegmentations; //!< segmentations (not owner)
-  TClonesArray** fDigits; //!< where to find the digits (not owner)
   TClonesArray* fPads[2]; //!< the pads corresponding to the digits (owner)
   Int_t fDetElemId; //!< which DE we're considering
   
index d2d3d78..3015738 100644 (file)
@@ -18,8 +18,8 @@
 
 class AliMUONCluster;
 class AliMpVSegmentation;
-class TClonesArray;
 class AliMUONPad;
+class AliMUONVDigitStore;
 
 class AliMUONVClusterFinder : public TObject
 {
@@ -29,7 +29,7 @@ public:
   
   /// \todo add comment
   virtual Bool_t Prepare(const AliMpVSegmentation* segmentations[2],
-                         TClonesArray* digits[2]) = 0;
+                         const AliMUONVDigitStore& digitStore) = 0;
   
   /// \todo add comment
   virtual AliMUONCluster* NextCluster() = 0;