186 std::vector<const HitDoublets *> hitDoublets;
188 std::vector<CACell::CAntuplet> foundTriplets;
191 for(
const auto& regionLayerPairs: regionDoublets) {
195 foundTriplets.clear();
198 createGraphStructure(layers, g);
201 clearGraphStructure(layers, g);
203 fillGraph(layers, regionLayerPairs, g, hitDoublets);
208 auto & allCells = ca.getAllCells();
213 std::array<float, 3> bc_r;
214 std::array<float, 3> bc_z;
215 std::array<float, 3> bc_errZ2;
216 std::array<GlobalPoint, 3> gps;
217 std::array<GlobalError, 3> ges;
218 std::array<bool, 3> barrels;
220 unsigned int numberOfFoundTriplets = foundTriplets.size();
221 for (
unsigned int tripletId = 0; tripletId < numberOfFoundTriplets;
225 OrderedHitTriplet tmpTriplet(allCells[foundTriplets[tripletId][0]].getInnerHit(),
226 allCells[foundTriplets[tripletId][0]].getOuterHit(),
227 allCells[foundTriplets[tripletId][1]].getOuterHit());
233 for (
unsigned int i = 0;
i < 2; ++
i)
235 auto const& ahit = allCells[foundTriplets[tripletId][
i]].getInnerHit();
236 gps[
i] = ahit->globalPosition();
237 ges[
i] = ahit->globalPositionError();
238 barrels[
i] =
isBarrel(ahit->geographicalId().subdetId());
241 auto const& ahit = allCells[foundTriplets[tripletId][1]].getOuterHit();
242 gps[2] = ahit->globalPosition();
243 ges[2] = ahit->globalPositionError();
244 barrels[2] =
isBarrel(ahit->geographicalId().subdetId());
249 const float curvature = predictionRPhi.curvature(
251 const float abscurv =
std::abs(curvature);
252 const float thisMaxChi2 = maxChi2Eval.value(abscurv);
253 float chi2 = std::numeric_limits<float>::quiet_NaN();
259 const float simpleCot = (gps.back().z() - gps.front().z())
260 / (gps.back().perp() - gps.front().perp());
262 for (
int i = 0;
i < 3; ++
i)
271 bc_z[
i] = point.
z() - region.
origin().
z();
275 error.
rerr(point) *
sqr(simpleCot);
278 chi2 = rzLine.chi2();
282 RZLine rzLine(gps, ges, barrels);
283 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