// $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"
#include "AliMpMotifSpecial.h"
#include "AliMpMotifType.h"
#include "AliMpConnection.h"
-#include "AliMpIntPair.h"
#include "AliMpDirection.h"
#include "AliMpConstants.h"
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
}
//_____________________________________________________________________________
//
//_____________________________________________________________________________
-void AliMpSectorReader::ReadSectorData(ifstream& in)
+void AliMpSectorReader::ReadSectorData(istream& in)
{
/// Read sector input data;
/// prepare zones and rows vectors to be filled 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;
}
//_____________________________________________________________________________
-void AliMpSectorReader::ReadZoneData(ifstream& in)
+void AliMpSectorReader::ReadZoneData(istream& in)
{
/// Read zone input data;
/// create zone and adds it to zones vector.
}
//_____________________________________________________________________________
-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.
}
//_____________________________________________________________________________
-AliMpVMotif* AliMpSectorReader::ReadMotifData(ifstream& in, AliMpZone* zone)
+AliMpVMotif* AliMpSectorReader::ReadMotifData(istream& in, AliMpZone* zone)
{
/// Read the motif input data.
}
//_____________________________________________________________________________
-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;
// 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);
}
//_____________________________________________________________________________
-void AliMpSectorReader::ReadSectorSpecialData(ifstream& in, AliMpXDirection direction)
+void AliMpSectorReader::ReadSectorSpecialData(istream& in, AliMp::XDirection direction)
{
/// Read sector input data
/// with a special (irregular) motifs.
}
//_____________________________________________________________________________
-void AliMpSectorReader::ReadMotifsSpecialData(ifstream& in)
+void AliMpSectorReader::ReadMotifsSpecialData(istream& in)
{
/// Read the special (irregular) motifs input data.
}
//_____________________________________________________________________________
-void AliMpSectorReader::ReadRowSpecialData(ifstream& in, AliMpXDirection direction)
+void AliMpSectorReader::ReadRowSpecialData(istream& in, AliMp::XDirection direction)
{
/// Read row input data
/// with a special (irregular) motifs.
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();
}
//_____________________________________________________________________________
-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.
// Process data
//
- AliMpVRowSegmentSpecial::PadRowVector newPadRows;
+ TObjArray newPadRows;
for (Int_t i=0; i<nofPadRows; i++) {
// Create pad row
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;
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);
//_____________________________________________________________________________
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 ∈
+
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();