ATLAS Offline Software
Loading...
Searching...
No Matches
SiTotalCharge Class Reference

#include <SiTotalCharge.h>

Collaboration diagram for SiTotalCharge:

Public Types

typedef std::vector< SiCharge > list_t

Public Member Functions

 SiTotalCharge ()
 SiTotalCharge (const SiTotalCharge &totalCharge)
 ~SiTotalCharge ()
SiTotalCharge & operator= (const SiTotalCharge &totalCharge)
double charge () const
const list_t & chargeComposition () const
bool complexCharge () const
bool fromTrack () const
bool extraNoise () const
int trackBarcode () const
const HepMcParticleLink & particleLink () const
double time () const
void add (const SiCharge &charge)
void add (const SiTotalCharge &totalCharge)
void removeTimeInformation ()
void removeSmallCharges (const double minimumCharge)

Private Member Functions

void addSiCharge (const SiCharge &charge)
const SiCharge & mainCharge () const

Private Attributes

double m_charge
list_t m_chargeComposition

Static Private Attributes

static const HepMcParticleLink m_emptyLink = HepMcParticleLink()

Detailed Description

Definition at line 24 of file SiTotalCharge.h.

Member Typedef Documentation

◆ list_t

typedef std::vector<SiCharge> SiTotalCharge::list_t

Definition at line 31 of file SiTotalCharge.h.

Constructor & Destructor Documentation

◆ SiTotalCharge() [1/2]

SiTotalCharge::SiTotalCharge ( )

Definition at line 18 of file SiTotalCharge.cxx.

18 :
19 m_charge(0),
21{}
list_t m_chargeComposition

◆ SiTotalCharge() [2/2]

SiTotalCharge::SiTotalCharge ( const SiTotalCharge & totalCharge)

Definition at line 24 of file SiTotalCharge.cxx.

24 :
25 m_charge(totalCharge.m_charge),
27{}

◆ ~SiTotalCharge()

SiTotalCharge::~SiTotalCharge ( )
inline

Definition at line 114 of file SiTotalCharge.h.

115{
116}

Member Function Documentation

◆ add() [1/2]

void SiTotalCharge::add ( const SiCharge & charge)

Definition at line 62 of file SiTotalCharge.cxx.

63{
64 // increase the total deposited charge
65 m_charge+=charge.charge();
66 // add the SiCharge to the list of charges
68}
void addSiCharge(const SiCharge &charge)
double charge() const

◆ add() [2/2]

void SiTotalCharge::add ( const SiTotalCharge & totalCharge)

Definition at line 71 of file SiTotalCharge.cxx.

72{
73 // increase the total deposited charge
74 m_charge+=totalCharge.charge();
75
76 std::for_each(totalCharge.chargeComposition().begin(),
77 totalCharge.chargeComposition().end(),
78 [this](const SiCharge & c) { addSiCharge(c); }
79 );
80}
const list_t & chargeComposition() const

◆ addSiCharge()

void SiTotalCharge::addSiCharge ( const SiCharge & charge)
private

Definition at line 108 of file SiTotalCharge.cxx.

109{
110 auto element = std::find_if(m_chargeComposition.begin(), m_chargeComposition.end(),
111 [&charge](const SiCharge & other) {
112 return (charge.time() == other.time()) &&
113 (charge.processType() == other.processType()) &&
114 (charge.particleLink() == other.particleLink());
115 } );
116 if(element != m_chargeComposition.end()) element->add(charge);
117 // add the charge to the list if not merged in existing one
118 else m_chargeComposition.push_back(charge);
119}

◆ charge()

double SiTotalCharge::charge ( ) const
inline

Definition at line 118 of file SiTotalCharge.h.

119{
120 return m_charge;
121}

◆ chargeComposition()

const SiTotalCharge::list_t & SiTotalCharge::chargeComposition ( ) const
inline

Definition at line 123 of file SiTotalCharge.h.

124{
125 return m_chargeComposition;
126}

◆ complexCharge()

bool SiTotalCharge::complexCharge ( ) const
inline

Definition at line 128 of file SiTotalCharge.h.

129{
130 return (m_chargeComposition.size()>1);
131}

◆ extraNoise()

bool SiTotalCharge::extraNoise ( ) const
inline

