/* Copyright (C) 2019 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
   SPDX-License-Identifier: GPL-3.0-only
   Authors: Florian Uhlig [committer] */

/**
 * CbmDeviceStsLocalReco.h
 *
 * @since 2019-08-28
 * @author F. Uhlig
 */

#ifndef CBMDEVICEMSTSLOCALRECO_H_
#define CBMDEVICEMSTSLOCALRECO_H_

#include "CbmMqTMessage.h"

#include "FairMQDevice.h"

//#include "CbmStsDigitizeParameters.h"

//#include "FairGeoParSet.h"

//#include "Rtypes.h"
//#include "TObjArray.h"

#include <string>
#include <vector>

//class TList;
class CbmStsDigitizeParameters;
class CbmFieldPar;

class FairGeoParSet;
class FairField;

class CbmDeviceStsLocalReco : public FairMQDevice {
public:
  CbmDeviceStsLocalReco();
  virtual ~CbmDeviceStsLocalReco();

protected:
  virtual void InitTask();
  bool HandleData(FairMQMessagePtr&, int);

private:
  uint64_t fMaxTimeslices;
  uint64_t fNumMessages;
  std::string fRunId;
  std::string fvmcworkdir;

  CbmStsDigitizeParameters* fDigiPar;

  FairGeoParSet* fGeoPar;

  CbmFieldPar* fFieldPar;

  std::vector<std::string> fAllowedChannels             = {"stsdigi", "parameters"};
  std::vector<std::vector<std::string>> fChannelsToSend = {{}, {}};

  bool IsChannelNameAllowed(std::string channelName);

  bool InitContainers();

  bool DoWork();

  bool SendData();

  void Finish();


  FairField* createField();

  //    TList* fParCList;

  //    TObjArray fArrayHisto;
};

#endif /* CBMDEVICESTSLOCALRECO_H_ */