]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpSectorReader.cxx
Replacement of AliMpIntPair object with algoritmic
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSectorReader.cxx
index 20699be08bba36edfb96027072516c2514057492..72c3f1be44c02d4048db78b7ea9bb8d736c062f0 100755 (executable)
 // $Id$
 // $MpId: AliMpSectorReader.cxx,v 1.9 2006/05/24 13:58:46 ivana Exp $
 // Category: sector
-//
+
+//-----------------------------------------------------------------------------
 // Class AliMpSectorReader
 // -----------------------
 // Class that takes care of reading the sector data.
 // Included in AliRoot: 2003/05/02
 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
+//-----------------------------------------------------------------------------
 
 #include "AliMpSectorReader.h"
 #include "AliMpSector.h"
 #include "AliMpFiles.h"
+#include "AliMpDataStreams.h"
 #include "AliMpZone.h"
 #include "AliMpSubZone.h"
 #include "AliMpRow.h"
@@ -40,7 +43,6 @@
 #include "AliMpMotifSpecial.h"
 #include "AliMpMotifType.h"
 #include "AliMpConnection.h"
-#include "AliMpIntPair.h"
 #include "AliMpDirection.h"
 #include "AliMpConstants.h"
 
@@ -71,26 +73,18 @@ const TString  AliMpSectorReader::fgkPadRowsKeyword        = "PAD_ROWS";
 const TString  AliMpSectorReader::fgkPadRowSegmentKeyword  = "PAD_ROW_SEGMENT";
 
 //_____________________________________________________________________________
-AliMpSectorReader::AliMpSectorReader(AliMpStationType station, 
-                                     AliMpPlaneType plane) 
+AliMpSectorReader::AliMpSectorReader(const AliMpDataStreams& dataStreams,
+                                     AliMq::Station12Type station, 
+                                     AliMp::PlaneType plane) 
   : TObject(),
+    fkDataStreams(dataStreams),
     fStationType(station),
     fPlaneType(plane),
     fSector(0),
-    fMotifReader(new AliMpMotifReader(station, plane))
+    fMotifReader(new AliMpMotifReader(dataStreams, AliMp::kStation12, station, plane))
 {
-// Standard constructor
-}
-
-//_____________________________________________________________________________
-AliMpSectorReader::AliMpSectorReader() 
-  : TObject(),
-    fStationType(kStation1),
-    fPlaneType(kBendingPlane),
-    fSector(0),
-    fMotifReader(0)
-{
-// Default constructor
+/// Standard constructor
 }
 
 //_____________________________________________________________________________
@@ -106,7 +100,7 @@ AliMpSectorReader::~AliMpSectorReader()
 //
 
 //_____________________________________________________________________________
-void  AliMpSectorReader::ReadSectorData(ifstream& in)
+void  AliMpSectorReader::ReadSectorData(istream& in)
 {
 /// Read sector input data;
 /// prepare zones and rows vectors to be filled in.
@@ -130,8 +124,8 @@ void  AliMpSectorReader::ReadSectorData(ifstream& in)
   in >> offsetX;
   in >> offsetY;
   
-  AliMpDirection direction;
-  direction = (directionStr == "Y") ? kY  :  kX;
+  AliMp::Direction direction;
+  direction = (directionStr == "Y") ? AliMp::kY  :  AliMp::kX;
 
   AliDebugStream(2) << nofZones << " " <<  nofRows << endl;
 
@@ -150,7 +144,7 @@ void  AliMpSectorReader::ReadSectorData(ifstream& in)
 }  
 
 //_____________________________________________________________________________
-void AliMpSectorReader::ReadZoneData(ifstream& in)
+void AliMpSectorReader::ReadZoneData(istream& in)
 {
 /// Read zone input data;
 /// create zone and adds it to zones vector.
@@ -179,7 +173,7 @@ void AliMpSectorReader::ReadZoneData(ifstream& in)
 }
 
 //_____________________________________________________________________________
-void AliMpSectorReader::ReadSubZoneData(ifstream& in, AliMpZone* zone)
+void AliMpSectorReader::ReadSubZoneData(istream& in, AliMpZone* zone)
 {
 /// Read subzone input data;
 /// create subzone and its to the specified zone.
@@ -202,7 +196,7 @@ void AliMpSectorReader::ReadSubZoneData(ifstream& in, AliMpZone* zone)
 }   
 
 //_____________________________________________________________________________
