3 #include <Math/CylindricalEta3D.h>
4 #include <Math/Polar3D.h>
5 #include <Math/Cartesian3D.h>
6 #include <Math/DisplacementVector3D.h>
7 #include <Math/Functions.h>
32 map<string, Parametrization>::const_iterator itP = parMaps.find(
name);
33 if (itP == parMaps.end()) {
34 throw cms::Exception(
"StringResolutionProvider") <<
"Bad parametrization '" <<
name.c_str() <<
"'";
66 return "EScaledMomDev";
79 ROOT::Math::CylindricalEta3D<double>
converter;
97 ret.SetM(initialP4.mass());
133 ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double> >
p = initialP4.Vect(), uz(0, 0, 1), uph, uth;
134 uph = uz.Cross(
p).Unit();
135 uth =
p.Cross(uph).Unit();
139 ret.SetCoordinates(
p.Rho(),
p.Eta(),
p.Phi(), initialP4.mass() *
parameters[3]);
142 ret.SetCoordinates(
p.Rho(),
p.Eta(),
p.Phi(), (
m2 > 0 ?
sqrt(
m2) : 0.0));
145 ret.SetCoordinates(
p.Rho(),
p.Eta(),
p.Phi(), (
m2 > 0 ?
sqrt(
m2) : 0.0));
147 ret.SetCoordinates(
p.Rho(),
p.Eta(),
p.Phi(), initialP4.mass());
156 <<
"getResolEta not yet implemented for parametrization " <<
parametrization;
190 ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double> >
p = initialP4.Vect(), uz(0, 0, 1), uph, uth;
191 uph = uz.Cross(
p).Unit();
192 uth =
p.Cross(uph).Unit();
198 ret.SetCoordinates(
p.X(),
p.Y(),
p.Z(),
parameters[3] * initialP4.energy());
200 ret.SetCoordinates(
p.X(),
p.Y(),
p.Z(),
p.R() * initialP4.E() / initialP4.P());
202 ret.SetCoordinates(
p.X(),
p.Y(),
p.Z(),
sqrt(
p.Mag2() + initialP4.mass() * initialP4.mass()));
213 template <
typename T>
234 ret[3] =
p4.energy();
253 ret[3] =
p4.energy();
256 ret[0] = 1.0 /
p4.P();
299 <<
"getResolEta not yet implemented for parametrization " <<
parametrization;
361 <<
"diffToParameters not yet implemented for parametrization " <<
parametrization;
393 typedef ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double> > V3Cart;
394 V3Cart
p1 = p4ini.Vect(),
p2 = p4fin.Vect();
395 V3Cart ur =
p1.Unit();
397 V3Cart uph = uz.Cross(ur).Unit();
398 V3Cart uth = ur.Cross(uph).Unit();
399 ret[0] =
p2.Dot(ur) /
p1.R() - 1.0;
403 ret[3] = p4fin.mass() / p4ini.mass() - 1.0;
405 ret[3] = p4fin.energy() / p4ini.energy() - 1.0;
412 <<
"diffToParameters not yet implemented for parametrization " <<
parametrization;
438 <<
"isAlwaysMassless not yet implemented for parametrization " <<
parametrization;
463 <<
"isAlwaysMassless not yet implemented for parametrization " <<
parametrization;
488 <<
"isAlwaysMassless not yet implemented for parametrization " <<
parametrization;
539 ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double> >
p = initialP4.Vect(), uz(0, 0, 1), uph, uth;
540 uph = uz.Cross(
p).Unit();
541 uth =
p.Cross(uph).Unit();
564 <<
"getResolEta not yet implemented for parametrization " <<
parametrization;