CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
MaterialAccountingStep Class Reference

#include <MaterialAccountingStep.h>

Public Member Functions

void clear (void)
 
double energyLoss (void) const
 
const GlobalPointin (void) const
 
double length (void) const
 
 MaterialAccountingStep (void)
 
 MaterialAccountingStep (double position, double radlen, double loss, const GlobalPoint &in, const GlobalPoint &out)
 
MaterialAccountingStepoperator*= (const MaterialAccountingStep &step)
 multiply two steps, usefull to implement (co)variance More...
 
MaterialAccountingStepoperator*= (double x)
 multiply by a scalar More...
 
MaterialAccountingStepoperator+= (const MaterialAccountingStep &step)
 add a step More...
 
MaterialAccountingStepoperator-= (const MaterialAccountingStep &step)
 subtract a step More...
 
MaterialAccountingStepoperator/= (double x)
 divide by a scalar More...
 
const GlobalPointout (void) const
 
double radiationLengths (void) const
 
std::pair< MaterialAccountingStep, MaterialAccountingStepsplit (double fraction) const
 split the step (0..1) in (0..f) + (f..1) using linear interpolation More...
 

Private Attributes

double m_energyLoss
 
GlobalPoint m_in
 
double m_length
 
GlobalPoint m_out
 
double m_radiationLengths
 

Detailed Description

Definition at line 9 of file MaterialAccountingStep.h.

Constructor & Destructor Documentation

◆ MaterialAccountingStep() [1/2]

MaterialAccountingStep::MaterialAccountingStep ( void  )
inline

◆ MaterialAccountingStep() [2/2]

MaterialAccountingStep::MaterialAccountingStep ( double  position,
double  radlen,
double  loss,
const GlobalPoint in,
const GlobalPoint out 
)
inline

Definition at line 13 of file MaterialAccountingStep.h.

const GlobalPoint & in(void) const
const GlobalPoint & out(void) const
static int position[264][3]
Definition: ReadPGInfo.cc:289

Member Function Documentation

◆ clear()

void MaterialAccountingStep::clear ( void  )
inline

◆ energyLoss()

double MaterialAccountingStep::energyLoss ( void  ) const
inline

◆ in()

const GlobalPoint& MaterialAccountingStep::in ( void  ) const
inline

◆ length()

double MaterialAccountingStep::length ( void  ) const
inline

◆ operator*=() [1/2]

MaterialAccountingStep& MaterialAccountingStep::operator*= ( const MaterialAccountingStep step)
inline

multiply two steps, usefull to implement (co)variance

Definition at line 90 of file MaterialAccountingStep.h.

References m_energyLoss, m_length, and m_radiationLengths.

90  {
91  m_length *= step.m_length;
92  m_radiationLengths *= step.m_radiationLengths;
93  m_energyLoss *= step.m_energyLoss;
94  return *this;
95  }
step
Definition: StallMonitor.cc:83

◆ operator*=() [2/2]

MaterialAccountingStep& MaterialAccountingStep::operator*= ( double  x)
inline

multiply by a scalar

Definition at line 98 of file MaterialAccountingStep.h.

References m_energyLoss, m_length, m_radiationLengths, and x.

98  {
99  m_length *= x;
101  m_energyLoss *= x;
102  return *this;
103  }

◆ operator+=()

MaterialAccountingStep& MaterialAccountingStep::operator+= ( const MaterialAccountingStep step)
inline

add a step

Definition at line 58 of file MaterialAccountingStep.h.

References m_energyLoss, m_in, m_length, m_out, m_radiationLengths, or, and PV3DBase< T, PVType, FrameType >::perp2().

58  {
59  m_length += step.m_length;
60  m_radiationLengths += step.m_radiationLengths;
61  m_energyLoss += step.m_energyLoss;
62 
63  // assume that perp2 is 0 only for uninitialized steps
64  if ((m_in.perp2() == 0.0) or (step.m_in.perp2() < m_in.perp2()))
65  m_in = step.m_in;
66 
67  if ((m_out.perp2() == 0.0) or (step.m_out.perp2() > m_out.perp2()))
68  m_out = step.m_out;
69 
70  return *this;
71  }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
T perp2() const
Definition: PV3DBase.h:68
step
Definition: StallMonitor.cc:83

◆ operator-=()

MaterialAccountingStep& MaterialAccountingStep::operator-= ( const MaterialAccountingStep step)
inline

subtract a step

Definition at line 74 of file MaterialAccountingStep.h.

References m_energyLoss, m_in, m_length, m_out, m_radiationLengths, and PV3DBase< T, PVType, FrameType >::perp2().

74  {
75  m_length -= step.m_length;
76  m_radiationLengths -= step.m_radiationLengths;
77  m_energyLoss -= step.m_energyLoss;
78 
79  // can anything more sensible be done for m_in and/or m_out ?
80  if ((step.m_in.perp2() <= m_in.perp2()) and (step.m_out.perp2() >= m_in.perp2()))
81  m_in = step.m_out;
82 
83  if ((step.m_out.perp2() >= m_out.perp2()) and (step.m_in.perp2() <= m_out.perp2()))
84  m_out = step.m_in;
85 
86  return *this;
87  }
T perp2() const
Definition: PV3DBase.h:68
step
Definition: StallMonitor.cc:83

◆ operator/=()

MaterialAccountingStep& MaterialAccountingStep::operator/= ( double  x)
inline

divide by a scalar

Definition at line 106 of file MaterialAccountingStep.h.

References m_energyLoss, m_length, m_radiationLengths, and x.

106  {
107  m_length /= x;
109  m_energyLoss /= x;
110  return *this;
111  }

◆ out()

const GlobalPoint& MaterialAccountingStep::out ( void  ) const
inline

◆ radiationLengths()

double MaterialAccountingStep::radiationLengths ( void  ) const
inline

◆ split()

std::pair<MaterialAccountingStep, MaterialAccountingStep> MaterialAccountingStep::split ( double  fraction) const
inline

split the step (0..1) in (0..f) + (f..1) using linear interpolation

Definition at line 43 of file MaterialAccountingStep.h.

References HLT_2023v12_cff::fraction, remoteMonitoring_LASER_era2018_cfg::limit, m_energyLoss, m_in, m_length, m_out, m_radiationLengths, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

43  {
44  // no check is done to ensure that 0 <= f <= 1 !
45  GlobalPoint limit(m_in.x() * fraction + m_out.x() * (1. - fraction),
46  m_in.y() * fraction + m_out.y() * (1. - fraction),
47  m_in.z() * fraction + m_out.z() * (1. - fraction));
48 
51 
54  return std::make_pair(part1, part2);
55  }
T z() const
Definition: PV3DBase.h:61
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60

Member Data Documentation

◆ m_energyLoss

double MaterialAccountingStep::m_energyLoss
private

◆ m_in

GlobalPoint MaterialAccountingStep::m_in
private

Definition at line 28 of file MaterialAccountingStep.h.

Referenced by clear(), in(), operator+=(), operator-=(), and split().

◆ m_length

double MaterialAccountingStep::m_length
private

◆ m_out

GlobalPoint MaterialAccountingStep::m_out
private

Definition at line 29 of file MaterialAccountingStep.h.

Referenced by clear(), operator+=(), operator-=(), out(), and split().

◆ m_radiationLengths

double MaterialAccountingStep::m_radiationLengths
private