// $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(AliMp::StationType station,
+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(AliMp::kStation1),
- fPlaneType(AliMp::kBendingPlane),
- fSector(0),
- fMotifReader(0)
-{
-/// Default constructor
-}
-
//_____________________________________________________________________________
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.
AliDebugStream(2) << nofZones << " " << nofRows << endl;
fSector = new AliMpSector("Not defined", nofZones, nofRows,direction,
- TVector2(offsetX, offsetY));
+ offsetX, offsetY);
TString nextKeyword;
in >> nextKeyword;
}
//_____________________________________________________________________________
-void AliMpSectorReader::ReadZoneData(ifstream& in)
+void AliMpSectorReader::ReadZoneData(istream& in)
{
/// Read zone input data;
/// create zone and adds it to zones vector.
<< sizex << " " << sizey << endl;
AliMpZone* zone = fSector->GetZone(zoneID);
- zone->SetPadDimensions(TVector2(sizex/2.,sizey/2.));
+ zone->SetPadDimensions(sizex/2.,sizey/2.);
TString nextKeyword;
in >> nextKeyword;
}
//_____________________________________________________________________________
-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.
AliMpMotifType* motifType = 0;
AliMpVMotif* motif
- = motifMap->FindMotif(motifID, motifTypeID, zone->GetPadDimensions());
+ = motifMap->FindMotif(motifID, motifTypeID,
+ zone->GetPadDimensionX(), zone->GetPadDimensionY());
if (!motif) {
motifType = motifMap->FindMotifType(motifTypeID);
if (!motifType) {
motifMap->AddMotifType(motifType);
}
- if (zone->GetPadDimensions().X() != 0. && zone->GetPadDimensions().Y() != 0.)
- motif = new AliMpMotif(motifID, motifType, zone->GetPadDimensions());
+ if (zone->GetPadDimensionX() != 0. && zone->GetPadDimensionY() != 0.)
+ motif = new AliMpMotif(motifID, motifType,
+ zone->GetPadDimensionX(), zone->GetPadDimensionY());
else
motif = fMotifReader->BuildMotifSpecial(motifID, motifType);
}
//_____________________________________________________________________________
-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, AliMp::XDirection 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, AliMp::XDirection direction)
+void AliMpSectorReader::ReadRowSpecialData(istream& in, AliMp::XDirection direction)
{
/// Read row input data
/// with a special (irregular) motifs.
}
//_____________________________________________________________________________
-void AliMpSectorReader::ReadRowSegmentSpecialData(ifstream& in,
+void AliMpSectorReader::ReadRowSegmentSpecialData(istream& in,
AliMpVRowSegmentSpecial* segment,
AliMp::XDirection direction)
{
// 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);
- }
+
+ 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);
+
+ delete &in3;
}
fSector->Initialize();