26 : applyBasicCuts_(cfg.getParameter<
bool>(
"applyBasicCuts")),
27 applyNHighestPt_(cfg.getParameter<
bool>(
"applyNHighestPt")),
28 applyMultiplicityFilter_(cfg.getParameter<
bool>(
"applyMultiplicityFilter")),
29 seedOnlyFromAbove_(cfg.getParameter<
int>(
"seedOnlyFrom")),
30 applyIsolation_(cfg.getParameter<
bool>(
"applyIsolationCut")),
31 chargeCheck_(cfg.getParameter<
bool>(
"applyChargeCheck")),
32 nHighestPt_(cfg.getParameter<
int>(
"nHighestPt")),
33 minMultiplicity_(cfg.getParameter<
int>(
"minMultiplicity")),
34 maxMultiplicity_(cfg.getParameter<
int>(
"maxMultiplicity")),
35 multiplicityOnInput_(cfg.getParameter<
bool>(
"multiplicityOnInput")),
36 ptMin_(cfg.getParameter<double>(
"ptMin")),
37 ptMax_(cfg.getParameter<double>(
"ptMax")),
38 etaMin_(cfg.getParameter<double>(
"etaMin")),
39 etaMax_(cfg.getParameter<double>(
"etaMax")),
40 phiMin_(cfg.getParameter<double>(
"phiMin")),
41 phiMax_(cfg.getParameter<double>(
"phiMax")),
42 nHitMin_(cfg.getParameter<double>(
"nHitMin")),
43 nHitMax_(cfg.getParameter<double>(
"nHitMax")),
44 chi2nMax_(cfg.getParameter<double>(
"chi2nMax")),
45 minHitChargeStrip_(cfg.getParameter<double>(
"minHitChargeStrip")),
46 minHitIsolation_(cfg.getParameter<double>(
"minHitIsolation")),
47 rphirecHitsTag_(cfg.getParameter<
edm::
InputTag>(
"rphirecHits")),
48 matchedrecHitsTag_(cfg.getParameter<
edm::
InputTag>(
"matchedrecHits")),
49 nHitMin2D_(cfg.getParameter<unsigned
int>(
"nHitMin2D")),
52 minHitsinTIB_(cfg.getParameter<
edm::
ParameterSet>(
"minHitsPerSubDet").getParameter<
int>(
"inTIB")),
53 minHitsinTOB_(cfg.getParameter<
edm::
ParameterSet>(
"minHitsPerSubDet").getParameter<
int>(
"inTOB")),
54 minHitsinTID_(cfg.getParameter<
edm::
ParameterSet>(
"minHitsPerSubDet").getParameter<
int>(
"inTID")),
55 minHitsinTEC_(cfg.getParameter<
edm::
ParameterSet>(
"minHitsPerSubDet").getParameter<
int>(
"inTEC")),
56 minHitsinBPIX_(cfg.getParameter<
edm::
ParameterSet>(
"minHitsPerSubDet").getParameter<
int>(
"inBPIX")),
57 minHitsinFPIX_(cfg.getParameter<
edm::
ParameterSet>(
"minHitsPerSubDet").getParameter<
int>(
"inFPIX")) {
60 <<
"applying basic track cuts ..." 75 <<
"only retain tracks isolated at least by " <<
minHitIsolation_ <<
" cm from other rechits";
79 <<
"only retain hits with at least " <<
minHitChargeStrip_ <<
" ADC counts of total cluster charge";
128 for (Tracks::const_iterator it = tracks.begin(); it != tracks.end(); ++it) {
130 float pt = trackp->
pt();
131 float eta = trackp->
eta();
132 float phi = trackp->
phi();
142 result.push_back(trackp);
157 int nhitinTIB = 0, nhitinTOB = 0, nhitinTID = 0;
158 int nhitinTEC = 0, nhitinBPIX = 0, nhitinFPIX = 0;
159 unsigned int nHit2D = 0;
160 unsigned int thishit = 0;
164 int type =
hit->geographicalId().subdetId();
181 const DetId detId(
hit->geographicalId());
184 <<
"@SUB=CalibrationTrackSelector::detailedHitsCheck" 185 <<
"DetId.det() != DetId::Tracker (=" <<
DetId::Tracker <<
"), but " << detId.det() <<
".";
199 else if (
kBPIX == detId.subdetId())
201 else if (
kFPIX == detId.subdetId())
205 if (nHit2D < nHitMin2D_ && this->
isHit2D(*
hit))
224 if (detId.subdetId() ==
kBPIX || detId.subdetId() ==
kFPIX) {
227 if (dynamic_cast<const SiStripRecHit2D *>(&hit))
229 else if (dynamic_cast<const SiStripMatchedRecHit2D *>(&hit))
231 else if (dynamic_cast<const ProjectedSiStripRecHit2D *>(&hit))
234 edm::LogError(
"UnkownType") <<
"@SUB=CalibrationTrackSelector::isHit2D" 235 <<
"Tracker hit not in pixel and neither SiStripRecHit2D nor " 236 <<
"SiStripMatchedRecHit2D nor ProjectedSiStripRecHit2D.";
241 edm::LogWarning(
"DetectorMismatch") <<
"@SUB=CalibrationTrackSelector::isHit2D" 242 <<
"Hit not in tracker with 'official' dimension >=2.";
260 const std::vector<uint16_t> amplitudesmono(monocluster.
amplitudes().begin(), monocluster.
amplitudes().end());
261 for (
size_t ia = 0; ia < amplitudesmono.size(); ++ia) {
262 charge1 += amplitudesmono[ia];
266 const std::vector<uint16_t> amplitudesstereo(stereocluster.
amplitudes().begin(), stereocluster.
amplitudes().end());
267 for (
size_t ia = 0; ia < amplitudesstereo.size(); ++ia) {
268 charge2 += amplitudesstereo[ia];
276 const std::vector<uint16_t> amplitudes(cluster->
amplitudes().begin(), cluster->
amplitudes().end());
277 for (
size_t ia = 0; ia < amplitudes.size(); ++ia) {
278 charge1 += amplitudes[ia];
283 }
else if (unmatchedhit) {
286 const std::vector<uint16_t> amplitudes(origcluster->
amplitudes().begin(), origcluster->
amplitudes().end());
287 for (
size_t ia = 0; ia < amplitudes.size(); ++ia) {
288 charge1 += amplitudes[ia];
317 for (istripSt = stripcollSt.
data().begin(); istripSt != stripcollSt.
data().end(); ++istripSt) {
329 for (istripStm = stripcollStm.
data().begin(); istripStm != stripcollStm.
data().end(); ++istripStm) {
348 std::sort(sortedTracks.begin(), sortedTracks.end(),
ptComparator);
352 for (Tracks::const_iterator it = sortedTracks.begin(); it != sortedTracks.end(); ++it) {
354 result.push_back(*it);
static constexpr auto TEC
const edm::InputTag matchedrecHitsTag_
const bool multiplicityOnInput_
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
SiStripCluster const & monoCluster() const
Tracks select(const Tracks &tracks, const edm::Event &evt) const
select tracks
constexpr uint32_t rawId() const
get the raw id
double phi() const
azimuthal angle of momentum vector
const double minHitChargeStrip_
const bool applyIsolation_
const int minMultiplicity_
const bool applyMultiplicityFilter_
double eta() const
pseudorapidity of momentum vector
bool isIsolated(const TrackingRecHit *therechit, const edm::Event &evt) const
bool detailedHitsCheck(const reco::Track *track, const edm::Event &evt) const
checking hit requirements beyond simple number of valid hits
virtual int dimension() const =0
double pt() const
track transverse momentum
data_type const * data(size_t cell) const
auto recHits() const
Access to reconstructed hits on the track.
const edm::InputTag rphirecHitsTag_
ClusterRef cluster() const
unsigned short numberOfValidHits() const
number of valid hits found
~CalibrationTrackSelector()
destructor
bool isOkCharge(const TrackingRecHit *therechit) const
static constexpr auto TOB
virtual LocalPoint localPosition() const =0
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const double minHitIsolation_
const int maxMultiplicity_
SiStripRecHit2D originalHit() const
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
static constexpr auto TIB
const unsigned int nHitMin2D_
std::vector< const reco::Track * > Tracks
SiStripCluster const & stereoCluster() const
Tracks theNHighestPtTracks(const Tracks &tracks) const
filter the n highest pt tracks
const bool applyBasicCuts_
bool isHit2D(const TrackingRecHit &hit) const
CalibrationTrackSelector(const edm::ParameterSet &cfg)
constructor
LocalPoint localPosition() const final
Tracks basicCuts(const Tracks &tracks, const edm::Event &evt) const
apply basic cuts on pt,eta,phi,nhit
DetId geographicalId() const
const int seedOnlyFromAbove_
static constexpr auto TID
const std::vector< uint8_t > & amplitudes() const
const bool applyNHighestPt_