ATLAS Offline Software
Loading...
Searching...
No Matches
ClusterMakerTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
6//ClusterMaker.h
8// (c) ATLAS Detector software
10// Fill the global position fields of the PrepRawData
12//
14// First version 04/08/2003 Tommaso Lari
15//
17
18#ifndef INDETRIOMAKER_CLUSTERMAKERTOOL_H
19#define INDETRIOMAKER_CLUSTERMAKERTOOL_H
20
22
30
31#include "GaudiKernel/ToolHandle.h"
32
33#include <atomic>
34#include <vector>
35
36template <class T> class ServiceHandle;
37class Identifier;
38class StatusCode;
39
40namespace InDetDD {
42}
43
44
45class PixelID;
46
47namespace InDet {
48
49static const InterfaceID IID_ClusterMakerTool("InDet::ClusterMakerTool", 1, 0);
50
51class PixelCluster;
52class SCT_Cluster;
53class SiWidth;
54
56
58 // Public methods:
60public:
61
62 ClusterMakerTool(const std::string &type,
63 const std::string &name,
64 const IInterface *parent);
65 ~ClusterMakerTool() = default;
66
67 static const InterfaceID& interfaceID() { return IID_ClusterMakerTool; };
68
69 StatusCode initialize();
70
71
72 // Compute the pixel cluster global position, and the error associated
73 // to the position.
74 // Called by the pixel clustering tools
75 //
76 // Input parameters
77 // - the cluster Identifier
78 // - the position in local reference frame
79 // - the list of identifiers of the Raw Data Objects belonging to the cluster
80 // - the width of the cluster
81 // - the module the cluster belongs to
82 // - wheter the cluster contains ganged pixels
83 // - the error strategy, currently
84 // 0: cluster width/sqrt(12.)
85 // 1: pixel pitch/sqrt(12.)
86 // 2: parametrized as a function ofpseudorapidity and cluster size
87 // (default)
88 // 10: CTB parametrization (as a function of module and cluster size)
89 // no magnetic field
90 // - const reference to a PixelID helper class
91 PixelCluster pixelCluster(const Identifier& clusterID,
92 const Amg::Vector2D& localPos,
93 std::vector<Identifier>&& rdoList,
94 const int lvl1a,
95 std::vector<int>&& totList,
96 const SiWidth& width,
97 const InDetDD::SiDetectorElement* element,
98 bool ganged,
99 int errorStrategy,
100 const PixelID& pixelID,
101 bool split,
102 double splitProb1,
103 double splitProb2,
104 const PixelChargeCalibCondData *calibData,
105 const PixelCalib::PixelOfflineCalibData *offlineCalibData,
106 const EventContext& ctx) const;
107
109 const Amg::Vector2D& localPos,
110 const std::vector<Identifier>& rdoList,
111 const int lvl1a,
112 const std::vector<int>& totList,
113 const SiWidth& width,
114 const InDetDD::SiDetectorElement* element,
115 bool ganged,
116 int errorStrategy,
117 const PixelID& pixelID,
118 bool split,
119 double splitProb1,
120 double splitProb2,
121 const PixelChargeCalibCondData *calibData,
122 const PixelCalib::PixelOfflineCalibData *offlineCalibData,
123 const EventContext& ctx) const;
124
125 // Computes global position and errors for SCT cluster.
126 // Called by SCT Clustering tools
127 //
128 // Input parameters
129 // - the cluster Identifier
130 // - the position in local reference frame
131 // - the list of identifiers of the Raw Data Objects belonging to the cluster
132 // - the width of the cluster
133 // - the module the cluster belongs to
134 // - the error strategy, currently
135 // 0: Cluster Width/sqrt(12.)
136 // 1: Set to a different values for one and two-strip clusters (def.)
137
138 SCT_Cluster sctCluster(const Identifier& clusterID,
139 const Amg::Vector2D& localPos,
140 std::vector<Identifier>&& rdoList,
141 const SiWidth& width,
142 const InDetDD::SiDetectorElement* element,
143 int errorStrategy) const;
144
145private:
146
147 template <typename ClusterType, typename IdentifierVec, typename ToTList>
148 ClusterType makePixelCluster(const Identifier& clusterID,
149 const Amg::Vector2D& localPos,
150 IdentifierVec&& rdoList,
151 const int lvl1a,
152 ToTList&& totList,
153 const SiWidth& width,
154 const InDetDD::SiDetectorElement* element,
155 bool ganged,
156 int errorStrategy,
157 const PixelID& pixelID,
158 bool split,
159 double splitProb1,
160 double splitProb2,
161 const PixelChargeCalibCondData *calibData,
162 const PixelCalib::PixelOfflineCalibData *offlineCalibData,
163 const EventContext& ctx,
164 xAOD::PixelCluster* cluster = nullptr) const;
165
166 ToolHandle<ISiLorentzAngleTool> m_pixelLorentzAngleTool
167 {this, "PixelLorentzAngleTool", "SiLorentzAngleTool/PixelLorentzAngleTool", "Tool to retreive Lorentz angle of Pixel"};
168
169 ToolHandle<ISiLorentzAngleTool> m_sctLorentzAngleTool
170 {this, "SCTLorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retreive Lorentz angle of SCT"};
171
173
174 // Parametrization of the Pixel errors
175 // now moved in PixelConditionsData, except for CTB parametrization
176
177 double getPixelCTBPhiError(int layer, int phi, int PhiClusterSize) const;
178
179};
180
181}
182
183#endif // INDETRIOMAKER_CLUSTERMAKERTOOL_H
Scalar phi() const
phi method
const double width
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Class to hold geometrical description of a silicon detector element.
PixelCluster pixelCluster(const Identifier &clusterID, const Amg::Vector2D &localPos, std::vector< Identifier > &&rdoList, const int lvl1a, std::vector< int > &&totList, const SiWidth &width, const InDetDD::SiDetectorElement *element, bool ganged, int errorStrategy, const PixelID &pixelID, bool split, double splitProb1, double splitProb2, const PixelChargeCalibCondData *calibData, const PixelCalib::PixelOfflineCalibData *offlineCalibData, const EventContext &ctx) const
ClusterType makePixelCluster(const Identifier &clusterID, const Amg::Vector2D &localPos, IdentifierVec &&rdoList, const int lvl1a, ToTList &&totList, const SiWidth &width, const InDetDD::SiDetectorElement *element, bool ganged, int errorStrategy, const PixelID &pixelID, bool split, double splitProb1, double splitProb2, const PixelChargeCalibCondData *calibData, const PixelCalib::PixelOfflineCalibData *offlineCalibData, const EventContext &ctx, xAOD::PixelCluster *cluster=nullptr) const
ToolHandle< ISiLorentzAngleTool > m_sctLorentzAngleTool
ClusterMakerTool(const std::string &type, const std::string &name, const IInterface *parent)
static const InterfaceID & interfaceID()
double getPixelCTBPhiError(int layer, int phi, int PhiClusterSize) const
xAOD::PixelCluster * xAODpixelCluster(xAOD::PixelCluster &cluster, const Amg::Vector2D &localPos, const std::vector< Identifier > &rdoList, const int lvl1a, const std::vector< int > &totList, const SiWidth &width, const InDetDD::SiDetectorElement *element, bool ganged, int errorStrategy, const PixelID &pixelID, bool split, double splitProb1, double splitProb2, const PixelChargeCalibCondData *calibData, const PixelCalib::PixelOfflineCalibData *offlineCalibData, const EventContext &ctx) const
ToolHandle< ISiLorentzAngleTool > m_pixelLorentzAngleTool
SCT_Cluster sctCluster(const Identifier &clusterID, const Amg::Vector2D &localPos, std::vector< Identifier > &&rdoList, const SiWidth &width, const InDetDD::SiDetectorElement *element, int errorStrategy) const
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:67
Class to hold geometrical description of a silicon detector element.
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177
Eigen::Matrix< double, 2, 1 > Vector2D
Message Stream Member.
Primary Vertex Finder.
static const InterfaceID IID_ClusterMakerTool("InDet::ClusterMakerTool", 1, 0)
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.