Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More general form of valid hit in pixel function (81X) #14027

Merged
merged 6 commits into from Apr 28, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions DQM/TrackingMonitor/src/PackedCandidateTrackValidator.cc
Expand Up @@ -822,7 +822,7 @@ void PackedCandidateTrackValidator::analyze(const edm::Event& iEvent, const edm:
int diffHitPatternHasValidHitInFirstPixelBarrel = 0;
if(track.hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS) == 0) {
h_selectionFlow->Fill(sf_NoMissingInnerHits);
diffHitPatternHasValidHitInFirstPixelBarrel = static_cast<int>(trackPc.hitPattern().hasValidHitInFirstPixelBarrel()) - static_cast<int>(track.hitPattern().hasValidHitInFirstPixelBarrel());
diffHitPatternHasValidHitInFirstPixelBarrel = static_cast<int>(trackPc.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1)) - static_cast<int>(track.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1));
fillNoFlow(h_diffHitPatternHasValidHitInFirstPixelBarrel, diffHitPatternHasValidHitInFirstPixelBarrel);
}

Expand Down Expand Up @@ -876,7 +876,7 @@ void PackedCandidateTrackValidator::analyze(const edm::Event& iEvent, const edm:
<< "\n "
<< " hitPattern.numberOfValidPixelHits " << diffHitPatternNumberOfValidPixelHits << " " << trackPc.hitPattern().numberOfValidPixelHits() << " " << track.hitPattern().numberOfValidPixelHits()
<< " hitPattern.numberOfValidHits " << diffHitPatternNumberOfValidHits << " " << trackPc.hitPattern().numberOfValidHits() << " " << track.hitPattern().numberOfValidHits()
<< " hitPattern.hasValidHitInFirstPixelBarrel " << diffHitPatternHasValidHitInFirstPixelBarrel << " " << trackPc.hitPattern().hasValidHitInFirstPixelBarrel() << " " << track.hitPattern().hasValidHitInFirstPixelBarrel()
<< " hitPattern.hasValidHitInFirstPixelBarrel " << diffHitPatternHasValidHitInFirstPixelBarrel << " " << trackPc.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1) << " " << track.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1)
<< "\n "
<< " lostInnerHits " << diffLostInnerHits << " " << pcRef->lostInnerHits() << " #"
<< " phi (5e-4) " << diffPhi << " " << trackPc.phi() << " " << track.phi()
Expand Down
6 changes: 3 additions & 3 deletions DataFormats/TrackReco/interface/HitPattern.h
Expand Up @@ -262,9 +262,9 @@ class HitPattern
void printHitPattern(HitCategory category, int position, std::ostream &stream) const;
void print(HitCategory category, std::ostream &stream = std::cout) const;

bool hasValidHitInFirstPixelBarrel() const; // has valid hit in PXB layer 1
bool hasValidHitInFirstPixelEndcap() const; // has valid hit in PXF layer 1

// has valid hit in PXB/PXF layer x
bool hasValidHitInPixelLayer(enum PixelSubdetector::SubDetector, uint16_t layer) const;
int numberOfHits(HitCategory category) const; // not-null
int numberOfValidHits() const; // not-null, valid

Expand Down
29 changes: 10 additions & 19 deletions DataFormats/TrackReco/src/HitPattern.cc
Expand Up @@ -323,30 +323,21 @@ uint16_t HitPattern::getHitPatternByAbsoluteIndex(int position) const
}
}

bool HitPattern::hasValidHitInFirstPixelBarrel() const
{
for (int i = beginTrackHits; i < endTrackHits; ++i) {
uint16_t pattern = getHitPatternByAbsoluteIndex(i);
if (pixelBarrelHitFilter(pattern) && (getLayer(pattern) == 1)
&& validHitFilter(pattern)) {
return true;
}
}
return false;
}

