CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes | Friends
hitfit::Fourvec_Event Class Reference

Represent an event for kinematic fitting as a collection of four-momenta. Each object is represented as an instance of FE_Obj. There may be an object for a neutrino. If that is the case, it is always at the end of the object list. It is not included in the count returned by nobjs(). But is is included in nobjs_all(). More...

#include <Fourvec_Event.h>

Public Member Functions

void add (const FE_Obj &obj)
 Add an object to the event. The object should not be a neutrino, use the method set_nu_p for that. More...
 
 Fourvec_Event ()
 Default constructor. More...
 
bool has_neutrino () const
 Return TRUE is this event contains a neutrino, otherwise returns FALSE. More...
 
const Fourveckt () const
 Access the $k_{T}$ four-momentum. More...
 
double kt_x_error () const
 Return the x uncertainty in $k_{T}$. More...
 
double kt_xy_covar () const
 Return the xy covariance in $k_{T}$. More...
 
double kt_y_error () const
 Return the y uncertainty in $k_{T}$. More...
 
int nobjs () const
 Return the number of objects in the event not including any neutrinos. More...
 
int nobjs_all () const
 Return the number of objects in the event including any neutrinos. More...
 
const Fourvecnu () const
 Access the neutrino four-momentum. More...
 
const FE_Objobj (std::vector< FE_Obj >::size_type i) const
 Access object at index i, with the convention that the index starts at 0. More...
 
void set_kt_error (double kt_x_error, double kt_y_error, double kt_xy_covar)
 Set the uncertainties on $k_{T}$. More...
 
void set_nu_p (const Fourvec &p)
 Set the neutrino four-momentum to $p$. This method adds a neutrino if there wasn't already one. More...
 
void set_obj_p (std::vector< FE_Obj >::size_type i, const Fourvec &p)
 Set the four-momentum of object at index i to $p$. More...
 
void set_x_p (const Fourvec &p)
 Set the four-momentum of the $x$ object. More...
 
const Fourvecx () const
 Access the $x$ four-momentum. More...
 

Private Attributes

bool _has_neutrino
 
Fourvec _kt
 
double _kt_x_error
 
double _kt_xy_covar
 
double _kt_y_error
 
std::vector< FE_Obj_objs
 
Fourvec _x
 

Friends

std::ostream & operator<< (std::ostream &s, const Fourvec_Event &fe)
 Output stream operator, print the content of this Fourvec_Event object to an output stream. More...
 

Detailed Description

Represent an event for kinematic fitting as a collection of four-momenta. Each object is represented as an instance of FE_Obj. There may be an object for a neutrino. If that is the case, it is always at the end of the object list. It is not included in the count returned by nobjs(). But is is included in nobjs_all().

We can also record the other $x$ momentum, that will be added into the $k_{T}$ sum. This can be used to store a missing transverse energy that is not attributed to a neutrino but is instead due to mismeasurement. Typically this will be set to zero in events that have a neutrino, and to the measured missing transverse energy in events that do not.

Definition at line 202 of file Fourvec_Event.h.

Constructor & Destructor Documentation

hitfit::Fourvec_Event::Fourvec_Event ( )

Default constructor.

Definition at line 112 of file Fourvec_Event.cc.

116  : _kt_x_error (0),
117  _kt_y_error (0),
118  _kt_xy_covar (0),
119  _has_neutrino (false)
120 {
121 }

Member Function Documentation

void hitfit::Fourvec_Event::add ( const FE_Obj obj)

Add an object to the event. The object should not be a neutrino, use the method set_nu_p for that.

Parameters
objThe FE_Obj to add.

Definition at line 268 of file Fourvec_Event.cc.

References _has_neutrino, _kt, _objs, hitfit::FE_Obj::label, hitfit::nu_label, obj(), and hitfit::FE_Obj::p.

276 {
277  assert (obj.label != nu_label);
278 
279  // Add to the end of the list, but before any neutrino.
280  if (_has_neutrino) {
281  assert (_objs.size() > 0);
282  _objs.insert (_objs.begin() + _objs.size() - 1, obj);
283  }
284  else
285  _objs.push_back (obj);
286 
287  // Maintain kt.
288  _kt += obj.p;
289 }
const int nu_label
const FE_Obj & obj(std::vector< FE_Obj >::size_type i) const
Access object at index i, with the convention that the index starts at 0.
std::vector< FE_Obj > _objs
bool hitfit::Fourvec_Event::has_neutrino ( ) const

