34 inline float sqr(
float x) {
return x*
x; }
38 float areaParallelogram
39 (
const Vector2D&
a,
const Vector2D&
b)
41 return a.x() * b.y() - a.y() * b.x();
55 if(0.
f == curvature) {
56 LogDebug(
"LowPtClusterShapeSeedComparitor")<<
"the curvature is null:"
59 <<
"\n point3: "<<g[2];
65 Vector2D
c = circle.center();
66 for(
int i=0;
i!=3;
i++)
67 p[
i] = g[
i].basicVector().xy() -
c;
70 float area =
std::abs(areaParallelogram(p[1] - p[0], p[1]));
72 float a12 = std::asin(
std::min(area*curvature*curvature,1.
f));
74 float slope = (g[1].
z() - g[0].
z()) / a12;
80 float cosTheta = cotTheta*sinTheta;
82 if (areaParallelogram(p[0], p[1] ) < 0) sinTheta = - sinTheta;
84 for(
int i = 0;
i!=3;
i++) {
85 Vector2D vl = p[
i]*(curvature*sinTheta);
101 for(
unsigned int i=0;
i!=hits.
size(); ++
i)
102 globalPoss[
i] = hits[
i]->globalPosition();
126 assert(filter != 0 &&
"LowPtClusterShapeSeedComparitor: init(EventSetup) method was not called");
130 getGlobalPos(hits, globalPoss);
135 bool ok = getGlobalDirs(globalPoss,globalDirs);
142 LogDebug(
"LowPtClusterShapeSeedComparitor")<<
"curvarture 0:"
143 <<
"\nnHits: "<<hits.
size()
144 <<
" will say the seed is good anyway.";
148 for(
int i = 0;
i < 3;
i++)
154 edm::LogError(
"LowPtClusterShapeSeedComparitor")<<
"this is not a pixel cluster";
163 LogDebug(
"LowPtClusterShapeSeedComparitor")<<
"about to compute compatibility."
164 <<
"hit ptr: "<<pixelRecHit
165 <<
"global direction:"<< globalDirs[
i];
170 LogTrace(
"LowPtClusterShapeSeedComparitor")
171 <<
" clusShape is not compatible"
bool getByToken(EDGetToken token, Handle< PROD > &result) const
static const double slope[3]
edm::ESHandle< ClusterShapeHitFilter > theShapeFilter
something
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 g
edm::ESHandle< TrackerTopology > theTTopo
T x() const
Cartesian x coordinate.
T curvature(T InversePt, const edm::EventSetup &iSetup)
virtual bool compatible(const SeedingHitSet &hits, const TrackingRegion ®ion) const
Basic2DVector< double >::MathVector Vector2D
Abs< T >::type abs(const T &t)
LowPtClusterShapeSeedComparitor(const edm::ParameterSet &ps, edm::ConsumesCollector &iC)
edm::Handle< SiPixelClusterShapeCache > thePixelClusterShapeCache
virtual void init(const edm::Event &e, const edm::EventSetup &es)
edm::EDGetTokenT< SiPixelClusterShapeCache > thePixelClusterShapeCacheToken
T const * product() const
Square< F >::type sqr(const F &f)
unsigned int size() const
static std::string getInfo(const DetId &id, const TrackerTopology *tTopo)
Global3DVector GlobalVector