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

TrackBase & HitPattern redesign discussed on the RECO meeting of 08/05/2014 #4455

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
119497e
Changes ported to 7_1_0_pre5
JuantAldea Mar 26, 2014
c8e9148
names fixed
JuantAldea Mar 26, 2014
9436370
TrackReco adapted to the new interface
JuantAldea Mar 26, 2014
8e4b3de
Fixed errors arising from compiling Aligment
JuantAldea Mar 27, 2014
dc74a72
Fixed errors arising from compiling Calibration
JuantAldea Mar 27, 2014
89c59d9
Fixed errors arising from compiling CommonTools
JuantAldea Mar 28, 2014
a4b45ff
Fixed errors arising from compiling DQM
JuantAldea Mar 28, 2014
0e4eb86
Fixed errors arising from compiling DQMOffline and DQMServices
JuantAldea Mar 28, 2014
2d4d6a2
Fixed errors arising from compiling EgammaAnalysis
JuantAldea Mar 28, 2014
f7b996b
Fixed errors arising from compiling ElectroWeakAnalysis
JuantAldea Mar 28, 2014
01d3c42
Fixed errors arising from compiling FastSimulation
JuantAldea Mar 28, 2014
25bba81
Fixed errors arising from compiling Fireworks
JuantAldea Mar 28, 2014
7a36c9d
Fixed errors arising from compiling HLTrigger
JuantAldea Mar 28, 2014
6f2926d
Fixed errors arising from compiling HLTriggerOffline
JuantAldea Mar 28, 2014
d0e9a6a
Fixed errors arising from compiling JetMETCorrections
JuantAldea Mar 29, 2014
2476070
Fixed errors arising from compiling MuonAnalysis
JuantAldea Mar 29, 2014
174ac92
Fixed errors arising from compiling PhysicsTools
JuantAldea Mar 29, 2014
72d1c14
Fixed errors arising from compiling RecoBTag
JuantAldea Mar 29, 2014
4f5b21f
Fixed errors arising from compiling RecoEgamma
JuantAldea Mar 29, 2014
41e01aa
Fixed errors arising from compiling RecoLocalMuon
JuantAldea Mar 29, 2014
b74ce89
Fixed errors arising from compiling RecoLocalTracker
JuantAldea Mar 29, 2014
2fe3512
Fixed errors arising from compiling RecoMET
JuantAldea Mar 29, 2014
8be1c5c
Fixed errors arising from compiling RecoMuon
JuantAldea Mar 29, 2014
0300907
Fixed errors arising from compiling RecoParticleFlow
JuantAldea Mar 29, 2014
8340b09
Fixed errors arising from compiling RecoPixelVertexing
JuantAldea Mar 29, 2014
4285653
Fixed errors arising from compiling RecoTauTag
JuantAldea Mar 29, 2014
d77f776
Fixed errors arising from compiling RecoTracker
JuantAldea Mar 31, 2014
08c6d8c
Fixed errors arising from compiling RecoVertex
JuantAldea Mar 31, 2014
9cadc50
Fixed errors arising from compiling SimTracker
JuantAldea Mar 31, 2014
5b262c6
Fixed errors arising from compiling Validation
JuantAldea Mar 31, 2014
65cd7b9
Some aesthetic changes, eg, line shortening
JuantAldea Apr 1, 2014
85e8e19
Added integer values to enum
JuantAldea Apr 10, 2014
ea9690b
Python files changed to use the new interface of HitPattern
JuantAldea Apr 11, 2014
4cce7c8
Fixed errors arising from compiling SinMuon. THIS COMMIT NEEDS AN EXP…
JuantAldea Apr 11, 2014
f59ba93
HitPattern resized. Added index based insertion. Added some printouts…
JuantAldea Apr 29, 2014
9fce270
Added some prints for debugging.
JuantAldea Apr 29, 2014
d18dd6e
Removed index-based insertion. Unpacking logic moved into MuonTrackLo…
JuantAldea Apr 29, 2014
299798a
Debug prints removal
JuantAldea Apr 30, 2014
86e1a2b
Old comment removed
JuantAldea Apr 30, 2014
c607c64
File permissions fixed
JuantAldea May 13, 2014
ae9fe92
Added HitPattern conversion, not working.
JuantAldea May 13, 2014
d2b7f73
More work done in the conversion. Not tested
JuantAldea May 19, 2014
d9ba24e
conflicts resolved
JuantAldea May 23, 2014
e74c9fd
Integrated with the rest of changes
JuantAldea May 23, 2014
8657689
Bug fixed. Removed ProxyClass usage.
JuantAldea May 28, 2014
1e0ff17
Debug prints removed from rule
JuantAldea May 28, 2014
5259476
File adapted to new interface
JuantAldea May 28, 2014
e9efcab
Fixed a couple of usages that are not compiled
JuantAldea May 29, 2014
67482ee
Comments removal
JuantAldea May 30, 2014
df6558c
Style changes
JuantAldea May 30, 2014
0e81ec0
More style changes
JuantAldea May 30, 2014
3e572fc
Append hits now throws exceptions. Minor changes on binary operations
JuantAldea May 30, 2014
89fc94e
TrackBase::getHitPattern renamed to hitPattern
JuantAldea May 30, 2014
bceae3a
Proxy conversion class removed.
JuantAldea May 31, 2014
b053538
Merged HitPattern-no-pull from repository JuantAldea
JuantAldea Jun 3, 2014
c504c0d
Added missed parameter.
JuantAldea Jun 3, 2014
d75900c
Merged refs/pull/4099/head from repository cms-sw
JuantAldea Jun 16, 2014
e3caa29
getCategoryIndexRange inline
JuantAldea Jun 17, 2014
9398771
Changed to fit the new interface
JuantAldea Jun 17, 2014
44814e1
Parameter removed from muon methods
JuantAldea Jun 18, 2014
272697f
Parameter removed from numberOfValidXYZ
JuantAldea Jun 18, 2014
125f808
Category parameter removed from method family numberOfValid[SUBDETECT…
JuantAldea Jun 19, 2014
23a4b00
IO rule commented. ALL_HITS removed
JuantAldea Jun 19, 2014
79aca0f
Undo formatting changes
JuantAldea Jun 20, 2014
3bd4fae
Undo formatting changes 2
JuantAldea Jun 20, 2014
5249d5c
Undo formatting changes 3
JuantAldea Jun 20, 2014
34df2fd
Merged TrackBase-Hitpattern-Redesign-no-pull from repository JuantAldea
JuantAldea Jun 20, 2014
f881c7f
Undo formatting changes 4
JuantAldea Jun 20, 2014
5e90589
Merged TrackBase-Hitpattern-Redesign-no-pull from repository JuantAldea
JuantAldea Jun 20, 2014
6549857
Fixed a couple of errors
JuantAldea Jun 20, 2014
f594614
Pattern length switched back to 11bits
JuantAldea Jun 23, 2014
a4c1d7b
More parameter removal
JuantAldea Jun 23, 2014
7f96a05
Undo formatting changes 5
JuantAldea Jun 24, 2014
3e5e9fa
Undo formatting changes 6
JuantAldea Jun 24, 2014
c228033
Undo formatting changes 7
JuantAldea Jun 24, 2014
8c99acc
Undo formatting changes 8
JuantAldea Jun 24, 2014
e955d46
Tiny reformat
JuantAldea Jun 24, 2014
a42f0cb
Array range fixed
JuantAldea Jun 24, 2014
24157f5
Unit test restored
JuantAldea Jun 25, 2014
23bb406
Merged TrackBase-Hitpattern-Redesign-no-pull from repository JuantAldea
JuantAldea Jun 28, 2014
a0a0b21
Changed to fit with the new interface
JuantAldea Jun 29, 2014
096a56d
More parameters removed
JuantAldea Jun 29, 2014
b69fccd
Print added back
JuantAldea Jun 29, 2014
97a967f
IOrule updated
JuantAldea Jun 29, 2014
880dabd
Removed unused variable
JuantAldea Jun 29, 2014
e4fe25f
Formatting changes
JuantAldea Jun 29, 2014
bacfaeb
Restored Doxygen comments. setHitPattern -> appendHits. Added reset m…
JuantAldea Jul 7, 2014
9fbf1c6
Fixed TRACK_HITS -> MISSING_INNER_HITS
JuantAldea Jul 7, 2014
f899f9f
GsfTrack class version increased
JuantAldea Jul 7, 2014
0d613ea
Restored doxygen comments.
JuantAldea Jul 7, 2014
822013a
Removed CVS line
JuantAldea Jul 7, 2014
dfb8d28
Formatting changes
JuantAldea Jul 8, 2014
22fd344
Some types changed. Divisions changed to bit operations.
JuantAldea Jul 8, 2014
e1e0d4c
Fixed IOrule mono/stero bit. HitPattern cleared before hit insertion.
JuantAldea Jul 10, 2014
0ab537e
Example code restored
JuantAldea Jul 12, 2014
0d5e974
More Doxygen restored.
JuantAldea Jul 12, 2014
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
27 changes: 13 additions & 14 deletions Alignment/OfflineValidation/plugins/PrimaryVertexValidation.cc
Expand Up @@ -669,20 +669,19 @@ bool PrimaryVertexValidation::isHit2D(const TrackingRecHit &hit) const
// ------------ method to check the presence of pixel hits ------------
bool PrimaryVertexValidation::hasFirstLayerPixelHits(const reco::TransientTrack track)
{
bool accepted = false;
// hit pattern of the track
const reco::HitPattern& p = track.hitPattern();
for (int i=0; i<p.numberOfHits(); i++) {
uint32_t pattern = p.getHitPattern(i);
if (p.pixelBarrelHitFilter(pattern) || p.pixelEndcapHitFilter(pattern) ) {
if (p.getLayer(pattern) == 1) {
if (p.validHitFilter(pattern)) {
accepted = true;
}
}
}
}
return accepted;
using namespace reco;
const HitPattern &p = track.hitPattern();
for (int i = 0; i < p.numberOfHits(HitPattern::TRACK_HITS); i++) {
uint32_t pattern = p.getHitPattern(HitPattern::TRACK_HITS, i);
if (p.pixelBarrelHitFilter(pattern) || p.pixelEndcapHitFilter(pattern) ) {
if (p.getLayer(pattern) == 1) {
if (p.validHitFilter(pattern)) {
return true;
}
}
}
}
return false;
}

// ------------ method called once each job before begining the event loop ------------
Expand Down
30 changes: 7 additions & 23 deletions Calibration/IsolatedParticles/plugins/IsolatedTracksCone.cc
Expand Up @@ -393,9 +393,9 @@ void IsolatedTracksCone::analyze(const edm::Event& iEvent,
////////////////////////////

const reco::HitPattern& hitp = pTrack->hitPattern();
int nLayersCrossed = hitp.trackerLayersWithMeasurement();
int nOuterHits = hitp.stripTOBLayersWithMeasurement()
+hitp.stripTECLayersWithMeasurement() ;
int nLayersCrossed = hitp.trackerLayersWithMeasurement();
int nOuterHits = hitp.stripTOBLayersWithMeasurement() +
hitp.stripTECLayersWithMeasurement();


double simP = 0;
Expand Down Expand Up @@ -1430,14 +1430,12 @@ void IsolatedTracksCone::printTrack(const reco::Track* pTrack) {
<< " TrackQuality " << pTrack->qualityName(trackQuality_) << " " << pTrack->quality(trackQuality_)
<< std::endl;

if( printTrkHitPattern_ ) {
const reco::HitPattern& p = pTrack->hitPattern();

for (int i=0; i<p.numberOfHits(); i++) {
p.printHitPattern(i, std::cout);
if(printTrkHitPattern_) {
const reco::HitPattern &p = pTrack->hitPattern();
for (int i = 0; i < p.numberOfHits(reco::HitPattern::TRACK_HITS); i++) {
p.printHitPattern(reco::HitPattern::TRACK_HITS, i, std::cout);
}
}

}

double IsolatedTracksCone::DeltaPhi(double v1, double v2) {
Expand All @@ -1463,18 +1461,4 @@ double IsolatedTracksCone::DeltaR(double eta1, double phi1,

//define this as a plug-in
DEFINE_FWK_MODULE(IsolatedTracksCone);















170 changes: 94 additions & 76 deletions Calibration/IsolatedParticles/plugins/IsolatedTracksNxN.cc
Expand Up @@ -527,12 +527,11 @@ void IsolatedTracksNxN::analyze(const edm::Event& iEvent, const edm::EventSetup&
}
}

const reco::HitPattern& hitp = pTrack->hitPattern();
const reco::HitPattern& hitpIn = pTrack->trackerExpectedHitsInner();
const reco::HitPattern& hitpOut = pTrack->trackerExpectedHitsOuter();
const reco::HitPattern &hitp = pTrack->hitPattern();

int nLayersCrossed = hitp.trackerLayersWithMeasurement() ;
int nOuterHits = hitp.stripTOBLayersWithMeasurement()+hitp.stripTECLayersWithMeasurement() ;
int nLayersCrossed = hitp.trackerLayersWithMeasurement();
int nOuterHits = hitp.stripTOBLayersWithMeasurement()
+ hitp.stripTECLayersWithMeasurement();

bool ifGood = pTrack->quality(trackQuality_);
double pt1 = pTrack->pt();
Expand Down Expand Up @@ -820,31 +819,42 @@ void IsolatedTracksNxN::analyze(const edm::Event& iEvent, const edm::EventSetup&
t_trackChiSq ->push_back( chisq1 );
t_trackNOuterHits ->push_back( nOuterHits );
t_NLayersCrossed ->push_back( nLayersCrossed );

t_trackHitsTOB ->push_back( hitp.stripTOBLayersWithMeasurement() );
t_trackHitsTEC ->push_back( hitp.stripTECLayersWithMeasurement() );
t_trackHitInMissTOB ->push_back( hitpIn.stripTOBLayersWithoutMeasurement() );
t_trackHitInMissTEC ->push_back( hitpIn.stripTECLayersWithoutMeasurement() );
t_trackHitInMissTIB ->push_back( hitpIn.stripTIBLayersWithoutMeasurement() );
t_trackHitInMissTID ->push_back( hitpIn.stripTIDLayersWithoutMeasurement() );
t_trackHitInMissTIBTID ->push_back( hitpIn.stripTIBLayersWithoutMeasurement() + hitpIn.stripTIDLayersWithoutMeasurement() );

t_trackHitOutMissTOB ->push_back( hitpOut.stripTOBLayersWithoutMeasurement() );
t_trackHitOutMissTEC ->push_back( hitpOut.stripTECLayersWithoutMeasurement() );
t_trackHitOutMissTIB ->push_back( hitpOut.stripTIBLayersWithoutMeasurement() );
t_trackHitOutMissTID ->push_back( hitpOut.stripTIDLayersWithoutMeasurement() );
t_trackHitOutMissTOBTEC ->push_back( hitpOut.stripTOBLayersWithoutMeasurement() + hitpOut.stripTECLayersWithoutMeasurement() );

t_trackHitInMeasTOB ->push_back( hitpIn.stripTOBLayersWithMeasurement() );
t_trackHitInMeasTEC ->push_back( hitpIn.stripTECLayersWithMeasurement() );
t_trackHitInMeasTIB ->push_back( hitpIn.stripTIBLayersWithMeasurement() );
t_trackHitInMeasTID ->push_back( hitpIn.stripTIDLayersWithMeasurement() );
t_trackHitOutMeasTOB ->push_back( hitpOut.stripTOBLayersWithMeasurement() );
t_trackHitOutMeasTEC ->push_back( hitpOut.stripTECLayersWithMeasurement() );
t_trackHitOutMeasTIB ->push_back( hitpOut.stripTIBLayersWithMeasurement() );
t_trackHitOutMeasTID ->push_back( hitpOut.stripTIDLayersWithMeasurement() );
t_trackOutPosOutHitDr ->push_back( trackOutPosOutHitDr );
t_trackL ->push_back( trackL );
using namespace reco;
t_trackHitsTOB ->push_back(hitp.stripTOBLayersWithMeasurement());
t_trackHitsTEC ->push_back(hitp.stripTECLayersWithMeasurement());

t_trackHitInMissTOB ->push_back(hitp.stripTOBLayersWithoutMeasurement(HitPattern::MISSING_INNER_HITS));
t_trackHitInMissTEC ->push_back(hitp.stripTECLayersWithoutMeasurement(HitPattern::MISSING_INNER_HITS));
t_trackHitInMissTIB ->push_back(hitp.stripTIBLayersWithoutMeasurement(HitPattern::MISSING_INNER_HITS));
t_trackHitInMissTID ->push_back(hitp.stripTIDLayersWithoutMeasurement(HitPattern::MISSING_INNER_HITS));
t_trackHitInMissTIBTID ->push_back(hitp.stripTIBLayersWithoutMeasurement(HitPattern::MISSING_INNER_HITS)
+ hitp.stripTIDLayersWithoutMeasurement(HitPattern::MISSING_INNER_HITS));

t_trackHitOutMissTOB ->push_back(hitp.stripTOBLayersWithoutMeasurement(HitPattern::MISSING_OUTER_HITS));
t_trackHitOutMissTEC ->push_back(hitp.stripTECLayersWithoutMeasurement(HitPattern::MISSING_OUTER_HITS));
t_trackHitOutMissTIB ->push_back(hitp.stripTIBLayersWithoutMeasurement(HitPattern::MISSING_OUTER_HITS));
t_trackHitOutMissTID ->push_back(hitp.stripTIDLayersWithoutMeasurement(HitPattern::MISSING_OUTER_HITS));
t_trackHitOutMissTOBTEC ->push_back(hitp.stripTOBLayersWithoutMeasurement(HitPattern::MISSING_OUTER_HITS)
+ hitp.stripTECLayersWithoutMeasurement(HitPattern::MISSING_OUTER_HITS));

// The following push_back(0) where calls to methods XYZLayersWithMeasurement() on
// HiPatterns ExpectedMissingInner and ExpectedMissingOuter. Since those HitPatterns
// only contain MISSING_HITS, any call to XYZLayersWithMeasuremnt() whould return 0.
// As example:
// t_trackHitInMeasTOB ->push_back( hitpIn.stripTOBLayersWithMeasurement() );
// where hitpIn was expectedInnerHits.
t_trackHitInMeasTOB ->push_back(0);
t_trackHitInMeasTEC ->push_back(0);
t_trackHitInMeasTIB ->push_back(0);
t_trackHitInMeasTID ->push_back(0);

t_trackHitOutMeasTOB ->push_back(0);
t_trackHitOutMeasTEC ->push_back(0);
t_trackHitOutMeasTIB ->push_back(0);
t_trackHitOutMeasTID ->push_back(0);

t_trackOutPosOutHitDr ->push_back(trackOutPosOutHitDr );
t_trackL ->push_back(trackL );

t_maxNearP31x31 ->push_back( maxNearP31x31 );
t_maxNearP21x21 ->push_back( maxNearP21x21 );
Expand Down Expand Up @@ -1732,53 +1742,61 @@ double IsolatedTracksNxN::DeltaR(double eta1, double phi1, double eta2, double p
return std::sqrt(deta*deta + dphi*dphi);
}

void IsolatedTracksNxN::printTrack(const reco::Track* pTrack) {

std::string theTrackQuality = "highPurity";
reco::TrackBase::TrackQuality trackQuality_ = reco::TrackBase::qualityByName(theTrackQuality);

std::cout << " Reference Point " << pTrack->referencePoint() <<"\n"
<< " TrackMmentum " << pTrack->momentum()
<< " (pt,eta,phi)(" << pTrack->pt()<<","<<pTrack->eta()<<","<<pTrack->phi()<<")"
<< " p " << pTrack->p() << "\n"
<< " Normalized chi2 " << pTrack->normalizedChi2() <<" charge " << pTrack->charge()
<< " qoverp() " << pTrack->qoverp() <<"+-" << pTrack->qoverpError()
<< " d0 " << pTrack->d0() << "\n"
<< " NValidHits " << pTrack->numberOfValidHits() << " NLostHits " << pTrack->numberOfLostHits()
<< " TrackQuality " << pTrack->qualityName(trackQuality_) << " " << pTrack->quality(trackQuality_)
<< std::endl;

if( printTrkHitPattern_ ) {
const reco::HitPattern& p = pTrack->hitPattern();
const reco::HitPattern& p1 = pTrack->trackerExpectedHitsInner();
const reco::HitPattern& p2 = pTrack->trackerExpectedHitsOuter();

std::cout<<"default " << std::endl;
for (int i=0; i<p.numberOfHits(); i++) {
p.printHitPattern(i, std::cout);
}
std::cout<<"trackerExpectedHitsInner() " << std::endl;
for (int i=0; i<p1.numberOfHits(); i++) {
p1.printHitPattern(i, std::cout);
void IsolatedTracksNxN::printTrack(const reco::Track* pTrack)
{
using namespace reco;
std::string theTrackQuality = "highPurity";
reco::TrackBase::TrackQuality trackQuality_ = reco::TrackBase::qualityByName(theTrackQuality);

std::cout << " Reference Point " << pTrack->referencePoint() <<"\n"
<< " TrackMmentum " << pTrack->momentum()
<< " (pt,eta,phi)(" << pTrack->pt()<<","<<pTrack->eta()<<","<<pTrack->phi()<<")"
<< " p " << pTrack->p() << "\n"
<< " Normalized chi2 " << pTrack->normalizedChi2() <<" charge " << pTrack->charge()
<< " qoverp() " << pTrack->qoverp() <<"+-" << pTrack->qoverpError()
<< " d0 " << pTrack->d0() << "\n"
<< " NValidHits " << pTrack->numberOfValidHits() << " NLostHits " << pTrack->numberOfLostHits()
<< " TrackQuality " << pTrack->qualityName(trackQuality_) << " " << pTrack->quality(trackQuality_)
<< std::endl;

if( printTrkHitPattern_ ) {
const reco::HitPattern &p = pTrack->hitPattern();

std::cout<<"default " << std::endl;
for(int i = 0; i < p.numberOfHits(HitPattern::TRACK_HITS); i++){
p.printHitPattern(HitPattern::TRACK_HITS, i, std::cout);
}

std::cout<<"trackerExpectedHitsInner() " << std::endl;
for(int i = 0; i < p.numberOfHits(HitPattern::MISSING_INNER_HITS); i++){
p.printHitPattern(HitPattern::MISSING_INNER_HITS, i, std::cout);
}

std::cout<<"trackerExpectedHitsOuter() " << std::endl;
for(int i = 0; i < p.numberOfHits(HitPattern::MISSING_OUTER_HITS); i++){
p.printHitPattern(HitPattern::MISSING_OUTER_HITS, i, std::cout);
}

std::cout << "\n \t trackerLayersWithMeasurement() "
<< p.trackerLayersWithMeasurement()
<< "\n \t pixelLayersWithMeasurement() "
<< p.pixelLayersWithMeasurement()
<< "\n \t stripLayersWithMeasurement() "
<< p.stripLayersWithMeasurement()
<< "\n \t pixelBarrelLayersWithMeasurement() "
<< p.pixelBarrelLayersWithMeasurement()
<< "\n \t pixelEndcapLayersWithMeasurement() "
<< p.pixelEndcapLayersWithMeasurement()
<< "\n \t stripTIBLayersWithMeasurement() "
<< p.stripTIBLayersWithMeasurement()
<< "\n \t stripTIDLayersWithMeasurement() "
<< p.stripTIDLayersWithMeasurement()
<< "\n \t stripTOBLayersWithMeasurement() "
<< p.stripTOBLayersWithMeasurement()
<< "\n \t stripTECLayersWithMeasurement() "
<< p.stripTECLayersWithMeasurement()
<< std::endl;
}
std::cout<<"trackerExpectedHitsOuter() " << std::endl;
for (int i=0; i<p2.numberOfHits(); i++) {
p2.printHitPattern(i, std::cout);
}


std::cout << "\n \t trackerLayersWithMeasurement() " << p.trackerLayersWithMeasurement()
<< "\n \t pixelLayersWithMeasurement() " << p.pixelLayersWithMeasurement()
<< "\n \t stripLayersWithMeasurement() " << p.stripLayersWithMeasurement()
<< "\n \t pixelBarrelLayersWithMeasurement() " << p.pixelBarrelLayersWithMeasurement()
<< "\n \t pixelEndcapLayersWithMeasurement() " << p.pixelEndcapLayersWithMeasurement()
<< "\n \t stripTIBLayersWithMeasurement() " << p.stripTIBLayersWithMeasurement()
<< "\n \t stripTIDLayersWithMeasurement() " << p.stripTIDLayersWithMeasurement()
<< "\n \t stripTOBLayersWithMeasurement() " << p.stripTOBLayersWithMeasurement()
<< "\n \t stripTECLayersWithMeasurement() " << p.stripTECLayersWithMeasurement()
<< std::endl;

}
}

//define this as a plug-in
Expand Down
39 changes: 17 additions & 22 deletions Calibration/IsolatedParticles/src/TrackSelection.cc
Expand Up @@ -21,33 +21,28 @@ namespace spr{
if (pTrack->normalizedChi2() > parameters.maxChi2) select = false;
if (dpbyp > parameters.maxDpOverP) select = false;

const reco::HitPattern &hitp = pTrack->hitPattern();
if (parameters.minLayerCrossed>0 || parameters.minOuterHit>0) {
const reco::HitPattern& hitp = pTrack->hitPattern();
if (parameters.minLayerCrossed>0 && hitp.trackerLayersWithMeasurement() < parameters.minLayerCrossed) select = false;
if (parameters.minOuterHit>0 && (hitp.stripTOBLayersWithMeasurement()+hitp.stripTECLayersWithMeasurement() ) < parameters.minOuterHit) select = false;
if (debug) {
std::cout << "Default Hit Pattern with " << hitp.numberOfHits() << " hits" << std::endl;
for (int i=0; i<hitp.numberOfHits(); i++)
hitp.printHitPattern(i, std::cout);
}
if (parameters.minLayerCrossed > 0 && hitp.trackerLayersWithMeasurement() < parameters.minLayerCrossed) select = false;
if (parameters.minOuterHit > 0 && (hitp.stripTOBLayersWithMeasurement() + hitp.stripTECLayersWithMeasurement()) < parameters.minOuterHit) select = false;
if (debug) {
std::cout << "Default Hit Pattern with " << hitp.numberOfHits(reco::HitPattern::TRACK_HITS) << " hits" << std::endl;
hitp.print(reco::HitPattern::TRACK_HITS, std::cout);
}
}
if (parameters.maxInMiss >= 0) {
const reco::HitPattern& hitp = pTrack->trackerExpectedHitsInner();
if (hitp.trackerLayersWithoutMeasurement() > parameters.maxInMiss) select = false;
if (debug) {
std::cout << "Inner Hit Pattern with " << hitp.numberOfHits() << " hits" << std::endl;
for (int i=0; i<hitp.numberOfHits(); i++)
hitp.printHitPattern(i, std::cout);
}
if (hitp.trackerLayersWithoutMeasurement(reco::HitPattern::MISSING_INNER_HITS) > parameters.maxInMiss) select = false;
if (debug) {
std::cout << "Inner Hit Pattern with " << hitp.numberOfHits(reco::HitPattern::MISSING_INNER_HITS) << " hits" << std::endl;
hitp.print(reco::HitPattern::MISSING_INNER_HITS, std::cout);
}
}
if (parameters.maxOutMiss >= 0) {
const reco::HitPattern& hitp = pTrack->trackerExpectedHitsOuter();
if (hitp.trackerLayersWithoutMeasurement() > parameters.maxOutMiss) select = false;
if (debug) {
std::cout << "Outer Hit Pattern with " << hitp.numberOfHits() << " hits" << std::endl;
for (int i=0; i<hitp.numberOfHits(); i++)
hitp.printHitPattern(i, std::cout);
}
if (hitp.trackerLayersWithoutMeasurement(reco::HitPattern::MISSING_OUTER_HITS) > parameters.maxOutMiss) select = false;
if (debug) {
std::cout << "Outer Hit Pattern with " << hitp.numberOfHits(reco::HitPattern::MISSING_OUTER_HITS) << " hits" << std::endl;
hitp.print(reco::HitPattern::MISSING_OUTER_HITS, std::cout);
}
}
if (debug) std::cout << "Final Selection Result " << select << std::endl;

Expand Down
28 changes: 15 additions & 13 deletions CommonTools/ParticleFlow/plugins/PFCandWithSuperClusterExtractor.cc
Expand Up @@ -82,19 +82,21 @@ IsoDeposit PFCandWithSuperClusterExtractor::depositFromObject(const Event & even
double eta = cand.eta(), phi = cand.phi();
reco::Particle::Point vtx = cand.vertex();
for (PFCandidateCollection::const_iterator it = PFCandH->begin(), ed = PFCandH->end(); it != ed; ++it) {
double dR = deltaR(it->eta(), it->phi(), eta, phi);
// If MissHits>0 (possibly reconstructed as a photon in the PF in this case, kill the the photon if sharing the same SC)
if (cand.gsfTrack()->trackerExpectedHitsInner().numberOfHits()>0 && theMissHitVetoSuperClusterMatch &&
it->mva_nothing_gamma() > 0.99 && cand.superCluster().isNonnull()
&& it->superClusterRef().isNonnull()
&& cand.superCluster() == it->superClusterRef()) continue;
if ( (dR < theDR_Max) && (dR > theDR_Veto) &&
(std::abs(it->vz() - cand.vz()) < theDiff_z) &&
((it->vertex() - vtx).Rho() < theDiff_r)) {
// ok
reco::isodeposit::Direction dirTrk(it->eta(), it->phi());
deposit.addDeposit(dirTrk, it->pt());
}
double dR = deltaR(it->eta(), it->phi(), eta, phi);
// If MissHits>0 (possibly reconstructed as a photon in the PF in this case, kill the the photon if sharing the same SC)
if (cand.gsfTrack()->hitPattern().numberOfHits(reco::HitPattern::MISSING_INNER_HITS) > 0
&& theMissHitVetoSuperClusterMatch && it->mva_nothing_gamma() > 0.99
&& cand.superCluster().isNonnull() && it->superClusterRef().isNonnull()
&& cand.superCluster() == it->superClusterRef()){
continue;
}
if ((dR < theDR_Max) && (dR > theDR_Veto)
&& (std::abs(it->vz() - cand.vz()) < theDiff_z)
&& ((it->vertex() - vtx).Rho() < theDiff_r)) {
// ok
reco::isodeposit::Direction dirTrk(it->eta(), it->phi());
deposit.addDeposit(dirTrk, it->pt());
}
}

return deposit;
Expand Down
3 changes: 1 addition & 2 deletions CommonTools/ParticleFlow/python/EITopPAG_cff.py
Expand Up @@ -89,7 +89,7 @@
src = cms.InputTag("pfElectronsFromVertexEI"),
cut = cms.string('''abs(eta)<2.5 && pt>20. &&
gsfTrackRef.isAvailable() &&
gsfTrackRef.trackerExpectedHitsInner.numberOfLostHits<2 &&
gsfTrackRef.hitPattern().numberOfLostHits('MISSING_INNER_HITS')<2 &&
(gsfElectronRef.pfIsolationVariables().sumChargedHadronPt+
max(0.,gsfElectronRef.pfIsolationVariables().sumNeutralHadronEt+
gsfElectronRef.pfIsolationVariables().sumPhotonEt-
Expand All @@ -99,7 +99,6 @@
)



pfNoElectron.topCollection = 'pfIsolatedElectronsEI'
pfNoElectron.bottomCollection = 'pfNoMuon'

Expand Down
Expand Up @@ -5,7 +5,7 @@
pfIsolatedElectrons = cms.EDFilter(
"PFCandidateFwdPtrCollectionStringFilter",
src = cms.InputTag("pfElectronsFromVertex"),
cut = cms.string(" pt > 5 & gsfElectronRef.isAvailable() & gsfTrackRef.trackerExpectedHitsInner.numberOfLostHits<2 & "\
cut = cms.string("pt > 5 & gsfElectronRef.isAvailable() & gsfTrackRef.hitPattern().numberOfLostHits('MISSING_INNER_HITS')<2 & "\
"gsfElectronRef.pfIsolationVariables().sumChargedHadronPt + "\
"gsfElectronRef.pfIsolationVariables().sumNeutralHadronEt + "\
"gsfElectronRef.pfIsolationVariables().sumPhotonEt "\
Expand Down
Expand Up @@ -3,7 +3,7 @@
pfSelectedElectrons = cms.EDFilter(
"GenericPFCandidateSelector",
src = cms.InputTag("pfElectronsFromVertex"),
cut = cms.string("pt>5 && gsfTrackRef.isNonnull && gsfTrackRef.trackerExpectedHitsInner.numberOfLostHits<2")
cut = cms.string("pt>5 && gsfTrackRef.isNonnull && gsfTrackRef.hitPattern().numberOfLostHits('MISSING_INNER_HITS')<2")
)


Expand Down