#include <MM_StripResponse.h>
|
| | MM_StripResponse ()=default |
| |
| | MM_StripResponse (std::vector< std::unique_ptr< MM_IonizationCluster >> &IonizationClusters, float timeResolution, float stripPitch, int stripID, int minstripID, int maxstripID) |
| |
| void | timeOrderElectrons () |
| |
| void | calculateTimeSeries (float thetaD, int gasgap) |
| |
| void | simulateCrossTalk (float crossTalk1, float crossTalk2) |
| |
| void | calculateSummaries (float chargeThreshold) |
| |
| const std::map< int, int > & | getTimeThreshold () const |
| |
| const std::map< int, float > & | getTotalCharge () const |
| |
| const std::map< int, float > & | getMaxCharge () const |
| |
| const std::map< int, int > & | getTimeMaxCharge () const |
| |
| const std::vector< int > & | getStripVec () const |
| |
| const std::vector< std::vector< float > > & | getTimeThresholdVec () const |
| |
| const std::vector< std::vector< float > > & | getTotalChargeVec () const |
| |
| const std::vector< float > & | getMaxChargeVec () const |
| |
| const std::vector< float > & | getTimeMaxChargeVec () const |
| |
| int | getNElectrons () const |
| |
| float | totalCharge () const |
| |
| std::vector< std::unique_ptr< MM_Electron > > & | getElectrons () |
| |
Definition at line 21 of file MM_StripResponse.h.
◆ MM_StripResponse() [1/2]
| MM_StripResponse::MM_StripResponse |
( |
| ) |
|
|
default |
◆ MM_StripResponse() [2/2]
| MM_StripResponse::MM_StripResponse |
( |
std::vector< std::unique_ptr< MM_IonizationCluster >> & |
IonizationClusters, |
|
|
float |
timeResolution, |
|
|
float |
stripPitch, |
|
|
int |
stripID, |
|
|
int |
minstripID, |
|
|
int |
maxstripID |
|
) |
| |
◆ calculateSummaries()
| void MM_StripResponse::calculateSummaries |
( |
float |
chargeThreshold | ) |
|
Definition at line 95 of file MM_StripResponse.cxx.
96 std::map<int, std::map<int, float>> stripChargesCopy2;
98 for (
auto& stripTimeSeries : stripChargesCopy2) {
99 int timeBin = stripTimeSeries.first;
100 for (
auto& stripCharge : stripTimeSeries.second) {
101 int stripVal = stripCharge.first;
105 if (stripVal < m_minstripID || stripVal >
m_maxstripID - 1)
continue;
107 if (stripVal == 1024 || stripVal == 1025 || stripVal == 2048 || stripVal == 2049 || stripVal == 3072 || stripVal == 3073 ||
108 stripVal == 4096 || stripVal == 4097)
110 float stripChargeVal = stripCharge.second;
111 if (stripChargeVal < chargeThreshold)
continue;
114 for (
size_t ii = 0; ii <
m_v_strip.size(); ii++) {
◆ calculateTimeSeries()
| void MM_StripResponse::calculateTimeSeries |
( |
float |
thetaD, |
|
|
int |
gasgap |
|
) |
| |
◆ getElectrons()
| std::vector< std::unique_ptr< MM_Electron > > & MM_StripResponse::getElectrons |
( |
| ) |
|
◆ getMaxCharge()
| const std::map< int, float > & MM_StripResponse::getMaxCharge |
( |
| ) |
const |
◆ getMaxChargeVec()
| const std::vector< float > & MM_StripResponse::getMaxChargeVec |
( |
| ) |
const |
◆ getNElectrons()
| int MM_StripResponse::getNElectrons |
( |
| ) |
const |
◆ getStripVec()
| const std::vector< int > & MM_StripResponse::getStripVec |
( |
| ) |
const |
◆ getTimeMaxCharge()
| const std::map< int, int > & MM_StripResponse::getTimeMaxCharge |
( |
| ) |
const |
◆ getTimeMaxChargeVec()
| const std::vector< float > & MM_StripResponse::getTimeMaxChargeVec |
( |
| ) |
const |
◆ getTimeThreshold()
| const std::map< int, int > & MM_StripResponse::getTimeThreshold |
( |
| ) |
const |
◆ getTimeThresholdVec()
| const std::vector< std::vector< float > > & MM_StripResponse::getTimeThresholdVec |
( |
| ) |
const |
◆ getTotalCharge()
| const std::map< int, float > & MM_StripResponse::getTotalCharge |
( |
| ) |
const |
◆ getTotalChargeVec()
| const std::vector< std::vector< float > > & MM_StripResponse::getTotalChargeVec |
( |
| ) |
const |
◆ simulateCrossTalk()
| void MM_StripResponse::simulateCrossTalk |
( |
float |
crossTalk1, |
|
|
float |
crossTalk2 |
|
) |
| |
Definition at line 54 of file MM_StripResponse.cxx.
56 if (crossTalk1 > 0.) {
60 std::map<int, std::map<int, float>> stripChargesCopy1;
66 for (
auto& stripTimeSeries : stripChargesCopy1) {
67 int timeBin = stripTimeSeries.first;
68 for (
auto& stripCharge : stripTimeSeries.second) {
69 int stripVal = stripCharge.first;
70 float stripChargeVal = stripCharge.second;
72 if (stripChargeVal == 0.)
continue;
75 float chargeScaleFactor = 1.0 / (1. + ((stripVal - 1 > 0) + (stripVal + 1 <
m_maxstripID)) * crossTalk1 +
76 ((stripVal - 2 > 0) + (stripVal + 2 <
m_maxstripID)) * crossTalk2);
77 stripChargeVal *= chargeScaleFactor;
83 if (stripVal - 1 > 0)
m_stripCharges[timeBin][stripVal - 1] += stripChargeVal * crossTalk1;
86 if (crossTalk2 > 0.) {
87 if (stripVal - 2 > 0)
m_stripCharges[timeBin][stripVal - 2] += stripChargeVal * crossTalk2;
◆ timeOrderElectrons()
| void MM_StripResponse::timeOrderElectrons |
( |
| ) |
|
Definition at line 28 of file MM_StripResponse.cxx.
31 [](
const std::unique_ptr<MM_Electron>&
a,
const std::unique_ptr<MM_Electron>&
b) ->
bool { return a->getTime() < b->getTime(); });
◆ totalCharge()
| float MM_StripResponse::totalCharge |
( |
| ) |
const |
◆ m_Electrons
| std::vector<std::unique_ptr<MM_Electron> > MM_StripResponse::m_Electrons {} |
|
private |
◆ m_maxstripID
| int MM_StripResponse::m_maxstripID {0} |
|
private |
◆ m_minstripID
| int MM_StripResponse::m_minstripID {0} |
|
private |
◆ m_stripCharges
| std::map<int, std::map<int, float> > MM_StripResponse::m_stripCharges {} |
|
private |
◆ m_stripID
| int MM_StripResponse::m_stripID {0} |
|
private |
◆ m_stripMaxCharge
| std::map<int, float> MM_StripResponse::m_stripMaxCharge {} |
|
private |
◆ m_stripPitch
| float MM_StripResponse::m_stripPitch {0.f} |
|
private |
◆ m_stripTimeMaxCharge
| std::map<int, int> MM_StripResponse::m_stripTimeMaxCharge {} |
|
private |
◆ m_stripTimeThreshold
| std::map<int, int> MM_StripResponse::m_stripTimeThreshold {} |
|
private |
◆ m_stripTotalCharge
| std::map<int, float> MM_StripResponse::m_stripTotalCharge {} |
|
private |
◆ m_timeResolution
| float MM_StripResponse::m_timeResolution {0.f} |
|
private |
◆ m_v_strip
| std::vector<int> MM_StripResponse::m_v_strip {} |
|
private |
◆ m_v_stripMaxCharge
| std::vector<float> MM_StripResponse::m_v_stripMaxCharge {} |
|
private |
◆ m_v_stripTimeMaxCharge
| std::vector<float> MM_StripResponse::m_v_stripTimeMaxCharge {} |
|
private |
◆ m_v_stripTimeThreshold
| std::vector<std::vector<float> > MM_StripResponse::m_v_stripTimeThreshold {} |
|
private |
◆ m_v_stripTotalCharge
| std::vector<std::vector<float> > MM_StripResponse::m_v_stripTotalCharge {} |
|
private |
The documentation for this class was generated from the following files:
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.