New EMCAL raw stream class based on a new AliAltroRawStream class. As soon as the...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 30 Mar 2006 13:06:07 +0000 (13:06 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 30 Mar 2006 13:06:07 +0000 (13:06 +0000)
EMCAL/AliEMCALRawStream.cxx
EMCAL/AliEMCALRawStream.h

index b4b9962..de3f434 100644 (file)
@@ -38,9 +38,75 @@ ClassImp(AliEMCALRawStream)
 
 //_____________________________________________________________________________
 AliEMCALRawStream::AliEMCALRawStream(AliRawReader* rawReader) :
-  AliAltroRawStream(rawReader)
+  AliAltroRawStream(rawReader),
+  fId(-1),
+  fPrevId(-1),
+  fModule(-1),
+  fPrevModule(-1)
 {
 // create an object to read EMCAL raw digits
 
-  fRawReader->Select(8);
+  SelectRawData(8);
+
+  fNoAltroMapping = kTRUE;
+}
+
+//_____________________________________________________________________________
+AliEMCALRawStream::AliEMCALRawStream(const AliEMCALRawStream& stream) :
+  AliAltroRawStream(stream),
+  fId(-1),
+  fPrevId(-1),
+  fModule(-1),
+  fPrevModule(-1)
+{
+  Fatal("AliEMCALRawStream", "copy constructor not implemented");
+}
+
+//_____________________________________________________________________________
+AliEMCALRawStream& AliEMCALRawStream::operator = (const AliEMCALRawStream& 
+                                             /* stream */)
+{
+  Fatal("operator =", "assignment operator not implemented");
+  return *this;
+}
+
+//_____________________________________________________________________________
+AliEMCALRawStream::~AliEMCALRawStream()
+{
+// destructor
+}
+
+//_____________________________________________________________________________
+void AliEMCALRawStream::Reset()
+{
+  // reset emcal raw stream params
+  AliAltroRawStream::Reset();
+  fId = fPrevId = fModule = fPrevModule = -1;
+}
+
+//_____________________________________________________________________________
+Bool_t AliEMCALRawStream::Next()
+{
+  // Read next EMCAL signal
+  // Apply the EMCAL altro mapping to get
+  // the module and id indeces
+  fPrevModule = fModule;
+  fPrevId = fId;
+  if (AliAltroRawStream::Next()) {
+    //    if (IsNewHWAddress())
+    ApplyAltroMapping();
+    return kTRUE;
+  }
+  else
+    return kFALSE;
+}
+
+//_____________________________________________________________________________
+void AliEMCALRawStream::ApplyAltroMapping()
+{
+  // Take the DDL index, load
+  // the corresponding altro mapping
+  // object and fill the module and id indeces
+  fModule = fSegmentation[0];
+  fId = fSegmentation[2];
 }
index ac441c0..59acff8 100644 (file)
@@ -23,14 +23,29 @@ class AliEMCALRawStream: public AliAltroRawStream {
 public :
   
   AliEMCALRawStream(AliRawReader* rawReader);
+  virtual ~AliEMCALRawStream();
   
-  Int_t            GetId() const {return fPad;};
-  Int_t            GetModule() const {return fSector;}
-  Int_t            GetPrevId() const {return fPrevPad;};
-  Int_t            GetSignal() const {return fSignal;};
-  Int_t            GetTime() const {return fTime;};
-  Bool_t           IsNewId() const {return (GetId() != GetPrevId());};
+  virtual void             Reset();
+  virtual Bool_t           Next();
+
+  Int_t            GetId() const {return fId;};
+  Int_t            GetPrevId() const {return fPrevId;};
+  Int_t            GetModule() const {return fModule;}
+  Int_t            GetPrevModule() const {return fPrevModule;}
+  Bool_t           IsNewId() const {return (fId != fPrevId);};
+  Bool_t           IsNewModule() const {return (fModule != fPrevModule) || (fId != fPrevId);};
   
+protected:
+  AliEMCALRawStream(const AliEMCALRawStream& stream);
+  AliEMCALRawStream& operator = (const AliEMCALRawStream& stream);
+
+  virtual void ApplyAltroMapping();
+
+  Int_t            fId;
+  Int_t            fPrevId;
+  Int_t            fModule;
+  Int_t            fPrevModule;
+
   ClassDef(AliEMCALRawStream, 0)   // class for reading EMCAL raw digits
     };