//
// \class RAT::Classifiers::SkyShine
//
// \brief Classifier to identify noise from the top of the neck
//
// \author Jeff Tseng <jeff.tseng@physics.ox.ac.uk>
//
// REVISION HISTORY:\n
//   7/8/18: J Tseng - new file\n
//
// \defails A simple check of counting hits in z windows.
// If noise originates from the top of the neck, there should be
// a lot of hits near the bottom of the detector, and few
// higher up.  (Based on a suggestion from M Chen)
//

#ifndef __RAT_Classifiers_SkyShine
#define __RAT_Classifiers_SkyShine

#include <string>

#include <RAT/DS/ClassifierResult.hh>
#include <RAT/Classifier.hh>

namespace RAT {

  namespace DS {
    class Run;
    class EV;
  }

  namespace Classifiers {

    class SkyShine : public Classifier {

    public:
      SkyShine() : fSignalHighZ(-1000.0), fSideLowZ(-1000.0), fSideHighZ(8000.0),
                   fOWLLowZ(8000.0) {}
      virtual std::string GetName() const { return SkyShine::Name(); }
      static std::string Name() { return std::string("skyshine"); }
      void Initialise(const std::string&) {}
      void BeginOfRun(DS::Run& run);
      void EndOfRun(DS::Run&) {}

      virtual DS::ClassifierResult GetClassification();

    protected:
      double fSignalHighZ; // max z for signal region
      double fSideLowZ; // min z for background region
      double fSideHighZ; // max z for background region

      double fOWLLowZ; // min z for owl tube count
    };

  } // Classifiers
} // RAT

#endif