Definition at line 133 of file SiTotalCharge.h.

134{
135 if(m_chargeComposition.empty())
136 {
137 return false;
138 }
140}
@ extraNoise
Definition SiCharge.h:28
const SiCharge & mainCharge() const

◆ fromTrack()

bool SiTotalCharge::fromTrack ( ) const

Definition at line 49 of file SiTotalCharge.cxx.

50{
51 if(m_chargeComposition.empty())
52 {
53 return false;
54 }
56 return (process==SiCharge::track ||
59}
Process processType() const
Definition SiCharge.h:119
@ cut_track
Definition SiCharge.h:28
@ diodeX_Talk
Definition SiCharge.h:28
const std::string process

◆ mainCharge()

const SiCharge & SiTotalCharge::mainCharge ( ) const
private

Definition at line 40 of file SiTotalCharge.cxx.

41{
42 auto max_element = std::max_element(m_chargeComposition.cbegin(), m_chargeComposition.cend(),
43 [](SiCharge const & lhs, SiCharge const & rhs)
44 { return lhs.charge() < rhs.charge(); }
45 );
46 return *max_element;
47}

◆ operator=()

SiTotalCharge & SiTotalCharge::operator= ( const SiTotalCharge & totalCharge)

Definition at line 30 of file SiTotalCharge.cxx.

31{
32 if (this!=&totalCharge) {
33 m_charge=totalCharge.m_charge;
35 } else {}
36 return *this;
37}

◆ particleLink()

const HepMcParticleLink & SiTotalCharge::particleLink ( ) const
inline

Definition at line 160 of file SiTotalCharge.h.

161{
162 if(m_chargeComposition.empty())
163 {
165 }
166 return mainCharge().particleLink();
167}
const HepMcParticleLink & particleLink() const
Definition SiCharge.h:129
static const HepMcParticleLink m_emptyLink

◆ removeSmallCharges()

void SiTotalCharge::removeSmallCharges ( const double minimumCharge)

Definition at line 98 of file SiTotalCharge.cxx.

99{
100 //erase-remove idiom to remove small charges
101 auto new_end = std::remove_if(m_chargeComposition.begin(), m_chargeComposition.end(),
102 [&minimumCharge](const SiCharge& c){ return (c.charge() > -minimumCharge) &&
103 (c.charge() < minimumCharge); });
104 m_chargeComposition.erase(new_end, m_chargeComposition.end());
105}
DataModel_detail::iterator< DVL > remove_if(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, Predicate pred)
Specialization of remove_if for DataVector/List.

◆ removeTimeInformation()

void SiTotalCharge::removeTimeInformation ( )

Definition at line 83 of file SiTotalCharge.cxx.

84{
85 // save the old charge composition
86 list_t oldComposition;
87 m_chargeComposition.swap(oldComposition);
88
89 // loop on all old charges
90 for(const auto & p_charge : oldComposition) {
91 // add the old charge (without time) to the list
92 addSiCharge(SiCharge(p_charge.charge(),0,
93 p_charge.processType(),p_charge.particleLink()));
94 }
95}
std::vector< SiCharge > list_t

◆ time()

double SiTotalCharge::time ( ) const
inline

Definition at line 151 of file SiTotalCharge.h.

152{
153 if(m_chargeComposition.empty())
154 {
155 return 0.0;
156 }
157 return mainCharge().time();
158}
double time() const
Definition SiCharge.h:114

◆ trackBarcode()

int SiTotalCharge::trackBarcode ( ) const
inline

Definition at line 142 of file SiTotalCharge.h.

143{
144 if(m_chargeComposition.empty())
145 {
146 return 0;
147 }
148 return mainCharge().trackBarcode();
149}
int trackBarcode() const
Definition SiCharge.h:124

Member Data Documentation

◆ m_charge

double SiTotalCharge::m_charge
private

Definition at line 106 of file SiTotalCharge.h.

◆ m_chargeComposition

list_t SiTotalCharge::m_chargeComposition
private

Definition at line 107 of file SiTotalCharge.h.

◆ m_emptyLink

const HepMcParticleLink SiTotalCharge::m_emptyLink = HepMcParticleLink()
staticprivate

Definition at line 108 of file SiTotalCharge.h.


The documentation for this class was generated from the following files: