File indexing completed on 2024-04-06 12:25:20
0001
0002 #include "RecoHI/HiJetAlgos/interface/UEParameters.h"
0003
0004 UEParameters::UEParameters(const std::vector<float> *v, int nn, int neta) : v_(v), nn_(nn), neta_(neta) {
0005 parameters_ =
0006 new boost::const_multi_array_ref<float, 4>(&(*v)[0], boost::extents[neta][nreduced_particle_flow_id][nn][2]);
0007 }
0008
0009 void UEParameters::get_fourier(double &re, double &im, size_t n, size_t eta, int type) const {
0010 re = 0;
0011 im = 0;
0012
0013 if (type < 0) {
0014 for (size_t i = 0; i < nreduced_particle_flow_id; i++) {
0015 re += (*parameters_)[eta][i][n][0];
0016 im += (*parameters_)[eta][i][n][1];
0017 }
0018 } else {
0019 re = (*parameters_)[eta][type][n][0];
0020 im = (*parameters_)[eta][type][n][1];
0021 }
0022 }
0023
0024 double UEParameters::get_sum_pt(int eta, int type) const {
0025 double re;
0026 double im;
0027
0028 get_fourier(re, im, 0, eta, type);
0029
0030
0031 return re;
0032 }
0033
0034 double UEParameters::get_vn(int n, int eta, int type) const {
0035 if (n < 0) {
0036 return NAN;
0037 } else if (n == 0) {
0038 return 1;
0039 }
0040
0041 double re;
0042 double im;
0043
0044 get_fourier(re, im, n, eta, type);
0045
0046 return sqrt(re * re + im * im) / get_sum_pt(eta, type);
0047 }
0048
0049 double UEParameters::get_psin(int n, int eta, int type) const {
0050 if (n <= 0) {
0051 return 0;
0052 }
0053
0054 double re;
0055 double im;
0056
0057 get_fourier(re, im, n, eta, type);
0058
0059 return atan2(im, re) / n;
0060 }