83 const uint32_t recHitFlag = hit.
flags();
88 if(severityLevel==0)
return true;
104 int severityLevel = 999;
134 const edm::Handle<std::vector<reco::TrackExtrapolation> >& trackextrapcoll_h,
150 if(!objectvalidator.
validHit(*hit))
continue;
161 if(!objectvalidator.
validHit(*hit))
continue;
170 if(!objectvalidator.
validHit(*hit))
continue;
176 for(std::vector<reco::TrackExtrapolation>::const_iterator it=trackextrapcoll_h->begin(); it!=trackextrapcoll_h->end(); ++it) {
181 if(!objectvalidator.
validTrack(*track))
continue;
184 if ( extrap->
positions().size()==0 )
continue;
190 if(std::fabs(
point.eta())<1.479) {
214 std::set<PhysicsTower, towercmp>::iterator it=
towers_.find(dummy);
216 if(it==
towers_.end())
return 0;
233 std::set<PhysicsTower, towercmp>::iterator it=
towers_.find(dummy);
235 if(it==
towers_.end())
return 0;
257 std::vector<CaloTowerDetId> ids;
259 if(
id.ietaAbs()<=20) {
268 if(
id.ietaAbs()<=20) {
277 if(
id.ietaAbs()==20 && (
id.iphi()%2)==0)
283 if(
id.ietaAbs()==21) {
286 }
else if(
id.ietaAbs()==1) {
293 if(
id.ietaAbs()<=19 || (
id.ietaAbs()==20 && (
id.iphi()%2)==0)) {
296 }
else if(
id.ietaAbs()>=21) {
302 if(
id.ietaAbs()<=19) {
305 }
else if(
id.ietaAbs()>=21 || (
id.ietaAbs()==20 && (
id.iphi()%2)==1)) {
311 if(
id.ietaAbs()==1) {
314 }
else if(
id.ietaAbs()<=20) {
317 }
else if(
id.ietaAbs()>=21) {
323 if(
id.ietaAbs()==1) {
326 }
else if(
id.ietaAbs()<=20) {
329 }
else if(
id.ietaAbs()>=22) {
332 }
else if(
id.ietaAbs()==21) {
341 for(std::vector<CaloTowerDetId>::const_iterator it=ids.begin(); it!=ids.end(); ++it) {
343 if(twr) neighbors.insert(twr);
404 dummy.
tracks.insert(track);
407 twr->
tracks.insert(track);
489 for(std::set<const HBHERecHit*>::const_iterator it2=it1->second->hcalhits.begin(); it2!=it1->second->hcalhits.end(); ++it2) {
502 v.insert(it1->second->ecalhits.begin(), it1->second->ecalhits.end());
511 v.insert(it1->second->tracks.begin(), it1->second->tracks.end());
591 neighbors_.insert(neighbors.begin(), neighbors.end());
623 std::set<const HBHERecHit*>
v;
625 for(std::set<const HBHERecHit*>::const_iterator it=v.begin(); it!=v.end(); ++it) {
637 std::set<const EcalRecHit*>
v;
639 for(std::set<const EcalRecHit*>::const_iterator it=v.begin(); it!=v.end(); ++it) {
651 std::set<const reco::Track*>
v;
653 for(std::set<const reco::Track*>::const_iterator it=v.begin(); it!=v.end(); ++it) {
665 std::set<const HBHERecHit*>
v;
667 for(std::set<const HBHERecHit*>::const_iterator it=v.begin(); it!=v.end(); ++it) {
679 std::set<const EcalRecHit*>
v;
681 for(std::set<const EcalRecHit*>::const_iterator it=v.begin(); it!=v.end(); ++it) {
693 std::set<const reco::Track*>
v;
695 for(std::set<const reco::Track*>::const_iterator it=v.begin(); it!=v.end(); ++it) {
719 if(!objvalidator.
validHit(*hit))
continue;
724 std::set<const PhysicsTower*> neighbors;
729 rbxs_[rbxidnum].insert(hit, tower, neighbors);
733 hpds_[hpdidnum].insert(hit, tower, neighbors);
737 std::vector<const HBHERecHit*> hpdneighbors;
740 if(hpdneighbors.size()==1) {
741 std::vector<const HBHERecHit*> hpdneighborsneighbors;
744 if(hpdneighborsneighbors.size()==1 && hpdneighborsneighbors[0]==hit && hit->
energy()>hpdneighbors[0]->energy()) {
749 const PhysicsTower* tower2=pto.
findTower(hpdneighbors[0]->
id().ieta(), hpdneighbors[0]->
id().iphi());
750 std::set<const PhysicsTower*> neighbors2;
751 pto.
findNeighbors(hpdneighbors[0]->
id().ieta(), hpdneighbors[0]->
id().iphi(), neighbors2);
754 dihit.
insert(hit, tower, neighbors);
755 dihit.
insert(hpdneighbors[0], tower2, neighbors2);
758 }
else if(hpdneighbors.size()==0) {
762 monohit.
insert(hit, tower, neighbors);
772 for(std::map<int, HBHEHitMap>::const_iterator it=
rbxs_.begin(); it!=
rbxs_.end(); ++it) {
781 for(std::map<int, HBHEHitMap>::const_iterator it=
hpds_.begin(); it!=
hpds_.end(); ++it) {
790 for(std::vector<HBHEHitMap>::const_iterator it=
dihits_.begin(); it!=
dihits_.end(); ++it) {
791 if(it->hitEnergy()>
energy) v.push_back(*it);
798 for(std::vector<HBHEHitMap>::const_iterator it=
monohits_.begin(); it!=
monohits_.end(); ++it) {
799 if(it->hitEnergy()>
energy) v.push_back(*it);
808 std::set<const PhysicsTower*>
temp;
815 for(std::set<const PhysicsTower*>::const_iterator it1=temp.begin(); it1!=temp.end(); ++it1) {
816 for(std::set<const HBHERecHit*>::const_iterator it2=(*it1)->hcalhits.begin(); it2!=(*it1)->hcalhits.end(); ++it2) {
819 neighbors.push_back(hit2);
void getHPDNeighbors(const HBHERecHit *hit, std::vector< const HBHERecHit * > &neighbors, const PhysicsTowerOrganizer &pto)
double p() const
momentum vector magnitude
double hcalEnergySameTowers(void) const
std::set< const HBHERecHit * > hcalhits
T getParameter(std::string const &) const
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
void tracksNeighborTowers(std::set< const reco::Track * > &v) const
double ecalEnergySameTowers_
int nHcalHitsSameTowers(void) const
HcalSubdetector subdet() const
get the subdetector
EcalSeverityLevel::SeverityLevel severityLevel(const DetId &id) const
Evaluate status from id use channelStatus from DB.
double MinValidTrackPtBarrel_
std::map< const HBHERecHit *, const PhysicsTower * >::const_iterator hitmap_const_iterator
int ietaAbs() const
get the absolute value of the tower ieta
std::vector< HBHEHitMap > dihits_
hitmap_const_iterator findHit(const HBHERecHit *hit) const
const DetId & detid() const
void getHPDs(std::vector< HBHEHitMap > &v, double energy) const
HBHEHitMapOrganizer(const edm::Handle< HBHERecHitCollection > &hbhehitcoll_h, const ObjectValidatorAbs &objvalidator, const PhysicsTowerOrganizer &pto, const HcalFrontEndMap *hfemap)
HcalDetId id() const
get the id
neighbor_const_iterator findNeighbor(const PhysicsTower *twr) const
const int lookupRMIndex(DetId fId) const
const DetId & detid() const
std::vector< HBHERecHit >::const_iterator const_iterator
virtual bool validTrack(const reco::Track &) const =0
int nEcalHitsNeighborTowers(void) const
const Item * getValues(DetId fId, bool throwOnFail=true) const
bool validTrack(const reco::Track &) const
neighbor_const_iterator beginNeighbors(void) const
double hcalEnergyNeighborTowers_
void getRBXs(std::vector< HBHEHitMap > &v, double energy) const
const Vector & momentum() const
track momentum vector
ObjectValidator(const edm::ParameterSet &)
void ecalHitsNeighborTowers(std::set< const EcalRecHit * > &v) const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
hitmap_const_iterator endHits(void) const
std::map< const HBHERecHit *, const PhysicsTower * > hits_
void getMonoHits(std::vector< HBHEHitMap > &v, double energy) const
void ecalHitsSameTowers(std::set< const EcalRecHit * > &v) const
double trackEnergyNeighborTowers_
PhysicsTowerOrganizer(const edm::Event &iEvent, const edm::EventSetup &evSetup, const edm::Handle< HBHERecHitCollection > &hbhehitcoll_h, const edm::Handle< EcalRecHitCollection > &ebhitcoll_h, const edm::Handle< EcalRecHitCollection > &eehitcoll_h, const edm::Handle< std::vector< reco::TrackExtrapolation > > &trackextrapcoll_h, const ObjectValidatorAbs &objectvalidator, const CaloTowerConstituentsMap &ctcm)
void calcTracksSameTowers_(void) const
double trackEnergySameTowers_
uint32_t HcalAcceptSeverityLevel_
double ecalEnergyNeighborTowers(void) const
std::set< const PhysicsTower * > neighbors_
void insert(const HBHERecHit *hit, const PhysicsTower *twr, std::set< const PhysicsTower * > &neighbors)
const PhysicsTower * findTower(const CaloTowerDetId &id) const
void tracksSameTowers(std::set< const reco::Track * > &v) const
const int lookupRBXIndex(DetId fId) const
int nHcalHitsNeighborTowers(void) const
CaloTowerDetId towerOf(const DetId &id) const
Get the tower id for this det id (or null if not known)
void calcHcalSameTowers_(void) const
std::map< int, HBHEHitMap > rbxs_
bool UseHcalRecoveredHits_
int nEcalHitsNeighborTowers_
double pt() const
track transverse momentum
const EcalChannelStatus * theEcalChStatus_
bool recoveredRecHit(const DetId &myid, const uint32_t &myflag) const
const EcalRecHitCollection * theEERecHitCollection_
int ieta() const
get the cell ieta
double hcalEnergyNeighborTowers(void) const
int iphi() const
get the tower iphi
double trackEnergySameTowers(void) const
void insert_(CaloTowerDetId &id, const HBHERecHit *hit)
virtual ~ObjectValidator()
double hcalEnergySameTowers_
int nHcalHitsNeighborTowers_
unsigned short numberOfValidHits() const
number of valid hits found
const EcalRecHitCollection * theEBRecHitCollection_
std::set< const PhysicsTower * >::const_iterator neighbor_const_iterator
std::map< int, HBHEHitMap > hpds_
int ietaAbs() const
get the absolute value of the cell ieta
virtual DetId getClosestCell(const GlobalPoint &r) const
std::set< PhysicsTower, towercmp > towers_
int iphi() const
get the cell iphi
double hitEnergy(void) const
void calcEcalSameTowers_(void) const
DetId id() const
get the id
virtual bool validHit(const HBHERecHit &) const =0
double ecalEnergyNeighborTowers_
void calcTracksNeighborTowers_(void) const
void calcHcalNeighborTowers_(void) const
T const * product() const
int zside() const
get the z-side of the tower (1/-1)
const EcalSeverityLevelAlgo * theEcalSevLvlAlgo_
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
std::set< const EcalRecHit * > ecalhits
uint32_t EcalAcceptSeverityLevel_
double trackEnergyNeighborTowers(void) const
double hitEnergyTrackFiducial(void) const
void calcHits_(void) const
std::set< const reco::Track * > tracks
void calcEcalNeighborTowers_(void) const
std::vector< HBHEHitMap > monohits_
int nTracksSameTowers(void) const
void getDiHits(std::vector< HBHEHitMap > &v, double energy) const
int nTracksNeighborTowers_
double ecalEnergySameTowers(void) const
const HcalChannelQuality * theHcalChStatus_
int nEcalHitsSameTowers(void) const
int nTracksNeighborTowers(void) const
uint32_t getValue() const
const HcalFrontEndMap * hfemap_
void hcalHitsSameTowers(std::set< const HBHERecHit * > &v) const
bool validHit(const HBHERecHit &) const
const HcalSeverityLevelComputer * theHcalSevLvlComputer_
void byTowers(std::vector< twrinfo > &v) const
neighbor_const_iterator endNeighbors(void) const
void findNeighbors(const CaloTowerDetId &id, std::set< const PhysicsTower * > &neighbors) const
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
hitmap_const_iterator beginHits(void) const
bool UseEcalRecoveredHits_
void hcalHitsNeighborTowers(std::set< const HBHERecHit * > &v) const