1 #ifndef RecoVertex_PrimaryVertexProducer_DAClusterizerInZT_vect_h
2 #define RecoVertex_PrimaryVertexProducer_DAClusterizerInZT_vect_h
35 std::vector<unsigned int>
kmin;
36 std::vector<unsigned int>
kmax;
37 std::vector<const reco::TransientTrack *>
tt;
69 tt.insert(
tt.begin() +
i, new_tt);
91 double *__restrict__
dz2;
92 double *__restrict__
dt2;
103 std::vector<double> dt2_vec;
104 std::vector<double> sumw_vec;
121 void addItem(
double new_zvtx,
double new_tvtx,
double new_rho) {
136 dt2_vec.push_back(0.0);
137 sumw_vec.push_back(0.0);
158 dt2_vec.insert(dt2_vec.begin() +
k, 0.0);
159 sumw_vec.insert(sumw_vec.begin() +
k, 0.0);
163 for (
unsigned int i = 0;
i < tks.
getSize();
i++) {
164 if (tks.
kmin[
i] > k) {
190 dt2_vec.erase(dt2_vec.begin() +
k);
191 sumw_vec.erase(sumw_vec.begin() +
k);
195 for (
unsigned int i = 0;
i < tks.
getSize();
i++) {
196 if (tks.
kmax[
i] > k) {
227 double *__restrict__
se;
234 double *__restrict__ dt2;
235 double *__restrict__ sumw;
254 dt2 = &dt2_vec.front();
255 sumw = &sumw_vec.front();
264 std::vector<std::vector<reco::TransientTrack> >
clusterize(
265 const std::vector<reco::TransientTrack> &
tracks)
const override;
267 std::vector<TransientVertex>
vertices(
const std::vector<reco::TransientTrack> &
tracks)
const;
269 track_t
fill(
const std::vector<reco::TransientTrack> &
tracks)
const;
276 double beta, track_t >racks, vertex_t &gvertices,
const double delta_max,
const double rho0 = 0.)
const;
279 double beta, track_t >racks, vertex_t &gvertices,
const double rho0 = 0,
const bool updateTc =
false)
const;
281 void dump(
const double beta,
const vertex_t &
y,
const track_t &tks,
const int verbosity = 0)
const;
282 bool zorder(vertex_t &
y)
const;
283 bool find_nearest(
double z,
double t, vertex_t &
y,
unsigned int &k_min,
double dz,
double dt)
const;
284 bool merge(vertex_t &, track_t &,
double &
beta)
const;
285 bool purge(vertex_t &, track_t &,
double &,
const double)
const;
288 double beta0(
const double betamax, track_t
const &tks, vertex_t
const &
y)
const;
290 double get_Tc(
const vertex_t &
y,
int k)
const;
291 void verify(
const vertex_t &
v,
const track_t &tks,
unsigned int nv = 999999,
unsigned int nt = 999999)
const;
void removeItem(unsigned int k, track_t &tks)
unsigned int maxIterations_
unsigned int thermalize(double beta, track_t >racks, vertex_t &gvertices, const double delta_max, const double rho0=0.) const
double *__restrict__ tpca
std::vector< double > dt2_vec
unsigned int convergence_mode_
bool zorder(vertex_t &y) const
std::vector< TransientVertex > vertices(const std::vector< reco::TransientTrack > &tracks) const
std::vector< double > nut_vec
std::vector< double > szz_vec
bool split(const double beta, track_t &t, vertex_t &y, double threshold=1.) const
std::vector< unsigned int > kmin
double *__restrict__ exp_arg
std::vector< double > exp_vec
DAClusterizerInZT_vect(const edm::ParameterSet &conf)
auto const & tracks
cannot be loose
std::vector< double > tkwt_vec
void addItem(double new_zpca, double new_tpca, double new_dz2, double new_dt2, const reco::TransientTrack *new_tt, double new_tkwt)
void verify(const vertex_t &v, const track_t &tks, unsigned int nv=999999, unsigned int nt=999999) const
double update(double beta, track_t >racks, vertex_t &gvertices, const double rho0=0, const bool updateTc=false) const
std::vector< unsigned int > kmax
double *__restrict__ zpca
double get_Tc(const vertex_t &y, int k) const
void insertItem(unsigned int k, double new_zvtx, double new_tvtx, double new_rho, track_t &tks)
bool purge(vertex_t &, track_t &, double &, const double) const
std::vector< double > sw_vec
std::vector< double > stt_vec
double *__restrict__ tkwt
void addItem(double new_zvtx, double new_tvtx, double new_rho)
bool find_nearest(double z, double t, vertex_t &y, unsigned int &k_min, double dz, double dt) const
std::vector< double > zvtx_vec
std::vector< double > sum_Z_vec
double *__restrict__ zvtx
std::vector< double > szt_vec
std::vector< double > zpca_vec
unsigned int getSize() const
void insertItem(unsigned int i, double new_zpca, double new_tpca, double new_dz2, double new_dt2, const reco::TransientTrack *new_tt, double new_tkwt)
void clear_vtx_range(track_t >racks, vertex_t &gvertices) const
std::vector< double > tpca_vec
static void fillPSetDescription(edm::ParameterSetDescription &desc)
std::vector< double > se_vec
double *__restrict__ sum_Z
track_t fill(const std::vector< reco::TransientTrack > &tracks) const
std::vector< double > swt_vec
std::vector< const reco::TransientTrack * > tt
std::vector< std::vector< reco::TransientTrack > > clusterize(const std::vector< reco::TransientTrack > &tracks) const override
std::vector< double > swz_vec
std::vector< double > dz2_vec
unsigned int getSize() const
std::vector< double > nuz_vec
double beta0(const double betamax, track_t const &tks, vertex_t const &y) const
bool merge(vertex_t &, track_t &, double &beta) const
std::vector< double > tvtx_vec
void dump(const double beta, const vertex_t &y, const track_t &tks, const int verbosity=0) const
unsigned int insertOrdered(double zvtx, double tvtx, double rho, track_t &tks)
double *__restrict__ tvtx
std::vector< double > exp_arg_vec
void set_vtx_range(double beta, track_t >racks, vertex_t &gvertices) const
std::vector< double > rho_vec