/**
 * \class BeamMonSwicRel
 *
 * \ingroup BeamDataUtil
 *
 * \brief A DbiTableRow for accessing the BEAMMONSWICREL table which
 * holds per-channel relative calibrations.
 *
 * \author (last to touch it) $Author: minoscvs $
 *
 * \version $Revision: 1.2 $
 *
 * \date $Date: 2005/04/29 20:17:56 $
 *
 * Contact: bv@bnl.gov
 *
 * Created on: Wed Apr 13 18:18:44 2005
 *
 * $Id: BeamMonSwicRel.h,v 1.2 2005/04/29 20:17:56 minoscvs Exp $
 *
 */

#ifndef BEAMMONSWICREL_H
#define BEAMMONSWICREL_H

#include <DatabaseInterface/DbiTableRow.h>
#include <Validity/VldTimeStamp.h>

#include <vector>
#include <string>

class DbiValidityRec;
class DbiResultSet;
class DbiOutRowStream;

class TFile;

class BeamMonSwicRel : public DbiTableRow
{
public:
    BeamMonSwicRel(const char* devicename="");

    /// DbiTableRow API
    virtual DbiTableRow* CreateTableRow() const;
    /// DbiTableRow API
    void Fill(DbiResultSet& rs, const DbiValidityRec* vrec);
    /// DbiTableRow API
    virtual void Store(DbiOutRowStream& ors, const DbiValidityRec* vrec) const;

    /// Routines to load data.  Typically used for BeamMonSwicPedsDbuModule
    void SetDeviceName(const char* devicename) { fDeviceName=devicename; }
    void SetChannels(const std::vector<double>& channels);
    void SetChannels(const std::vector<float>& channels)
    { fChannel = channels; }

    /// Clear all data except device name
    void ClearData(); 

    const char* GetDeviceName() const { return fDeviceName.c_str(); }
    std::vector<float>& GetChannels() { return fChannel; }
    const std::vector<float>& GetChannels () const { return fChannel; }
    std::vector<double> GetChannelsAsDoubles() const;

    

private:

    std::string fDeviceName;
    std::vector<float> fChannel;
    
    ClassDef(BeamMonSwicRel,0)
};

#endif  // BEAMMONSWICREL_H
