9 template <
class T>
inline T sqr(
T t) {
return t*
t;}
27 MSLayersKeeperX0DetLayer x0DetLayer;
28 MSLayersKeeperX0AtEta x0AtEta;
29 MSLayersKeeperX0Averaged x0Averaged;
34 if (isInitialised)
return;
35 for (
auto x : keepers)
x->init(iSetup);
38 Keepers() : keepers{&x0DetLayer,&x0AtEta,&x0Averaged}, isInitialised(
false) {}
41 const Keepers keepers;
46 const_cast<Keepers&
>(keepers).
init(iSetup);
53 theLayerKeeper(keepers(x0Source))
65 float pT,
float cotTheta,
float)
const
81 float sumX0D = layersAtEta.
sumX0D(pointI, pointO);
111 float cotTheta = lineIO.
cotLine();
114 float dist = fabs( (pointO.
r()-pointM.
r())
115 * (pointM.
r()-pointI.
r())
116 / (pointO.
r()-pointI.
r()) );
120 float sumX0D = layersAtEta.
sumX0D(pointI, pointM, pointO);
134 float cotTheta = lineIO.
cotLine();
MultipleScatteringParametrisation(const DetLayer *layer, const edm::EventSetup &iSetup, X0Source x0source=useX0AtEta)
MSLayersKeeper const * theLayerKeeper
float sumX0D(float cotTheta) const dso_hidden
virtual const MSLayersAtAngle & layers(float cotTheta) const =0
float sumX0D(const PixelRecoPointRZ &pointI, const PixelRecoPointRZ &pointO) 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
std::pair< PixelRecoPointRZ, bool > crossing(const PixelRecoLineRZ &line) const dso_hidden
static const float x0ToSigma
Square< F >::type sqr(const F &f)
float x0(float cotTheta) const dso_hidden