189 auto creco = std::make_unique<Centrality>();
195 creco->etHFhitSumPlus_ = 0;
196 creco->etHFhitSumMinus_ = 0;
200 for(
size_t ihit = 0; ihit<hits->
size(); ++ ihit){
201 const HFRecHit & rechit = (*hits)[ ihit ];
202 if(rechit.
id().
ieta() > 0 )
203 creco->etHFhitSumPlus_ += rechit.
energy();
204 if(rechit.
id().
ieta() < 0)
205 creco->etHFhitSumMinus_ += rechit.
energy();
209 creco->etHFhitSumMinus_ = inputCentrality->EtHFhitSumMinus();
210 creco->etHFhitSumPlus_ = inputCentrality->EtHFhitSumPlus();
215 creco->etHFtowerSumPlus_ = 0;
216 creco->etHFtowerSumMinus_ = 0;
217 creco->etMidRapiditySum_ = 0;
223 for(
size_t i = 0;
i<towers->
size(); ++
i){
229 creco->etHFtowerSumPlus_ += tower.
pt();
230 if(eta >
hfEtaCut_) creco->etHFtruncatedPlus_ += tower.
pt();
233 creco->etHFtowerSumMinus_ += tower.
pt();
234 if(eta < -
hfEtaCut_) creco->etHFtruncatedMinus_ += tower.
pt();
238 creco->etHFtowerSumMinus_ = inputCentrality->EtHFtowerSumMinus();
239 creco->etHFtowerSumPlus_ = inputCentrality->EtHFtowerSumPlus();
240 creco->etHFtruncatedMinus_ = inputCentrality->EtHFtruncatedMinus();
241 creco->etHFtruncatedPlus_ = inputCentrality->EtHFtruncatedPlus();
246 }
else if(
reuseAny_) creco->etMidRapiditySum_ = inputCentrality->EtMidRapiditySum();
250 creco->etHFtowerSumMinus_ = inputCentrality->EtHFtowerSumMinus();
251 creco->etHFtowerSumPlus_ = inputCentrality->EtHFtowerSumPlus();
252 creco->etMidRapiditySum_ = inputCentrality->EtMidRapiditySum();
257 creco->etEESumPlus_ = 0;
258 creco->etEESumMinus_ = 0;
267 for(
unsigned int i = 0;
i < ebHits->
size(); ++
i){
271 creco->etEBSum_ +=
et;
274 for(
unsigned int i = 0;
i < eeHits->
size(); ++
i){
279 creco->etEESumPlus_ +=
et;
281 creco->etEESumMinus_ +=
et;
286 creco->etEESumMinus_ = inputCentrality->EtEESumMinus();
287 creco->etEESumPlus_ = inputCentrality->EtEESumPlus();
288 creco->etEBSum_ = inputCentrality->EtEBSum();
293 creco->pixelMultiplicity_ = 0;
306 recHitIterator != recHitRange.
end(); ++recHitIterator) {
313 double abeta =
std::abs(rechitPos.eta());
314 int clusterSize = recHit->
cluster()->size();
315 if ( abeta < 0.5 && clusterSize < 1)
continue;
316 if ( abeta > 0.5 && abeta < 1 && clusterSize < 2)
continue;
317 if ( abeta > 1. && abeta < 1.5 && clusterSize < 3)
continue;
318 if ( abeta > 1.5 && abeta < 2. && clusterSize < 4)
continue;
319 if ( abeta > 2. && abeta < 2.5 && clusterSize < 6)
continue;
320 if ( abeta > 2.5 && abeta < 5 && clusterSize < 9)
continue;
325 creco->pixelMultiplicity_ = nPixel;
328 creco->pixelMultiplicity_ = inputCentrality->multiplicityPixel();
337 double vxError=-999.;
338 double vyError=-999.;
339 double vzError=-999.;
344 unsigned int daughter = 0;
347 for (
unsigned int i = 0 ;
i< recoVertices->size(); ++
i){
348 daughter = (*recoVertices)[
i].tracksSize();
349 if( daughter > (*recoVertices)[greatestvtx].tracksSize()) greatestvtx =
i;
352 if(recoVertices->size()>0){
353 vx = (*recoVertices)[greatestvtx].position().x();
354 vy = (*recoVertices)[greatestvtx].position().y();
355 vz = (*recoVertices)[greatestvtx].position().z();
356 vxError = (*recoVertices)[greatestvtx].xError();
357 vyError = (*recoVertices)[greatestvtx].yError();
358 vzError = (*recoVertices)[greatestvtx].zError();
367 double trackCounter = 0;
368 double trackCounterEta = 0;
369 double trackCounterEtaPt = 0;
371 for(
unsigned int i = 0 ;
i < tracks->size(); ++
i){
382 double dz= track.
dz(v1);
383 double dzsigma2 = track.
dzError()*track.
dzError()+vzError*vzError;
384 double dxy= track.
dxy(v1);
387 const double pterrcut = 0.1;
388 const double dzrelcut = 3.0;
389 const double dxyrelcut = 3.0;
394 dz*dz < dzrelcut*dzrelcut * dzsigma2 &&
395 dxy*dxy < dxyrelcut*dxyrelcut * dxysigma2 ){
400 creco->trackMultiplicity_ =
nTracks;
401 creco->ntracksPtCut_ = trackCounter;
402 creco->ntracksEtaCut_ = trackCounterEta;
403 creco->ntracksEtaPtCut_ = trackCounterEtaPt;
407 creco->trackMultiplicity_ = inputCentrality->Ntracks();
408 creco->ntracksPtCut_= inputCentrality->NtracksPtCut();
409 creco->ntracksEtaCut_= inputCentrality->NtracksEtaCut();
410 creco->ntracksEtaPtCut_= inputCentrality->NtracksEtaPtCut();
417 int nPixelTracks = pixeltracks->size();
418 creco->nPixelTracks_ = nPixelTracks;
422 creco->nPixelTracks_ = inputCentrality->NpixelTracks();
427 creco->zdcSumPlus_ = 0;
428 creco->zdcSumMinus_ = 0;
433 for(
size_t ihit = 0; ihit<hits->
size(); ++ ihit){
434 const ZDCRecHit & rechit = (*hits)[ ihit ];
439 creco->zdcSumPlus_ += rechit.
energy();
446 creco->zdcSumMinus_ += rechit.
energy();
451 creco->zdcSumPlus_ = -9;
452 creco->zdcSumMinus_ = -9;
456 creco->zdcSumMinus_ = inputCentrality->zdcSumMinus();
457 creco->zdcSumPlus_ = inputCentrality->zdcSumPlus();
reco::TrackBase::TrackQuality trackQuality_
virtual double pt() const final
transverse momentum
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
const unsigned int nTracks(const reco::Vertex &sv)
const_iterator end(bool update=false) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
edm::EDGetTokenT< EcalRecHitCollection > srcEBhits_
virtual double eta() const final
momentum pseudorapidity
bool getByToken(EDGetToken token, Handle< PROD > &result) const
edm::EDGetTokenT< Centrality > reuseTag_
double dxyError() const
error on dxy
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
int zside() const
get the z-side of the cell (1/-1)
edm::EDGetTokenT< VertexCollection > srcVertex_
edm::EDGetTokenT< CaloTowerCollection > srcTowers_
double eta() const
pseudorapidity of momentum vector
double pt() const
track transverse momentum
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
int ieta() const
get the cell ieta
edm::EDGetTokenT< HFRecHitCollection > srcHFhits_
Abs< T >::type abs(const T &t)
const GlobalPoint & getPosition(const DetId &id) const
Get the position of a given detector id.
virtual LocalPoint localPosition() const final
float lowGainEnergy() const
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
double dzError() const
error on dz
DetId id() const
get the id
T const * product() const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
edm::EDGetTokenT< ZDCRecHitCollection > srcZDChits_
ClusterRef cluster() const
bool isHF(int etabin, int depth)
edm::ESHandle< CaloGeometry > cGeo
et
define resolution functions of each parameter
bool quality(const TrackQuality) const
Track quality.
const_iterator find(id_type i, bool update=false) const
edm::EDGetTokenT< SiPixelRecHitCollection > srcPixelhits_
edm::EDGetTokenT< TrackCollection > srcPixelTracks_
edm::EDGetTokenT< TrackCollection > srcTracks_
HcalZDCDetId id() const
get the id
edm::ESHandle< TrackerGeometry > tGeo
DetId geographicalId() const
edm::EDGetTokenT< EcalRecHitCollection > srcEEhits_
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
const_iterator begin(bool update=false) const
const TrackerGeomDet * idToDet(DetId) const