52 {
"eventHeaderCollection",
"inputHitCollection"},
53 {
"outputRawHitCollection",
54#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
57 "outputHitAssociations"},
58 "2D-strip segmentation, apply threshold, digitize within ADC range, "
59 "convert time with smearing resolution."} {
63 void process(const Input&, const Output&) const final;
69 void parseIDDescriptor();
70 void parseSegmentation();
71 double m_gridAngle{0};
74 bool cCoalesceExtend(
const Input& input,
int& idx, std::vector<std::uint64_t>& cIDs,
double* lpos,
75 double& eDep,
double& time)
const;
76 bool bCoalesceExtend(
const Input& input,
int& idx, std::vector<std::uint64_t>& cIDs,
double* lpos,
77 double& eDep,
double& time)
const;
78 unsigned int cTraversing(
const double* lpos,
const double* lmom,
double path,
80 double rMin,
double rMax,
81 double dZ,
double startPhi,
double endPhi,
82 double lintos[][3],
double louts[][3],
double* lpini,
84 unsigned int bTraversing(
const double* lpos,
const double* lmom,
double ref2Cur,
double path,
88 double lintos[][3],
double louts[][3],
double* lpini,
90 void printSubHitList(
const Input& input, std::vector<int>& subHitList)
const;
91 unsigned int extendHit(dd4hep::CellID modID, std::vector<std::uint64_t>& cIDs,
int direction,
92 double* lpini,
double* lmini,
double* lpend,
double* lmend)
const;
93 unsigned int cExtension(
double const* lpos,
double const* lmom,
95 int direction,
double dZ,
double startPhi,
98 unsigned int bExtension(
const double* lpos,
const double* lmom,
100 int direction,
double dX,
double dY,
102 bool samePMO(
const edm4hep::SimTrackerHit&,
const edm4hep::SimTrackerHit&)
const;
103 bool denyExtension(
const edm4hep::SimTrackerHit& sim_hit,
double depth)
const;
104 void flagUnexpected(
const edm4hep::EventHeader& event,
int shape,
double expected,
105 const edm4hep::SimTrackerHit& sim_hit,
double* lpini,
double* lpend,
106 double* lpos,
double* lmom)
const;
107 std::function<int(
double)> m_toleranceFactor;
110 const dd4hep::Detector* m_detector{
nullptr};
111 dd4hep::Segmentation m_seg;
113 const dd4hep::BitFieldCoder* m_id_dec{
nullptr};
114 static constexpr const char* m_fieldNames[5] =
115 {
"system",
"layer",
"module",
"sensor",
"strip"};
117 dd4hep::CellID m_volumeBits{0};
118 dd4hep::CellID m_moduleBits{0};
120 dd4hep::CellID m_stripBits{0};
121 dd4hep::CellID m_pStripBit{0};
122 dd4hep::CellID m_nStripBit{0};
123 dd4hep::CellID m_stripIDs[5];
125 std::function<int(dd4hep::CellID)> m_stripRank;
126 std::function<int(dd4hep::CellID, dd4hep::CellID)> m_orientation;
127 std::function<bool(
int,
unsigned int)> m_isUpstream;
128 std::function<bool(
int,
unsigned int)> m_isDownstream;
131 using Cluster = std::vector<std::pair<dd4hep::CellID, double>>;
132 int get2HitCluster(dd4hep::CellID refID, dd4hep::Position& locPos,
double* surfPos,
134 std::default_random_engine& generator, Cluster& cluster)
const;
135 std::function<double(dd4hep::FieldID,
double,
double)> m_binToPosition;
137 struct StripParameters {
138 double pitch, offset, min, max;
141 std::map<dd4hep::CellID, StripParameters> m_stripParameters;
142 size_t m_stripIndices[2];
144 static constexpr double m_truncation = 3;
147 dd4hep::CellID m_sensorStripBits{0};
148 dd4hep::CellID m_sensorOffset;
150 dd4hep::CellID m_stripIncs[2];
153 static constexpr unsigned int m_intoLower = 0x1;
154 static constexpr unsigned int m_outLower = 0x2;
155 static constexpr unsigned int m_intoUpper = 0x4;
156 static constexpr unsigned int m_outUpper = 0x8;
157 static constexpr unsigned int m_canReEnter = 0x100;
158 static constexpr unsigned int m_inconsistency = 0xff000;
void flagUnexpected(const edm4hep::EventHeader &event, int shape, double expected, const edm4hep::SimTrackerHit &sim_hit, double *lpini, double *lpend, double *lpos, double *lmom)
algorithms::Algorithm< algorithms::Input< edm4hep::EventHeaderCollection, edm4hep::SimTrackerHitCollection >, algorithms::Output< edm4eic::RawTrackerHitCollection, edm4eic::MCRecoTrackerHitLinkCollection, edm4eic::MCRecoTrackerHitAssociationCollection > > MPGDTrackerDigiAlgorithm
Definition MPGDTrackerDigi.h:43