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 201 of file Fourvec_Event.h.

Constructor & Destructor Documentation

hitfit::Fourvec_Event::Fourvec_Event ( )

Default constructor.

Definition at line 111 of file Fourvec_Event.cc.

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

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 267 of file Fourvec_Event.cc.

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

275 {
276  assert (obj.label != nu_label);
277 
278  // Add to the end of the list, but before any neutrino.
279  if (_has_neutrino) {
280  assert (_objs.size() > 0);
281  _objs.insert (_objs.begin() + _objs.size() - 1, obj);
282  }
283  else
284  _objs.push_back (obj);
285 
286  // Maintain kt.
287  _kt += obj.p;
288 }
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 123 of file Fourvec_Event.cc.

References _has_neutrino.

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

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

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

Definition at line 183 of file Fourvec_Event.cc.

References _kt.

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

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

Definition at line 201 of file Fourvec_Event.cc.

References _kt_x_error.

Referenced by set_kt_error().

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

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

Definition at line 225 of file Fourvec_Event.cc.

References _kt_xy_covar.

Referenced by set_kt_error().

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

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

Definition at line 213 of file Fourvec_Event.cc.

References _kt_y_error.

Referenced by set_kt_error().

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

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

Definition at line 135 of file Fourvec_Event.cc.

References _has_neutrino, and _objs.

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

143 {
144  return _objs.size() - (_has_neutrino ? 1 : 0);
145 }
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 148 of file Fourvec_Event.cc.

References _objs.

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

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

Access the neutrino four-momentum.

Definition at line 173 of file Fourvec_Event.cc.

References _has_neutrino, and _objs.

177 {
178  assert (_has_neutrino);
179  return _objs.back().p;
180 }
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 160 of file Fourvec_Event.cc.

References i.

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

167 {
168  assert (i < _objs.size ());
169  return _objs[i];
170 }
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 343 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().

354 {
358 }
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 291 of file Fourvec_Event.cc.

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

299 {
300  if (_has_neutrino) {
301  _kt -= _objs.back().p;
302  _objs.back().p = p;
303  }
304  else {
305  _has_neutrino = true;
306  _objs.push_back (FE_Obj (p, 0, nu_label, 0, 0, 0, false));
307  }
308 
309  _kt += p;
310 }
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 313 of file Fourvec_Event.cc.

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

321 {
322  assert (i < _objs.size ());
323  _kt -= _objs[i].p;
324  _objs[i].p = p;
325  _kt += p;
326 }
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 329 of file Fourvec_Event.cc.

References _kt, _x, and AlCaHLTBitMon_ParallelJobs::p.

336 {
337  _kt -= _x;
338  _x = p;
339  _kt += p;
340 }
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 245 of file Fourvec_Event.cc.

256 {
257  s << "kt: (" << fe._kt.x() << ", " << fe._kt.y() << "); "
258  << " error: " << fe._kt_x_error << " " << fe._kt_y_error << " "
259  << fe._kt_xy_covar << "\n";
260  s << "x: " << fe._x << "\n";
261  for (unsigned i = 0; i < fe._objs.size(); i++)
262  s << i+1 << ": " << fe._objs[i];
263  return s;
264 }
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 384 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 357 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 368 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 378 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 372 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 349 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 363 of file Fourvec_Event.h.

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