-
Notifications
You must be signed in to change notification settings - Fork 4.2k
/
CutApplicatorBase.h
104 lines (76 loc) · 3.2 KB
/
CutApplicatorBase.h
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
94
95
96
97
98
99
100
101
102
103
104
#ifndef PhysicsTools_SelectorUtils_CutApplicatorBase_h
#define PhysicsTools_SelectorUtils_CutApplicatorBase_h
//
//
//
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Common/interface/EventBase.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
#include "PhysicsTools/SelectorUtils/interface/CandidateCut.h"
namespace candf = candidate_functions;
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
#include "DataFormats/EgammaCandidates/interface/Photon.h"
#include "DataFormats/MuonReco/interface/Muon.h"
#include "DataFormats/TauReco/interface/PFTau.h"
#include "DataFormats/PatCandidates/interface/Electron.h"
#include "DataFormats/PatCandidates/interface/Photon.h"
#include "DataFormats/PatCandidates/interface/Muon.h"
#include "DataFormats/PatCandidates/interface/Tau.h"
namespace reco {
typedef edm::Ptr<reco::GsfElectron> GsfElectronPtr;
typedef edm::Ptr<reco::Photon> PhotonPtr;
typedef edm::Ptr<reco::Muon> MuonPtr;
typedef edm::Ptr<reco::PFTau> PFTauPtr;
}
namespace pat {
typedef edm::Ptr<pat::Electron> ElectronPtr;
typedef edm::Ptr<pat::Photon> PhotonPtr;
typedef edm::Ptr<pat::Muon> MuonPtr;
typedef edm::Ptr<pat::Tau> TauPtr;
}
class CutApplicatorBase : public candf::CandidateCut {
public:
enum CandidateType{NONE,
ELECTRON,MUON,PHOTON,TAU,
PATELECTRON,PATMUON,PATPHOTON,PATTAU};
CutApplicatorBase(): CandidateCut() {}
CutApplicatorBase(const edm::ParameterSet& c) :
_name(c.getParameter<std::string>("cutName")) {
}
#if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
CutApplicatorBase(const CutApplicatorBase&) = delete;
CutApplicatorBase& operator=(const CutApplicatorBase&) = delete;
#endif
result_type operator()(const argument_type&) const override
#if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
final
#endif
;
// electrons
virtual result_type operator()(const reco::GsfElectronPtr&) const {return false;}
virtual result_type operator()(const pat::ElectronPtr&) const {return false;}
// photons
virtual result_type operator()(const reco::PhotonPtr&) const {return false;}
virtual result_type operator()(const pat::PhotonPtr&) const {return false;}
// muons
virtual result_type operator()(const reco::MuonPtr&) const {return false;}
virtual result_type operator()(const pat::MuonPtr&) const {return false;}
// taus
virtual result_type operator()(const reco::PFTauPtr&) const {return false;}
virtual result_type operator()(const pat::TauPtr&) const {return false;}
// candidate operation
virtual result_type asCandidate(const argument_type&) const {return false;}
virtual CandidateType candidateType() const { return NONE; }
const std::string& name() const override { return _name; }
//! Destructor
~CutApplicatorBase() override{};
private:
const std::string _name;
};
#if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
#include "FWCore/PluginManager/interface/PluginFactory.h"
typedef edmplugin::PluginFactory< CutApplicatorBase* (const edm::ParameterSet&) > CutApplicatorFactory;
#endif
#endif