285 vector<float> rawEnergyVec;
289 vector<HcalDetId> detidvec;
325 if (trackCollection->size()==0)
return;
329 reco::IsolatedPixelTrackCandidateCollection::const_iterator isoMatched=trackCollection->begin();
331 for (reco::IsolatedPixelTrackCandidateCollection::const_iterator it = trackCollection->begin(); it!=trackCollection->end(); it++)
334 if (
abs((trit->pt() - it->pt())/it->pt()) < 0.005 &&
abs(trit->eta() - it->eta()) < 0.01)
341 if (!matched)
continue;
344 if (fabs(trit->eta())>1.47&&trit->hitPattern().numberOfValidStripTECHits()<
MinNTECHitsEndcap)
continue;
347 std::vector<int> usedHits;
350 calEnergy =
sqrt(trit->px()*trit->px()+trit->py()*trit->py()+trit->pz()*trit->pz()+0.14*0.14);
355 double corrHCAL = 1.;
360 rvert =
sqrt(trit->vx()*trit->vx()+trit->vy()*trit->vy()+trit->vz()*trit->vz());
366 double phiecal=info.trkGlobPosAtEcal.phi();
368 double etahcal=info.trkGlobPosAtHcal.eta();
392 ietatrue = tempId.
ieta();
393 iphitrue = tempId.
iphi();
396 if (etahcal>1.392 && etahcal<3.0)
400 ietatrue = tempId.
ieta();
401 iphitrue = tempId.
iphi();
408 if( fabs(etaecal) > 1.47 ) rmin = 0.07*(fabs(etaecal)-0.47)*1.2;
409 if( fabs(etaecal) > 2.2 ) rmin = 0.07*(fabs(etaecal)-0.47)*1.4;
417 float ecal_cluster = 0.;
423 for (std::vector<EcalRecHit>::const_iterator ehit=Hitecal.begin(); ehit!=Hitecal.end(); ehit++)
426 bool hitIsUsed=
false;
427 int hitHashedIndex=-10000;
439 for (uint32_t
i=0;
i<usedHits.size();
i++)
441 if (usedHits[
i]==hitHashedIndex) hitIsUsed=
true;
443 if (hitIsUsed)
continue;
444 usedHits.push_back(hitHashedIndex);
453 double phihit = pos.
phi();
454 double etahit = pos.
eta();
456 double dphi = fabs(phiecal - phihit);
457 if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
458 double deta = fabs(etaecal - etahit);
459 double dr =
sqrt(dphi*dphi + deta*deta);
462 econus = econus + (*ehit).energy();
465 if (dr < 0.13) ecal_cluster += (*ehit).energy();
483 bool hitIsUsed=
false;
484 int hitHashedIndex=hhit->id().hashed_index();
485 for (uint32_t
i=0;
i<usedHits.size();
i++)
487 if (usedHits[
i]==hitHashedIndex) hitIsUsed=
true;
489 if (hitIsUsed)
continue;
490 usedHits.push_back(hitHashedIndex);
498 double phihit = pos.
phi();
499 double etahit = pos.
eta();
501 int iphihitm = (hhit->id()).iphi();
502 int ietahitm = (hhit->id()).ieta();
503 int depthhit = (hhit->id()).depth();
504 double enehit = hhit->energy() * recal;
506 if (depthhit!=1)
continue;
508 double dphi = fabs(info.trkGlobPosAtHcal.phi() - phihit);
509 if(dphi > 4.*atan(1.)) dphi = 8.*atan(1.) - dphi;
510 double deta = fabs(info.trkGlobPosAtHcal.eta() - etahit);
511 double dr =
sqrt(dphi*dphi + deta*deta);
530 int iphihitm2 = (hhit2->id()).iphi();
531 int ietahitm2 = (hhit2->id()).ieta();
532 int depthhit2 = (hhit2->id()).depth();
533 double enehit2 = hhit2->energy() * recal;
535 if ( iphihitm==iphihitm2 && ietahitm==ietahitm2 && depthhit!=depthhit2){
537 enehit = enehit+enehit2;
546 MaxHit.
ietahitm = (hhit->id()).ieta();
547 MaxHit.
iphihitm = (hhit->id()).iphi();
548 MaxHit.
depthhit = (hhit->id()).depth();
557 Bool_t passCuts = kFALSE;
574 bool hitIsUsed=
false;
575 int hitHashedIndex=hhit->id().hashed_index();
576 for (uint32_t
i=0;
i<usedHits.size();
i++)
578 if (usedHits[
i]==hitHashedIndex) hitIsUsed=
true;
580 if (hitIsUsed)
continue;
581 usedHits.push_back(hitHashedIndex);
585 if(MaxHit.
ietahitm*(hhit->id()).ieta()>0)
587 DIETA = MaxHit.
ietahitm - (hhit->id()).ieta();
589 if(MaxHit.
ietahitm*(hhit->id()).ieta()<0)
591 DIETA = MaxHit.
ietahitm - (hhit->id()).ieta();
592 DIETA = DIETA>0 ? DIETA-1 : DIETA+1;
595 int DIPHI =
abs(MaxHit.
iphihitm - (hhit->id()).iphi());
596 DIPHI = DIPHI>36 ? 72-DIPHI : DIPHI;
600 if(
AxB_==
"3x3") numbercell = 1;
601 if(
AxB_==
"5x5") numbercell = 2;
602 if(
AxB_==
"7x7") numbercell = 3;
603 if(
AxB_==
"Cone") numbercell = 1000;
605 if(
abs(DIETA)<=numbercell && (
abs(DIPHI)<=numbercell || (
abs(MaxHit.
ietahitm)>=20 &&
abs(DIPHI)<=numbercell+1)) ) {
620 rawEnergyVec.push_back(hhit->energy() * recal * corrHCAL);
621 detidvec.push_back(hhit->id());
622 detiphi.push_back((hhit->id()).iphi());
623 detieta.push_back((hhit->id()).ieta());
624 i3i5.push_back(iii3i5);
630 rawEnergyVec.push_back(hhit->energy() * recal * corrHCAL);
631 detidvec.push_back(hhit->id());
632 detiphi.push_back((hhit->id()).iphi());
633 detieta.push_back((hhit->id()).ieta());
634 i3i5.push_back(iii3i5);
647 input_to_L3 << rawEnergyVec.size() <<
" " << calEnergy;
650 for (
unsigned int i=0;
i<rawEnergyVec.size();
i++)
652 input_to_L3 <<
" " << rawEnergyVec.at(
i) <<
" " << detidvec.at(
i).rawId() ;
669 cell = detidvec.at(ia).rawId();
682 rawEnergyVec.clear();
701 bool hitIsUsed=
false;
702 int hitHashedIndex=hoItr->id().hashed_index();
703 for (uint32_t
i=0;
i<usedHits.size();
i++)
705 if (usedHits[
i]==hitHashedIndex) hitIsUsed=
true;
707 if (hitIsUsed)
continue;
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
EventNumber_t event() const
int hashedIndex() const
get a compact index for arrays
static FreeTrajectoryState getFreeTrajectoryState(const edm::EventSetup &, const reco::Track &)
get FreeTrajectoryState from different track representations
Geom::Phi< T > phi() const
std::vector< T >::const_iterator const_iterator
void push_back(T const &t)
TrackDetectorAssociator trackAssociator_
double calibrationConeSize_
double getDistInPlaneSimple(const GlobalPoint caloPoint, const GlobalPoint rechitPoint)
int ieta() const
get the cell ieta
double associationConeSize_
const GlobalPoint & getPosition(const DetId &id) const
Get the position of a given detector id.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const_iterator end() const
virtual DetId getClosestCell(const GlobalPoint &r) const
TrackAssociatorParameters parameters_
int iphi() const
get the cell iphi
T const * product() const
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
math::XYZPoint trkGlobPosAtEcal
Track position at different parts of the calorimeter.
const_iterator begin() const