Return TRUE is this event contains a neutrino, otherwise returns FALSE.

Definition at line 124 of file Fourvec_Event.cc.

References _has_neutrino.

Referenced by hitfit::Fourvec_Constrainer::constrain(), and hitfit::Fourvec_Constraint_Calculator::eval().

131 {
132  return _has_neutrino;
133 }
const Fourvec & hitfit::Fourvec_Event::kt ( ) const

Access the $k_{T}$ four-momentum.

Definition at line 184 of file Fourvec_Event.cc.

References _kt.

188 {
189  return _kt;
190 }
double hitfit::Fourvec_Event::kt_x_error ( ) const

Return the x uncertainty in $k_{T}$.

Definition at line 202 of file Fourvec_Event.cc.

References _kt_x_error.

Referenced by set_kt_error().

209 {
210  return _kt_x_error;
211 }
double hitfit::Fourvec_Event::kt_xy_covar ( ) const

Return the xy covariance in $k_{T}$.

Definition at line 226 of file Fourvec_Event.cc.

References _kt_xy_covar.

Referenced by set_kt_error().

233 {
234  return _kt_xy_covar;
235 }
double hitfit::Fourvec_Event::kt_y_error ( ) const

Return the y uncertainty in $k_{T}$.

Definition at line 214 of file Fourvec_Event.cc.

References _kt_y_error.

Referenced by set_kt_error().

221 {
222  return _kt_y_error;
223 }
int hitfit::Fourvec_Event::nobjs ( ) const

Return the number of objects in the event not including any neutrinos.

Definition at line 136 of file Fourvec_Event.cc.

References _has_neutrino, and _objs.

Referenced by hitfit::Fourvec_Constrainer::constrain(), and hitfit::Fourvec_Constraint_Calculator::eval().

144 {
145  return _objs.size() - (_has_neutrino ? 1 : 0);
146 }
std::vector< FE_Obj > _objs
int hitfit::Fourvec_Event::nobjs_all ( ) const

Return the number of objects in the event including any neutrinos.

Definition at line 149 of file Fourvec_Event.cc.

References _objs.

Referenced by hitfit::Pair_Table::Pair_Table().

156 {
157  return _objs.size();
158 }
std::vector< FE_Obj > _objs
const Fourvec & hitfit::Fourvec_Event::nu ( ) const

Access the neutrino four-momentum.

Definition at line 174 of file Fourvec_Event.cc.

References _has_neutrino, and _objs.

178 {
179  assert (_has_neutrino);
180  return _objs.back().p;
181 }
std::vector< FE_Obj > _objs
const FE_Obj & hitfit::Fourvec_Event::obj ( std::vector< FE_Obj >::size_type  i) const

Access object at index i, with the convention that the index starts at 0.

Parameters
iThe index of the desired object.

Definition at line 161 of file Fourvec_Event.cc.

References i.

Referenced by add(), and hitfit::Pair_Table::Pair_Table().

168 {
169  assert (i < _objs.size ());
170  return _objs[i];
171 }
int i
Definition: DBlmapReader.cc:9
std::vector< FE_Obj > _objs
void hitfit::Fourvec_Event::set_kt_error ( double  kt_x_error,
double  kt_y_error,
double  kt_xy_covar 
)

Set the uncertainties on $k_{T}$.

Parameters
kt_x_errorThe uncertainty in the $x-$component of $k_{T}$.
kt_y_errorThe uncertainty in the $y-$component of $k_{T}$.
kt_xy_covarThe covariance between the $x-$ and $y-$component of $k_{T}$.

Definition at line 344 of file Fourvec_Event.cc.

References _kt_x_error, _kt_xy_covar, _kt_y_error, kt_x_error(), kt_xy_covar(), and kt_y_error().

355 {
359 }
double kt_y_error() const
Return the y uncertainty in .
double kt_xy_covar() const
Return the xy covariance in .
double kt_x_error() const
Return the x uncertainty in .
void hitfit::Fourvec_Event::set_nu_p ( const Fourvec p)

Set the neutrino four-momentum to $p$. This method adds a neutrino if there wasn't already one.

Parameters
pThe new four-momentum of the neutrino.

Definition at line 292 of file Fourvec_Event.cc.

References _has_neutrino, _kt, _objs, hitfit::nu_label, and AlCaHLTBitMon_ParallelJobs::p.

300 {
301  if (_has_neutrino) {
302  _kt -= _objs.back().p;
303  _objs.back().p = p;
304  }
305  else {
306  _has_neutrino = true;
307  _objs.push_back (FE_Obj (p, 0, nu_label, 0, 0, 0, false));
308  }
309 
310  _kt += p;
311 }
const int nu_label
std::vector< FE_Obj > _objs
void hitfit::Fourvec_Event::set_obj_p ( std::vector< FE_Obj >::size_type  i,
const Fourvec p 
)

Set the four-momentum of object at index i to $p$.

Parameters
iThe position index of the object to change.
pThe new four-momentum of object at index i.

Definition at line 314 of file Fourvec_Event.cc.

References _kt, _objs, i, and AlCaHLTBitMon_ParallelJobs::p.

322 {
323  assert (i < _objs.size ());
324  _kt -= _objs[i].p;
325  _objs[i].p = p;
326  _kt += p;
327 }
int i
Definition: DBlmapReader.cc:9
std::vector< FE_Obj > _objs
void hitfit::Fourvec_Event::set_x_p ( const Fourvec p)

Set the four-momentum of the $x$ object.

Parameters
pThe new four-momentum of the $x$ object.

Definition at line 330 of file Fourvec_Event.cc.

References _kt, _x, and AlCaHLTBitMon_ParallelJobs::p.

337 {
338  _kt -= _x;
339  _x = p;
340  _kt += p;
341 }
const Fourvec & hitfit::Fourvec_Event::x ( ) const

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  s,
const Fourvec_Event fe 
)
friend

Output stream operator, print the content of this Fourvec_Event object to an output stream.

Parameters
sThe stream to which to write.
feThe instance of Fourvec_Event to be printed.

Definition at line 246 of file Fourvec_Event.cc.

257 {
258  s << "kt: (" << fe._kt.x() << ", " << fe._kt.y() << "); "
259  << " error: " << fe._kt_x_error << " " << fe._kt_y_error << " "
260  << fe._kt_xy_covar << "\n";
261  s << "x: " << fe._x << "\n";
262  for (unsigned i = 0; i < fe._objs.size(); i++)
263  s << i+1 << ": " << fe._objs[i];
264  return s;
265 }
int i
Definition: DBlmapReader.cc:9

Member Data Documentation

bool hitfit::Fourvec_Event::_has_neutrino
private

Flag that a neutrino has been added to the event.

Definition at line 385 of file Fourvec_Event.h.

Referenced by add(), has_neutrino(), nobjs(), nu(), and set_nu_p().

Fourvec hitfit::Fourvec_Event::_kt
private

Cached $k_{T}$, this should always be equal to the sum of all the object momenta, including $x$.

Definition at line 358 of file Fourvec_Event.h.

Referenced by add(), kt(), hitfit::operator<<(), set_nu_p(), set_obj_p(), and set_x_p().

double hitfit::Fourvec_Event::_kt_x_error
private

The uncertainty in the $x-$component of $k_{T}$.

Definition at line 369 of file Fourvec_Event.h.

Referenced by kt_x_error(), hitfit::operator<<(), and set_kt_error().

double hitfit::Fourvec_Event::_kt_xy_covar
private

The covariance between the $x-$ and $y-$component of $k_{T}$.

Definition at line 379 of file Fourvec_Event.h.

Referenced by kt_xy_covar(), hitfit::operator<<(), and set_kt_error().

double hitfit::Fourvec_Event::_kt_y_error
private

The uncertainty in the $y-$component of $k_{T}$.

Definition at line 373 of file Fourvec_Event.h.

Referenced by kt_y_error(), hitfit::operator<<(), and set_kt_error().

std::vector<FE_Obj> hitfit::Fourvec_Event::_objs
private

The list of contained objects in the event.

Definition at line 350 of file Fourvec_Event.h.

Referenced by add(), nobjs(), nobjs_all(), nu(), hitfit::operator<<(), set_nu_p(), and set_obj_p().

Fourvec hitfit::Fourvec_Event::_x
private

Four-momentum of the $x$ object.

Definition at line 364 of file Fourvec_Event.h.

Referenced by hitfit::operator<<(), set_x_p(), and x().