10000 Update KTrack · KIT-CMS/Kappa@395bd6a · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit 395bd6a

Browse files
committed
Update KTrack
1 parent 4e91541 commit 395bd6a

File tree

3 files changed

+51
-35
lines changed

3 files changed

+51
-35
lines changed

DataFormats/interface/KTrack.h

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,44 +7,61 @@
77
#ifndef KAPPA_TRACK_H
88
#define KAPPA_TRACK_H
99

10-
#include <Math/GenVector/VectorUtil.h>
1110
#include "KBasic.h"
1211

13-
enum KTrackQuality
12+
#include <Math/GenVector/VectorUtil.h>
13+
14+
/** Data format definition for KTracks and KLeptons
15+
16+
*/
17+
18+
/// TrackBase::TrackQuality
19+
/// from DataFormats/TrackReco/interface/TrackBase.h
20+
namespace KTrackQuality {
21+
22+
enum KTrackQualityType
1423
{
15-
TQ_Loose = 1 << 0, TQ_Tight = 1 << 1, TQ_HighPurity = 1 << 2, TQ_Confirmed = 1 << 3, TQ_GoodIterative = 1 << 4
24+
undefQuality = -1, loose = 0, tight = 1, highPurity = 2, confirmed = 3, goodIterative = 4,
25+
looseSetWithPV = 5, highPuritySetWithPV = 6, qualitySize = 7
1626
};
27+
}
1728

29+
/// Kappa Track data format
30+
/** copy from DataFormats/TrackReco/interface/TrackBase.h
31+
copy from DataFormats/TrackReco/interface/Track.h */
1832
struct KTrack : public KLV
1933
{
20-
RMPoint ref; // reference point ("vertex")
34+
/// reference point (formerly known as "vertex", not the PV)
35+
RMPoint ref;
36+
37+
/// charge and fit quality
2138
char charge;
2239
float chi2, nDOF;
2340
float errPt, errEta, errPhi, errDxy, errDz;
24-
unsigned short nPixelLayers, nStripLayers;
25-
unsigned short nValidPixelHits, nValidStripHits;
26-
unsigned short nValidMuonHits, nLostMuonHits, nBadMuonHits;
27-
unsigned short nValidHits, nLostHits;
28-
unsigned short nInnerHits, nLostInnerHits;
29-
int quality;
30-
31-
double getTrackIsolation(std::vector<KTrack> *tracks, double isoCone = 0.3, double vetoCone = 0.01, double minPt = 1.5)
41+
42+
/// number of hits or tracker layers in detector components (used for lepton IDs)
43+
/// DataFormats/TrackReco/interface/HitPattern.h (numberOf...)
44+
/// layers and hits for pixel, strip tracker and muon system
45+
unsigned short nValidPixelHits; //< number of valid hits in the pixel detector (for tight muID)
46+
unsigned short nValidStripHits; //< number of valid hits in the strip detector
47+
unsigned short nValidMuonHits; //< number of valid hits in the muon system (for tight muID)
48+
49+
unsigned short nLostHits;
50+
unsigned short nPixelLayers, nStripLayers; // for soft/tight muID as trackerLayers
51+
/// functions for combinations
52+
inline unsigned short nValidHits() const { return nValidPixelHits + nValidStripHits + nValidMuonHits; };
53+
inline unsigned short nValidTrackerHits() const { return nValidPixelHits + nValidStripHits; };
54+
inline unsigned short nTrackerLayers() const { return nPixelLayers + nStripLayers; };
55+
56+
/// quality bitset
57+
unsigned char qualityBits; // for soft muID
58+
inline bool quality(KTrackQuality::KTrackQualityType bit) const
3259
{
33-
double sum = 0.;
34-
for (std::vector<KTrack>::iterator it = tracks->begin(); it != tracks->end(); it++)
35-
{
36-
if (it->p4.pt() > minPt && ROOT::Math::VectorUtil::DeltaR(it->p4, p4) > vetoCone && ROOT::Math::VectorUtil::DeltaR(it->p4, p4) < isoCone)
37-
{
38-
// "real" track isolation takes only tracks near the studied track into account
39-
// (but there is even more magic why one needs isodeposits)
40-
//if ( std::abs(it->ref.z() - ref.z()) > 0.2 || sqrt( (it->ref.x() - ref.x() )*(it->ref.x() - ref.x() ) + (it->ref.y() - ref.y())*(it->ref.y() - ref.y()) + (it->ref.z() - ref.z())*(it->ref.z() - ref.z()) ) > 0.1 )
41-
// continue;
42-
sum += it->p4.pt();
43-
}
44-
}
45-
return sum;
46-
}
60+
if (bit < 0) return false;
61+
return (qualityBits & (1 << bit));
62+
};
4763

