60 string field (
string s,
int i)
74 pos = s.find (
'/', pos);
75 if (pos == string::npos)
82 if (pos2 != string::npos)
85 while (pos < pos2 && isspace (s[pos]))
88 return s.substr (pos, pos2);
120 : _p_res (field (s, 0)),
121 _eta_res (field (s, 1)),
122 _phi_res (field (s, 2)),
123 _use_et (field (s, 3) ==
"et")
224 double ee = use_et ? v.perp() : v.e();
225 return res.
sigma (ee);
243 double sig = find_sigma (v, _p_res, _use_et);
245 if(_p_res.inverse()){
246 sig *= v.perp() / v.e();
248 sig *= v.e() / v.perp();
266 return find_sigma (v, _eta_res, _use_et);
281 return find_sigma (v, _phi_res, _use_et);
300 void smear_eta (
Fourvec& v,
double ee,
301 const Resolution& res, CLHEP::HepRandomEngine& engine)
315 double rot = res.
pick (0, ee, engine);
331 void smear_phi (
Fourvec& v,
double ee,
332 const Resolution& res, CLHEP::HepRandomEngine& engine)
346 double rot = res.pick (0, ee, engine);
355 CLHEP::HepRandomEngine& engine,
356 bool do_smear_dir )
const
369 double ee = _use_et ? v.perp() : v.e();
370 v *= _p_res.pick (ee, ee, engine) / ee;
373 smear_eta (v, ee, _eta_res, engine);
374 smear_phi (v, ee, _phi_res, engine);
Calculate and represent resolution for a vector of momentum , pseudorapidity , and azimuthal angle ...
Define three-vector and four-vector classes for the HitFit package, and supply a few additional opera...
Calculate and represent resolution for a physical quantity.
bool use_et() const
Return the use_et flag.
double phi_sigma(const Fourvec &v) const
Calculate the azimuthal angle resolution of a four-momentum.
void roteta(Fourvec &v, double eta)
Rotate four-vector v through a polar angle such that the four-vector pseudorapidity changes by a desi...
double pick(double x, double p, CLHEP::HepRandomEngine &engine) const
Generate random value from a Gaussian distribution described by this resolution. Given a value ...
Vector_Resolution()
Constructor, instantiate an instance of Vector_Resolution with infinite precision.
double p_sigma(const Fourvec &v) const
Calculate the momentum resolution of a four-momentum.
const Resolution & eta_res() const
Return a constant reference to the pseudorapidity resolution.
double eta_sigma(const Fourvec &v) const
Calculate the pseudorapidity resolution of a four-momentum.
CLHEP::HepLorentzVector Fourvec
Typedef for a HepLorentzVector.
double sigma(double p) const
Return the uncertainty for a variable with magnitude p.
void smear(Fourvec &v, CLHEP::HepRandomEngine &engine, bool do_smear_dir=false) const
Smear a four-momentum according to the resolutions.
const Resolution & p_res() const
Return a constant reference to the momentum resolution.
const Resolution & phi_res() const
Return a constant reference to the azimuthal angle resolution.
std::ostream & operator<<(std::ostream &s, const Constraint_Intermed &ci)
Output stream operator, print the content of this Constraint_Intermed to an output stream...
Calculate and represent resolution for a vector of , pseudorapidity , and azimuthal angle ...