23 const float dummy = -9.;
69 lxyCUT_(iConfig.getParameter<double>(
"lxyCUT")),
70 lxyWRTbsCUT_(iConfig.getParameter<double>(
"lxyWRTbsCUT")),
71 debug_(iConfig.getUntrackedParameter<
bool>(
"debug")) {
73 std::cout <<
"VertexCompositeCandidateCollectionSelector::VertexCompositeCandidateCollectionSelector" << std::endl;
75 produces<reco::VertexCompositeCandidateCollection>();
89 std::cout <<
"VertexCompositeCandidateCollectionSelector::produce" << std::endl;
92 auto result = std::make_unique<reco::VertexCompositeCandidateCollection>();
97 if (beamspotHandle.isValid())
98 bs = &(*beamspotHandle);
104 pv = &pvHandle->front();
115 int n = (v0Handle.
isValid() ? v0Handle->size() : -1);
119 auto const& v0s = *v0Handle.
product();
120 for (
auto const&
v0 : v0s) {
122 (pv ==
nullptr ? dummyGP :
GlobalPoint((pv->
x() -
v0.vx()), (pv->
y() -
v0.vy()), 0.));
125 float abslxy = (pv ==
nullptr ?
dummy : displacementFromPV2D.
perp());
126 float abslxyWRTbs = (bs ==
nullptr ?
dummy : displacementFromBS2D.
perp());
133 << (abslxyWRTbs >=
lxyWRTbsCUT_ ?
"OK" :
"KO") << std::endl;
158 desc.
add<
int>(
"pvNDOF");
159 desc.
add<
double>(
"lxyCUT", 16.);
160 desc.
add<
double>(
"lxyWRTbsCUT", 0.);
162 descriptions.
add(
"VertexCompositeCandidateCollectionSelector", desc);
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void produce(edm::Event &, const edm::EventSetup &) override
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
std::vector< VertexCompositeCandidate > VertexCompositeCandidateCollection
collection of Candidate objects
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
edm::EDGetTokenT< reco::VertexCompositeCandidateCollection > v0Token_
static PFTauRenderPlugin instance
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double y() const
y coordinate
Global3DPoint GlobalPoint
std::vector< Vertex > VertexCollection
collection of Vertex objects
#define DEFINE_FWK_MODULE(type)
VertexCompositeCandidateCollectionSelector(const edm::ParameterSet &)
double z() const
z coordinate
ParameterDescriptionBase * add(U const &iLabel, T const &value)
double x() const
x coordinate
T const * product() const
double x(const double z) const
x coordinate of the beeam spot position at a given z value (it takes into account the dxdz slope) ...
void add(std::string const &label, ParameterSetDescription const &psetDescription)
double y(const double z) const
y coordinate of the beeam spot position at a given z value (it takes into account the dydz slope) ...
edm::EDGetTokenT< reco::VertexCollection > pvToken_
edm::EDGetTokenT< reco::BeamSpot > bsToken_
size_t tracksSize() const
number of tracks