]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Don't delete the rawStreamer after each SM
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 4 Oct 2009 12:28:28 +0000 (12:28 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 4 Oct 2009 12:28:28 +0000 (12:28 +0000)
TRD/AliTRDclusterizer.cxx
TRD/AliTRDclusterizer.h

index 2f3adf73fe7430a2912ca84f1f41517111fcac74..4cb3915e9f2010efdba267436c1bf3fff6fdbe8a 100644 (file)
@@ -85,6 +85,7 @@ AliTRDclusterizer::AliTRDclusterizer(const AliTRDReconstructor *const rec)
   ,firstClusterROC(0)
   ,fNoOfClusters(0)
   ,fBaseline(0)
+  ,fRawStream(NULL)
 {
   //
   // AliTRDclusterizer default constructor
@@ -144,6 +145,7 @@ AliTRDclusterizer::AliTRDclusterizer(const Text_t *name, const Text_t *title, co
   ,firstClusterROC(0)
   ,fNoOfClusters(0)
   ,fBaseline(0)
+  ,fRawStream(NULL)
 {
   //
   // AliTRDclusterizer constructor
@@ -198,6 +200,7 @@ AliTRDclusterizer::AliTRDclusterizer(const AliTRDclusterizer &c)
   ,firstClusterROC(0)
   ,fNoOfClusters(0)
   ,fBaseline(0)
+  ,fRawStream(NULL)
 {
   //
   // AliTRDclusterizer copy constructor
@@ -241,7 +244,12 @@ AliTRDclusterizer::~AliTRDclusterizer()
 
   if (fTransform){
     delete fTransform;
-    fTransform     = NULL;
+    fTransform = NULL;
+  }
+
+  if (fRawStream){
+    delete fRawStream;
+    fRawStream = NULL;
   }
 
 }
@@ -296,6 +304,7 @@ void AliTRDclusterizer::Copy(TObject &c) const
   ((AliTRDclusterizer &) c).firstClusterROC= 0;
   ((AliTRDclusterizer &) c).fNoOfClusters  = 0;
   ((AliTRDclusterizer &) c).fBaseline      = 0;
+  ((AliTRDclusterizer &) c).fRawStream     = NULL;
   
 }
 
@@ -646,14 +655,18 @@ Bool_t AliTRDclusterizer::Raw2ClustersChamber(AliRawReader *rawReader)
     fTrackletContainer[1] = new UInt_t[kTrackletChmb]; 
   }
 
-  AliTRDrawStreamBase *input = AliTRDrawStreamBase::GetRawStream(rawReader);
+  if(!fRawStream)
+    fRawStream = AliTRDrawStreamBase::GetRawStream(rawReader);
+  else
+    fRawStream->SetReader(rawReader);
+
   if(fReconstructor->IsHLT())
-    input->SetSharedPadReadout(kFALSE);
+    fRawStream->SetSharedPadReadout(kFALSE);
 
-  AliInfo(Form("Stream version: %s", input->IsA()->GetName()));
+  AliInfo(Form("Stream version: %s", fRawStream->IsA()->GetName()));
   
   Int_t det    = 0;
-  while ((det = input->NextChamber(fDigitsManager,fTrackletContainer)) >= 0){
+  while ((det = fRawStream->NextChamber(fDigitsManager,fTrackletContainer)) >= 0){
     Bool_t iclusterBranch = kFALSE;
     if (fDigitsManager->GetIndexes(det)->HasEntry()){
       iclusterBranch = MakeClusters(det);
@@ -679,9 +692,6 @@ Bool_t AliTRDclusterizer::Raw2ClustersChamber(AliRawReader *rawReader)
     fDigitsManager = NULL;
   }
 
-  delete input;
-  input = NULL;
-
   AliInfo(Form("Number of found clusters : %d", fNoOfClusters)); 
   return kTRUE;
 
index 3de5448cede663e4824bc9ed9115f104adc396a6..55d94ba1c033db33ece2e16c5a51e487d02a0ce3 100644 (file)
@@ -31,6 +31,7 @@ class AliTRDtransform;
 class AliTRDCalROC;
 class AliTRDReconstructor;
 class AliTRDCalSingleChamberStatus;
+class AliTRDrawStreamBase;
 
 class AliTRDclusterizer : public TNamed 
 {
@@ -118,10 +119,14 @@ protected:
   Bool_t           IsMaximum(const MaxStruct &Max, UChar_t &padStatus, Short_t *const Signals);       //for const correctness reasons not const parameters are given separately
   Bool_t           FivePadCluster(MaxStruct &ThisMax, MaxStruct &NeighbourMax);
   void             CreateCluster(const MaxStruct &Max); 
-  inline void      CalcAdditionalInfo(const MaxStruct &Max, Short_t *const signals, Int_t &nPadCount);
+
   virtual void     AddClusterToArray(AliTRDcluster* cluster);
   virtual void     AddTrackletsToArray();
 
+private:
+  inline void      CalcAdditionalInfo(const MaxStruct &Max, Short_t *const signals, Int_t &nPadCount);
+
+protected:
   const AliTRDReconstructor *fReconstructor; //! reconstructor
   AliRunLoader        *fRunLoader;           //! Run Loader
   TTree               *fClusterTree;         //! Tree with the cluster
@@ -158,6 +163,7 @@ protected:
   Int_t                firstClusterROC;       // The number of cluster in a given ROC
   Int_t                fNoOfClusters;         // Number of Clusters already processed and still owned by the clusterizer
   Int_t                fBaseline;             // Baseline of the ADC values
+  AliTRDrawStreamBase *fRawStream;            // Currently used RawStream
 
   ClassDef(AliTRDclusterizer,6)               //  TRD clusterfinder