24 using namespace isodeposit;
37 double ptThreshold_, etEcalThreshold_, etHcalThreshold_, dRVetoTrk_, dRTrk_, dREcal_, dRHcal_;
71 vetosTrk.push_back(
new ConeVeto(dir, dRVetoTrk));
75 vetosEcal.push_back(
new ConeVeto(dir, 0.));
79 vetosHcal.push_back(
new ConeVeto(dir, 0.));
82 double isovalueTrk = (trkIso->
sumWithin(dRTrk, vetosTrk));
83 double isovalueEcal = (ecalIso->
sumWithin(dREcal, vetosEcal));
84 double isovalueHcal = (hcalIso->
sumWithin(dRHcal, vetosHcal));
86 iso.push_back(isovalueTrk);
87 iso.push_back(isovalueEcal);
88 iso.push_back(isovalueHcal);
92 alpha * (((1 +
beta) / 2 * isovalueEcal) + ((1 -
beta) / 2 * isovalueHcal)) + ((1 - alpha) * isovalueTrk);
94 iso.push_back(combIso);
95 double relIso = combIso /= t.pt();
96 iso.push_back(relIso);
101 : srcToken_(consumes<vector<
pat::GenericParticle> >(cfg.getParameter<
InputTag>(
"src"))),
104 ptThreshold_(cfg.getParameter<double>(
"ptThreshold")),
105 etEcalThreshold_(cfg.getParameter<double>(
"etEcalThreshold")),
106 etHcalThreshold_(cfg.getParameter<double>(
"etHcalThreshold")),
107 dRVetoTrk_(cfg.getParameter<double>(
"dRVetoTrk")),
108 dRTrk_(cfg.getParameter<double>(
"dRTrk")),
109 dREcal_(cfg.getParameter<double>(
"dREcal")),
110 dRHcal_(cfg.getParameter<double>(
"dRHcal")),
111 alpha_(cfg.getParameter<double>(
"alpha")),
112 beta_(cfg.getParameter<double>(
"beta")) {
113 produces<std::vector<pat::GenericParticle> >();
126 unique_ptr<vector<pat::GenericParticle> > tkColl(
new vector<pat::GenericParticle>(*tracks));
127 for (
unsigned int i = 0;
i < tkColl->size(); ++
i) {
142 float zDaudxyFromBS = -1;
143 float zDaudzFromBS = -1;
144 float zDaudxyFromPV = -1;
145 float zDaudzFromPV = -1;
146 float zDauNofMuChambers = -1;
147 float zDauNofMuMatches = -1;
149 float zDauTrkChi2 = -1;
150 float zDauSaChi2 = -1;
151 float zDauNofMuonHits = -1;
152 float zDauNofStripHits = -1;
153 float zDauNofPixelHits = -1;
154 float zDauMuEnergyEm = -1;
155 float zDauMuEnergyHad = -1;
159 zDaudxyFromBS = muTrkRef->dxy(beamSpotHandle->
position());
160 zDaudzFromBS = muTrkRef->dz(beamSpotHandle->
position());
161 zDaudxyFromPV = muTrkRef->dxy(primaryVertices->begin()->position());
162 zDaudzFromPV = muTrkRef->dz(primaryVertices->begin()->position());
163 zDauChi2 = muTrkRef->normalizedChi2();
164 zDauTrkChi2 = muTrkRef->normalizedChi2();
165 zDauNofStripHits = muTrkRef->hitPattern().numberOfValidStripHits();
166 zDauNofPixelHits = muTrkRef->hitPattern().numberOfValidPixelHits();
173 tk.
addUserFloat(
"zDau_TrkNofStripHits", zDauNofStripHits);
174 tk.
addUserFloat(
"zDau_TrkNofPixelHits", zDauNofPixelHits);
175 tk.
addUserFloat(
"zDau_NofMuChambers", zDauNofMuChambers);
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool isNonnull() const
Checks for non-null.
void setIsolation(IsolationKeys key, float value)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
ZMuMuTrackUserData(const edm::ParameterSet &)
void produce(edm::Event &, const edm::EventSetup &) override
std::vector< Vertex > VertexCollection
collection of Vertex objects
void addUserFloat(const std::string &label, float data, const bool overwrite=false)
Set user-defined float.
double sumWithin(double coneSize, const AbsVetos &vetos=AbsVetos(), bool skipDepositVeto=false) const
Analysis-level Generic Particle class (e.g. for hadron or muon not fully reconstructed) ...
#define DEFINE_FWK_MODULE(type)
vector< double > isolation(const T &t, double ptThreshold, double etEcalThreshold, double etHcalThreshold, double dRVetoTrk, double dRTrk, double dREcal, double dRHcal, double alpha, double beta)
EDGetTokenT< vector< pat::GenericParticle > > srcToken_
reco::TrackRef track() const override
EDGetTokenT< VertexCollection > primaryVerticesToken_
const Point & position() const
position
alpha
zGenParticlesMatch = cms.InputTag(""),
EDGetTokenT< BeamSpot > beamSpotToken_
isodeposit::AbsVetos AbsVetos