]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCRawStream.cxx
Small fix Sarah
[u/mrichter/AliRoot.git] / TPC / AliTPCRawStream.cxx
index e15ad95d2644863b4df29ef3c7e58a55a3d3a21d..57701c8f6847a18f1dbfbfb22cbd38b691124853 100644 (file)
 ClassImp(AliTPCRawStream)
 
 //_____________________________________________________________________________
-AliTPCRawStream::AliTPCRawStream(AliRawReader* rawReader) :
+AliTPCRawStream::AliTPCRawStream(AliRawReader* rawReader, AliAltroMapping **mapping) :
   AliAltroRawStream(rawReader),
   fSector(-1),
   fPrevSector(-1),
   fRow(-1),
   fPrevRow(-1),
   fPad(-1),
-  fPrevPad(-1)
+  fPrevPad(-1),
+  fIsMapOwner(kFALSE)
 {
   // create an object to read TPC raw digits
 
   SelectRawData("TPC");
 
-  TString path = gSystem->Getenv("ALICE_ROOT");
-  path += "/TPC/mapping/Patch";
-  TString path2;
-  for(Int_t i = 0; i < 6; i++) {
-    path2 = path;
-    path2 += i;
-    path2 += ".data";
-    fMapping[i] = new AliTPCAltroMapping(path2.Data());
+  if (mapping == NULL) {
+    TString path = gSystem->Getenv("ALICE_ROOT");
+    path += "/TPC/mapping/Patch";
+    TString path2;
+    for(Int_t i = 0; i < 6; i++) {
+      path2 = path;
+      path2 += i;
+      path2 += ".data";
+      fMapping[i] = new AliTPCAltroMapping(path2.Data());
+    }
+    fIsMapOwner = kTRUE;
   }
-
-  fNoAltroMapping = kFALSE;
+  else {
+    for(Int_t i = 0; i < 6; i++)
+      fMapping[i] = mapping[i];
+  }
+    
 }
 
 //_____________________________________________________________________________
 AliTPCRawStream::AliTPCRawStream(const AliTPCRawStream& stream) :
   AliAltroRawStream(stream),
-  fSector(-1),
-  fPrevSector(-1),
-  fRow(-1),
-  fPrevRow(-1),
-  fPad(-1),
-  fPrevPad(-1)
+  fSector(stream.fSector),
+  fPrevSector(stream.fPrevSector),
+  fRow(stream.fRow),
+  fPrevRow(stream.fPrevRow),
+  fPad(stream.fPad),
+  fPrevPad(stream.fPrevPad),
+  fIsMapOwner(kFALSE)
 {
-  Fatal("AliTPCRawStream", "copy constructor not implemented");
+  for(Int_t i = 0; i < 6; i++) fMapping[i] = stream.fMapping[i];
 }
 
 //_____________________________________________________________________________
-AliTPCRawStream& AliTPCRawStream::operator = (const AliTPCRawStream& 
-                                             /* stream */)
+AliTPCRawStream& AliTPCRawStream::operator = (const AliTPCRawStream& stream)
 {
-  Fatal("operator =", "assignment operator not implemented");
+  if(&stream == this) return *this;
+
+  ((AliAltroRawStream *)this)->operator=(stream);
+
+  fSector = stream.fSector;
+  fPrevSector = stream.fPrevSector;
+  fRow = stream.fRow;
+  fPrevRow = stream.fPrevRow;
+  fPad = stream.fPad;
+  fPrevPad = stream.fPrevPad;
+  fIsMapOwner = kFALSE;
+
+  for(Int_t i = 0; i < 6; i++) fMapping[i] = stream.fMapping[i];
+
   return *this;
 }
 
@@ -88,7 +108,8 @@ AliTPCRawStream::~AliTPCRawStream()
 {
 // destructor
 
-  for(Int_t i = 0; i < 6; i++) delete fMapping[i];
+  if (fIsMapOwner)
+    for(Int_t i = 0; i < 6; i++) delete fMapping[i];
 }
 
 //_____________________________________________________________________________
@@ -138,4 +159,6 @@ void AliTPCRawStream::ApplyAltroMapping()
   fRow = fMapping[patchIndex]->GetPadRow(hwAddress);
   fPad = fMapping[patchIndex]->GetPad(hwAddress);
 
+  if ((fRow < 0) || (fPad < 0))
+    AddMappingErrorLog(Form("hw=%d",hwAddress)); 
 }