187 std::vector<const HitDoublets *> hitDoublets;
189 std::vector<CACell::CAntuplet> foundTriplets;
192 for(
const auto& regionLayerPairs: regionDoublets) {
196 foundTriplets.clear();
199 createGraphStructure(layers, g);
202 clearGraphStructure(layers, g);
204 fillGraph(layers, regionLayerPairs, g, hitDoublets);
209 auto & allCells = ca.getAllCells();
214 std::array<float, 3> bc_r;
215 std::array<float, 3> bc_z;
216 std::array<float, 3> bc_errZ2;
217 std::array<GlobalPoint, 3> gps;
218 std::array<GlobalError, 3> ges;
219 std::array<bool, 3> barrels;
221 unsigned int numberOfFoundTriplets = foundTriplets.size();
222 for (
unsigned int tripletId = 0; tripletId < numberOfFoundTriplets;
226 OrderedHitTriplet tmpTriplet(allCells[foundTriplets[tripletId][0]].getInnerHit(),
227 allCells[foundTriplets[tripletId][0]].getOuterHit(),
228 allCells[foundTriplets[tripletId][1]].getOuterHit());
234 for (
unsigned int i = 0;
i < 2; ++
i)
236 auto const& ahit = allCells[foundTriplets[tripletId][
i]].getInnerHit();
237 gps[
i] = ahit->globalPosition();
238 ges[
i] = ahit->globalPositionError();
239 barrels[
i] =
isBarrel(ahit->geographicalId().subdetId());
242 auto const& ahit = allCells[foundTriplets[tripletId][1]].getOuterHit();
243 gps[2] = ahit->globalPosition();
244 ges[2] = ahit->globalPositionError();
245 barrels[2] =
isBarrel(ahit->geographicalId().subdetId());
250 const float curvature = predictionRPhi.curvature(
252 const float abscurv =
std::abs(curvature);
253 const float thisMaxChi2 = maxChi2Eval.value(abscurv);
254 float chi2 = std::numeric_limits<float>::quiet_NaN();
260 const float simpleCot = (gps.back().z() - gps.front().z())
261 / (gps.back().perp() - gps.front().perp());
263 for (
int i = 0;
i < 3; ++
i)
272 bc_z[
i] = point.
z() - region.
origin().
z();
276 error.
rerr(point) *
sqr(simpleCot);
279 chi2 = rzLine.chi2();
283 RZLine rzLine(gps, ges, barrels);
284 chi2 = rzLine.chi2();
const QuantityDependsPt maxChi2
GlobalPoint const & origin() 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 g
const bool useBendingCorrection
T inversePt(T curvature, const edm::EventSetup &iSetup)
QuantityDependsPtEval evaluator(const edm::EventSetup &es) const
T curvature(T InversePt, const edm::EventSetup &iSetup)
Abs< T >::type abs(const T &t)
T rerr(const GlobalPoint &aPoint) const
Square< F >::type sqr(const F &f)
const float extraHitRPhitolerance
std::unique_ptr< SeedComparitor > theComparitor
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point