44 for (
unsigned int i = 0;
i < dets.size();
i++) {
48 uint32_t subDet = detInfo.first;
52 if (this->
barrel(subDet)) {
53 r_or_z = dets[
i]->position().perp();
67 if (minRZ > r_or_z) minRZ = r_or_z;
68 if (maxRZ < r_or_z) maxRZ = r_or_z;
69 rangeRorZ_[detInfo] = std::pair<double, double>(minRZ, maxRZ);
72 #ifdef DEBUG_CHECKHITPATTERN
73 RZrangeMap::const_iterator d;
76 std::pair<double, double> rangeRZ = d->second;
77 std::std::cout<<
"CHECKHITPATTERN: Tracker subdetector type="<<detInfo.first<<
" layer="<<detInfo.second
78 <<
" has min r (or z) ="<<rangeRZ.first<<
" and max r (or z) = "<<rangeRZ.second<<std::std::endl;
99 throw cms::Exception(
"NotFound",
"Found DetId that is not in Tracker");
111 const reco::Track& track,
const VertexState& vert,
bool fixHitPattern)
126 bool trkGoesInsideOut = fabs(reco::deltaPhi<const GlobalVector, const GlobalPoint>(p3_trk, vert.position())) < 0.5*
M_PI;
129 LogDebug(
"CHP")<<
"VERT: r="<<vert.position().perp()<<
" z="<<vert.position().z();
144 unsigned int nHitBefore = 0;
150 DetInfo detInfo(subDet, layer);
153 if (this->
barrel(subDet)) {
155 if (vert.position().perp() > maxRZ && trkGoesInsideOut) nHitBefore++;
157 if (fabs(vert.position().z()) > maxRZ) nHitBefore++;
164 unsigned int nMissHitAfter = 0;
171 DetInfo detInfo(subDet, layer);
174 if (this->
barrel(subDet)) {
177 if (vert.position().perp() < minRZ || ! trkGoesInsideOut) nMissHitAfter++;
179 if (fabs(vert.position().z()) < minRZ) nMissHitAfter++;
195 std::cout<<
"=== Hits on Track ==="<<std::endl;
197 std::cout<<
"=== Hits before track ==="<<std::endl;
207 std::cout<<
"hit "<<
i<<
" subdet="<<subdet<<
" layer="<<layer<<
" type "<<hp.
getHitType(hit)<<std::endl;
std::map< DetInfo, std::pair< double, double > > RZrangeMap
unsigned int tibLayer(const DetId &id) const
Result analyze(const edm::EventSetup &iSetup, const reco::Track &track, const VertexState &vert, bool fixHitPattern=true)
static uint32_t getLayer(uint32_t pattern)
std::pair< uint32_t, uint32_t > DetInfo
unsigned int pxfDisk(const DetId &id) const
static bool trackerHitFilter(uint32_t pattern)
static uint32_t getHitType(uint32_t pattern)
unsigned int tidWheel(const DetId &id) const
int numberOfValidStripTOBHits() const
static int position[TOTALCHAMBERS][3]
unsigned int missHitsAfterVert
unsigned int hitsInFrontOfVert
double eta() const
pseudorapidity of momentum vector
Result analyze(const edm::EventSetup &iSetup, const reco::Track &track)
static bool type_1_HitFilter(uint32_t pattern)
static uint32_t getSubStructure(uint32_t pattern)
const HitPattern & trackerExpectedHitsInner() const
Access the hit pattern counting (in the Tracker) the number of expected crossed layers before the fir...
static bool validHitFilter(uint32_t pattern)
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
unsigned int pxbLayer(const DetId &id) const
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
void init(const edm::EventSetup &iSetup)
reco::HitPattern innerHitPattern
static DetInfo interpretDetId(DetId detId, const TrackerTopology *tTopo)
TrajectoryStateClosestToPoint trajectoryStateClosestToPoint(const GlobalPoint &point) const
T const * product() const
int numberOfValidStripTIBHits() const
static RZrangeMap rangeRorZ_
int numberOfValidPixelHits() const
edm::ESHandle< TransientTrackBuilder > trkTool_
static bool barrel(uint32_t subDet)
uint32_t getHitPattern(int position) const
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
unsigned int tecWheel(const DetId &id) const
std::vector< GeomDet const * > DetContainer
unsigned int tobLayer(const DetId &id) const
void print(const reco::Track &track) const