ATLAS Offline Software
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 
7 #include "TrkSurfaces/Surface.h"
8 
9 namespace 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 
74  const InDetDD::HGTD_DetectorElementCollection& hgtdElements,
75  float beamSpotWeight,
76  const HGTD_ID* hgtdID)
77  {
78  const Identifier& id = hgtdID->wafer_id(cluster->identifierHash());
79  const auto *element = hgtdElements.getDetectorElement(hgtdID->wafer_hash(hgtdID->wafer_id(id)));
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 
90  Amg::Vector2D M;
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 
TH2::Fill
int Fill(double, double)
Definition: rootspy.cxx:382
xAOD::UncalibratedMeasurement_v1::identifierHash
DetectorIDHashType identifierHash() const
Returns the IdentifierHash of the measurement (corresponds to the detector element IdentifierHash)
ActsTrk::HgtdClusterValidationPlots::m_local_y_left
TH1 * m_local_y_left
Definition: HgtdClusterValidationPlots.h:59
ActsTrk::HgtdClusterValidationPlots::m_localCovXX_right
TH1 * m_localCovXX_right
Definition: HgtdClusterValidationPlots.h:50
ActsTrk::HgtdClusterValidationPlots::m_localCovXX_left
TH1 * m_localCovXX_left
Definition: HgtdClusterValidationPlots.h:62
PlotBase::Book1D
TH1F * 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:88
ActsTrk::HgtdClusterValidationPlots::m_global_xy_left
TH2 * m_global_xy_left
Definition: HgtdClusterValidationPlots.h:77
ActsTrk::HgtdClusterValidationPlots::m_localCovYY_right
TH1 * m_localCovYY_right
Definition: HgtdClusterValidationPlots.h:51
PlotBase
Definition: PlotBase.h:33
HGTD_ID::wafer_hash
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
Definition: HGTD_ID.h:404
ActsTrk::HgtdClusterValidationPlots::m_global_zr_right
TH2 * m_global_zr_right
Definition: HgtdClusterValidationPlots.h:56
Surface.h
ActsTrk::HgtdClusterValidationPlots::m_eta_module_right
TH1 * m_eta_module_right
Definition: HgtdClusterValidationPlots.h:35
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
python.copyTCTOutput.sDir
sDir
Definition: copyTCTOutput.py:60
ActsTrk::HgtdClusterValidationPlots::m_global_zr_left
TH2 * m_global_zr_left
Definition: HgtdClusterValidationPlots.h:78
ActsTrk::HgtdClusterValidationPlots::m_global_z_right
TH1 * m_global_z_right
Definition: HgtdClusterValidationPlots.h:73
HGTD_ID::endcap
int endcap(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: HGTD_ID.h:468
PlotBase::Book2D
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 TH2D histogram.
Definition: PlotBase.cxx:117
HGTD_ID::eta_index
int eta_index(const Identifier &id) const
Definition: HGTD_ID.h:503
ActsTrk::HgtdClusterValidationPlots::m_phi_module_right
TH1 * m_phi_module_right
Definition: HgtdClusterValidationPlots.h:32
ActsTrk::HgtdClusterValidationPlots::m_eta
TH1 * m_eta
Definition: HgtdClusterValidationPlots.h:44
xAOD::HGTDCluster_v1
Definition: HGTDCluster_v1.h:23
HGTD_ID::layer
int layer(const Identifier &id) const
Definition: HGTD_ID.h:475
ActsTrk::HgtdClusterValidationPlots::HgtdClusterValidationPlots
HgtdClusterValidationPlots(PlotBase *pParent, const std::string &sDir)
Definition: HgtdClusterValidationPlots.cxx:11
ActsTrk::HgtdClusterValidationPlots::m_eta_module_left
TH1 * m_eta_module_left
Definition: HgtdClusterValidationPlots.h:36
HGTD_ID::wafer_id
Identifier wafer_id(int endcap, int layer, int phi_module, int eta_module) const
For a single crystal.
Definition: HGTD_ID.h:287
ActsTrk::HgtdClusterValidationPlots::m_global_x_right
TH1 * m_global_x_right
Definition: HgtdClusterValidationPlots.h:71
HGTD_ID::phi_index
int phi_index(const Identifier &id) const
Definition: HGTD_ID.h:496
ActsTrk::HgtdClusterValidationPlots::m_phi_index_left
TH1 * m_phi_index_left
Definition: HgtdClusterValidationPlots.h:39
ActsTrk::HgtdClusterValidationPlots::m_phi_index_right
TH1 * m_phi_index_right
Definition: HgtdClusterValidationPlots.h:38
ActsTrk::HgtdClusterValidationPlots::m_local_x_right
TH1 * m_local_x_right
Definition: HgtdClusterValidationPlots.h:46
ActsTrk::HgtdClusterValidationPlots::m_global_x_left
TH1 * m_global_x_left
Definition: HgtdClusterValidationPlots.h:66
ActsTrk::HgtdClusterValidationPlots::m_local_xy_right
TH2 * m_local_xy_right
Definition: HgtdClusterValidationPlots.h:54
ActsTrk::HgtdClusterValidationPlots::m_local_x_left
TH1 * m_local_x_left
Definition: HgtdClusterValidationPlots.h:58
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
HGTD_DetectorElement.h
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
ActsTrk::HgtdClusterValidationPlots::m_local_t_left
TH1 * m_local_t_left
Definition: HgtdClusterValidationPlots.h:60
ActsTrk::HgtdClusterValidationPlots::fill
void fill(const xAOD::HGTDCluster *cluster, const InDetDD::HGTD_DetectorElementCollection &hgtdElements, float beamSpotWeight, const HGTD_ID *)
Definition: HgtdClusterValidationPlots.cxx:73
HGTD_ID
Definition: HGTD_ID.h:47
ActsTrk::HgtdClusterValidationPlots::m_layer_left
TH1 * m_layer_left
Definition: HgtdClusterValidationPlots.h:30
TH1::Fill
int Fill(double)
Definition: rootspy.cxx:285
ActsTrk::HgtdClusterValidationPlots::m_localCovTT_right
TH1 * m_localCovTT_right
Definition: HgtdClusterValidationPlots.h:52
ActsTrk::HgtdClusterValidationPlots::m_global_r_left
TH1 * m_global_r_left
Definition: HgtdClusterValidationPlots.h:69
ActsTrk::HgtdClusterValidationPlots::m_localCovYY_left
TH1 * m_localCovYY_left
Definition: HgtdClusterValidationPlots.h:63
ActsTrk::HgtdClusterValidationPlots::m_global_r_right
TH1 * m_global_r_right
Definition: HgtdClusterValidationPlots.h:74
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ActsTrk::HgtdClusterValidationPlots::m_eta_index_left
TH1 * m_eta_index_left
Definition: HgtdClusterValidationPlots.h:42
ActsTrk::HgtdClusterValidationPlots::m_localCovTT_left
TH1 * m_localCovTT_left
Definition: HgtdClusterValidationPlots.h:64
ActsTrk::HgtdClusterValidationPlots::m_global_y_left
TH1 * m_global_y_left
Definition: HgtdClusterValidationPlots.h:67
ActsTrk::HgtdClusterValidationPlots::m_layer_right
TH1 * m_layer_right
Definition: HgtdClusterValidationPlots.h:29
HGTD_ID::eta_module
int eta_module(const Identifier &id) const
Definition: HGTD_ID.h:489
ActsTrk::HgtdClusterValidationPlots::m_global_y_right
TH1 * m_global_y_right
Definition: HgtdClusterValidationPlots.h:72
ActsTrk::HgtdClusterValidationPlots::m_phi_module_left
TH1 * m_phi_module_left
Definition: HgtdClusterValidationPlots.h:33
HGTD_ID::phi_module
int phi_module(const Identifier &id) const
Definition: HGTD_ID.h:482
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:34
ActsTrk::HgtdClusterValidationPlots::m_global_xy_right
TH2 * m_global_xy_right
Definition: HgtdClusterValidationPlots.h:55
ActsTrk::HgtdClusterValidationPlots::m_global_z_left
TH1 * m_global_z_left
Definition: HgtdClusterValidationPlots.h:68
ActsTrk::HgtdClusterValidationPlots::m_local_t_right
TH1 * m_local_t_right
Definition: HgtdClusterValidationPlots.h:48
ActsTrk::HgtdClusterValidationPlots::m_local_xy_left
TH2 * m_local_xy_left
Definition: HgtdClusterValidationPlots.h:76
InDetDD::HGTD_DetectorElementCollection
Definition: HGTD_DetectorElementCollection.h:29
InDetDD::HGTD_DetectorElementCollection::getDetectorElement
const HGTD_DetectorElement * getDetectorElement(const IdentifierHash &hash) const
Definition: HGTD_DetectorElementCollection.cxx:11
ActsTrk::HgtdClusterValidationPlots::m_local_y_right
TH1 * m_local_y_right
Definition: HgtdClusterValidationPlots.h:47
HgtdClusterValidationPlots.h
ActsTrk::HgtdClusterValidationPlots::m_barrelEndcap
TH1 * m_barrelEndcap
Definition: HgtdClusterValidationPlots.h:27
ActsTrk::HgtdClusterValidationPlots::m_eta_index_right
TH1 * m_eta_index_right
Definition: HgtdClusterValidationPlots.h:41