Main Page
Namespaces
Classes
Package Documentation
CVS Directory
WorkBook
Offline Guide
Release schedule
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
CommonTools
CandUtils
interface
CompositeCandSelector.h
Go to the documentation of this file.
1
#ifndef CommonTools_CandUtils_CompositeCandSelector_h
2
#define CommonTools_CandUtils_CompositeCandSelector_h
3
#include "
DataFormats/Candidate/interface/Candidate.h
"
4
#include "
FWCore/Utilities/interface/EDMException.h
"
5
6
template
<
typename
Selector,
typename
T1 = reco::Cand
id
ate,
typename
T2 = T1,
unsigned
int
nDau = 2>
7
class
CompositeCandSelector
{
8
public
:
9
explicit
CompositeCandSelector
(
const
Selector
&
select
) :
select_
(select) {}
10
bool
operator()
(
const
reco::Candidate
&cmp)
const
{
11
if
(cmp.
numberOfDaughters
() != nDau)
12
throw
edm::Exception
(
edm::errors::InvalidReference
)
13
<<
"candidate has "
<< cmp.
numberOfDaughters
() <<
", while CompositeCandSelector "
14
<<
"requires "
<< nDau <<
" daughters.\n"
;
15
const
T1 *dau1 =
dynamic_cast<
const
T1 *
>
(cmp.
daughter
(0));
16
if
(dau1 ==
nullptr
)
17
throw
edm::Exception
(
edm::errors::InvalidReference
) <<
"candidate's first daughter is not of the type required "
18
<<
"by CompositeCandSelector.\n"
;
19
const
T2 *dau2 =
dynamic_cast<
const
T2 *
>
(cmp.
daughter
(1));
20
if
(dau2 ==
nullptr
)
21
throw
edm::Exception
(
edm::errors::InvalidReference
) <<
"candidate's second daughter is not of the type required "
22
<<
"by CompositeCandSelector.\n"
;
23
return
select_
(*dau1, *dau2);
24
}
25
26
private
:
27
Selector
select_
;
28
};
29
30
// specializations for nDau = 3, 4, ... could go here if needed
31
32
#endif
reco::Candidate::daughter
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
CompositeCandSelector::CompositeCandSelector
CompositeCandSelector(const Selector &select)
Definition:
CompositeCandSelector.h:9
CompositeCandSelector
Definition:
CompositeCandSelector.h:7
Exception
Definition:
hltDiff.cc:245
reco::Candidate
Definition:
Candidate.h:27
Candidate.h
reco::Candidate::numberOfDaughters
virtual size_type numberOfDaughters() const =0
number of daughters
EDMException.h
edm::Exception
Definition:
EDMException.h:79
CompositeCandSelector::select_
Selector select_
Definition:
CompositeCandSelector.h:27
PixelPluginsPhase0_cfi.select
tuple select
Definition:
PixelPluginsPhase0_cfi.py:16
CompositeCandSelector::operator()
bool operator()(const reco::Candidate &cmp) const
Definition:
CompositeCandSelector.h:10
Selector
Functor that operates on <T>
Definition:
Selector.h:22
edm::errors::InvalidReference
Definition:
EDMException.h:39
Generated for CMSSW Reference Manual by
1.8.5