-AliMpVMotif*  AliMpSectorReader::ReadMotifData(ifstream& in, AliMpZone* zone)
+AliMpVMotif*  AliMpSectorReader::ReadMotifData(istream& in, AliMpZone* zone)
 {
 /// Read the motif input data.
 
@@ -239,7 +233,7 @@ AliMpVMotif*  AliMpSectorReader::ReadMotifData(ifstream& in, AliMpZone* zone)
 }  
 
 //_____________________________________________________________________________
-void AliMpSectorReader::ReadRowSegmentsData(ifstream& in, 
+void AliMpSectorReader::ReadRowSegmentsData(istream& in, 
                                       AliMpZone* zone, AliMpSubZone* subZone)
 {
 /// Read row segments input data of a specified zone and subzone;
@@ -277,7 +271,7 @@ void AliMpSectorReader::ReadRowSegmentsData(ifstream& in,
     
     // Create row segment and add it to its zone, row   
     AliMpVRowSegment* rowSegment
-      = new AliMpRowSegment(row, motif, AliMpIntPair(offX, offY), nofMotifs, 
+      = new AliMpRowSegment(row, motif, offX, offY, nofMotifs, 
                         firstMotifPositionId, firstMotifPositionDId);
                        
     subZone->AddRowSegment(rowSegment);
@@ -299,7 +293,7 @@ void AliMpSectorReader::ReadRowSegmentsData(ifstream& in,
 }   
 
 //_____________________________________________________________________________
-void AliMpSectorReader::ReadSectorSpecialData(ifstream& in, AliMpXDirection direction)
+void AliMpSectorReader::ReadSectorSpecialData(istream& in, AliMp::XDirection direction)
 {
 /// Read sector input data
 /// with a special (irregular) motifs.
@@ -329,7 +323,7 @@ void AliMpSectorReader::ReadSectorSpecialData(ifstream& in, AliMpXDirection dire
 }  
 
 //_____________________________________________________________________________
-void AliMpSectorReader::ReadMotifsSpecialData(ifstream& in)
+void AliMpSectorReader::ReadMotifsSpecialData(istream& in)
 {
 /// Read the special (irregular) motifs input data.
 
@@ -356,7 +350,7 @@ void AliMpSectorReader::ReadMotifsSpecialData(ifstream& in)
 }  
 
 //_____________________________________________________________________________
-void AliMpSectorReader::ReadRowSpecialData(ifstream& in, AliMpXDirection direction)
+void AliMpSectorReader::ReadRowSpecialData(istream& in, AliMp::XDirection direction)
 {
 /// Read row input data
 /// with a special (irregular) motifs.
@@ -370,7 +364,7 @@ void AliMpSectorReader::ReadRowSpecialData(ifstream& in, AliMpXDirection directi
   AliMpRow* row = fSector->GetRow(id);
 
   AliMpVRowSegmentSpecial* segment = 0;
-  if (direction == kLeft) {
+  if (direction == AliMp::kLeft) {
     AliMpVRowSegment* firstNormalSeg = row->GetRowSegment(0);
     Double_t offsetX = firstNormalSeg->LeftBorderX();
   
@@ -417,9 +411,9 @@ void AliMpSectorReader::ReadRowSpecialData(ifstream& in, AliMpXDirection directi
 }  
 
 //_____________________________________________________________________________
-void AliMpSectorReader::ReadRowSegmentSpecialData(ifstream& in, 
+void AliMpSectorReader::ReadRowSegmentSpecialData(istream& in, 
                                             AliMpVRowSegmentSpecial* segment,
-                                           AliMpXDirection direction)
+                                           AliMp::XDirection direction)
 {
 /// Read row segment input data
 /// with a special (irregular) motifs.
@@ -443,7 +437,7 @@ void AliMpSectorReader::ReadRowSegmentSpecialData(ifstream& in,
   // Process data
   //
     
-  AliMpVRowSegmentSpecial::PadRowVector  newPadRows;
+  TObjArray newPadRows;
   for (Int_t i=0; i<nofPadRows; i++) {
     
      // Create pad row
@@ -451,12 +445,7 @@ void AliMpSectorReader::ReadRowSegmentSpecialData(ifstream& in,
      segment->AddPadRow(padRow);
      
      // Keep the new rows in a temporary vector
-#ifdef WITH_STL
-     newPadRows.push_back(padRow);
-#endif
-#ifdef WITH_ROOT
      newPadRows.Add(padRow);
-#endif
   }   
       
   TString nextKeyword;
@@ -486,12 +475,7 @@ void AliMpSectorReader::ReadRowSegmentSpecialData(ifstream& in,
     for (Int_t i=0; i<nofPadRows; i++) {
     
       // Get pad row from the temporary vector
-#ifdef WITH_STL
-      AliMpPadRow* padRow = newPadRows[i];
-#endif
-#ifdef WITH_ROOT
       AliMpPadRow* padRow = (AliMpPadRow*)newPadRows[i];
-#endif
       
       // Find motif
       AliMpVMotif* motif = fSector->GetMotifMap()->FindMotif(motifId);
@@ -528,50 +512,47 @@ void AliMpSectorReader::ReadRowSegmentSpecialData(ifstream& in,
 //_____________________________________________________________________________
 AliMpSector* AliMpSectorReader::BuildSector()
 {
-/// Read the mapping data from ascii data file
-/// and create the basic objects:                                            \n
+/// Read the mapping data from stream and create the basic objects:         \n
 /// zones, subzones, rows, row segments, motifs.
 
-  // Open input file
-  ifstream in(AliMpFiles::SectorFilePath(fStationType, fPlaneType).Data(), ios::in);
-  if (!in) {
-     AliErrorStream()
-       << "File " << AliMpFiles::SectorFilePath(fStationType, fPlaneType) 
-       << " not found." << endl;
-     return 0;
-  }
-  
+  // Open input stream
+  //
+  istream& in 
+    = fkDataStreams.
+        CreateDataStream(AliMpFiles::SectorFilePath(fStationType,fPlaneType));
+
   ReadSectorData(in);
+  delete &in;
+  
   fSector->SetRowSegmentOffsets();
 
-  // Open input file for special inner zone
+  // Open input stream for special inner zone
+  
+  // add is data function
+  
   TString sectorSpecialFileName 
     = AliMpFiles::SectorSpecialFilePath(fStationType, fPlaneType);
-  if (!gSystem->AccessPathName(sectorSpecialFileName.Data())) {
-    ifstream in2(sectorSpecialFileName.Data(), ios::in);
-    if (!in2) {        
-       AliErrorStream()
-         << "File " << AliMpFiles::SectorSpecialFilePath(fStationType, fPlaneType) 
-        << " not found." << endl;
-       return 0;
-    }
+  if ( fkDataStreams.IsDataStream(sectorSpecialFileName) ) {
+    istream& in2 
+      = fkDataStreams.
+          CreateDataStream(sectorSpecialFileName);
+  
+    ReadSectorSpecialData(in2, AliMp::kLeft);
     
-    ReadSectorSpecialData(in2, kLeft);
-  }   
+    delete &in2;
+  }  
 
   // Open input file for special outer zone
   TString sectorSpecialFileName2 
     = AliMpFiles::SectorSpecialFilePath2(fStationType, fPlaneType);
-  if (!gSystem->AccessPathName(sectorSpecialFileName2.Data())) {
-    ifstream in3(sectorSpecialFileName2.Data(), ios::in);
-    if (!in3) {        
-       AliErrorStream()
-         << "File " << AliMpFiles::SectorSpecialFilePath2(fStationType, fPlaneType) 
-        << " not found."<< endl;       
-       return 0;
-    }
+  if ( fkDataStreams.IsDataStream(sectorSpecialFileName2) ) {
+    istream& in3
+      = fkDataStreams.
+          CreateDataStream(sectorSpecialFileName2);
+    
+    ReadSectorSpecialData(in3, AliMp::kRight);
     
-    ReadSectorSpecialData(in3, kRight);
+    delete &in3;
   }   
 
   fSector->Initialize();