#ifndef PFCand_AssoMap_h
#define PFCand_AssoMap_h

// -*- C++ -*-
//
// Package:    PFCand_AssoMap
// Class:      PFCand_AssoMap
//
/**\class PFCand_AssoMap PFCand_AssoMap.cc CommonTools/RecoUtils/plugins/PFCand_AssoMap.cc

  Description: Produces a map with association between pf candidates and their particular most probable vertex with a quality of this association
*/
//
// Original Author:  Matthias Geisler
//         Created:  Wed Apr 18 14:48:37 CEST 2012
// $Id: PFCand_AssoMap.h,v 1.7 2012/10/10 11:45:01 mgeisler Exp $
//
//

#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/stream/EDProducer.h"

#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"

#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include "FWCore/Utilities/interface/InputTag.h"

#include "CommonTools/RecoUtils/interface/PFCand_AssoMapAlgos.h"

//
// class declaration
//

class PFCand_AssoMap : public edm::stream::EDProducer<>, public PFCand_AssoMapAlgos {
public:
  explicit PFCand_AssoMap(const edm::ParameterSet&);
  ~PFCand_AssoMap() override;

  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

private:
  void produce(edm::Event&, const edm::EventSetup&) override;

  // ----------member data ---------------------------

  edm::InputTag input_AssociationType_;

  edm::EDGetTokenT<reco::PFCandidateCollection> token_PFCandidates_;
};

#endif
