ATLAS Offline Software
Loading...
Searching...
No Matches
MM_StripResponse.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MM_DIGITIZATION_MM_STRIPRESPONSE_H
6#define MM_DIGITIZATION_MM_STRIPRESPONSE_H
7//
8// MM_MM_StripResponse.cxx
9// Simulate strip response
10//
11
12
13#include <map>
14#include <memory>
15#include <vector>
16
18
20
22public:
23 MM_StripResponse() = default;
24 MM_StripResponse(std::vector<std::unique_ptr<MM_IonizationCluster>>& IonizationClusters, float timeResolution, float stripPitch,
25 int stripID, int minstripID, int maxstripID);
26 void timeOrderElectrons();
27 void calculateTimeSeries(float thetaD, int gasgap);
28
29 void simulateCrossTalk(float crossTalk1, float crossTalk2);
30 void calculateSummaries(float chargeThreshold);
31 const std::map<int, int>& getTimeThreshold() const;
32 const std::map<int, float>& getTotalCharge() const;
33 const std::map<int, float>& getMaxCharge() const;
34 const std::map<int, int>& getTimeMaxCharge() const;
35
36 const std::vector<int>& getStripVec() const;
37 const std::vector<std::vector<float>>& getTimeThresholdVec() const;
38 const std::vector<std::vector<float>>& getTotalChargeVec() const;
39 const std::vector<float>& getMaxChargeVec() const;
40 const std::vector<float>& getTimeMaxChargeVec() const;
41
42 int getNElectrons() const;
43 float totalCharge() const;
44 std::vector<std::unique_ptr<MM_Electron>>& getElectrons();
45
46private:
47 float m_timeResolution{0.f};
48 float m_stripPitch{0.f};
49 int m_stripID{0};
52
53 std::vector<std::unique_ptr<MM_Electron>> m_Electrons{};
54
55 // First argument is time bin, second argument is strip ID
56 std::map<int, std::map<int, float>> m_stripCharges{};
57
58 // Useful info for clustering later
59 std::map<int, int> m_stripTimeThreshold{};
60 std::map<int, float> m_stripTotalCharge{};
61 std::map<int, float> m_stripMaxCharge{};
62 std::map<int, int> m_stripTimeMaxCharge{};
63
64 // using vector for the moment -- hopefully this has better access and is not so expensive on the memory
65 std::vector<int> m_v_strip{};
66 std::vector<std::vector<float>> m_v_stripTimeThreshold{};
67 std::vector<std::vector<float>> m_v_stripTotalCharge{};
68 std::vector<float> m_v_stripMaxCharge{};
69 std::vector<float> m_v_stripTimeMaxCharge{};
70};
71
72#endif
std::map< int, float > m_stripMaxCharge
std::vector< std::unique_ptr< MM_Electron > > & getElectrons()
std::vector< int > m_v_strip
const std::map< int, float > & getTotalCharge() const
const std::vector< std::vector< float > > & getTimeThresholdVec() const
std::map< int, int > m_stripTimeMaxCharge
std::vector< std::vector< float > > m_v_stripTimeThreshold
void calculateSummaries(float chargeThreshold)
const std::map< int, int > & getTimeThreshold() const
const std::vector< float > & getMaxChargeVec() const
std::vector< float > m_v_stripTimeMaxCharge
int getNElectrons() const
std::map< int, std::map< int, float > > m_stripCharges
const std::vector< float > & getTimeMaxChargeVec() const
const std::map< int, int > & getTimeMaxCharge() const
void calculateTimeSeries(float thetaD, int gasgap)
std::vector< float > m_v_stripMaxCharge
void simulateCrossTalk(float crossTalk1, float crossTalk2)
const std::vector< std::vector< float > > & getTotalChargeVec() const
std::map< int, int > m_stripTimeThreshold
float totalCharge() const
const std::map< int, float > & getMaxCharge() const
MM_StripResponse()=default
std::vector< std::vector< float > > m_v_stripTotalCharge
std::vector< std::unique_ptr< MM_Electron > > m_Electrons
std::map< int, float > m_stripTotalCharge
const std::vector< int > & getStripVec() const