66 vector<GetTrackTrajInfo::Result> trkTrajInfo = getTrackTrajInfo.
analyze(iSetup, track);
67 unsigned int nValidHits = trkTrajInfo.size();
73 enum InnerOuter {INNER = 1, OUTER=2};
74 for (
unsigned int inOut = INNER; inOut <= OUTER; inOut++) {
77 unsigned int ihit = (inOut == INNER) ? 0 : nValidHits - 1;
80 if (trkTrajInfo[ihit].
valid) {
81 const DetLayer* detLayer = trkTrajInfo[ihit].detLayer;
95 vector<const DetLayer*> compLayers = detLayer->
compatibleLayers(*detFTS, direc);
96 LogDebug(
"FTHP")<<
"Number of inner/outer "<<inOut<<
" layers intercepted by track = "<<compLayers.size()<<endl;
101 for(vector<const DetLayer *>::const_iterator it=compLayers.begin(); it!=compLayers.end();
103 if ((*it)->basicComponents().empty()) {
105 edm::LogWarning(
"FixTrackHitPattern")<<
"a detlayer with no components: I can not figure out a DetId from this layer. please investigate.";
111 propagator.setPropagationDirection(direc);
112 vector< GeometricSearchDet::DetWithState > detWithState = (*it)->compatibleDets(detTSOS, propagator, estimator);
114 if(detWithState.size() > 0) {
116 DetId id = detWithState.front().first->geographicalId();
122 newHitPattern.
set(tmpHit, counter);
131 if (inOut == INNER) {
142 uint32_t layer = newHitPattern.
getLayer(hp);
144 LogDebug(
"FTHP")<<
" layer with no matched hit at counter="<<
j<<
" subdet="<<subDet<<
" layer="<<layer<<
" status="<<status<<endl;
148 LogDebug(
"FTHP")<<
"WARNING: could not calculate inner/outer hit pattern as trajectory info for inner/out hit missing"<<endl;
std::vector< const DetLayer * > compatibleLayers(Args &&...args) const
Returns all layers compatible.
static uint32_t getLayer(uint32_t pattern)
static uint32_t getHitType(uint32_t pattern)
void set(const I &begin, const I &end)
Result analyze(const edm::EventSetup &iSetup, const reco::Track &track)
const T & max(const T &a, const T &b)
FreeTrajectoryState const * freeTrajectoryState(bool withErrors=true) const
reco::HitPattern outerHitPattern
static uint32_t getSubStructure(uint32_t pattern)
std::vector< Result > analyze(const edm::EventSetup &iSetup, const reco::Track &track)
reco::HitPattern innerHitPattern
virtual bool isActive(const MeasurementTrackerEvent &data) const =0
static std::atomic< unsigned int > counter
uint32_t getHitPattern(int position) const
tuple AnalyticalPropagator