JetMatching

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
#ifndef GeneratorInterface_PartonShowerVeto_JetMatching_h
#define GeneratorInterface_PartonShowerVeto_JetMatching_h

#include <memory>
#include <vector>
#include <string>
#include <set>

// #include <HepMC/GenEvent.h>
// #include <HepMC/SimpleVector.h>

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

#include "fastjet/ClusterSequence.hh"  // gives both PseudoJet & JetDefinition
// #include "fastjet/Selector.hh"

namespace lhef {

  class LHERunInfo;
  class LHEEvent;
  class JetInput;
  // class JetClustering;
}  // namespace lhef

namespace gen {

  class JetMatching {
  public:
    JetMatching(const edm::ParameterSet& params);
    virtual ~JetMatching();

    /*
	struct JetPartonMatch {
		JetPartonMatch(const HepMC::FourVector	&parton,
		               const HepMC::FourVector	&jet,
		               double			delta,
		               int			pdgId) :
			parton(parton), jet(jet),
			delta(delta), pdgId(pdgId) {}

		JetPartonMatch(const HepMC::FourVector	&parton,
		               int			pdgId) :
			parton(parton),	delta(-1.0), pdgId(pdgId) {}

		JetPartonMatch(const HepMC::FourVector &jet) :
			jet(jet), delta(-1.0), pdgId(0) {}

		inline bool isMatch() const { return delta >= 0 && pdgId; }
		inline bool hasParton() const { return pdgId; }
		inline bool hasJet() const { return delta >= 0 || !pdgId; }

		HepMC::FourVector	parton;
		HepMC::FourVector	jet;
		double			delta;
		int			pdgId;
	};
*/
    virtual void init(const lhef::LHERunInfo* runInfo);
    virtual bool initAfterBeams() { return true; }
    virtual void beforeHadronisation(const lhef::LHEEvent* event);
    virtual void beforeHadronisationExec();

    // void setJetInput( const std::vector<fastjet::PseudoJet> input ) { fJetInput=input; return; }

    virtual int match(const lhef::LHEEvent* partonLevel, const std::vector<fastjet::PseudoJet>* jetInput) = 0;
    /*
	virtual int match(const HepMC::GenEvent *partonLevel,
	                  const HepMC::GenEvent *finalState,
	                  bool showeredFinalState = false) = 0;
*/
    virtual std::set<std::string> capabilities() const;

    void resetMatchingStatus() { fMatchingStatus = false; }
    bool isMatchingDone() { return fMatchingStatus; }

    virtual const std::vector<int>* getPartonList() { return nullptr; }
    virtual double getJetEtaMax() const = 0;

    /*
	const std::vector<JetPartonMatch> &getMatchSummary() const
	{ return matchSummary; }
*/
    static std::unique_ptr<JetMatching> create(const edm::ParameterSet& params);

  protected:
    bool fMatchingStatus;
    /*	std::vector<JetPartonMatch>	matchSummary; */
    // std::vector<fastjet::PseudoJet> fJetInput;
  };

}  // namespace gen

#endif  // GeneratorCommon_PartonShowerVeto_JetMatching_h