/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
   SPDX-License-Identifier: GPL-3.0-only
   Authors: Shreya Roy [committer], Pierre-Alain Loizeau, Norbert Herrmann, Volker Friese, Dominik Smith */

#ifndef CBM_ALGO_DIGIEVENTSELECTOR_H
#define CBM_ALGO_DIGIEVENTSELECTOR_H 1

#include "CbmDigiEvent.h"

#include <cstdint>

namespace cbm::algo
{

  struct DigiEventSelectorParams {
    uint8_t fStsMinStations = 0;
    uint8_t fTofMinLayers   = 0;
  };

  /** @class DigiEventSelector
  ** @author Dominik Smith <d.smith@gsi.de>
 ** @author Shreya Roy <s.roy@gsi.de>
** @author Volker Friese <v.friese@gsi.de>
 
** @since 2022
 ** @brief
 **
 **/
  class DigiEventSelector {

  public:
    DigiEventSelector(DigiEventSelectorParams params) { fParams = params; }
    bool operator()(const CbmDigiEvent& event) const;

    void SetParams(DigiEventSelectorParams params) { fParams = params; }

  private:
    DigiEventSelectorParams fParams;

    bool CheckSts(const std::vector<CbmStsDigi>& digis) const;
    bool CheckTof(const std::vector<CbmTofDigi>& digis) const;
  };
}  // namespace cbm::algo

#endif /* CBM_ALGO_DIGIEVENTSELECTOR_H */