1 #ifndef DAClusterizerInZ_vect_h
2 #define DAClusterizerInZ_vect_h
23 #ifdef __GXX_EXPERIMENTAL_CXX0X__
33 dz2.push_back( new_dz2 );
34 tt.push_back( new_tt );
36 pi.push_back( new_pi );
37 Z_sum.push_back( 1.0);
42 unsigned int GetSize()
const
53 _Z_sum = &Z_sum.front();
57 double * __restrict__ _z;
58 double * __restrict__ _dz2;
60 double * __restrict__ _Z_sum;
61 double * __restrict__ _pi;
63 std::vector<double>
z;
64 std::vector<double> dz2;
65 std::vector< const reco::TransientTrack* >
tt;
67 std::vector<double> Z_sum;
68 std::vector<double>
pi;
72 std::vector<double>
z;
73 std::vector<double> pk;
76 std::vector<double> ei_cache;
77 std::vector<double> ei;
78 std::vector<double> sw;
79 std::vector<double> swz;
80 std::vector<double> se;
81 std::vector<double> swE;
84 unsigned int GetSize()
const
89 void AddItem(
double new_z,
double new_pk )
92 pk.push_back( new_pk);
94 ei_cache.push_back( 0.0 );
104 void InsertItem(
unsigned int i,
double new_z,
double new_pk )
106 z.insert(
z.begin() +
i, new_z);
107 pk.insert(pk.begin() +
i, new_pk);
109 ei_cache.insert(ei_cache.begin() +
i, 0.0 );
110 ei.insert( ei.begin() +
i, 0.0 );
111 sw.insert( sw.begin() +
i, 0.0 );
112 swz.insert(swz.begin() +
i, 0.0 );
113 se.insert( se.begin() +
i, 0.0 );
114 swE.insert(swE.begin() +
i, 0.0 );
119 void RemoveItem(
unsigned int i )
121 z.erase(
z.begin() +
i );
122 pk.erase( pk.begin() +
i );
124 ei_cache.erase( ei_cache.begin() +
i);
125 ei.erase( ei.begin() +
i);
126 sw.erase( sw.begin() +
i);
127 swz.erase( swz.begin() +
i);
128 se.erase(se.begin() +
i);
129 swE.erase(swE.begin() +
i);
136 std::cout <<
"vertex_t size: " << GetSize() << std::endl;
138 for (
unsigned int i =0; i < GetSize(); ++
i)
140 std::cout <<
" z = " << _z[
i] <<
" pk = " << _pk[
i] << std::endl;
155 _ei_cache = &ei_cache.front();
159 double * __restrict__ _z;
160 double * __restrict__ _pk;
162 double * __restrict__ _ei_cache;
163 double * __restrict__ _ei;
164 double * __restrict__ _sw;
165 double * __restrict__ _swz;
166 double * __restrict__ _se;
167 double * __restrict__ _swE;
174 std::vector<std::vector<reco::TransientTrack> >
175 clusterize(
const std::vector<reco::TransientTrack> &
tracks)
const;
178 std::vector<TransientVertex>
179 vertices(
const std::vector<reco::TransientTrack> &
tracks,
186 vertex_t & gvertices,
bool useRho0,
double & rho0) const
189 void dump(const
double beta, const vertex_t &
y,
190 const track_t & tks, const
int verbosity = 0) const;
191 bool merge(vertex_t &) const;
192 bool merge(vertex_t & y,
double & beta)const;
193 bool purge(vertex_t &, track_t &,
double &,
196 void splitAll( vertex_t & y) const;
197 bool split(const
double beta, track_t &
t, vertex_t & y ) const;
199 double beta0(const
double betamax, track_t & tks, vertex_t & y) const;
201 double Eik(
double const& t_z,
double const& k_z,
double const& t_dz2) const;
203 inline
double local_exp(
double const& inp) const;
204 inline
void local_exp_list(
double* arg_inp,
double* arg_out,const
int arg_arr_size) const;
210 double coolingFactor_;