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 Member Functions | Private Attributes
hitfit::Constraint_Intermed_Labels Class Reference

Concrete class for one side of mass constraint equation of the type:
$(1 + 2) = (3 + 4)$. More...

#include <Constraint_Intermed.h>

Inheritance diagram for hitfit::Constraint_Intermed_Labels:
hitfit::Constraint_Intermed

Public Member Functions

virtual std::auto_ptr
< Constraint_Intermed
clone () const
 
 Constraint_Intermed_Labels (const std::vector< int > &labels)
 
 Constraint_Intermed_Labels (const Constraint_Intermed_Labels &c)
 
virtual bool has_labels (int ilabel, int jlabel) const
 
virtual void print (std::ostream &s) const
 
virtual double sum_mass_terms (const Fourvec_Event &ev) const
 
virtual ~Constraint_Intermed_Labels ()
 
- Public Member Functions inherited from hitfit::Constraint_Intermed
 Constraint_Intermed ()
 
virtual ~Constraint_Intermed ()
 

Private Member Functions

bool has_label (int label) const
 
Constraint_Intermedoperator= (const Constraint_Intermed &)
 

Private Attributes

std::vector< int > _labels
 

Detailed Description

Concrete class for one side of mass constraint equation of the type:
$(1 + 2) = (3 + 4)$.

Definition at line 258 of file Constraint_Intermed.h.

Constructor & Destructor Documentation

hitfit::Constraint_Intermed_Labels::Constraint_Intermed_Labels ( const std::vector< int > &  labels)

Constructor.

Parameters
labelsThe labels used by this side of mass constraint.

Definition at line 155 of file Constraint_Intermed.cc.

Referenced by clone().

162  : _labels (labels)
163 {
164  // Sort them.
165  stable_sort (_labels.begin(), _labels.end());
166 }
hitfit::Constraint_Intermed_Labels::Constraint_Intermed_Labels ( const Constraint_Intermed_Labels c)

Copy constructor.

Parameters
cThe instance of Constraint_Intermed_Labels to be copied.

Definition at line 170 of file Constraint_Intermed.cc.

177  : _labels (c._labels)
178 {
179 }
virtual hitfit::Constraint_Intermed_Labels::~Constraint_Intermed_Labels ( )
inlinevirtual

Destructor.

Definition at line 277 of file Constraint_Intermed.h.

277 {};

Member Function Documentation

auto_ptr< Constraint_Intermed > hitfit::Constraint_Intermed_Labels::clone ( void  ) const
virtual

Clone function to copy the instance.

Implements hitfit::Constraint_Intermed.

Definition at line 277 of file Constraint_Intermed.cc.

References Constraint_Intermed_Labels().

284 {
285  return auto_ptr<Constraint_Intermed>
286  (new Constraint_Intermed_Labels (*this));
287 }
Constraint_Intermed_Labels(const std::vector< int > &labels)
bool hitfit::Constraint_Intermed_Labels::has_label ( int  label) const
private

Test to see if label is used by this side of the mass constraint.

Parameters
labelThe label for which to search.
Return:
true is this constraint use the label. false if this constraint doesn't use the label.

Definition at line 262 of file Constraint_Intermed.cc.

References spr::find(), and diffTwoXMLs::label.

272 {
273  return find (_labels.begin(), _labels.end(), label) != _labels.end();
274 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
bool hitfit::Constraint_Intermed_Labels::has_labels ( int  ilabel,
int  jlabel 
) const
virtual

Check the instance for reference of ilabel and jlabel.

Parameters
ilabelThe first label to test.
jlabelThe second label to test.
Return:
true if this instance references both labels ilabel and jlabel.
false if this instance doesn't reference both labels.

Implements hitfit::Constraint_Intermed.

Definition at line 182 of file Constraint_Intermed.cc.

References i, and swap().

193 {
194  if (ilabel > jlabel)
195  swap (ilabel, jlabel);
196 
197  unsigned sz = _labels.size();
198  unsigned i;
199  for (i=0; i < sz; i++) {
200  if (_labels[i] == ilabel)
201  break;
202  }
203 
204  if (i == sz)
205  return false;
206 
207  for (; i < sz; i++) {
208  if (_labels[i] == jlabel)
209  break;
210  }
211 
212  if (i == sz)
213  return false;
214 
215  return true;
216 }
void swap(ora::Record &rh, ora::Record &lh)
Definition: Record.h:70
int i
Definition: DBlmapReader.cc:9
Constraint_Intermed& hitfit::Constraint_Intermed_Labels::operator= ( const Constraint_Intermed )
private

Disallow assignment by NOT defining the assignment operation.

void hitfit::Constraint_Intermed_Labels::print ( std::ostream &  s) const
virtual

Print out the instance to the output stream.

Parameters
sThe output stream to which the instance is printed.

Implements hitfit::Constraint_Intermed.

Definition at line 244 of file Constraint_Intermed.cc.

References i, and alignCSCRings::s.

251 {
252  s << "(";
253  for (unsigned i = 0; i < _labels.size(); i++) {
254  if (i > 0)
255  s << "+";
256  s << _labels[i];
257  }
258  s << ")";
259 }
int i
Definition: DBlmapReader.cc:9
double hitfit::Constraint_Intermed_Labels::sum_mass_terms ( const Fourvec_Event ev) const
virtual

Evaluate this half of the mass constraint, using the data in ev.

Parameters
evThe event for which the mass constraint is to be evaluated.
Return:
$\frac{m^{2}}{2}$.

Implements hitfit::Constraint_Intermed.

Definition at line 220 of file Constraint_Intermed.cc.

References i, hitfit::FE_Obj::label, hitfit::FE_Obj::mass, and python.connectstrParser::o.

231 {
232  int nobjs = ev.nobjs();
233  double sum = 0;
234  for (int i = 0; i < nobjs; i++) {
235  const FE_Obj& o = ev.obj (i);
236  if (has_label (o.label))
237  sum += o.mass * o.mass / 2;
238  }
239 
240  return sum;
241 }
int i
Definition: DBlmapReader.cc:9

Member Data Documentation

std::vector<int> hitfit::Constraint_Intermed_Labels::_labels
private

List of the labels for this side of mass constraint, kept in sorted order.

Definition at line 337 of file Constraint_Intermed.h.