CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes
TkStripMeasurementDet Class Reference

#include <TkStripMeasurementDet.h>

Inheritance diagram for TkStripMeasurementDet:
MeasurementDet

Classes

struct  BadStripBlock
 
struct  BadStripCuts
 

Public Types

typedef std::vector
< SiStripCluster >
::const_iterator 
const_iterator
 
typedef edmNew::DetSet
< SiStripCluster
detset
 
typedef
StripClusterParameterEstimator::LocalValues 
LocalValues
 
typedef detset::const_iterator new_const_iterator
 
typedef SiStripRecHit2D::ClusterRef SiStripClusterRef
 
typedef edm::LazyGetter
< SiStripCluster >::value_ref 
SiStripRegionalClusterRef
 
typedef
StripClusterParameterEstimator::VLocalValues 
VLocalValues
 
- Public Types inherited from MeasurementDet
typedef
TransientTrackingRecHit::ConstRecHitContainer 
RecHitContainer
 

Public Member Functions

TransientTrackingRecHit::RecHitPointer buildRecHit (const SiStripClusterRef &, const TrajectoryStateOnSurface &ltp) const
 
TransientTrackingRecHit::RecHitPointer buildRecHit (const SiStripRegionalClusterRef &, const TrajectoryStateOnSurface &ltp) const
 
TkStripMeasurementDet::RecHitContainer buildRecHits (const SiStripClusterRef &, const TrajectoryStateOnSurface &ltp) const
 
TkStripMeasurementDet::RecHitContainer buildRecHits (const SiStripRegionalClusterRef &, const TrajectoryStateOnSurface &ltp) const
 
virtual std::vector
< TrajectoryMeasurement
fastMeasurements (const TrajectoryStateOnSurface &stateOnThisDet, const TrajectoryStateOnSurface &startingState, const Propagator &, const MeasurementEstimator &) const
 
std::vector< BadStripBlock > & getBadStripBlocks ()
 
bool hasAllGoodChannels () const
 does this module have at least one bad strip, APV or channel? More...
 
bool hasBadComponents (const TrajectoryStateOnSurface &tsos) const
 
bool isActive () const
 Is this module active in reconstruction? It must be both 'setActiveThisEvent' and 'setActive'. More...
 
bool isEmpty ()
 
unsigned int rawId () const
 
virtual RecHitContainer recHits (const TrajectoryStateOnSurface &) const
 
void set128StripStatus (bool good, int idx=-1)
 Sets the status of a block of 128 strips (or all blocks if idx=-1) More...
 
void setActive (bool active)
 Turn on/off the module for reconstruction, for the full run or lumi (using info from DB, usually). This also resets the 'setActiveThisEvent' to true. More...
 
void setActiveThisEvent (bool active)
 Turn on/off the module for reconstruction for one events. This per-event flag is cleared by any call to 'update' or 'setEmpty'. More...
 
void setBadStripCuts (BadStripCuts cuts)
 
void setEmpty ()
 
void setMaskBad128StripBlocks (bool maskThem)
 
void simpleRecHits (const TrajectoryStateOnSurface &ts, std::vector< SiStripRecHit2D > &result) const
 
int size ()
 
const StripGeomDetUnitspecificGeomDet () const
 
bool testStrips (float utraj, float uerr) const
 return true if there are 'enough' good strips in the utraj +/- 3 uerr range. More...
 
const detsettheSet ()
 
 TkStripMeasurementDet (const GeomDet *gdet, const StripClusterParameterEstimator *cpe, bool regional)
 
void update (const detset &detSet, const edm::Handle< edmNew::DetSetVector< SiStripCluster > > h, unsigned int id)
 
void update (std::vector< SiStripCluster >::const_iterator begin, std::vector< SiStripCluster >::const_iterator end, const edm::Handle< edm::LazyGetter< SiStripCluster > > h, unsigned int id)
 
virtual ~TkStripMeasurementDet ()
 
- Public Member Functions inherited from MeasurementDet
virtual const GeomDetgeomDet () const
 
 MeasurementDet (const GeomDet *gdet)
 
const Surface::PositionTypeposition () const
 
const BoundSurfacesurface () const
 

Private Member Functions

template<class ClusterRefT >
void buildSimpleRecHit (const ClusterRefT &cluster, const TrajectoryStateOnSurface &ltp, std::vector< SiStripRecHit2D > &res) const
 
bool isMasked (const SiStripCluster &cluster) const
 

Private Attributes

bool activeThisEvent_
 
bool activeThisPeriod_
 
bool bad128Strip_ [6]
 
std::vector< BadStripBlockbadStripBlocks_
 
BadStripCuts badStripCuts_
 
std::vector< SiStripCluster >
::const_iterator 
beginCluster
 
detset detSet_
 
bool empty
 
std::vector< SiStripCluster >
::const_iterator 
endCluster
 
edm::Handle
< edmNew::DetSetVector
< SiStripCluster > > 
handle_
 
bool hasAny128StripBad_
 
unsigned int id_
 
bool isRegional
 
bool maskBad128StripBlocks_
 
edm::Handle< edm::LazyGetter
< SiStripCluster > > 
regionalHandle_
 
const
StripClusterParameterEstimator
theCPE
 
const StripGeomDetUnittheStripGDU
 
int totalStrips_
 

Detailed Description

Definition at line 21 of file TkStripMeasurementDet.h.

Member Typedef Documentation

Definition at line 36 of file TkStripMeasurementDet.h.

Definition at line 33 of file TkStripMeasurementDet.h.

Definition at line 26 of file TkStripMeasurementDet.h.

Definition at line 34 of file TkStripMeasurementDet.h.

Definition at line 29 of file TkStripMeasurementDet.h.

Definition at line 31 of file TkStripMeasurementDet.h.

Definition at line 27 of file TkStripMeasurementDet.h.

Constructor & Destructor Documentation

virtual TkStripMeasurementDet::~TkStripMeasurementDet ( )
inlinevirtual

Definition at line 38 of file TkStripMeasurementDet.h.

38 {}
TkStripMeasurementDet::TkStripMeasurementDet ( const GeomDet gdet,
const StripClusterParameterEstimator cpe,
bool  regional 
)

Definition at line 17 of file TkStripMeasurementDet.cc.

References GeomDet::geographicalId(), id_, StripTopology::nstrips(), DetId::rawId(), specificGeomDet(), StripGeomDetUnit::specificTopology(), theStripGDU, and totalStrips_.

19  :
20  MeasurementDet (gdet),
21  isRegional(regional),
22  empty(true),
24  theCPE(cpe)
25  {
26  theStripGDU = dynamic_cast<const StripGeomDetUnit*>(gdet);
27  if (theStripGDU == 0) {
28  throw MeasurementDetException( "TkStripMeasurementDet constructed with a GeomDet which is not a StripGeomDetUnit");
29  }
30 
31  //intialize the detId !
32  id_ = gdet->geographicalId().rawId();
33  //initalize the total number of strips
35  }
virtual int nstrips() const =0
const StripClusterParameterEstimator * theCPE
MeasurementDet(const GeomDet *gdet)
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:74
const StripGeomDetUnit & specificGeomDet() const
const StripGeomDetUnit * theStripGDU

Member Function Documentation

TransientTrackingRecHit::RecHitPointer TkStripMeasurementDet::buildRecHit ( const SiStripClusterRef cluster,
const TrajectoryStateOnSurface ltp 
) const

Definition at line 192 of file TkStripMeasurementDet.cc.

References TSiStripRecHit2DLocalPos::build(), MeasurementDet::geomDet(), ClusterParameterEstimator< T >::localParameters(), specificGeomDet(), and theCPE.

Referenced by recHits().

194 {
195  const GeomDetUnit& gdu( specificGeomDet());
196  LocalValues lv = theCPE->localParameters( *cluster, gdu, ltp);
197  return TSiStripRecHit2DLocalPos::build( lv.first, lv.second, &geomDet(), cluster, theCPE);
198 }
const StripClusterParameterEstimator * theCPE
StripClusterParameterEstimator::LocalValues LocalValues
virtual const GeomDet & geomDet() const
static RecHitPointer build(const GeomDet *geom, const SiStripRecHit2D *rh, const StripClusterParameterEstimator *cpe, float weight=1., float annealing=1., bool computeCoarseLocalPosition=false)
virtual LocalValues localParameters(const T &, const GeomDetUnit &) const =0
const StripGeomDetUnit & specificGeomDet() const
TransientTrackingRecHit::RecHitPointer TkStripMeasurementDet::buildRecHit ( const SiStripRegionalClusterRef cluster,
const TrajectoryStateOnSurface ltp 
) const

Definition at line 201 of file TkStripMeasurementDet.cc.

References TSiStripRecHit2DLocalPos::build(), MeasurementDet::geomDet(), ClusterParameterEstimator< T >::localParameters(), specificGeomDet(), and theCPE.

203 {
204  const GeomDetUnit& gdu( specificGeomDet());
205  LocalValues lv = theCPE->localParameters( *cluster, gdu, ltp);
206  return TSiStripRecHit2DLocalPos::build( lv.first, lv.second, &geomDet(), cluster, theCPE);
207 }
const StripClusterParameterEstimator * theCPE
StripClusterParameterEstimator::LocalValues LocalValues
virtual const GeomDet & geomDet() const
static RecHitPointer build(const GeomDet *geom, const SiStripRecHit2D *rh, const StripClusterParameterEstimator *cpe, float weight=1., float annealing=1., bool computeCoarseLocalPosition=false)
virtual LocalValues localParameters(const T &, const GeomDetUnit &) const =0
const StripGeomDetUnit & specificGeomDet() const
TkStripMeasurementDet::RecHitContainer TkStripMeasurementDet::buildRecHits ( const SiStripClusterRef cluster,
const TrajectoryStateOnSurface ltp 
) const

Definition at line 212 of file TkStripMeasurementDet.cc.

References TSiStripRecHit2DLocalPos::build(), MeasurementDet::geomDet(), ClusterParameterEstimator< T >::localParametersV(), specificGeomDet(), and theCPE.

Referenced by fastMeasurements().

214 {
215  const GeomDetUnit& gdu( specificGeomDet());
216  VLocalValues vlv = theCPE->localParametersV( *cluster, gdu, ltp);
217  RecHitContainer res;
218  for(VLocalValues::const_iterator it=vlv.begin();it!=vlv.end();++it){
219  res.push_back(TSiStripRecHit2DLocalPos::build( it->first, it->second, &geomDet(), cluster, theCPE));
220  }
221  return res;
222 }
const StripClusterParameterEstimator * theCPE
StripClusterParameterEstimator::VLocalValues VLocalValues
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
virtual const GeomDet & geomDet() const
static RecHitPointer build(const GeomDet *geom, const SiStripRecHit2D *rh, const StripClusterParameterEstimator *cpe, float weight=1., float annealing=1., bool computeCoarseLocalPosition=false)
virtual VLocalValues localParametersV(const T &cluster, const GeomDetUnit &gd) const
const StripGeomDetUnit & specificGeomDet() const
TkStripMeasurementDet::RecHitContainer TkStripMeasurementDet::buildRecHits ( const SiStripRegionalClusterRef cluster,
const TrajectoryStateOnSurface ltp 
) const

Definition at line 226 of file TkStripMeasurementDet.cc.

References TSiStripRecHit2DLocalPos::build(), MeasurementDet::geomDet(), ClusterParameterEstimator< T >::localParametersV(), specificGeomDet(), and theCPE.

228 {
229  const GeomDetUnit& gdu( specificGeomDet());
230  VLocalValues vlv = theCPE->localParametersV( *cluster, gdu, ltp);
231  RecHitContainer res;
232  for(VLocalValues::const_iterator it=vlv.begin();it!=vlv.end();++it){
233  res.push_back(TSiStripRecHit2DLocalPos::build( it->first, it->second, &geomDet(), cluster, theCPE));
234  }
235  return res;
236 }
const StripClusterParameterEstimator * theCPE
StripClusterParameterEstimator::VLocalValues VLocalValues
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
virtual const GeomDet & geomDet() const
static RecHitPointer build(const GeomDet *geom, const SiStripRecHit2D *rh, const StripClusterParameterEstimator *cpe, float weight=1., float annealing=1., bool computeCoarseLocalPosition=false)
virtual VLocalValues localParametersV(const T &cluster, const GeomDetUnit &gd) const
const StripGeomDetUnit & specificGeomDet() const
template<class ClusterRefT >
void TkStripMeasurementDet::buildSimpleRecHit ( const ClusterRefT &  cluster,
const TrajectoryStateOnSurface ltp,
std::vector< SiStripRecHit2D > &  res 
) const
private

Definition at line 269 of file TkStripMeasurementDet.cc.

References MeasurementDet::geomDet(), ClusterParameterEstimator< T >::localParametersV(), specificGeomDet(), and theCPE.

Referenced by simpleRecHits().

272 {
273  const GeomDetUnit& gdu( specificGeomDet());
274  VLocalValues vlv = theCPE->localParametersV( *cluster, gdu, ltp);
275  for(VLocalValues::const_iterator it=vlv.begin();it!=vlv.end();++it){
276  res.push_back(SiStripRecHit2D( it->first, it->second, geomDet().geographicalId(), cluster));
277  }
278 }
const StripClusterParameterEstimator * theCPE
StripClusterParameterEstimator::VLocalValues VLocalValues
virtual const GeomDet & geomDet() const
virtual VLocalValues localParametersV(const T &cluster, const GeomDetUnit &gd) const
const StripGeomDetUnit & specificGeomDet() const
std::vector< TrajectoryMeasurement > TkStripMeasurementDet::fastMeasurements ( const TrajectoryStateOnSurface stateOnThisDet,
const TrajectoryStateOnSurface startingState,
const Propagator ,
const MeasurementEstimator  
) const
virtual

faster version in case the TrajectoryState on the surface of the Det is already available. The first TrajectoryStateOnSurface is on the surface of this Det, and the second TrajectoryStateOnSurface is the statrting state, usually not on the surface of this Det. The stateOnThisDet should the result of
prop.propagate( startingState, this->surface())

Implements MeasurementDet.

Definition at line 39 of file TkStripMeasurementDet.cc.

References edmNew::DetSet< T >::begin(), beginCluster, InvalidTransientRecHit::build(), buildRecHits(), detSet_, empty, edmNew::DetSet< T >::end(), endCluster, MeasurementEstimator::estimate(), MeasurementDet::geomDet(), handle_, TrajectoryStateOnSurface::hasError(), TrackingRecHit::inactive, isActive(), isMasked(), isRegional, TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localPosition(), edmNew::makeRefTo(), edm::makeRefToLazyGetter(), Topology::measurementError(), Topology::measurementPosition(), TrackingRecHit::missing, LocalTrajectoryError::positionError(), recHits(), regionalHandle_, query::result, python.multivaluedict::sort(), StripGeomDetUnit::specificTopology(), mathSSE::sqrt(), testStrips(), theStripGDU, and ExpressReco_HICollisions_FallBack::x.

43 {
44  std::vector<TrajectoryMeasurement> result;
45 
46  if (isActive() == false) {
47  result.push_back( TrajectoryMeasurement( stateOnThisDet,
49  0.F));
50  // LogDebug("TkStripMeasurementDet") << " DetID " << id_ << " inactive";
51  return result;
52  }
53 
54  float utraj = theStripGDU->specificTopology().measurementPosition( stateOnThisDet.localPosition()).x();
55  float uerr;
56  // if (theClusterRange.first == theClusterRange.second) { // empty
57  if (empty == true){
58  //LogDebug("TkStripMeasurementDet") << " DetID " << id_ << " empty ";
59  if (stateOnThisDet.hasError()){
60  uerr= sqrt(theStripGDU->specificTopology().measurementError(stateOnThisDet.localPosition(),stateOnThisDet.localError().positionError()).uu());
61  if (testStrips(utraj,uerr)) {
62  result.push_back( TrajectoryMeasurement( stateOnThisDet, InvalidTransientRecHit::build(&geomDet(), TrackingRecHit::missing), 0.F));
63  } else {
64  result.push_back( TrajectoryMeasurement( stateOnThisDet, InvalidTransientRecHit::build(&geomDet(), TrackingRecHit::inactive), 0.F));
65  }
66  }else{
67  result.push_back( TrajectoryMeasurement( stateOnThisDet, InvalidTransientRecHit::build(&geomDet(), TrackingRecHit::missing), 0.F));
68  }
69  return result;
70  }
71 
72  if(!isRegional){//old implemetation with DetSet
73  new_const_iterator rightCluster =
74  std::find_if( detSet_.begin(), detSet_.end(), StripClusterAboveU( utraj)); //FIXME
75 
76  if ( rightCluster != detSet_.begin()) {
77  // there are hits on the left of the utraj
78  new_const_iterator leftCluster = rightCluster;
79  while ( --leftCluster >= detSet_.begin()) {
80  if (isMasked(*leftCluster)) continue;
81  SiStripClusterRef clusterref = edmNew::makeRefTo( handle_, leftCluster );
82  //TransientTrackingRecHit::RecHitPointer recHit = buildRecHit(clusterref,
83  // stateOnThisDet);
84  RecHitContainer recHits = buildRecHits(clusterref,stateOnThisDet);
85  bool isCompatible(false);
86  for(RecHitContainer::const_iterator recHit=recHits.begin();recHit!=recHits.end();++recHit){
87  std::pair<bool,double> diffEst = est.estimate(stateOnThisDet, **recHit);
88  if ( diffEst.first ) {
89  result.push_back( TrajectoryMeasurement( stateOnThisDet, *recHit,
90  diffEst.second));
91  isCompatible = true;
92  }
93  }
94  if(!isCompatible) break; // exit loop on first incompatible hit
95  }
96  }
97 
98  for ( ; rightCluster != detSet_.end(); rightCluster++) {
99  if (isMasked(*rightCluster)) continue;
100  SiStripClusterRef clusterref = edmNew::makeRefTo( handle_, rightCluster );
101  //TransientTrackingRecHit::RecHitPointer recHit = buildRecHit( clusterref,
102  // stateOnThisDet);
103  RecHitContainer recHits = buildRecHits(clusterref,stateOnThisDet);
104  bool isCompatible(false);
105  for(RecHitContainer::const_iterator recHit=recHits.begin();recHit!=recHits.end();++recHit){
106  std::pair<bool,double> diffEst = est.estimate(stateOnThisDet, **recHit);
107  if ( diffEst.first ) {
108  result.push_back( TrajectoryMeasurement( stateOnThisDet, *recHit,
109  diffEst.second));
110  isCompatible = true;
111  }
112  }
113  if(!isCompatible) break; // exit loop on first incompatible hit
114  }
115  }// end block with DetSet
116  else{
117  const_iterator rightCluster =
118  std::find_if( beginCluster, endCluster, StripClusterAboveU( utraj));
119 
120  if ( rightCluster != beginCluster) {
121  // there are hits on the left of the utraj
122  const_iterator leftCluster = rightCluster;
123  while ( --leftCluster >= beginCluster) {
124  if (isMasked(*leftCluster)) continue;
125  // TransientTrackingRecHit* recHit = buildRecHit( *leftCluster,
126  //std::cout << "=====making ref in fastMeas left " << std::endl;
127  SiStripRegionalClusterRef clusterref = edm::makeRefToLazyGetter(regionalHandle_,leftCluster-regionalHandle_->begin_record());
128  //TransientTrackingRecHit::RecHitPointer recHit = buildRecHit(clusterref,
129  // stateOnThisDet);
130  RecHitContainer recHits = buildRecHits(clusterref,stateOnThisDet);
131  bool isCompatible(false);
132  for(RecHitContainer::const_iterator recHit=recHits.begin();recHit!=recHits.end();++recHit){
133  std::pair<bool,double> diffEst = est.estimate(stateOnThisDet, **recHit);
134  if ( diffEst.first ) {
135  result.push_back( TrajectoryMeasurement( stateOnThisDet, *recHit,
136  diffEst.second));
137  isCompatible = true;
138  }
139  }
140  if(!isCompatible) break; // exit loop on first incompatible hit
141  }
142  }
143 
144  for ( ; rightCluster != endCluster; rightCluster++) {
145  if (isMasked(*rightCluster)) continue;
146  //std::cout << "=====making ref in fastMeas rigth " << std::endl;
147  SiStripRegionalClusterRef clusterref = edm::makeRefToLazyGetter(regionalHandle_,rightCluster-regionalHandle_->begin_record());
148  //TransientTrackingRecHit::RecHitPointer recHit = buildRecHit( clusterref,
149  // stateOnThisDet);
150  RecHitContainer recHits = buildRecHits(clusterref,stateOnThisDet);
151  bool isCompatible(false);
152  for(RecHitContainer::const_iterator recHit=recHits.begin();recHit!=recHits.end();++recHit){
153  std::pair<bool,double> diffEst = est.estimate(stateOnThisDet, **recHit);
154  if ( diffEst.first ) {
155  result.push_back( TrajectoryMeasurement( stateOnThisDet, *recHit,
156  diffEst.second));
157  isCompatible = true;
158  }
159  }
160  if(!isCompatible) break; // exit loop on first incompatible hit
161  }
162  }
163 
164 
165  if ( result.empty()) {
166  // create a TrajectoryMeasurement with an invalid RecHit and zero estimate
167  if (stateOnThisDet.hasError()){
168  uerr= sqrt(theStripGDU->specificTopology().measurementError(stateOnThisDet.localPosition(),stateOnThisDet.localError().positionError()).uu());
169  if (testStrips(utraj,uerr)) {
170  //LogDebug("TkStripMeasurementDet") << " DetID " << id_ << " empty after search, but active ";
171  result.push_back( TrajectoryMeasurement( stateOnThisDet, InvalidTransientRecHit::build(&geomDet(), TrackingRecHit::missing), 0.F));
172  } else {
173  //LogDebug("TkStripMeasurementDet") << " DetID " << id_ << " empty after search, and inactive ";
174  result.push_back( TrajectoryMeasurement( stateOnThisDet, InvalidTransientRecHit::build(&geomDet(), TrackingRecHit::inactive), 0.F));
175  }
176  }else{
177  result.push_back( TrajectoryMeasurement( stateOnThisDet, InvalidTransientRecHit::build(&geomDet(), TrackingRecHit::missing), 0.F));
178  }
179  }
180  else {
181  //LogDebug("TkStripMeasurementDet") << " DetID " << id_ << " full: " << (result.size()) << " compatible hits";
182  // sort results according to estimator value
183  if ( result.size() > 1) {
184  sort( result.begin(), result.end(), TrajMeasLessEstim());
185  }
186  }
187  return result;
188 }
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(const HandleT &iHandle, typename HandleT::element_type::value_type::const_iterator itIter)
static RecHitPointer build(const GeomDet *geom, Type type=TrackingRecHit::missing, const DetLayer *layer=0)
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
virtual const GeomDet & geomDet() const
virtual RecHitContainer recHits(const TrajectoryStateOnSurface &) const
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
LocalError positionError() const
std::vector< SiStripCluster >::const_iterator beginCluster
bool isMasked(const SiStripCluster &cluster) const
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
std::vector< SiStripCluster >::const_iterator endCluster
T sqrt(T t)
Definition: SSEVec.h:28
tuple result
Definition: query.py:137
Ref< LazyGetter< T >, T, FindValue< T > > makeRefToLazyGetter(const Handle< LazyGetter< T > > &handle, const uint32_t index)
Definition: LazyGetter.h:525
TkStripMeasurementDet::RecHitContainer buildRecHits(const SiStripClusterRef &, const TrajectoryStateOnSurface &ltp) const
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
const LocalTrajectoryError & localError() const
edm::LazyGetter< SiStripCluster >::value_ref SiStripRegionalClusterRef
std::vector< SiStripCluster >::const_iterator const_iterator
edm::Handle< edmNew::DetSetVector< SiStripCluster > > handle_
const StripGeomDetUnit * theStripGDU
SiStripRecHit2D::ClusterRef SiStripClusterRef
iterator end()
Definition: DetSetNew.h:59
detset::const_iterator new_const_iterator
bool testStrips(float utraj, float uerr) const
return true if there are &#39;enough&#39; good strips in the utraj +/- 3 uerr range.
bool isActive() const
Is this module active in reconstruction? It must be both &#39;setActiveThisEvent&#39; and &#39;setActive&#39;...
edm::Handle< edm::LazyGetter< SiStripCluster > > regionalHandle_
iterator begin()
Definition: DetSetNew.h:56
std::vector<BadStripBlock>& TkStripMeasurementDet::getBadStripBlocks ( )
inline

Definition at line 139 of file TkStripMeasurementDet.h.

References badStripBlocks_.

139 { return badStripBlocks_; }
std::vector< BadStripBlock > badStripBlocks_
bool TkStripMeasurementDet::hasAllGoodChannels ( ) const
inline

does this module have at least one bad strip, APV or channel?

Definition at line 116 of file TkStripMeasurementDet.h.

References badStripBlocks_, and hasAny128StripBad_.

Referenced by TkGluedMeasurementDet::fastMeasurements().

116 { return !hasAny128StripBad_ && badStripBlocks_.empty(); }
std::vector< BadStripBlock > badStripBlocks_
bool TkStripMeasurementDet::hasBadComponents ( const TrajectoryStateOnSurface tsos) const
inlinevirtual

Implements MeasurementDet.

Definition at line 70 of file TkStripMeasurementDet.h.

70 {return false;}
bool TkStripMeasurementDet::isActive ( ) const
inlinevirtual

Is this module active in reconstruction? It must be both 'setActiveThisEvent' and 'setActive'.

Implements MeasurementDet.

Definition at line 67 of file TkStripMeasurementDet.h.

References activeThisEvent_, and activeThisPeriod_.

Referenced by TkGluedMeasurementDet::fastMeasurements(), fastMeasurements(), TkGluedMeasurementDet::isActive(), recHits(), and simpleRecHits().

bool TkStripMeasurementDet::isEmpty ( void  )
inline

Definition at line 100 of file TkStripMeasurementDet.h.

References empty.

100 {return empty;}
bool TkStripMeasurementDet::isMasked ( const SiStripCluster cluster) const
inlineprivate

Definition at line 176 of file TkStripMeasurementDet.h.

References SiStripCluster::amplitudes(), bad128Strip_, SiStripCluster::barycenter(), and SiStripCluster::firstStrip().

Referenced by fastMeasurements(), recHits(), and simpleRecHits().

176  {
177  if ( bad128Strip_[cluster.firstStrip() >> 7] ) {
178  if ( bad128Strip_[(cluster.firstStrip()+cluster.amplitudes().size()) >> 7] ||
179  bad128Strip_[static_cast<int32_t>(cluster.barycenter()-0.499999) >> 7] ) {
180  return true;
181  }
182  } else {
183  if ( bad128Strip_[(cluster.firstStrip()+cluster.amplitudes().size()) >> 7] &&
184  bad128Strip_[static_cast<int32_t>(cluster.barycenter()-0.499999) >> 7] ) {
185  return true;
186  }
187  }
188  return false;
189  }
uint16_t firstStrip() const
float barycenter() const
const std::vector< uint8_t > & amplitudes() const
unsigned int TkStripMeasurementDet::rawId ( ) const
inline

Definition at line 102 of file TkStripMeasurementDet.h.

References id_.

102 { return id_; }
TkStripMeasurementDet::RecHitContainer TkStripMeasurementDet::recHits ( const TrajectoryStateOnSurface ts) const
virtual

Implements MeasurementDet.

Definition at line 241 of file TkStripMeasurementDet.cc.

References edmNew::DetSet< T >::begin(), beginCluster, buildRecHit(), detSet_, empty, edmNew::DetSet< T >::end(), endCluster, handle_, isActive(), isMasked(), isRegional, edmNew::makeRefTo(), edm::makeRefToLazyGetter(), regionalHandle_, query::result, and edmNew::DetSet< T >::size().

Referenced by TkGluedMeasurementDet::collectRecHits(), and fastMeasurements().

242 {
244  if (empty == true) return result;
245  if (isActive() == false) return result; // GIO
246 
247  if(!isRegional){//old implemetation with DetSet
248  result.reserve(detSet_.size());
249  for ( new_const_iterator ci = detSet_.begin(); ci != detSet_.end(); ++ ci ) {
250  if (isMasked(*ci)) continue;
251  // for ( ClusterIterator ci=theClusterRange.first; ci != theClusterRange.second; ci++) {
252  SiStripClusterRef cluster = edmNew::makeRefTo( handle_, ci );
253  result.push_back( buildRecHit( cluster, ts));
254  }
255  }else{
256  result.reserve(endCluster - beginCluster);
257  for (const_iterator ci = beginCluster ; ci != endCluster; ci++) {
258  if (isMasked(*ci)) continue;
260  result.push_back( buildRecHit( clusterRef, ts));
261  }
262  }
263  return result;
264 
265 }
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(const HandleT &iHandle, typename HandleT::element_type::value_type::const_iterator itIter)
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
TransientTrackingRecHit::RecHitPointer buildRecHit(const SiStripClusterRef &, const TrajectoryStateOnSurface &ltp) const
std::vector< SiStripCluster >::const_iterator beginCluster
bool isMasked(const SiStripCluster &cluster) const
std::vector< SiStripCluster >::const_iterator endCluster
tuple result
Definition: query.py:137
Ref< LazyGetter< T >, T, FindValue< T > > makeRefToLazyGetter(const Handle< LazyGetter< T > > &handle, const uint32_t index)
Definition: LazyGetter.h:525
edm::LazyGetter< SiStripCluster >::value_ref SiStripRegionalClusterRef
std::vector< SiStripCluster >::const_iterator const_iterator
edm::Handle< edmNew::DetSetVector< SiStripCluster > > handle_
SiStripRecHit2D::ClusterRef SiStripClusterRef
iterator end()
Definition: DetSetNew.h:59
detset::const_iterator new_const_iterator
bool isActive() const
Is this module active in reconstruction? It must be both &#39;setActiveThisEvent&#39; and &#39;setActive&#39;...
size_type size() const
Definition: DetSetNew.h:75
edm::Handle< edm::LazyGetter< SiStripCluster > > regionalHandle_
iterator begin()
Definition: DetSetNew.h:56
void TkStripMeasurementDet::set128StripStatus ( bool  good,
int  idx = -1 
)

Sets the status of a block of 128 strips (or all blocks if idx=-1)

Definition at line 306 of file TkStripMeasurementDet.cc.

References bad128Strip_, hasAny128StripBad_, and i.

306  {
307  if (idx == -1) {
308  std::fill(bad128Strip_, bad128Strip_+6, !good);
309  hasAny128StripBad_ = !good;
310  } else {
311  bad128Strip_[idx] = !good;
312  if (good == false) {
313  hasAny128StripBad_ = false;
314  } else { // this should not happen, as usually you turn on all fibers
315  // and then turn off the bad ones, and not vice-versa,
316  // so I don't care if it's not optimized
317  hasAny128StripBad_ = true;
318  for (int i = 0; i < (totalStrips_ >> 7); i++) {
319  if (bad128Strip_[i] == false) hasAny128StripBad_ = false;
320  }
321  }
322  }
323 
324 }
int i
Definition: DBlmapReader.cc:9
void TkStripMeasurementDet::setActive ( bool  active)
inline

Turn on/off the module for reconstruction, for the full run or lumi (using info from DB, usually). This also resets the 'setActiveThisEvent' to true.

Definition at line 110 of file TkStripMeasurementDet.h.

References activeThisEvent_, activeThisPeriod_, and empty.

void TkStripMeasurementDet::setActiveThisEvent ( bool  active)
inline

Turn on/off the module for reconstruction for one events. This per-event flag is cleared by any call to 'update' or 'setEmpty'.

Definition at line 113 of file TkStripMeasurementDet.h.

References activeThisEvent_, and empty.

113 { activeThisEvent_ = active; if (!active) empty = true; }
void TkStripMeasurementDet::setBadStripCuts ( BadStripCuts  cuts)
inline

Definition at line 132 of file TkStripMeasurementDet.h.

References badStripCuts_.

132 { badStripCuts_ = cuts; }
void TkStripMeasurementDet::setEmpty ( )
inline
void TkStripMeasurementDet::setMaskBad128StripBlocks ( bool  maskThem)
inline

Definition at line 141 of file TkStripMeasurementDet.h.

References maskBad128StripBlocks_.

141 { maskBad128StripBlocks_ = maskThem; }
void TkStripMeasurementDet::simpleRecHits ( const TrajectoryStateOnSurface ts,
std::vector< SiStripRecHit2D > &  result 
) const

Definition at line 282 of file TkStripMeasurementDet.cc.

References edmNew::DetSet< T >::begin(), beginCluster, buildSimpleRecHit(), detSet_, empty, edmNew::DetSet< T >::end(), endCluster, handle_, isActive(), isMasked(), isRegional, edmNew::makeRefTo(), edm::makeRefToLazyGetter(), regionalHandle_, and edmNew::DetSet< T >::size().

Referenced by TkGluedMeasurementDet::collectRecHits().

