|
|
Go to the documentation of this file.
11 using namespace std::placeholders;
16 embeddedIsolationTracks_(
false),
17 embeddedLeadTrack_(
false),
18 embeddedSignalTracks_(
false),
19 embeddedLeadPFCand_(
false),
20 embeddedLeadPFChargedHadrCand_(
false),
21 embeddedLeadPFNeutralCand_(
false),
22 embeddedSignalPFCands_(
false),
23 embeddedSignalPFChargedHadrCands_(
false),
24 embeddedSignalPFNeutralHadrCands_(
false),
25 embeddedSignalPFGammaCands_(
false),
26 embeddedIsolationPFCands_(
false),
27 embeddedIsolationPFChargedHadrCands_(
false),
28 embeddedIsolationPFNeutralHadrCands_(
false),
29 embeddedIsolationPFGammaCands_(
false) {}
34 embeddedIsolationTracks_(
false),
35 embeddedLeadTrack_(
false),
36 embeddedSignalTracks_(
false),
37 embeddedLeadPFCand_(
false),
38 embeddedLeadPFChargedHadrCand_(
false),
39 embeddedLeadPFNeutralCand_(
false),
40 embeddedSignalPFCands_(
false),
41 embeddedSignalPFChargedHadrCands_(
false),
42 embeddedSignalPFNeutralHadrCands_(
false),
43 embeddedSignalPFGammaCands_(
false),
44 embeddedIsolationPFCands_(
false),
45 embeddedIsolationPFChargedHadrCands_(
false),
46 embeddedIsolationPFNeutralHadrCands_(
false),
47 embeddedIsolationPFGammaCands_(
false) {
48 initFromBaseTau(aTau);
54 embeddedIsolationTracks_(
false),
55 embeddedLeadTrack_(
false),
56 embeddedSignalTracks_(
false),
57 embeddedLeadPFCand_(
false),
58 embeddedLeadPFChargedHadrCand_(
false),
59 embeddedLeadPFNeutralCand_(
false),
60 embeddedSignalPFCands_(
false),
61 embeddedSignalPFChargedHadrCands_(
false),
62 embeddedSignalPFNeutralHadrCands_(
false),
63 embeddedSignalPFGammaCands_(
false),
64 embeddedIsolationPFCands_(
false),
65 embeddedIsolationPFChargedHadrCands_(
false),
66 embeddedIsolationPFNeutralHadrCands_(
false),
67 embeddedIsolationPFGammaCands_(
false) {
68 initFromBaseTau(*aTauRef);
74 embeddedIsolationTracks_(
false),
75 embeddedLeadTrack_(
false),
76 embeddedSignalTracks_(
false),
77 embeddedLeadPFCand_(
false),
78 embeddedLeadPFChargedHadrCand_(
false),
79 embeddedLeadPFNeutralCand_(
false),
80 embeddedSignalPFCands_(
false),
81 embeddedSignalPFChargedHadrCands_(
false),
82 embeddedSignalPFNeutralHadrCands_(
false),
83 embeddedSignalPFGammaCands_(
false),
84 embeddedIsolationPFCands_(
false),
85 embeddedIsolationPFChargedHadrCands_(
false),
86 embeddedIsolationPFNeutralHadrCands_(
false),
87 embeddedIsolationPFGammaCands_(
false) {
88 initFromBaseTau(*aTauRef);
92 const reco::PFTau* pfTau = dynamic_cast<const reco::PFTau*>(&aTau);
93 if (pfTau !=
nullptr) {
129 out <<
"\tpat::Tau: ";
130 out << std::setiosflags(std::ios::right);
132 out << std::setprecision(3);
133 out <<
" E/pT/eta/phi " <<
obj.energy() <<
"/" <<
obj.pt() <<
"/" <<
obj.eta() <<
"/" <<
obj.phi();
184 for (
unsigned int i = 0;
i < trackRefVec.
size();
i++) {
203 for (
unsigned int i = 0;
i < trackRefVec.
size();
i++) {
220 for (std::vector<IdPair>::const_iterator it =
tauIDs_.begin(), ed =
tauIDs_.end(); it != ed; ++it) {
221 if (it->first ==
name)
225 ex <<
"pat::Tau: the ID " <<
name <<
" can't be found in this pat::Tau.\n";
226 ex <<
"The available IDs are: ";
227 for (std::vector<IdPair>::const_iterator it =
tauIDs_.begin(), ed =
tauIDs_.end(); it != ed; ++it) {
228 ex <<
"'" << it->first <<
"' ";
235 for (std::vector<IdPair>::const_iterator it =
tauIDs_.begin(), ed =
tauIDs_.end(); it != ed; ++it) {
236 if (it->first ==
name)
245 <<
"Requesting a PFTau-specific information from a pat::Tau which wasn't made from a PFTau.\n";
252 <<
"Requesting a PFTau-specific information from a pat::Tau which wasn't made from a PFTau.\n";
259 throw cms::Exception(
"Type Error") <<
"Requesting a PFTau-specific information from a pat::Tau which wasn't "
260 "made from a PFTau.\n";
292 throw cms::Exception(
"Type Error") <<
"Requesting a PFTau-specific information from a pat::Tau which wasn't "
293 "made from a PFTau.\n";
299 throw cms::Exception(
"Type Error") <<
"Requesting a PFTau-specific information from a pat::Tau which wasn't "
300 "made from a PFTau.\n";
306 throw cms::Exception(
"Type Error") <<
"Requesting a PFTau-specific information from a pat::Tau which wasn't "
307 "made from a PFTau.\n";
313 <<
"Requesting a PFTau-specific information from a pat::Tau which wasn't made from a PFTau.\n";
357 std::vector<reco::PFCandidatePtr> candPtrs =
pfSpecific_[0].selectedSignalPFCands_;
358 for (
unsigned int i = 0;
i < candPtrs.size();
i++) {
367 std::vector<reco::PFCandidatePtr> candPtrs =
pfSpecific_[0].selectedSignalPFChargedHadrCands_;
368 for (
unsigned int i = 0;
i < candPtrs.size();
i++) {
377 std::vector<reco::PFCandidatePtr> candPtrs =
pfSpecific_[0].selectedSignalPFNeutrHadrCands_;
378 for (
unsigned int i = 0;
i < candPtrs.size();
i++) {
387 std::vector<reco::PFCandidatePtr> candPtrs =
pfSpecific_[0].selectedSignalPFGammaCands_;
388 for (
unsigned int i = 0;
i < candPtrs.size();
i++) {
398 std::vector<reco::PFCandidatePtr> candPtrs =
pfSpecific_[0].selectedIsolationPFCands_;
399 for (
unsigned int i = 0;
i < candPtrs.size();
i++) {
409 std::vector<reco::PFCandidatePtr> candPtrs =
pfSpecific_[0].selectedIsolationPFChargedHadrCands_;
410 for (
unsigned int i = 0;
i < candPtrs.size();
i++) {
419 std::vector<reco::PFCandidatePtr> candPtrs =
pfSpecific_[0].selectedIsolationPFNeutrHadrCands_;
420 for (
unsigned int i = 0;
i < candPtrs.size();
i++) {
429 std::vector<reco::PFCandidatePtr> candPtrs =
pfSpecific_[0].selectedIsolationPFGammaCands_;
430 for (
unsigned int i = 0;
i < candPtrs.size();
i++) {
438 throw cms::Exception(
"Type Error") <<
"Requesting content that is not stored in miniAOD.\n";
439 if (!
pfSpecific().signalTauChargedHadronCandidates_.empty()) {
447 const reco::PFCandidate* pf_cand = dynamic_cast<const reco::PFCandidate*>(&*ptr);
485 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
499 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
511 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
525 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
537 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
551 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
563 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
577 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
588 throw cms::Exception(
"Type Error") <<
"Requesting content that is not stored in miniAOD.\n";
594 throw cms::Exception(
"Type Error") <<
"Requesting content that is not stored in miniAOD.\n";
601 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
615 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
627 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
641 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
653 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
667 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
679 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
693 std::unique_ptr<std::vector<reco::PFCandidatePtr> > aPtrs{
new std::vector<reco::PFCandidatePtr>{}};
704 throw cms::Exception(
"Type Error") <<
"Requesting content that is not stored in miniAOD.\n";
710 throw cms::Exception(
"Type Error") <<
"Requesting content that is not stored in miniAOD.\n";
726 for (std::vector<pat::TauJetCorrFactors>::const_iterator corrFactor =
jec_.begin(); corrFactor !=
jec_.end();
728 if (corrFactor->jecSet() == set)
729 return corrFactor -
jec_.begin();
736 std::vector<std::string> sets;
737 for (std::vector<pat::TauJetCorrFactors>::const_iterator corrFactor =
jec_.begin(); corrFactor !=
jec_.end();
739 sets.push_back(corrFactor->jecSet());
745 return set >= 0 ?
jec_.at(set).correctionLabels() : std::vector<std::string>();
752 if (set.empty() ||
jec_.at(
idx).jecSet() == set) {
756 throw cms::Exception(
"InvalidRequest") <<
"This JEC level " <<
level <<
" does not exist. \n";
759 throw cms::Exception(
"InvalidRequest") <<
"This jet does not carry any jet energy correction factor information \n"
760 <<
"for a jet energy correction set with label " << set <<
"\n";
767 throw cms::Exception(
"InvalidRequest") <<
"This jet does not carry any jet energy correction factor information \n";
769 throw cms::Exception(
"InvalidRequest") <<
"This jet does not carry any jet energy correction factor information \n"
770 <<
"for a jet energy correction set with index " << set <<
"\n";
780 if (set.empty() ||
jec_.at(
idx).jecSet() == set) {
784 throw cms::Exception(
"InvalidRequest") <<
"This JEC level " <<
level <<
" does not exist. \n";
787 throw cms::Exception(
"InvalidRequest") <<
"This JEC set " << set <<
" does not exist. \n";
811 if (
ret.isNull() || (
p->pt() >
ret->pt()))
824 if (
ret.isNull() || (
p->pt() >
ret->pt()))
857 for (
const auto&
p : r0)
863 std::vector<std::pair<float, size_t> > pt_index;
871 pt_index.push_back(std::make_pair(
p->pt(),
index));
876 pt_index.push_back(std::make_pair(
p->pt(),
index));
881 pt_index.push_back(std::make_pair(
p->pt(),
index));
884 std::sort(pt_index.begin(), pt_index.end(), std::greater<>());
885 ret.reserve(pt_index.size());
886 for (
const auto&
p : pt_index) {
887 ret.push_back(ret2[
p.second]);
899 for (
const auto&
p : r0)
913 for (
const auto&
p : r0)
927 for (
const auto&
p : r0)
941 for (
const auto&
p : r0)
947 std::vector<std::pair<float, size_t> > pt_index;
955 pt_index.push_back(std::make_pair(
p->pt(),
index));
960 pt_index.push_back(std::make_pair(
p->pt(),
index));
965 pt_index.push_back(std::make_pair(
p->pt(),
index));
968 std::sort(pt_index.begin(), pt_index.end(), std::greater<>());
969 ret.reserve(pt_index.size());
970 for (
const auto&
p : pt_index) {
971 ret.push_back(ret2[
p.second]);
983 for (
const auto&
p : r0)
998 for (
const auto&
p : r0)
1012 for (
const auto&
p : r0)
const std::vector< reco::PFRecoTauChargedHadron > & isolationTauChargedHadronCandidates() const
bool jecSetsAvailable() const
const reco::CandidatePtr leadChargedHadrCand() const
ret
prodAgent to be discontinued
const std::vector< reco::PFCandidatePtr > & isolationPFNeutrHadrCands() const
void reserve(size_type n)
Reserve space for RefVector.
unsigned int currentJECLevel_
void embedSignalPFCands()
method to store the signal candidates internally
std::vector< reco::PFCandidatePtr > selectedSignalPFGammaCands_
bool embeddedLeadPFChargedHadrCand_
size_type size() const
Size of the RefVector.
Jets made from MC generator particles.
reco::CandidatePtrVector isolationChargedHadrCandPtrs_
void setGenJet(const reco::GenJetRef &ref)
set the matched GenJet
edm::Ptr< PFCandidate > PFCandidatePtr
persistent Ptr to a PFCandidate
std::vector< reco::Track > leadTrack_
const reco::PFCandidatePtr leadPFNeutralCand() const
std::vector< reco::RecoTauPiZero > signalPiZeroCandidates_
edm::Ref< PFRecoTauChargedHadronCollection > PFRecoTauChargedHadronRef
presistent reference to a PFRecoTauChargedHadron
const reco::CandidatePtr leadCand() const
return the PFCandidate if available (reference or embedded), or the PackedPFCandidate on miniAOD
virtual reco::TrackRef leadTrack() const
std::vector< reco::PFCandidate > isolationPFChargedHadrCands_
bool isNull() const
Checks for null.
int decayMode() const
reconstructed tau decay mode (specific to PFTau)
reco::CandidatePtrVector signalGammaCandPtrs_
void embedLeadPFChargedHadrCand()
method to store the leading charged hadron candidate internally
std::vector< reco::PFCandidatePtr > selectedSignalPFNeutrHadrCands_
void embedSignalPFNeutralHadrCands()
method to store the signal neutral hadrons candidates internally
Analysis-level tau class.
bool embeddedSignalPFCands_
reco::CandidatePtrVector isolationNeutralHadrCandPtrs_
bool embeddedSignalTracks_
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > isolationPFNeutralHadrCandsTransientPtrs_
reco::CandidatePtrVector signalChargedHadrCands() const
void embedLeadPFNeutralCand()
method to store the leading neutral candidate internally
const std::vector< reco::CandidatePtr > & signalChargedHadrCands() const
Charged hadrons in signal region.
std::vector< reco::PFCandidate > signalPFGammaCands_
std::vector< reco::PFCandidatePtr > selectedSignalPFChargedHadrCands_
std::vector< reco::PFCandidatePtr > selectedIsolationPFGammaCands_
pat::tau::TauPFEssential::CovMatrix flightLengthCov() const
std::vector< pat::tau::TauPFEssential > pfEssential_
T const * get() const
Returns C++ pointer to the item.
std::vector< pat::TauJetCorrFactors > jec_
reco::CandidatePtrVector signalNeutrHadrCands() const
std::vector< reco::PFCandidate > isolationPFCands_
std::vector< reco::PFCandidate > leadPFChargedHadrCand_
reco::TrackRef leadTrack() const override
override the reco::BaseTau::leadTrack method, to access the internal storage of the leading track
virtual const reco::TrackRefVector & signalTracks() const
float tauID(const std::string &name) const
std::vector< reco::PFCandidatePtr > selectedIsolationPFCands_
std::string currentJECSet() const
returns the label of the current set of jet energy corrections
reco::CandidatePtrVector isolationCands() const
bool embeddedIsolationTracks_
reco::CandidatePtrVector signalCands() const
const std::vector< reco::PFCandidatePtr > & isolationPFChargedHadrCands() const
reco::CandidatePtrVector signalNeutralHadrCandPtrs_
float phiphiMoment() const
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > isolationPFCandsTransientPtrs_
const std::vector< reco::PFCandidatePtr > & signalPFGammaCands() const
bool embeddedLeadPFNeutralCand_
const reco::PFCandidatePtr convertToPFCandidatePtr(const reco::CandidatePtr &ptr)
reco::CandidatePtrVector isolationChargedHadrCands() const
bool isPFTau() const
Returns true if this pat::Tau was made from a reco::PFTau.
const reco::PFCandidatePtr leadPFCand() const
size_t numberOfSourceCandidatePtrs() const override
void embedSignalTracks()
method to store the signal tracks internally
edm::AtomicPtrCache< reco::TrackRefVector > signalTracksTransientRefVector_
reco::Candidate::LorentzVector p4Jet() const
reco::CandidatePtrVector isolationGammaCandPtrs_
void initializeJEC(unsigned int level, const unsigned int set=0)
initialize the jet to a given JEC level during creation starting from Uncorrected
const std::vector< reco::PFRecoTauChargedHadron > & signalTauChargedHadronCandidates() const
void embedSignalPFGammaCands()
method to store the signal gamma candidates internally
const reco::TrackRefVector & signalTracks() const override
override the reco::BaseTau::signalTracks method, to access the internal storage of the signal tracks
bool ExistIsolationCands() const
const std::vector< reco::PFCandidatePtr > & signalPFCands() const
float jecFactor(const std::string &level, const std::string &set="") const
bool embeddedSignalPFChargedHadrCands_
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > isolationPFChargedHadrCandsTransientPtrs_
const CandidatePtr & leadChargedHadrCand() const
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
void embedIsolationTracks()
method to store the isolation tracks internally
void push_back(Ptr< T > const &iPtr)
unsigned int currentJECSet_
bool embeddedIsolationPFChargedHadrCands_
const reco::PFCandidatePtr leadPFChargedHadrCand() const
const std::vector< reco::RecoTauPiZero > & signalPiZeroCandidates() const
const pat::tau::TauPFSpecific & pfSpecific() const
return PFTau info or throw exception 'not PFTau'
void embedIsolationPFCands()
method to store the isolation candidates internally
const std::vector< reco::PFCandidatePtr > & isolationPFCands() const
const std::vector< reco::PFCandidatePtr > & signalPFNeutrHadrCands() const
std::vector< reco::PFCandidate > isolationPFGammaCands_
std::vector< reco::PFCandidate > leadPFNeutralCand_
const pat::tau::TauPFEssential::CovMatrix & primaryVertexCov() const
reco::CandidatePtr sourceCandidatePtr(size_type i) const override
get the source candidate pointer with index i
std::vector< reco::PFCandidate > signalPFNeutralHadrCands_
std::string currentJECLevel() const
return the name of the current step of jet energy corrections
std::vector< pat::tau::TauPFSpecific > pfSpecific_
holder for PFTau info, or empty vector if CaloTau
reco::PFRecoTauChargedHadronRef leadTauChargedHadronCandidate() const
reco::CandidatePtrVector signalChargedHadrCandPtrs_
const LorentzVector & p4() const final
four-momentum Lorentz vector
std::ostream & operator<<(std::ostream &, BeamSpot beam)
reco::CandidatePtrVector isolationNeutrHadrCands() const
void embedLeadTrack()
method to store the leading track internally
void embedSignalPFChargedHadrCands()
method to store the signal charged hadrons candidates internally
std::vector< reco::PFCandidatePtr > selectedIsolationPFChargedHadrCands_
const std::vector< reco::PFCandidatePtr > & isolationPFGammaCands() const
void embedIsolationPFGammaCands()
method to store the isolation gamma candidates internally
float etaetaMoment() const
std::vector< reco::GenJet > genJet_
void setDecayMode(int)
set decay mode
bool ExistSignalCands() const
Tau correctedTauJet(const std::string &level, const std::string &set="") const
const std::vector< std::string > availableJECLevels(const int &set=0) const
bool embeddedIsolationPFCands_
const std::vector< reco::CandidatePtr > & signalNeutrHadrCands() const
Neutral hadrons in signal region.
void setP4(const LorentzVector &p4) final
set 4-momentum
edm::AtomicPtrCache< reco::TrackRefVector > isolationTracksTransientRefVector_
std::vector< reco::PFCandidate > leadPFCand_
std::vector< reco::PFCandidate > isolationPFNeutralHadrCands_
const reco::CandidatePtr leadNeutralCand() const
return the PFCandidate if available (reference or embedded), or the PackedPFCandidate on miniAOD
const pat::tau::TauPFEssential::CovMatrix & secondaryVertexCov() const
std::vector< reco::PFCandidatePtr > selectedIsolationPFNeutrHadrCands_
bool embeddedIsolationPFGammaCands_
float etaphiMoment() const
std::vector< reco::PFRecoTauChargedHadron > isolationTauChargedHadronCandidates_
double p() const final
magnitude of momentum vector
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > signalPFNeutralHadrCandsTransientPtrs_
const std::vector< std::string > availableJECSets() const
std::vector< reco::PFCandidate > signalPFCands_
const std::vector< reco::CandidatePtr > & isolationNeutrHadrCands() const
bool embeddedIsolationPFNeutralHadrCands_
reco::CandidatePtrVector signalGammaCands() const
const reco::TrackRefVector & isolationTracks() const override
override the reco::BaseTau::isolationTracks method, to access the internal storage of the isolation t...
std::vector< reco::PFRecoTauChargedHadron > signalTauChargedHadronCandidates_
std::vector< reco::RecoTauPiZero > isolationPiZeroCandidates_
bool jecSetAvailable(const std::string &set) const
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > isolationPFGammaCandsTransientPtrs_
Particle reconstructed by the particle flow algorithm.
std::vector< IdPair > tauIDs_
std::vector< reco::Track > signalTracks_
const std::vector< reco::RecoTauPiZero > & isolationPiZeroCandidates() const
const pat::tau::TauPFEssential & pfEssential() const
const std::vector< reco::PFCandidatePtr > & signalPFChargedHadrCands() const
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > signalPFChargedHadrCandsTransientPtrs_
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > signalPFCandsTransientPtrs_
math::XYZTLorentzVector LorentzVector
Lorentz vector.
const value_type at(size_type idx) const
Retrieve an element of the RefVector.
std::vector< reco::PFCandidate > signalPFChargedHadrCands_
int jecSet(const std::string &label) const
bool isTauIDAvailable(const std::string &name) const
Returns true if a specific ID is available in this pat::Tau.
size_type size() const
Size of the RefVector.
virtual const reco::TrackRefVector & isolationTracks() const
void embedIsolationPFNeutralHadrCands()
method to store the isolation neutral hadrons candidates internally
~Tau() override
destructor
const std::vector< reco::CandidatePtr > & isolationChargedHadrCands() const
Charged candidates in isolation region.
std::vector< reco::PFCandidatePtr > selectedSignalPFCands_
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > signalPFGammaCandsTransientPtrs_
const std::vector< reco::CandidatePtr > & isolationGammaCands() const
Gamma candidates in isolation region.
math::ErrorF< 3 >::type CovMatrix
void embedIsolationPFChargedHadrCands()
method to store the isolation charged hadrons candidates internally
const reco::GenJet * genJet() const
return matched GenJet, built from the visible particles of a generated tau
bool embeddedSignalPFNeutralHadrCands_
bool embeddedSignalPFGammaCands_
std::vector< reco::Track > isolationTracks_
void reserve(size_type n)
Reserve space for RefVector.
const std::vector< reco::CandidatePtr > & signalGammaCands() const
Gamma candidates in signal region.
reco::CandidatePtrVector isolationGammaCands() const