#ifndef _fevt_PixelTriggerData_h_
#define _fevt_PixelTriggerData_h_

#include <fevt/Eye.h>
#include <utl/Trace.h>
#include <utl/ShadowPtr.h>


namespace fevt {

  /*!
    \class PixelTriggerData
    \brief Fluorescence Detector Pixel Trigger Data
   
    \author Ralf Ulric
    \date Sun Apr 30 01:40:19 ART 2006
    \version $Id: PixelTriggerData.h 14717 2009-09-17 20:24:36Z lukas $   
    \ingroup fevt
  */

  class PixelTriggerData {
    
  public:
    
    /// FLT threshold
    int GetThreshold() const { return fThreshold;}
    /// previous FLT threshold
    int GetPreviousThreshold() const { return fPreviousThreshold; }
    /// threshold changed during this trace
    bool HasThresholdChanged() const { return fThresholdChanged; }
    /// trace mean
    double GetMean() const { return fMean; }
    /// trace variance
    double GetVariance() const { return fVariance; }
    // FLT rate
    double GetRate() const {return fRate;}
    
    void SetThreshold(int t) {fThreshold=t;}
    void SetPreviousThreshold(int t) {fPreviousThreshold=t; }
    void SetThresholdChanged(bool changed=true) {fThresholdChanged=changed; }
    void SetMean(double m) {fMean=m; }
    void SetVariance(double v) {fVariance=v; }
    void SetRate(double r) {fRate=r;}

    // FLT trace
    utl::TraceB& GetFLTTrace();
    const utl::TraceB& GetFLTTrace() const;
    
    void MakeFLTTrace(const utl::TraceB& flt);
    
    bool HasFLTTrace() const {return fFLTTrace;}


  private:
    PixelTriggerData();
    ~PixelTriggerData() { }
    
    int fThreshold;
    int fPreviousThreshold;
    bool fThresholdChanged;
    double fMean;
    double fVariance;
    double fRate;
    
    utl::ShadowPtr<utl::TraceB> fFLTTrace;
    
    friend class Pixel;
    friend class utl::ShadowPtr<PixelTriggerData>;

  };

}


#endif
 
// Configure (x)emacs for this file ...
// Local Variables:
// mode: c++
// compile-command: "make -C .. FEvent/PixelTriggerData.o -k"
// End: