CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TkPixelMeasurementDet.cc
Go to the documentation of this file.
10 
11 
12 namespace {
13  const float theRocWidth = 8.1;
14  const float theRocHeight = 8.1;
15 }
16 
18  PxMeasurementConditionSet & conditions ) :
19  MeasurementDet (gdet),
20  theDetConditions(&conditions)
21  {
22  if ( dynamic_cast<const PixelGeomDetUnit*>(gdet) == 0) {
23  throw MeasurementDetException( "TkPixelMeasurementDet constructed with a GeomDet which is not a PixelGeomDetUnit");
24  }
25  }
26 
29  TempMeasurements & result) const {
30 
31  if (!isActive(data)) {
33  return true;
34  }
35 
36  auto oldSize = result.size();
37  MeasurementDet::RecHitContainer && allHits = recHits(stateOnThisDet, data);
38  for (auto && hit : allHits) {
39  std::pair<bool,double> diffEst = est.estimate( stateOnThisDet, *hit);
40  if ( diffEst.first)
41  result.add(std::move(hit), diffEst.second);
42  }
43 
44  if (result.size()>oldSize) return true;
45 
46  // create a TrajectoryMeasurement with an invalid RecHit and zero estimate
47  bool inac = hasBadComponents(stateOnThisDet, data);
49  result.add(InvalidTransientRecHit::build(&fastGeomDet(), type), 0.F);
50  return inac;
51 
52 }
53 
54 
57  const LocalTrajectoryParameters & ltp) const
58 {
59  const GeomDetUnit& gdu( specificGeomDet());
60  LocalValues lv = cpe()->localParameters( * cluster, gdu, ltp );
61  return TSiPixelRecHit::build( lv.first, lv.second, &fastGeomDet(), cluster, cpe());
62 }
63 
66 {
68  if (isEmpty(data.pixelData())== true ) return result;
69  if (isActive(data) == false) return result;
70  const SiPixelCluster* begin=0;
71  if (0 != data.pixelData().handle()->data().size()) {
72  begin = &(data.pixelData().handle()->data().front());
73  }
74  const detset & detSet = data.pixelData().detSet(index());
75  result.reserve(detSet.size());
76  for ( const_iterator ci = detSet.begin(); ci != detSet.end(); ++ ci ) {
77 
78  if (ci < begin){
79  edm::LogError("IndexMisMatch")<<"TkPixelMeasurementDet cannot create hit because of index mismatch.";
80  return result;
81  }
82  unsigned int index = ci-begin;
83  if (!data.pixelClustersToSkip().empty() && index>=data.pixelClustersToSkip().size()){
84  edm::LogError("IndexMisMatch")<<"TkPixelMeasurementDet cannot create hit because of index mismatch. i.e "<<index<<" >= "<<data.pixelClustersToSkip().size();
85  return result;
86  }
87  if(data.pixelClustersToSkip().empty() or (not data.pixelClustersToSkip()[index]) ) {
88  SiPixelClusterRef cluster = edmNew::makeRefTo( data.pixelData().handle(), ci );
89  result.push_back( buildRecHit( cluster, ts.localParameters() ) );
90  }else{
91  LogDebug("TkPixelMeasurementDet")<<"skipping this cluster from last iteration on "<<fastGeomDet().geographicalId().rawId()<<" key: "<<index;
92  }
93  }
94  return result;
95 }
96 
97 bool
99  if (badRocPositions_.empty()) return false;
100  LocalPoint lp = tsos.localPosition();
102  double dx = 3*std::sqrt(le.xx()) + theRocWidth, dy = 3*std::sqrt(le.yy()) + theRocHeight;
103  for (std::vector<LocalPoint>::const_iterator it = badRocPositions_.begin(), ed = badRocPositions_.end(); it != ed; ++it) {
104  if ( (std::abs(it->x() - lp.x()) < dx) &&
105  (std::abs(it->y() - lp.y()) < dy) ) return true;
106  }
107  return false;
108 }
#define LogDebug(id)
type
Definition: HCALResponse.h:21
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)
float xx() const
Definition: LocalError.h:24
virtual bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, const MeasurementTrackerEvent &dat, TempMeasurements &result) const
std::size_t size() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
const LocalTrajectoryParameters & localParameters() const
std::vector< LocalPoint > badRocPositions_
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TransientTrackingRecHit &hit) const =0
const PixelClusterParameterEstimator * cpe() const
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
virtual const GeomDet & geomDet() const
T y() const
Definition: PV3DBase.h:63
bool hasBadComponents(const TrajectoryStateOnSurface &tsos, const MeasurementTrackerEvent &dat) const
const edm::Handle< edmNew::DetSetVector< SiPixelCluster > > & handle() const
const std::vector< bool > & pixelClustersToSkip() const
LocalError positionError() const
const GeomDet & fastGeomDet() const
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
float yy() const
Definition: LocalError.h:26
const PxMeasurementDetSet & pixelData() const
T sqrt(T t)
Definition: SSEVec.h:48
void add(ConstRecHitPointer const &h, float d)
tuple result
Definition: query.py:137
TkPixelMeasurementDet(const GeomDet *gdet, PxMeasurementConditionSet &conditionSet)
data_type const * data(size_t cell) const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:72
const LocalTrajectoryError & localError() const
bool isActive(const MeasurementTrackerEvent &data) const
Is this module active in reconstruction? It must be both &#39;setActiveThisEvent&#39; and &#39;setActive&#39;...
PixelClusterParameterEstimator::LocalValues LocalValues
detset::const_iterator const_iterator
virtual RecHitContainer recHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &dat) const
TransientTrackingRecHit::RecHitPointer buildRecHit(const SiPixelClusterRef &cluster, const LocalTrajectoryParameters &ltp) const
Pixel cluster – collection of neighboring pixels above threshold.
#define begin
Definition: vmac.h:30
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
const PixelGeomDetUnit & specificGeomDet() const
iterator end()
Definition: DetSetNew.h:70
const PixelDetSet & detSet(int i) const
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:281
size_type size() const
Definition: DetSetNew.h:86
T x() const
Definition: PV3DBase.h:62
bool isEmpty(const PxMeasurementDetSet &data) const
virtual LocalValues localParameters(const T &, const GeomDetUnit &) const
int size() const
iterator begin()
Definition: DetSetNew.h:67