221 using namespace reco;
224 const float barrel_lenght=30;
236 vector<const reco::Jet*> selectedJets;
245 selectedJets.push_back(&(*it));
266 std::vector<float> zProjections;
267 std::vector<float> zWeights;
269 for(vector<const reco::Jet*>::iterator jit = selectedJets.begin() ; jit != selectedJets.end() ; jit++)
271 float px=(*jit)->px();
272 float py=(*jit)->py();
273 float pz=(*jit)->pz();
274 float pt=(*jit)->pt();
275 float eta=(*jit)->eta();
276 float jetZOverRho = (*jit)->momentum().Z()/(*jit)->momentum().Rho();
279 DetId id = it->detId();
282 float zmodule = modulepos.
z() - ((modulepos.
x()-
beamSpot->x0())*px+(modulepos.
y()-
beamSpot->y0())*py)/pt * pz/
pt;
284 for(
size_t j = 0 ;
j < detset.
size() ;
j ++)
290 fabs(modulepos.
z())<barrel_lenght &&
301 fabs(modulepos.
z())>barrel_lenght &&
309 Point3DBase<float, GlobalTag> v = trackerGeometry->idToDet(
id)->surface().toGlobal(
pp->localParametersV( aCluster,( *trackerGeometry->idToDetUnit(
id)))[0].first) ;
319 zProjections.push_back(z);
322 if(fabs(modulepos.
z())<barrel_lenght)
325 float sizeY=aCluster.
sizeY();
329 float weight_sizeY_up = (sizeY_up-sizeY)/(sizeY_up-sizeY_peak);
330 float weight_sizeY_down = (sizeY-sizeY_down)/(sizeY_peak-sizeY_down);
331 weight_sizeY_down = weight_sizeY_down *(weight_sizeY_down>0)*(weight_sizeY_down<1);
332 weight_sizeY_up = weight_sizeY_up *(weight_sizeY_up>0)*(weight_sizeY_up<1);
333 float weight_sizeY = weight_sizeY_up + weight_sizeY_down;
336 float rho =
sqrt(v_bs.x()*v_bs.x() + v_bs.y()*v_bs.y());
349 weightCluster_down = weightCluster_down *(weightCluster_down>0)*(weightCluster_down<1);
350 weightCluster_up = weightCluster_up *(weightCluster_up>0)*(weightCluster_up<1);
351 float weight_charge = weightCluster_up + weightCluster_down;
354 weight = weight_dPhi * weight_sizeY * weight_rho * weight_sizeX1 * weight_charge ;
356 else if(fabs(modulepos.
z())>barrel_lenght)
363 zWeights.push_back(weight);
374 std::multimap<float,float> zWithW;
376 for(
i=0;
i<zProjections.size();
i++) zWithW.insert(std::pair<float,float>(zProjections[
i],zWeights[i]));
378 for(std::multimap<float,float>::iterator it=zWithW.begin(); it!=zWithW.end(); it++,i++) { zProjections[
i]=it->first; zWeights[
i]=it->second; }
382 std::vector<float> zWeightsSquared;
383 for(std::vector<float>::iterator it=zWeights.begin();it!=zWeights.end();it++) {zWeightsSquared.push_back((*it)*(*it));}
390 float centerWMax=res_step3;
395 if(zProjections.size() > 2)
399 e(0, 0) = 0.0015 * 0.0015;
400 e(1, 1) = 0.0015 * 0.0015;
405 pOut->push_back(thePV);
410 e(0, 0) = 0.0015 * 0.0015;
411 e(1, 1) = 0.0015 * 0.0015;
416 pOut->push_back(thePV);
424 const float half_width_peak=1;
425 float nWeightedTot=0;
426 float nWeightedTotPeak=0;
427 for(std::vector<float>::iterator it = zProjections.begin();it!=zProjections.end(); it++)
429 nWeightedTot+=zWeights[it-zProjections.begin()];
430 if((res-half_width_peak)<=(*it) && (*it)<=(res+half_width_peak))
432 nWeightedTotPeak+=zWeights[it-zProjections.begin()];
436 std::auto_ptr<float > zClusterQuality(
new float());
440 *zClusterQuality=nWeightedTotPeak /
sqrt(nWeightedTot/(2*half_width_peak));
441 iEvent.
put(zClusterQuality);
444 iEvent.
put(zClusterQuality);
double m_weight_charge_up
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
bool getByToken(EDGetToken token, Handle< PROD > &result) const
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken
double m_zClusterWidth_step1
Geom::Phi< T > phi() const
math::Error< dimension >::type Error
covariance error matrix (3x3)
double m_weight_charge_peak
std::vector< Vertex > VertexCollection
collection of Vertex objects
double m_zClusterSearchArea_step3
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
double m_weight_charge_down
math::XYZPoint Point
point in the space
edm::EDGetTokenT< edm::View< reco::Jet > > jetsToken
double m_PixelCellHeightOverWidth
Pixel cluster – collection of neighboring pixels above threshold.
double m_zClusterWidth_step3
float FindPeakFastPV(const std::vector< float > &zProjections, const std::vector< float > &zWeights, const float oldVertex, const float m_zClusterWidth, const float m_zClusterSearchArea, const float m_weightCut)
double m_zClusterSearchArea_step2
double m_zClusterWidth_step2
edm::EDGetTokenT< SiPixelClusterCollectionNew > clustersToken