Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:33:36

0001 #include "Validation/RecoVertex/interface/VertexWeighter.h"
0002 #include <vector>
0003 #include <cmath>
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 
0006 VertexWeighter::VertexWeighter()
0007     : m_sigma_init(1.), m_mean_init(0.), m_sigma_final(1.), m_usemain(false), m_dummy(true) {}
0008 
0009 VertexWeighter::VertexWeighter(const double& sigma_init,
0010                                const double& mean_init,
0011                                const double& sigma_final,
0012                                const bool& usemainvtx)
0013     : m_sigma_init(sigma_init),
0014       m_mean_init(mean_init),
0015       m_sigma_final(sigma_final),
0016       m_usemain(usemainvtx),
0017       m_dummy(false) {}
0018 
0019 VertexWeighter::VertexWeighter(const edm::ParameterSet& iConfig)
0020     : m_sigma_init(iConfig.getParameter<double>("initSigma")),
0021       m_mean_init(iConfig.getParameter<double>("initMean")),
0022       m_sigma_final(iConfig.getParameter<double>("finalSigma")),
0023       m_usemain(iConfig.getParameter<bool>("useMainVertex")),
0024       m_dummy(false) {}
0025 
0026 const double VertexWeighter::weight(const std::vector<float>& zpositions, const float& zmain) const {
0027   double final_weight = 1.;
0028 
0029   if (!m_dummy) {
0030     for (std::vector<float>::const_iterator zpos = zpositions.begin(); zpos != zpositions.end(); ++zpos) {
0031       final_weight *= (m_sigma_init / m_sigma_final) * exp(-pow((*zpos - m_mean_init), 2) / 2. *
0032                                                            (1. / pow(m_sigma_final, 2) - 1. / pow(m_sigma_init, 2)));
0033     }
0034 
0035     if (m_usemain) {
0036       final_weight *= (m_sigma_init / m_sigma_final) * exp(-pow((zmain - m_mean_init), 2) / 2. *
0037                                                            (1. / pow(m_sigma_final, 2) - 1. / pow(m_sigma_init, 2)));
0038     }
0039   }
0040 
0041   return final_weight;
0042 }