48 template <
typename T1,
typename T2>
80 template <
typename T1,
typename T2>
86 deltaRMax_(iConfig.getParameter<
double>(
"deltaRMax")),
89 ? iConfig.getParameter<
std::string>(
"srcObjectSelection")
93 ? iConfig.getParameter<
std::string>(
"srcObjectsToMatchSelection")
98 produces<std::vector<T1>>();
102 template <
typename T1,
typename T2>
110 template <
typename T1,
typename T2>
112 auto cleanObjects = std::make_unique<std::vector<T1>>();
117 bool* isMatch =
new bool[candidates->size()];
118 for (
unsigned int iObject = 0; iObject < candidates->size(); iObject++)
119 isMatch[iObject] =
false;
125 if (objects->empty())
128 for (
unsigned int iObject = 0; iObject < candidates->size(); iObject++) {
129 const T1& candidate = candidates->at(iObject);
133 for (
unsigned int iObj = 0; iObj < objects->size(); iObj++) {
134 const T2&
obj = objects->at(iObj);
139 isMatch[iObject] =
true;
146 for (tIt = candidates->
begin(); tIt != endcands; ++tIt, ++
counter) {
147 if (isMatch[counter])
148 cleanObjects->push_back(*tIt);
159 template <
typename T1,
typename T2>
161 std::stringstream
ss;
164 std::cout <<
"++++++++++++++++++++++++++++++++++++++++++++++++++" 167 << ss.str() <<
"++++++++++++++++++++++++++++++++++++++++++++++++++" << std::endl;
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
StringCutObjectSelector< T2, true > objMatchCut_
unsigned int nObjectsMatch_
unsigned int nObjectsTot_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< edm::EDGetTokenT< edm::View< T2 > > > srcObjectsTokens_
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
edm::EDGetTokenT< edm::View< T1 > > srcCandsToken_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
StringCutObjectSelector< T1, true > objCut_
#define DEFINE_FWK_MODULE(type)
const_iterator begin() const
ObjectViewMatcher< reco::Photon, reco::Track > TrackMatchedPhotonProducer
ObjectViewMatcher< reco::Jet, reco::Track > TrackMatchedJetProducer
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
ObjectViewMatcher(const edm::ParameterSet &iConfig)
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
static std::atomic< unsigned int > counter
~ObjectViewMatcher() override