bool HitPattern::hasValidHitInFirstPixelEndcap() const
bool HitPattern::hasValidHitInPixelLayer(enum PixelSubdetector::SubDetector det, uint16_t layer) const
{
for (int i = beginTrackHits; i < endTrackHits; ++i) {
uint16_t pattern = getHitPatternByAbsoluteIndex(i);
if (pixelEndcapHitFilter(pattern) && (getLayer(pattern) == 1)
&& validHitFilter(pattern)) {
return true;
}
for (int i = beginTrackHits; i < endTrackHits; ++i) {
uint16_t pattern = getHitPatternByAbsoluteIndex(i);
bool pixelHitFilter = ( (det==1 && pixelBarrelHitFilter(pattern)) ||
(det==2 && pixelEndcapHitFilter(pattern)) );
if (pixelHitFilter && (getLayer(pattern) == layer) && validHitFilter(pattern)) {
return true;
}
return false;
}
return false;
}


int HitPattern::numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
{
bool hasMono[SubstrMask + 1][LayerMask + 1];
Expand Down
4 changes: 2 additions & 2 deletions ElectroWeakAnalysis/ZEE/src/ZeeCandidateFilter.cc
Expand Up @@ -821,7 +821,7 @@ Bool_t ZeeCandidateFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSe

if ( useValidFirstPXBHit1_ || calculateValidFirstPXBHit1_ ) {

Bool_t fail = !maxETelec1.gsfTrack()->hitPattern().hasValidHitInFirstPixelBarrel();
Bool_t fail = !maxETelec1.gsfTrack()->hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1);

if ( useValidFirstPXBHit1_ && fail ) { std::cout << "Filter: there is no valid hit for electron #1 in 1st layer PXB" << std::endl;
delete [] sorted;
Expand All @@ -846,7 +846,7 @@ Bool_t ZeeCandidateFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSe

if ( useValidFirstPXBHit2_ || calculateValidFirstPXBHit2_ ) {

Bool_t fail = !maxETelec2.gsfTrack()->hitPattern().hasValidHitInFirstPixelBarrel();
Bool_t fail = !maxETelec2.gsfTrack()->hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1);

if ( useValidFirstPXBHit2_ && fail ) { std::cout << "Filter: there is no valid hit for electron #1 in 1st layer PXB" << std::endl;
delete [] sorted;
Expand Down
Expand Up @@ -213,7 +213,7 @@ void pat::PATPackedCandidateProducer::produce(edm::StreamID, edm::Event& iEvent,
phiAtVtx = ctrack->phi();
int nlost = ctrack->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS);
if (nlost == 0) {
if (ctrack->hitPattern().hasValidHitInFirstPixelBarrel()) {
if (ctrack->hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1)) {
lostHits = pat::PackedCandidate::validHitInFirstPixelBarrelLayer;
}
} else {
Expand Down
2 changes: 1 addition & 1 deletion RecoBTag/TrackProbability/src/TrackClassFilter.cc
Expand Up @@ -17,7 +17,7 @@ const TrackProbabilityCategoryData & d = category.category;
double eta=track.eta();
double nhit=track.numberOfValidHits();
double npix=track.hitPattern().numberOfValidPixelHits();
bool firstPixel=track.hitPattern().hasValidHitInFirstPixelBarrel();
bool firstPixel=track.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1);
double chi=track.normalizedChi2();


Expand Down
Expand Up @@ -557,7 +557,7 @@ double CutBasedElectronID::robustSelection(const reco::GsfElectron* electron ,
if (mishits > cut[22]) // expected missing hits
return result;
// positive cut[23] means to demand a valid hit in 1st layer PXB
if (cut[23] > 0 && !electron->gsfTrack()->hitPattern().hasValidHitInFirstPixelBarrel())
if (cut[23] > 0 && !electron->gsfTrack()->hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1))
return result;

// cut[24]: Dist cut[25]: dcot
Expand Down
2 changes: 1 addition & 1 deletion RecoVertex/PrimaryVertexProducer/src/DAClusterizerInZ.cc
Expand Up @@ -524,7 +524,7 @@ void DAClusterizerInZ::dump(const double beta, const vector<vertex_t> & y, const
cout << setw (3)<< i << ")" << setw (8) << fixed << setprecision(4)<< tz << " +/-" << setw (6)<< sqrt(tks[i].dz2);

if(tks[i].tt->track().quality(reco::TrackBase::highPurity)){ cout << " *";}else{cout <<" ";}
if(tks[i].tt->track().hitPattern().hasValidHitInFirstPixelBarrel()){ cout <<"+"; }else{ cout << "-"; }
if(tks[i].tt->track().hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1)){ cout <<"+"; }else{ cout << "-"; }
cout << setw(1) << tks[i].tt->track().hitPattern().pixelBarrelLayersWithMeasurement(); // see DataFormats/TrackReco/interface/HitPattern.h
cout << setw(1) << tks[i].tt->track().hitPattern().pixelEndcapLayersWithMeasurement();
cout << setw(1) << hex << tks[i].tt->track().hitPattern().trackerLayersWithMeasurement() -
Expand Down
Expand Up @@ -745,7 +745,7 @@ void DAClusterizerInZ_vect::dump(const double beta, const vertex_t & y,
} else {
LogDebug("DAClusterizerinZ_vectorized") << " ";
}
if (tks.tt[i]->track().hitPattern().hasValidHitInFirstPixelBarrel()) {
if (tks.tt[i]->track().hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1)) {
LogDebug("DAClusterizerinZ_vectorized") << "+";
} else {
LogDebug("DAClusterizerinZ_vectorized") << "-";
Expand Down