1 #ifndef TkStripMeasurementDet_H
2 #define TkStripMeasurementDet_H
152 template<
class ClusterRefT>
157 return std::make_shared<SiStripRecHit2D>( lv.first, lv.second,
fastGeomDet(), cluster);
161 template<
class ClusterRefT>
167 for(VLocalValues::const_iterator it=vlv.begin();it!=vlv.end();++it)
168 res.push_back(std::make_shared<SiStripRecHit2D>( it->first, it->second,
fastGeomDet(), cluster));
172 template<
class ClusterRefT>
175 if (
isMasked(*cluster))
return true;
177 if (!
accept(cluster, skipClusters))
return true;
179 bool isCompatible(
false);
182 std::pair<bool,double> diffEst = est.
estimate(ltp, recHit);
183 LogDebug(
"TkStripMeasurementDet")<<
" chi2=" << diffEst.second;
184 if ( diffEst.first ) {
185 result.push_back(std::move(std::make_shared<SiStripRecHit2D>(recHit)));
186 diffs.push_back(diffEst.second);
194 template<
class ClusterRefT>
196 std::vector<SiStripRecHit2D> &
result)
const {
197 if (
isMasked(*cluster))
return true;
199 if (!
accept(cluster, skipClusters))
return true;
201 bool isCompatible(
false);
204 std::pair<bool,double> diffEst = est.
estimate(ltp, recHit);
205 LogDebug(
"TkStripMeasurementDet")<<
" chi2=" << diffEst.second;
206 if ( diffEst.first ) {
207 result.push_back(std::move(recHit));
235 bool testStrips(
float utraj,
float uerr)
const;
264 template<
class ClusterRefT>
267 std::vector<SiStripRecHit2D>& res)
const {
270 for(VLocalValues::const_iterator it=vlv.begin();it!=vlv.end();++it){
283 if(skipClusters.empty())
return true;
284 if (r.
key()>=skipClusters.size()){
285 LogDebug(
"TkStripMeasurementDet")<<r.
key()<<
" is larger than: "<<skipClusters.size()
286 <<
"\n This must be a new cluster, and therefore should not be skiped most likely.";
290 return (not (skipClusters[r.
key()]));
bool isMasked(int i, const SiStripCluster &cluster) const
virtual LocalValues localParameters(const SiStripCluster &, const GeomDetUnit &) const
virtual ~TkStripMeasurementDet()
StMeasurementConditionSet::BadStripCuts BadStripCuts
new_const_iterator clusterE
virtual VLocalValues localParametersV(const SiStripCluster &cluster, const GeomDetUnit &gd) const
tracking::TempMeasurements TempMeasurements
void buildSimpleRecHit(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p, std::vector< SiStripRecHit2D > &res) const
int totalStrips(int i) const
const StripDetset & detSet(int i) const
const TrajectoryStateOnSurface * tsos
const detset & theSet(const StMeasurementDetSet &theDets) const
edmNew::DetSet< SiStripCluster > detset
std::tuple< TkStripRecHitIter, TkStripRecHitIter > hitRange(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const
SiStripRecHit2D operator*() const
StripClusterParameterEstimator::VLocalValues VLocalValues
unsigned char subId() const
bool operator==(TkStripRecHitIter const &rh)
bool empty(const MeasurementTrackerEvent &data) const
StripClusterParameterEstimator::LocalValues LocalValues
bool filteredRecHits(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p, const MeasurementEstimator &est, const std::vector< bool > &skipClusters, std::vector< SiStripRecHit2D > &result) const
TkStripMeasurementDet(const GeomDet *gdet, StMeasurementConditionSet &conditionSet)
BadStripCuts const & badStripCuts() const
void simpleRecHits(const TrajectoryStateOnSurface &ts, const MeasurementTrackerEvent &data, std::vector< SiStripRecHit2D > &result) const
TkStripRecHitIter(const TkStripMeasurementDet &imdet, const TrajectoryStateOnSurface &itsos, const MeasurementTrackerEvent &idata)
data_type const * const_iterator
bool accept(SiStripClusterRef const &r, const std::vector< bool > &skipClusters) const
const StMeasurementDetSet & stripData() const
bool isMasked(const SiStripCluster &cluster) const
SiStripRecHit2D hit(TkStripRecHitIter const &hi) const
const MeasurementTrackerEvent * data
const GeomDet & fastGeomDet() const
virtual RecHitContainer recHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const
const BadStripCuts & badStripCuts(int i) const
unsigned int id(int i) const
StMeasurementConditionSet & conditionSet()
virtual bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, const MeasurementTrackerEvent &data, TempMeasurements &result) const
void setActiveThisEvent(int i, bool active)
Turn on/off the module for reconstruction for one events. This per-event flag is cleared by any call ...
bool filteredRecHits(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p, const MeasurementEstimator &est, const std::vector< bool > &skipClusters, RecHitContainer &result, std::vector< float > &diffs) const
void setActive(int i, bool active)
Turn on/off the module for reconstruction, for the full run or lumi (using info from DB...
std::vector< BadStripBlock > & getBadStripBlocks(int i)
std::vector< BadStripBlock > const & badStripBlocks() const
bool hasBadComponents(const TrajectoryStateOnSurface &tsos, const MeasurementTrackerEvent &data) const
bool hasAny128StripBad(int i) const
std::vector< LocalValues > VLocalValues
const StripClusterParameterEstimator * stripCPE() const
void buildRecHits(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p, const RecHitContainer &_res) const
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TrackingRecHit &hit) const =0
bool hasAllGoodChannels() const
does this module have at least one bad strip, APV or channel?
void advance(TkStripRecHitIter &hi) const
void setActiveThisEvent(StMeasurementDetSet &theDets, bool active) const
Turn on/off the module for reconstruction for one events. This per-event flag is cleared by any call ...
TkStripRecHitIter(new_const_iterator ci, new_const_iterator ce, const TkStripMeasurementDet &imdet, const TrajectoryStateOnSurface &itsos, const MeasurementTrackerEvent &idata)
StMeasurementConditionSet::BadStripBlock BadStripBlock
std::vector< SiStripCluster >::const_iterator const_iterator
bool maskBad128StripBlocks() const
std::shared_ptr< TrackingRecHit const > RecHitPointer
const TkStripMeasurementDet * mdet
std::vector< BadStripBlock > & getBadStripBlocks()
bool operator<(TkStripRecHitIter const &rh)
TrackingRecHit::RecHitPointer buildRecHit(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p) const
void set128StripStatus(bool good, int idx=-1)
Sets the status of a block of 128 strips (or all blocks if idx=-1)
TkStripRecHitIter & operator++()
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
key_type key() const
Accessor for product key.
bool isActive(const MeasurementTrackerEvent &data) const
Is this module active in reconstruction? It must be both 'setActiveThisEvent' and 'setActive'...
const StripGeomDetUnit & specificGeomDet() const
void setActiveThisPeriod(StMeasurementDetSet &theDets, bool active)
Turn on/off the module for reconstruction, for the full run or lumi (using info from DB...
bool isActive(int i) const
bool isEmpty(const StMeasurementDetSet &theDets) const
std::pair< LocalPoint, LocalError > LocalValues
bool maskBad128StripBlocks() const
new_const_iterator clusterI
const StripClusterParameterEstimator * cpe() const
TrackingRecHit::ConstRecHitContainer RecHitContainer
std::vector< BaseTrackerRecHit * > SimpleHitContainer
SiStripRecHit2D::ClusterRef SiStripClusterRef
const detset & detSet(const StMeasurementDetSet &theDets) const
char data[epos_bytes_allocation]
detset::const_iterator new_const_iterator
bool testStrips(float utraj, float uerr) const
return true if there are 'enough' good strips in the utraj +/- 3 uerr range.
std::vector< BadStripBlock > const & badStripBlocks(int i) const
unsigned int rawId() const
bool hasAny128StripBad() const
void set128StripStatus(int i, bool good, int idx=-1)
detset::const_iterator new_const_iterator
StMeasurementConditionSet * theDetConditions
unsigned char subId(int i) const
void setEmpty(StMeasurementDetSet &theDets) const
bool operator!=(TkStripRecHitIter const &rh)
SiStripRecHit2D buildHit() const
const StMeasurementConditionSet & conditionSet() const