EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
SiliconChargeSharing.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) 2024-2025 Chun Yuen Tsang, Prithwish Tribedy, Simon Gardner
3//
4// Spread energy deposition from one strip to neighboring strips within sensor boundaries
5
6#pragma once
7
8#include <DD4hep/DetElement.h>
9#include <DD4hep/Objects.h>
10#include <DD4hep/Segmentations.h>
11#include <DDRec/CellIDPositionConverter.h>
12#include <DDSegmentation/CartesianGridXY.h>
13#include <TGeoMatrix.h>
14#include <algorithms/algorithm.h>
15#include <edm4hep/SimTrackerHitCollection.h>
16#include <string>
17#include <string_view>
18#include <unordered_map>
19#include <unordered_set>
20#include <utility>
21
24
25namespace eicrecon {
26
28 algorithms::Algorithm<algorithms::Input<edm4hep::SimTrackerHitCollection>,
29 algorithms::Output<edm4hep::SimTrackerHitCollection>>;
30
32 public WithPodConfig<SiliconChargeSharingConfig> {
33
34public:
35 SiliconChargeSharing(std::string_view name)
36 : SiliconChargeSharingAlgorithm{name, {"inputHits"}, {"outputSharedHits"}, ""} {};
37
38 void init() final;
39 void process(const Input&, const Output&) const final;
40
41private:
42 void findAllNeighborsInSensor(const dd4hep::rec::CellID testCellID,
43 std::unordered_set<dd4hep::rec::CellID>& tested_cells,
44 const float edep, const dd4hep::Position hitPos,
45 const dd4hep::DDSegmentation::CartesianGridXY* segmentation,
46 const std::pair<double, double>& xy_range,
47 const edm4hep::SimTrackerHit& hit,
48 edm4hep::SimTrackerHitCollection* sharedHits) const;
49 float energyAtCell(const double xDimension, const double yDimension,
50 const dd4hep::Position localPos, const dd4hep::Position hitPos,
51 const float edep) const;
52 static float integralGaus(float mean, float sd, float low_lim, float up_lim);
53 dd4hep::Position cell2LocalPosition(const dd4hep::rec::CellID& cell) const;
54 static dd4hep::Position global2Local(const dd4hep::Position& globalPosition,
55 const TGeoHMatrix* transform);
56 const dd4hep::DDSegmentation::CartesianGridXY*
57 getLocalSegmentation(const dd4hep::rec::CellID& cellID) const;
58
59 mutable std::unordered_map<const dd4hep::DetElement*, const TGeoHMatrix*> m_transform_map;
60 mutable std::unordered_map<const dd4hep::DetElement*,
61 const dd4hep::DDSegmentation::CartesianGridXY*>
62 m_segmentation_map;
63 mutable std::unordered_map<const dd4hep::DetElement*, const std::pair<double, double>>
64 m_xy_range_map;
65 const dd4hep::rec::CellIDPositionConverter* m_converter = nullptr;
66 dd4hep::Segmentation m_seg;
67};
68
69} // namespace eicrecon
Definition SiliconChargeSharing.h:32
SiliconChargeSharing(std::string_view name)
Definition SiliconChargeSharing.h:35
Definition WithPodConfig.h:22
Definition ActsGeometryProvider.h:28
-client
Definition CalorimeterClusterRecoCoG.cc:37
algorithms::Algorithm< algorithms::Input< edm4hep::SimTrackerHitCollection >, algorithms::Output< edm4hep::SimTrackerHitCollection > > SiliconChargeSharingAlgorithm
Definition SiliconChargeSharing.h:29
Definition SimCalorimeterHitProcessor.cc:35