#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 20 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 91 of file MM_StripResponse.cxx.
92 std::map<int, std::map<int, float>> stripChargesCopy2;
94 for (
auto& stripTimeSeries : stripChargesCopy2) {
95 int timeBin = stripTimeSeries.first;
96 for (
auto& stripCharge : stripTimeSeries.second) {
97 int stripVal = stripCharge.first;
101 if (stripVal < m_minstripID || stripVal >
m_maxstripID - 1)
continue;
103 if (stripVal == 1024 || stripVal == 1025 || stripVal == 2048 || stripVal == 2049 || stripVal == 3072 || stripVal == 3073 ||
104 stripVal == 4096 || stripVal == 4097)
106 float stripChargeVal = stripCharge.second;
107 if (stripChargeVal < chargeThreshold)
continue;
110 for (
size_t ii = 0; ii <
m_v_strip.size(); ii++) {
120 std::vector<float> qTemp;
121 qTemp.push_back(stripChargeVal);
123 std::vector<float> tTemp;
◆ 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 50 of file MM_StripResponse.cxx.
52 if (crossTalk1 > 0.) {
56 std::map<int, std::map<int, float>> stripChargesCopy1;
62 for (
auto& stripTimeSeries : stripChargesCopy1) {
63 int timeBin = stripTimeSeries.first;
64 for (
auto& stripCharge : stripTimeSeries.second) {
65 int stripVal = stripCharge.first;
66 float stripChargeVal = stripCharge.second;
68 if (stripChargeVal == 0.)
continue;
71 float chargeScaleFactor = 1.0 / (1. + ((stripVal - 1 > 0) + (stripVal + 1 <
m_maxstripID)) * crossTalk1 +
72 ((stripVal - 2 > 0) + (stripVal + 2 <
m_maxstripID)) * crossTalk2);
73 stripChargeVal *= chargeScaleFactor;
79 if (stripVal - 1 > 0)
m_stripCharges[timeBin][stripVal - 1] += stripChargeVal * crossTalk1;
82 if (crossTalk2 > 0.) {
83 if (stripVal - 2 > 0)
m_stripCharges[timeBin][stripVal - 2] += stripChargeVal * crossTalk2;
◆ timeOrderElectrons()
void MM_StripResponse::timeOrderElectrons |
( |
| ) |
|
Definition at line 24 of file MM_StripResponse.cxx.
27 [](
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.