9 template <
class T>
inline T sqr(
T t) {
return t*
t;}
34 if (isInitialised)
return;
35 for (
auto x : keepers)
x->init(iSetup);
38 Keepers() : keepers{&x0DetLayer,&x0AtEta,&x0Averaged}, isInitialised(
false) {}
41 thread_local Keepers keepers;
57 theLayerKeeper(keepers(x0Source))
69 float pT,
float cotTheta,
float)
const
85 float sumX0D = layersAtEta.
sumX0D(pointI, pointO);
115 float cotTheta = lineIO.
cotLine();
118 float dist = fabs( (pointO.
r()-pointM.
r())
119 * (pointM.
r()-pointI.
r())
120 / (pointO.
r()-pointI.
r()) );
124 float sumX0D = layersAtEta.
sumX0D(pointI, pointM, pointO);
138 float cotTheta = lineIO.
cotLine();
MultipleScatteringParametrisation(const DetLayer *layer, const edm::EventSetup &iSetup, X0Source x0source=useX0AtEta)
float sumX0D(float cotTheta) const
float x0(float cotTheta) const
MSLayersKeeper const * theLayerKeeper
T x() const
Cartesian x coordinate.
virtual const MSLayersAtAngle & layers(float cotTheta) const =0
float sumX0D(const PixelRecoPointRZ &pointI, const PixelRecoPointRZ &pointO) const
std::pair< PixelRecoPointRZ, bool > crossing(const PixelRecoLineRZ &line) const
float operator()(float pt, float cotTheta, float transverseIP=0.) const
static void initKeepers(const edm::EventSetup &iSetup)
virtual MSLayer layer(const DetLayer *dl) const
static const float x0ToSigma
Square< F >::type sqr(const F &f)