181 std::vector<const HitDoublets *> hitDoublets;
183 std::vector<CACell::CAntuplet> foundTriplets;
186 for(
const auto& regionLayerPairs: regionDoublets) {
190 foundTriplets.clear();
193 createGraphStructure(layers, g);
196 clearGraphStructure(layers, g);
198 fillGraph(layers, regionLayerPairs, g, hitDoublets);
203 auto & allCells = ca.getAllCells();
208 std::array<float, 3> bc_r;
209 std::array<float, 3> bc_z;
210 std::array<float, 3> bc_errZ2;
211 std::array<GlobalPoint, 3> gps;
212 std::array<GlobalError, 3> ges;
213 std::array<bool, 3> barrels;
215 unsigned int numberOfFoundTriplets = foundTriplets.size();
216 for (
unsigned int tripletId = 0; tripletId < numberOfFoundTriplets;
220 OrderedHitTriplet tmpTriplet(allCells[foundTriplets[tripletId][0]].getInnerHit(),
221 allCells[foundTriplets[tripletId][0]].getOuterHit(),
222 allCells[foundTriplets[tripletId][1]].getOuterHit());
228 for (
unsigned int i = 0;
i < 2; ++
i)
230 auto const& ahit = allCells[foundTriplets[tripletId][
i]].getInnerHit();
231 gps[
i] = ahit->globalPosition();
232 ges[
i] = ahit->globalPositionError();
233 barrels[
i] =
isBarrel(ahit->geographicalId().subdetId());
236 auto const& ahit = allCells[foundTriplets[tripletId][1]].getOuterHit();
237 gps[2] = ahit->globalPosition();
238 ges[2] = ahit->globalPositionError();
239 barrels[2] =
isBarrel(ahit->geographicalId().subdetId());
244 const float curvature = predictionRPhi.curvature(
246 const float abscurv =
std::abs(curvature);
247 const float thisMaxChi2 = maxChi2Eval.value(abscurv);
248 float chi2 = std::numeric_limits<float>::quiet_NaN();
254 const float simpleCot = (gps.back().z() - gps.front().z())
255 / (gps.back().perp() - gps.front().perp());
257 for (
int i = 0;
i < 3; ++
i)
266 bc_z[
i] = point.
z() - region.
origin().
z();
270 error.
rerr(point) *
sqr(simpleCot);
273 chi2 = rzLine.chi2();
277 RZLine rzLine(gps, ges, barrels);
278 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