ATLAS Offline Software
Loading...
Searching...
No Matches
HgtdClusterValidationPlots.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
8
9namespace ActsTrk {
10
12 const std::string& sDir)
13 : PlotBase(pParent, sDir)
14 {
15 m_barrelEndcap = Book1D("barrelEndcap", "HgtdCluster_barrelEndcap;Barrel-Endcap;Entries;", 5, -2, 3, false);
16
17 m_layer_right = Book1D("layer_right", "HgtdCluster_layer_right;Layer;Entries;", 20, -10, 11, false);
18 m_layer_left = Book1D("layer_left", "HgtdCluster_layer_left;Layer;Entries;", 20, -10, 11, false);
19
20 m_phi_module_right = Book1D("phi_module_right", "HgtdCluster_phi_module_right;Phi Module;Entries;", 100, 0, 300, false);
21 m_phi_module_left = Book1D("phi_module_left", "HgtdCluster_phi_module_left;Phi Module;Entries;", 100, 0, 300, false);
22
23 m_eta_module_right = Book1D("eta_module_right", "HgtdCluster_eta_module_right;Eta Module;Entries;", 100, -10, 10, false);
24 m_eta_module_left = Book1D("eta_module_left", "HgtdCluster_eta_module_left;Eta Module;Entries;", 100, -10, 10, false);
25
26 m_phi_index_right = Book1D("phi_index_right", "HgtdCluster_phi_index_right;Phi Index;Entries;", 100, -10, 10, false);
27 m_phi_index_left = Book1D("phi_index_left", "HgtdCluster_phi_index_left;Phi Index;Entries;", 100, -10, 10, false);
28
29 m_eta_index_right = Book1D("eta_index_right", "HgtdCluster_eta_index_right;Eta Index;Entries;", 100, -10, 10, false);
30 m_eta_index_left = Book1D("eta_index_left", "HgtdCluster_eta_index_left;Eta Index;Entries;", 100, -10, 10, false);
31
32 m_local_x_right = Book1D("local_x_right", "HgtdCluster_local_x_right;Local x [mm];Entries;", 100, -30, 30, false);
33 m_local_y_right = Book1D("local_y_right", "HgtdCluster_local_y_right;Local y [mm];Entries;", 100, -30, 30, false);
34 m_local_t_right = Book1D("local_t_right", "HgtdCluster_local_t_right;Local t [ns];Entries;", 30, 0, 50, false);
35
36 m_localCovXX_right = Book1D("localCovXX_right", "HgtdCluster_localCovXX_right;Local Cov XX [mm2];Entries;", 100, 0, 0.5, false);
37 m_localCovYY_right = Book1D("localCovYY_right", "HgtdCluster_localCovYY_right;Local Cov YY [mm2];Entries;", 100, 0, 0.5, false);
38 m_localCovTT_right = Book1D("localCovTT_right", "HgtdCluster_localCovTT_right;Local Cov TT [ns2];Entries;", 100, 0, 0.2, false);
39
40 m_local_xy_right = Book2D("local_xy_right", "HgtdCluster_local_xy_right;Local x [mm];Local y [mm];", 100, -30, 30, 100, -30, 30, false);
41
42 m_local_x_left = Book1D("local_x_left", "HgtdCluster_local_x_left;Local x [mm];Entries;", 100, -30, 30, false);
43 m_local_y_left = Book1D("local_y_left", "HgtdCluster_local_y_left;Local y [mm];Entries;", 100, -30, 30, false);
44 m_local_t_left = Book1D("local_t_left", "HgtdCluster_local_t_left;Local t [ns];Entries;", 30, 0, 50, false);
45
46 m_localCovXX_left = Book1D("localCovXX_left", "HgtdCluster_localCovXX_left;Local Cov XX [mm2];Entries;", 100, 0, 0.5, false);
47 m_localCovYY_left = Book1D("localCovYY_left", "HgtdCluster_localCovYY_left;Local Cov YY [mm2];Entries;", 100, 0, 0.5, false);
48 m_localCovTT_left = Book1D("localCovTT_left", "HgtdCluster_localCovTT_left;Local Cov TT [ns2];Entries;", 100, 0, 0.2, false);
49
50 m_eta = Book1D("eta", "HgtdCluster_eta;Eta;Entries;", 100, -5, 5, false);
51
52 m_global_x_left = Book1D("global_x_left", "HgtdCluster_global_x_left;Global x [mm];Entries;", 100, -1100, 1100, false);
53 m_global_x_right = Book1D("global_x_right", "HgtdCluster_global_x_right;Global x [mm];Entries;", 100, -1100, 1100, false);
54
55 m_global_y_left = Book1D("global_y_left", "HgtdCluster_global_y_left;Global y [mm];Entries;", 100, -1100, 1100, false);
56 m_global_y_right = Book1D("global_y_right", "HgtdCluster_global_y_right;Global y [mm];Entries;", 100, -1100, 1100, false);
57
58 m_global_z_left = Book1D("global_z_left", "HgtdCluster_global_z_left;Global z [mm];Entries;", 100, -4000, -3000, false);
59 m_global_z_right = Book1D("global_z_right", "HgtdCluster_global_z_right;Global z [mm];Entries;", 100, 3000, 4000, false);
60
61 m_global_r_left = Book1D("global_r_left", "HgtdCluster_global_r_left;Global r [mm];Entries;", 100, 0, 900, false);
62 m_global_r_right = Book1D("global_r_right", "HgtdCluster_global_r_right;Global r [mm];Entries;", 100, 0, 900, false);
63
64 m_local_xy_left = Book2D("local_xy_left", "HgtdCluster_local_xy_left;Local x [mm];Local y [mm];", 100, -30, 30, 100, -30, 30, false);
65
66 m_global_xy_left = Book2D("global_xy_left", "HgtdCluster_global_xy_left;Global x [mm];Global y [mm];", 100, -1100, 1100, 100, -1100, 1100, false);
67 m_global_xy_right = Book2D("global_xy_right", "HgtdCluster_global_xy_right;Global x [mm];global y [mm];", 100, -1100, 1100, 100, -1100, 1100, false);
68
69 m_global_zr_left = Book2D("global_zr_left", "HgtdCluster_global_zr_left;Global z [mm];Global r [mm];", 100, -4000, -3000, 100, 0, 900, false);
70 m_global_zr_right = Book2D("global_zr_right", "HgtdCluster_global_zr_right;Global z [mm];Global r [mm];", 100, 3000, 4000, 100, 0, 900, false);
71}
72
75 float beamSpotWeight,
76 const HGTD_ID* hgtdID)
77 {
78 const Identifier& id = hgtdID->wafer_id(cluster->identifierHash());
79 const auto *element = InDetDD::HGTDDetEl::getDetectorElement(hgtdID->wafer_hash(hgtdID->wafer_id(id)),hgtdElements);
80
81 const auto& local_position = cluster->template localPosition<3>();
82 const auto& local_covariance = cluster->template localCovariance<3>();
83
84 // compute global position
85 const Amg::Transform3D& T = element->surface().transform();
86 double Ax[3] = {T(0,0),T(1,0),T(2,0)};
87 double Ay[3] = {T(0,1),T(1,1),T(2,1)};
88 double R [3] = {T(0,3),T(1,3),T(2,3)};
89
91 M[0] = local_position(0,0);
92 M[1] = local_position(1,0);
93 Amg::Vector3D globalPos(M[0]*Ax[0]+M[1]*Ay[0]+R[0],M[0]*Ax[1]+M[1]*Ay[1]+R[1],M[0]*Ax[2]+M[1]*Ay[2]+R[2]);
94
95 m_barrelEndcap->Fill(hgtdID->endcap(id));
96 m_eta->Fill(globalPos.eta(), beamSpotWeight);
97
98 // Divide in left and right endcaps
99 if (hgtdID->endcap(id) == -2) {
100 m_layer_left->Fill(hgtdID->layer(id), beamSpotWeight);
101 m_phi_module_left->Fill(hgtdID->phi_module(id), beamSpotWeight);
102 m_eta_module_left->Fill(hgtdID->eta_module(id), beamSpotWeight);
103 m_phi_index_left->Fill(hgtdID->phi_index(id), beamSpotWeight);
104 m_eta_index_left->Fill(hgtdID->eta_index(id), beamSpotWeight);
105
106 m_local_x_left->Fill(local_position(0, 0), beamSpotWeight);
107 m_local_y_left->Fill(local_position(1, 0), beamSpotWeight);
108 m_local_t_left->Fill(local_position(2, 0), beamSpotWeight);
109
110 m_localCovXX_left->Fill(local_covariance(0, 0), beamSpotWeight);
111 m_localCovYY_left->Fill(local_covariance(1, 1), beamSpotWeight);
112 m_localCovTT_left->Fill(local_covariance(2, 2), beamSpotWeight);
113
114 m_global_x_left->Fill(globalPos.x(), beamSpotWeight);
115 m_global_y_left->Fill(globalPos.y(), beamSpotWeight);
116 m_global_z_left->Fill(globalPos.z(), beamSpotWeight);
117 m_global_r_left->Fill(std::sqrt(globalPos.x()*globalPos.x() + (globalPos.y()*globalPos.y())), beamSpotWeight);
118
119 m_local_xy_left->Fill(local_position(0, 0), local_position(1, 0), beamSpotWeight);
120 m_global_xy_left->Fill(globalPos.x(), globalPos.y(), beamSpotWeight);
121 m_global_zr_left->Fill(globalPos.z(), std::sqrt(globalPos.x()*globalPos.x() + (globalPos.y()*globalPos.y())), beamSpotWeight);
122 } else if (hgtdID->endcap(id) == 2) {
123 m_layer_right->Fill(hgtdID->layer(id), beamSpotWeight);
124 m_phi_module_right->Fill(hgtdID->phi_module(id), beamSpotWeight);
125 m_eta_module_right->Fill(hgtdID->eta_module(id), beamSpotWeight);
126 m_phi_index_right->Fill(hgtdID->phi_index(id), beamSpotWeight);
127 m_eta_index_right->Fill(hgtdID->eta_index(id), beamSpotWeight);
128
129 m_local_x_right->Fill(local_position(0, 0), beamSpotWeight);
130 m_local_y_right->Fill(local_position(1, 0), beamSpotWeight);
131 m_local_t_right->Fill(local_position(2, 0), beamSpotWeight);
132
133 m_localCovXX_right->Fill(local_covariance(0, 0), beamSpotWeight);
134 m_localCovYY_right->Fill(local_covariance(1, 1), beamSpotWeight);
135 m_localCovTT_right->Fill(local_covariance(2, 2), beamSpotWeight);
136
137 m_global_x_right->Fill(globalPos.x(), beamSpotWeight);
138 m_global_y_right->Fill(globalPos.y(), beamSpotWeight);
139 m_global_z_right->Fill(globalPos.z(), beamSpotWeight);
140 m_global_r_right->Fill(std::sqrt(globalPos.x()*globalPos.x() + (globalPos.y()*globalPos.y())), beamSpotWeight);
141
142 m_local_xy_right->Fill(local_position(0, 0), local_position(1, 0), beamSpotWeight);
143 m_global_xy_right->Fill(globalPos.x(), globalPos.y(), beamSpotWeight);
144 m_global_zr_right->Fill(globalPos.z(), std::sqrt(globalPos.x()*globalPos.x() + (globalPos.y()*globalPos.y())), beamSpotWeight);
145 }
146
147 }
148}
149
HgtdClusterValidationPlots(PlotBase *pParent, const std::string &sDir)
void fill(const xAOD::HGTDCluster *cluster, const InDetDD::HGTD_DetectorElementCollection &hgtdElements, float beamSpotWeight, const HGTD_ID *)
This is an Identifier helper class for the HGTD subdetector.
Definition HGTD_ID.h:47
int eta_module(const Identifier &id) const
Definition HGTD_ID.h:489
int eta_index(const Identifier &id) const
Definition HGTD_ID.h:503
Identifier wafer_id(int endcap, int layer, int phi_module, int eta_module) const
For a single crystal.
Definition HGTD_ID.h:287
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
Definition HGTD_ID.h:404
int phi_index(const Identifier &id) const
Definition HGTD_ID.h:496
int layer(const Identifier &id) const
Definition HGTD_ID.h:475
int endcap(const Identifier &id) const
Values of different levels (failure returns 0)
Definition HGTD_ID.h:468
int phi_module(const Identifier &id) const
Definition HGTD_ID.h:482
TH1D * Book1D(const std::string &name, const std::string &labels, int nBins, float start, float end, bool prependDir=true)
Book a TH1D histogram.
Definition PlotBase.cxx:94
PlotBase(PlotBase *parent, const std::string &sDir)
Definition PlotBase.cxx:29
TH2F * Book2D(const std::string &name, const std::string &labels, int nBinsX, float startX, float endX, int nBinsY, float startY, float endY, bool prependDir=true)
Book a TH2F histogram.
Definition PlotBase.cxx:123
DetectorIDHashType identifierHash() const
Returns the IdentifierHash of the measurement (corresponds to the detector element IdentifierHash)
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
const HGTD_DetectorElement * getDetectorElement(const IdentifierHash &hash, const HGTD_DetectorElementCollection &coll)
DataVector< HGTD_DetectorElement > HGTD_DetectorElementCollection
HGTDCluster_v1 HGTDCluster
Define the version of the pixel cluster class.
Definition HGTDCluster.h:13