// $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))
-{
-// Standard constructor
-}
-
-//_____________________________________________________________________________
-AliMpSectorReader::AliMpSectorReader()
- : TObject(),
- fStationType(kStation1),
- fPlaneType(kBendingPlane),
- fSector(0),
- fMotifReader(0)
-{
-// Default constructor
-}
-
-//_____________________________________________________________________________
-AliMpSectorReader::AliMpSectorReader(const AliMpSectorReader& right)
- : TObject(right)
+ fMotifReader(new AliMpMotifReader(dataStreams, AliMp::kStation12, station, plane))
+
{
-/// Protected copy constructor (not provided)
-
- Fatal("AliMpSectorReader", "Copy constructor not provided.");
+/// Standard constructor
}
//_____________________________________________________________________________
delete fMotifReader;
}
-//
-// operators
-//
-
-//_____________________________________________________________________________
-AliMpSectorReader& AliMpSectorReader::operator=(const AliMpSectorReader& right)
-{
-/// Protected assignment operator (not provided)
-
- // check assignment to self
- if (this == &right) return *this;
-
- Fatal("operator =", "Assignment operator not provided.");
-
- return *this;
-}
-
//
// private methods
//
//_____________________________________________________________________________
-void AliMpSectorReader::ReadSectorData(ifstream& in)
+void AliMpSectorReader::ReadSectorData(istream& in)
{
/// Read sector input data;
/// prepare zones and rows vectors to be filled in.
TString keyword;
in >> keyword;
- AliDebugStream(1) << keyword << endl;
+ AliDebugStream(2) << keyword << endl;
if (keyword != fgkSectorKeyword) {
Fatal("ReadSectorData", "Wrong file format.");
in >> offsetX;
in >> offsetY;
- AliMpDirection direction;
- direction = (directionStr == "Y") ? kY : kX;
+ AliMp::Direction direction;
+ direction = (directionStr == "Y") ? AliMp::kY : AliMp::kX;
- AliDebugStream(1) << nofZones << " " << nofRows << endl;
+ 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.
in >> zoneID;
in >> sizex;
in >> sizey;
- AliDebugStream(1)
+ AliDebugStream(2)
<< fgkZoneKeyword << " " << zoneID << " "
<< 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.
- AliDebugStream(1) << fgkSubZoneKeyword << endl;
+ AliDebugStream(2) << fgkSubZoneKeyword << endl;
AliMpVMotif* motif = ReadMotifData(in, zone);
AliMpSubZone* subZone = new AliMpSubZone(motif);
}
//_____________________________________________________________________________
-AliMpVMotif* AliMpSectorReader::ReadMotifData(ifstream& in, AliMpZone* zone)
+AliMpVMotif* AliMpSectorReader::ReadMotifData(istream& in, AliMpZone* zone)
{
/// Read the motif input data.
in >> motifID;
in >> motifTypeID;
- AliDebugStream(1) << motifID << " " << motifTypeID << endl;
+ AliDebugStream(2) << motifID << " " << motifTypeID << endl;
AliMpMotifMap* motifMap = fSector->GetMotifMap();
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;
firstMotifPositionId |= AliMpConstants::ManuMask(fPlaneType);
- AliDebugStream(1)
+ AliDebugStream(2)
<< fgkRowKeyword << " "
<< offX << " " << offY << " " << inRow << " " << nofMotifs << " "
<< firstMotifPositionId << " " << firstMotifPositionDId
// 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.
TString keyword;
in >> keyword;
- AliDebugStream(1) << keyword << endl;
+ AliDebugStream(2) << keyword << endl;
if (keyword != fgkSectorSpecialKeyword) {
Fatal("ReadSectorSpecialData", "Wrong file format.");
TString nextKeyword;
in >> nextKeyword;
- AliDebugStream(1) << keyword << endl;
+ AliDebugStream(2) << keyword << endl;
if (nextKeyword != fgkMotifKeyword) {
Fatal("ReadSectorSpecialData", "Wrong file format.");
}
//_____________________________________________________________________________
-void AliMpSectorReader::ReadMotifsSpecialData(ifstream& in)
+void AliMpSectorReader::ReadMotifsSpecialData(istream& in)
{
/// Read the special (irregular) motifs input data.
- AliDebugStream(1) << fgkMotifKeyword << endl;
+ AliDebugStream(2) << fgkMotifKeyword << endl;
TString nextKeyword;
do {
in >> nextKeyword;
- AliDebugStream(1) << nextKeyword << endl;
+ AliDebugStream(2) << nextKeyword << endl;
}
while (nextKeyword == fgkMotifKeyword);
}
//_____________________________________________________________________________
-void AliMpSectorReader::ReadRowSpecialData(ifstream& in, AliMpXDirection direction)
+void AliMpSectorReader::ReadRowSpecialData(istream& in, AliMp::XDirection direction)
{
/// Read row input data
/// with a special (irregular) motifs.
Int_t id;
in >> id;
- AliDebugStream(1) << id << endl;
+ AliDebugStream(2) << id << endl;
// Get the row and its border
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();
TString nextKeyword;
in >> nextKeyword;
- AliDebugStream(1) << nextKeyword << endl;
+ AliDebugStream(2) << nextKeyword << endl;
if (nextKeyword != fgkPadRowsKeyword) {
Fatal("ReadRowSpecialData", "Wrong file format.");
}
//_____________________________________________________________________________
-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.
Int_t nofPadRows;
in >> nofPadRows;
- AliDebugStream(1) << nofPadRows << endl;
+ AliDebugStream(2) << nofPadRows << endl;
TString keyword;
in >> keyword;
- AliDebugStream(1) << keyword << endl;
+ AliDebugStream(2) << keyword << endl;
if (keyword != fgkPadRowSegmentKeyword) {
Fatal("ReadRowSegmentSpecialData", "Wrong file format.");
// 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;
motifPositionId |= AliMpConstants::ManuMask(fPlaneType);
- AliDebugStream(1)
+ AliDebugStream(2)
<< nofPadsInRow << " " << motifId << " " << motifPositionId << endl;
in >> nextKeyword;
- AliDebugStream(1) << nextKeyword << endl;
+ AliDebugStream(2) << nextKeyword << endl;
//
// Process data
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();