64+
/// distances to primary vertex, beamspot and interaction point
4865
double getDxy(const KVertex * pv) const
4966
{
5067
if (!pv)
@@ -157,7 +174,6 @@ struct KMuonTriggerCandidate : public KTrack
157174
bool isoDecision;
158175
float isoQuantity;
159176
};
160-
161177
typedef std::vector<KMuonTriggerCandidate> KMuonTriggerCandidates;
162178

163179
const unsigned char KLeptonFlavourMask = 3;

Producers/interface/KTrackProducer.h

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,16 @@ class KTrackProducer : public KBaseMultiLVProducer<edm::View<reco::Track>, KTrac
4141
out.charge = in.charge();
4242
out.chi2 = in.chi2();
4343
out.nDOF = in.ndof();
44-
out.quality = in.qualityMask();
44+
out.qualityBits = in.qualityMask();
4545
out.errDxy = in.dxyError();
4646
out.errDz = in.dzError();
4747

4848
out.nValidPixelHits = in.hitPattern().numberOfValidPixelHits();
4949
out.nValidStripHits = in.hitPattern().numberOfValidStripHits();
5050
out.nValidMuonHits = in.hitPattern().numberOfValidMuonHits();
51-
out.nLostMuonHits = in.hitPattern().numberOfLostMuonHits();
52-
out.nBadMuonHits = in.hitPattern().numberOfBadMuonHits();
53-
out.nValidHits = in.hitPattern().numberOfValidHits();
5451
out.nLostHits = in.hitPattern().numberOfLostHits();
5552
out.nPixelLayers = in.hitPattern().pixelLayersWithMeasurement();
5653
out.nStripLayers = in.hitPattern().trackerLayersWithMeasurement();
57-
out.nInnerHits = in.trackerExpectedHitsInner().numberOfHits();
58-
out.nLostInnerHits = in.trackerExpectedHitsInner().numberOfLostHits();
5954
}
6055
};
6156

Producers/interface/KTrackSummaryProducer.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,19 @@ class KTrackSummaryProducer : public KBaseMultiProducer<edm::View<reco::Track>,
1616

1717
static const std::string getLabel() { return "TrackSummary"; }
1818

19-
virtual void clearProduct(OutputType &output) { output.nTracks = 0; output.nTracksHQ = 0; }
19+
virtual void clearProduct(OutputType &output)
20+
{
21+
output.nTracks = 0;
22+
output.nTracksHQ = 0;
23+
}
24+
2025
virtual void fillProduct(const InputType &in, OutputType &out,
2126
const std::string &name, const edm::InputTag *tag, const edm::ParameterSet &pset)
2227
{
2328
out.nTracks = in.size();
2429
InputType::const_iterator lvit;
2530
for (lvit = in.begin(); lvit < in.end(); ++lvit)
26-
if (lvit->qualityMask() & TQ_HighPurity)
31+
if (lvit->qualityMask() & KTrackQuality::highPurity)
2732
++out.nTracksHQ;
2833
}
2934
};

0 commit comments

Comments
 (0)
0