283 {
284  if (empty || !isActive()) return;
285 
286  if(!isRegional){//old implemetation with DetSet
287  result.reserve(detSet_.size());
288  for ( new_const_iterator ci = detSet_.begin(); ci != detSet_.end(); ++ ci ) {
289  if (isMasked(*ci)) continue;
290  // for ( ClusterIterator ci=theClusterRange.first; ci != theClusterRange.second; ci++) {
291  SiStripClusterRef cluster = edmNew::makeRefTo( handle_, ci );
292  buildSimpleRecHit( cluster, ts,result);
293  }
294  }else{
295  result.reserve(endCluster - beginCluster);
296  for (const_iterator ci = beginCluster ; ci != endCluster; ci++) {
297  if (isMasked(*ci)) continue;
299  buildSimpleRecHit( clusterRef, ts,result);
300  }
301  }
302 }
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(const HandleT &iHandle, typename HandleT::element_type::value_type::const_iterator itIter)
void buildSimpleRecHit(const ClusterRefT &cluster, const TrajectoryStateOnSurface &ltp, std::vector< SiStripRecHit2D > &res) const
std::vector< SiStripCluster >::const_iterator beginCluster
bool isMasked(const SiStripCluster &cluster) const
std::vector< SiStripCluster >::const_iterator endCluster
tuple result
Definition: query.py:137
Ref< LazyGetter< T >, T, FindValue< T > > makeRefToLazyGetter(const Handle< LazyGetter< T > > &handle, const uint32_t index)
Definition: LazyGetter.h:525
edm::LazyGetter< SiStripCluster >::value_ref SiStripRegionalClusterRef
std::vector< SiStripCluster >::const_iterator const_iterator
edm::Handle< edmNew::DetSetVector< SiStripCluster > > handle_
SiStripRecHit2D::ClusterRef SiStripClusterRef
iterator end()
Definition: DetSetNew.h:59
detset::const_iterator new_const_iterator
bool isActive() const
Is this module active in reconstruction? It must be both &#39;setActiveThisEvent&#39; and &#39;setActive&#39;...
size_type size() const
Definition: DetSetNew.h:75
edm::Handle< edm::LazyGetter< SiStripCluster > > regionalHandle_
iterator begin()
Definition: DetSetNew.h:56
int TkStripMeasurementDet::size ( void  )
inline

Definition at line 106 of file TkStripMeasurementDet.h.

References beginCluster, and endCluster.

106 {return endCluster - beginCluster ; }
std::vector< SiStripCluster >::const_iterator beginCluster
std::vector< SiStripCluster >::const_iterator endCluster
const StripGeomDetUnit& TkStripMeasurementDet::specificGeomDet ( ) const
inline
bool TkStripMeasurementDet::testStrips ( float  utraj,
float  uerr 
) const

return true if there are 'enough' good strips in the utraj +/- 3 uerr range.

Definition at line 327 of file TkStripMeasurementDet.cc.

References cond::ecalcond::bad(), badStripBlocks_, badStripCuts_, end, max(), TkStripMeasurementDet::BadStripCuts::maxBad, TkStripMeasurementDet::BadStripCuts::maxConsecutiveBad, min, convertSQLiteXML::ok, and totalStrips_.

Referenced by fastMeasurements(), and TkGluedMeasurementDet::testStrips().

327  {
328  int16_t start = (int16_t) std::max<float>(utraj - 3*uerr, 0);
329  int16_t end = (int16_t) std::min<float>(utraj + 3*uerr, totalStrips_);
330 
331  if (start >= end) { // which means either end <=0 or start >= totalStrips_
332  /* LogDebug("TkStripMeasurementDet") << "Testing module " << id_ <<","<<
333  " U = " << utraj << " +/- " << uerr <<
334  "; Range [" << (utraj - 3*uerr) << ", " << (utraj + 3*uerr) << "] " <<
335  ": YOU'RE COMPLETELY OFF THE MODULE."; */
336  //return false;
337  return true; // Wolfgang thinks this way is better
338  // and solves some problems with grouped ckf
339  }
340 
341  typedef std::vector<BadStripBlock>::const_iterator BSBIT;
342  BSBIT bsbc = badStripBlocks_.begin(), bsbe = badStripBlocks_.end();
343 
344  int16_t bad = 0, largestBadBlock = 0;
345  for (BSBIT bsbc = badStripBlocks_.begin(), bsbe = badStripBlocks_.end(); bsbc != bsbe; ++bsbc) {
346  if (bsbc->last < start) continue;
347  if (bsbc->first > end) break;
348  int16_t thisBad = std::min(bsbc->last, end) - std::max(bsbc->first, start);
349  if (thisBad > largestBadBlock) largestBadBlock = thisBad;
350  bad += thisBad;
351  }
352 
353  bool ok = (bad < (end-start)) &&
354  (uint16_t(bad) <= badStripCuts_.maxBad) &&
355  (uint16_t(largestBadBlock) <= badStripCuts_.maxConsecutiveBad);
356 
357 // if (bad) {
358 // edm::LogWarning("TkStripMeasurementDet") << "Testing module " << id_ <<" (subdet: "<< SiStripDetId(id_).subdetId() << ")" <<
359 // " U = " << utraj << " +/- " << uerr <<
360 // "; Range [" << (utraj - 3*uerr) << ", " << (utraj + 3*uerr) << "] " <<
361 // "= [" << start << "," << end << "]" <<
362 // " total strips:" << (end-start) << ", good:" << (end-start-bad) << ", bad:" << bad << ", largestBadBlock: " << largestBadBlock <<
363 // ". " << (ok ? "OK" : "NO");
364 // }
365  return ok;
366 }
#define min(a, b)
Definition: mlp_lapack.h:161
int bad(Items const &cont)
const T & max(const T &a, const T &b)
#define end
Definition: vmac.h:38
std::vector< BadStripBlock > badStripBlocks_
const detset& TkStripMeasurementDet::theSet ( )
inline

Definition at line 105 of file TkStripMeasurementDet.h.

References detSet_.

105 {return detSet_;}
void TkStripMeasurementDet::update ( const detset detSet,
const edm::Handle< edmNew::DetSetVector< SiStripCluster > >  h,
unsigned int  id 
)
inline

Definition at line 44 of file TkStripMeasurementDet.h.

References detSet_, empty, h, handle_, ExpressReco_HICollisions_FallBack::id, id_, and isRegional.

Referenced by OnDemandMeasurementTracker::assign(), python.Vispa.Gui.VispaWidget.VispaWidget::autosize(), python.Vispa.Views.LineDecayView.LineDecayContainer::createObject(), python.Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), python.Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), python.Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), python.Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), python.Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), python.Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), python.Vispa.Gui.FindDialog.FindDialog::reset(), python.Vispa.Gui.PortConnection.PointToPointConnection::select(), python.Vispa.Gui.VispaWidget.VispaWidget::select(), python.Vispa.Views.LineDecayView.LineDecayContainer::select(), python.Vispa.Gui.VispaWidget.VispaWidget::setText(), python.Vispa.Gui.VispaWidget.VispaWidget::setTitle(), python.Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), python.Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), python.Vispa.Gui.PortConnection.PointToPointConnection::updateConnection(), and MeasurementTracker::updateStrips().

