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
|