ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$
// $MpId: AliMpDataStreams.h,v 1.10 2006/05/24 13:58:07 ivana Exp $

/// \ingroup basic
/// \class AliMpDataStreams
/// \brief Mapping data streams provider
///
/// The class provides input streams for mapping data;
/// the input streams can be represented either by the
/// data files or by string streams filled from string map (AliMpDataMap).
/// The string map is set from outside (AliMpCDB) and is not
/// deleted in this class.
/// The data streams returned by CreateDataStream() function
/// must be deleted by the client code.
///
/// The selection between files and string streams is 
/// done in the constructor:
/// if data map is provided, reading is performed from streams,
/// otherwise reading is performed from file.
/// User can also use the set function to select reading
/// from files also when the data map is provided: \n
/// void SetReadFromFiles();
///
/// \author Ivana Hrivnacova; IPN Orsay

#ifndef ALI_MP_DATA_STREAMS_H
#define ALI_MP_DATA_STREAMS_H

#include "AliMpDataMap.h"

#include <TObject.h>
#include <TString.h>

#include <fstream>
#include <sstream>

//class TMap;
class AliMpDataMap;

class AliMpDataStreams : public TObject
{
  public:
    AliMpDataStreams(AliMpDataMap* map = 0x0);
    AliMpDataStreams(TRootIOCtor* ioCtor);
    virtual ~AliMpDataStreams();
  
    // methods
    istream& CreateDataStream(const TString& path) const; 
    Bool_t   IsDataStream(const TString& path) const; 
  
    // set methods
    void   SetReadFromFiles();
    Bool_t GetReadFromFiles() const;

  private: 
    /// Not implemented
    AliMpDataStreams(const AliMpDataStreams& right);
    /// Not implemented
    AliMpDataStreams& operator=(const AliMpDataStreams& right);    

    // methods
    void CutDataPath(string& dataPath) const;

    // data members
    AliMpDataMap*  fMap;           ///< data map
    Bool_t         fReadFromFiles; ///< option for reading data from files
    
  ClassDef(AliMpDataStreams, 1) //File names and paths 
};  

#endif //ALI_MP_DATA_STREAMS_H
 AliMpDataStreams.h:1
 AliMpDataStreams.h:2
 AliMpDataStreams.h:3
 AliMpDataStreams.h:4
 AliMpDataStreams.h:5
 AliMpDataStreams.h:6
 AliMpDataStreams.h:7
 AliMpDataStreams.h:8
 AliMpDataStreams.h:9
 AliMpDataStreams.h:10
 AliMpDataStreams.h:11
 AliMpDataStreams.h:12
 AliMpDataStreams.h:13
 AliMpDataStreams.h:14
 AliMpDataStreams.h:15
 AliMpDataStreams.h:16
 AliMpDataStreams.h:17
 AliMpDataStreams.h:18
 AliMpDataStreams.h:19
 AliMpDataStreams.h:20
 AliMpDataStreams.h:21
 AliMpDataStreams.h:22
 AliMpDataStreams.h:23
 AliMpDataStreams.h:24
 AliMpDataStreams.h:25
 AliMpDataStreams.h:26
 AliMpDataStreams.h:27
 AliMpDataStreams.h:28
 AliMpDataStreams.h:29
 AliMpDataStreams.h:30
 AliMpDataStreams.h:31
 AliMpDataStreams.h:32
 AliMpDataStreams.h:33
 AliMpDataStreams.h:34
 AliMpDataStreams.h:35
 AliMpDataStreams.h:36
 AliMpDataStreams.h:37
 AliMpDataStreams.h:38
 AliMpDataStreams.h:39
 AliMpDataStreams.h:40
 AliMpDataStreams.h:41
 AliMpDataStreams.h:42
 AliMpDataStreams.h:43
 AliMpDataStreams.h:44
 AliMpDataStreams.h:45
 AliMpDataStreams.h:46
 AliMpDataStreams.h:47
 AliMpDataStreams.h:48
 AliMpDataStreams.h:49
 AliMpDataStreams.h:50
 AliMpDataStreams.h:51
 AliMpDataStreams.h:52
 AliMpDataStreams.h:53
 AliMpDataStreams.h:54
 AliMpDataStreams.h:55
 AliMpDataStreams.h:56
 AliMpDataStreams.h:57
 AliMpDataStreams.h:58
 AliMpDataStreams.h:59
 AliMpDataStreams.h:60
 AliMpDataStreams.h:61
 AliMpDataStreams.h:62
 AliMpDataStreams.h:63
 AliMpDataStreams.h:64
 AliMpDataStreams.h:65
 AliMpDataStreams.h:66
 AliMpDataStreams.h:67
 AliMpDataStreams.h:68
 AliMpDataStreams.h:69
 AliMpDataStreams.h:70
 AliMpDataStreams.h:71
 AliMpDataStreams.h:72
 AliMpDataStreams.h:73
 AliMpDataStreams.h:74