46  {
47  detSet_ = detSet;
48  handle_ = h;
49  id_ = id;
50  empty = false;
51  isRegional = false;
52  }
edm::Handle< edmNew::DetSetVector< SiStripCluster > > handle_
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
void TkStripMeasurementDet::update ( std::vector< SiStripCluster >::const_iterator  begin,
std::vector< SiStripCluster >::const_iterator  end,
const edm::Handle< edm::LazyGetter< SiStripCluster > >  h,
unsigned int  id 
)
inline

Definition at line 54 of file TkStripMeasurementDet.h.

References activeThisEvent_, begin, beginCluster, empty, end, endCluster, h, ExpressReco_HICollisions_FallBack::id, id_, isRegional, and regionalHandle_.

Referenced by python.Vispa.Gui.VispaWidget.VispaWidget::autosize(), python.Vispa.Views.LineDecayView.LineDecayContainer::createObject(), python.Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), python.Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), python.Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), python.Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), python.Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), python.Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), python.Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), python.Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), python.Vispa.Gui.FindDialog.FindDialog::reset(), python.Vispa.Gui.PortConnection.PointToPointConnection::select(), python.Vispa.Gui.VispaWidget.VispaWidget::select(), python.Vispa.Views.LineDecayView.LineDecayContainer::select(), python.Vispa.Gui.VispaWidget.VispaWidget::setText(), python.Vispa.Gui.VispaWidget.VispaWidget::setTitle(), python.Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), python.Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and python.Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

56  {
58  endCluster = end;
60  id_ = id;
61  empty = false;
62  activeThisEvent_ = true;
63  isRegional = true;
64  }
std::vector< SiStripCluster >::const_iterator beginCluster
std::vector< SiStripCluster >::const_iterator endCluster
#define end
Definition: vmac.h:38
#define begin
Definition: vmac.h:31
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
edm::Handle< edm::LazyGetter< SiStripCluster > > regionalHandle_

Member Data Documentation

bool TkStripMeasurementDet::activeThisEvent_
private

Definition at line 149 of file TkStripMeasurementDet.h.

Referenced by isActive(), setActive(), setActiveThisEvent(), setEmpty(), and update().

bool TkStripMeasurementDet::activeThisPeriod_
private

Definition at line 149 of file TkStripMeasurementDet.h.

Referenced by isActive(), and setActive().

bool TkStripMeasurementDet::bad128Strip_[6]
private

Definition at line 162 of file TkStripMeasurementDet.h.

Referenced by isMasked(), and set128StripStatus().

std::vector<BadStripBlock> TkStripMeasurementDet::badStripBlocks_
private

Definition at line 165 of file TkStripMeasurementDet.h.

Referenced by getBadStripBlocks(), hasAllGoodChannels(), and testStrips().

BadStripCuts TkStripMeasurementDet::badStripCuts_
private

Definition at line 167 of file TkStripMeasurementDet.h.

Referenced by setBadStripCuts(), and testStrips().

std::vector<SiStripCluster>::const_iterator TkStripMeasurementDet::beginCluster
private

Definition at line 172 of file TkStripMeasurementDet.h.

Referenced by fastMeasurements(), recHits(), simpleRecHits(), size(), and update().

detset TkStripMeasurementDet::detSet_
private

Definition at line 153 of file TkStripMeasurementDet.h.

Referenced by fastMeasurements(), recHits(), simpleRecHits(), theSet(), and update().

bool TkStripMeasurementDet::empty
private
std::vector<SiStripCluster>::const_iterator TkStripMeasurementDet::endCluster
private

Definition at line 173 of file TkStripMeasurementDet.h.

Referenced by fastMeasurements(), recHits(), simpleRecHits(), size(), and update().

edm::Handle<edmNew::DetSetVector<SiStripCluster> > TkStripMeasurementDet::handle_
private

Definition at line 154 of file TkStripMeasurementDet.h.

Referenced by fastMeasurements(), recHits(), simpleRecHits(), and update().

bool TkStripMeasurementDet::hasAny128StripBad_
private

Definition at line 163 of file TkStripMeasurementDet.h.

Referenced by hasAllGoodChannels(), and set128StripStatus().

unsigned int TkStripMeasurementDet::id_
private

Definition at line 151 of file TkStripMeasurementDet.h.

Referenced by rawId(), TkStripMeasurementDet(), and update().

bool TkStripMeasurementDet::isRegional
private

Definition at line 145 of file TkStripMeasurementDet.h.

Referenced by fastMeasurements(), recHits(), simpleRecHits(), and update().

bool TkStripMeasurementDet::maskBad128StripBlocks_
private

Definition at line 163 of file TkStripMeasurementDet.h.

Referenced by setMaskBad128StripBlocks().

edm::Handle<edm::LazyGetter<SiStripCluster> > TkStripMeasurementDet::regionalHandle_
private

Definition at line 171 of file TkStripMeasurementDet.h.

Referenced by fastMeasurements(), recHits(), simpleRecHits(), and update().

const StripClusterParameterEstimator* TkStripMeasurementDet::theCPE
private

Definition at line 158 of file TkStripMeasurementDet.h.

Referenced by buildRecHit(), buildRecHits(), and buildSimpleRecHit().

const StripGeomDetUnit* TkStripMeasurementDet::theStripGDU
private
int TkStripMeasurementDet::totalStrips_
private

Definition at line 166 of file TkStripMeasurementDet.h.

Referenced by testStrips(), and TkStripMeasurementDet().