/**
 * \class BeamMonSwicMask
 *
 * \ingroup BeamDataUtil
 *
 * \brief A DbiTableRow for SWIC scanner channel masks
 *
 * 
 *
 * \author (last to touch it) $Author: minoscvs $
 *
 * \version $Revision: 1.4 $
 *
 * \date $Date: 2005/04/29 20:17:56 $
 *
 * Contact: bv@bnl.gov
 *
 * Created on: Mon Apr 25 14:18:13 2005
 *
 * $Id: BeamMonSwicMask.h,v 1.4 2005/04/29 20:17:56 minoscvs Exp $
 *
 */

#ifndef BEAMMONSWICMASK_H
#define BEAMMONSWICMASK_H


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

#include <string>

class BeamMonSwicMask : public DbiTableRow 
{
public:
    BeamMonSwicMask(const char* device="", int index=0, float mask=1);

    /// 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;
    
    const char* GetDeviceName() const { return fName.c_str(); }
    int GetOffset() const { return fIndex; }
    float GetMask() const { return fMask; }
    void GetRange(VldTimeStamp& start, VldTimeStamp& stop)
    { start = fStartTime; stop = fStopTime; }

    void SetDeviceName(const char* n) { fName = n; }
    void SetIndex(int i) { fIndex = i; }
    void SetMask(float m) { fMask = m; }
    void SetRange(VldTimeStamp start=VldTimeStamp::GetBOT(),
		  VldTimeStamp stop =VldTimeStamp::GetEOT())
    { fStartTime = start; fStopTime = stop; }
private:
    VldTimeStamp fStartTime, fStopTime;
    std::string fName;
    int fIndex;
    float fMask;

    ClassDef(BeamMonSwicMask,0)
};

#endif  // BEAMMONSWICMASK_H
