9 #include "GaudiKernel/SystemOfUnits.h"
18 const std::string& basePath,
23 auto registerHisto = [&](TH1*
h) {
27 std::string
stName =
"Inclusive";
35 stName = idHelperSvc->tgcIdHelper().stationNameString(stIdent);
38 stName = idHelperSvc->stgcIdHelper().stationNameString(stIdent);
41 stName = idHelperSvc->mmIdHelper().stationNameString(stIdent);
47 const std::string histPath =
std::format(
"/{}/Station_{}/{}",
48 basePath,
stName,
h->GetName());
49 histSvc->regHist(histPath,
h).ignore();
52 h_dirTheta = registerHisto(
new TH1F(
"dirTheta",
"local direction; #theta [deg]", 180, 0, 180));
53 h_dirPhi = registerHisto(
new TH1F(
"dirPhi",
"local direction; #phi [deg]", 360, -180, 180));
54 h_energy = registerHisto(
new TH1F(
"energy",
"kinetic energy; e[GeV]", 150, 0, 150));
55 h_deposit = registerHisto(
new TH1F(
"energyDeposit",
"energy deposit; e[GeV]", 20, 0, 2));
56 h_pdgId = registerHisto(
new TH1F(
"pdgId",
"Particle data ID; pdgId",31, -15.5, 15.5));
60 h_stationPhi = registerHisto(
new TH1F(
"stationPhi",
"StationPhi;stationPhi",48, 0.5, 48.5));
61 h_stationEta = registerHisto(
new TH1F(
"stationEta",
"StationEta;stationEta",11, -5.5, 5.5));
62 h_localHitPos = registerHisto(
new TH2F(
"localHitPosXY",
"hit position;x [mm]; y[mm]",
63 240, -1200, 1200, 240, -1200, 1200));
64 h_localHitZ = registerHisto(
new TH1F(
"localHitPosZ",
"position in gas gap;z [mm]", 20, -5, 5));
68 h_globHitXY = registerHisto(
new TH2F(
"hitXY",
"hitXY;x [mm]; y[mm];entries", 240, -
r,
r, 240,-
r,
r));
69 h_globHitRZ = registerHisto(
new TH2F(
"hitRZ",
"hitRz;r [mm]; z[mm];entries", 1200, 0,
r, 2200,-
z,
z));
72 h_stationPhi = registerHisto(
new TH1F(
"stationPhi",
"StationPhi;stationPhi",8, 0.5, 8.5));
73 h_stationEta = registerHisto(
new TH1F(
"stationEta",
"StationEta;stationEta",17, -8.5, 8.5));
74 h_localHitPos = registerHisto(
new TH2F(
"localHitPosXY",
"hit position;x [mm]; y[mm]",
75 70, -1400, 1400, 70, -1400, 1400));
76 h_localHitZ = registerHisto(
new TH1F(
"localHitPosZ",
"position in gas gap;z [mm]", 11, -0.5, 0.5));
79 h_globHitXY = registerHisto(
new TH2F(
"hitXY",
"hitXY;x [mm]; y[mm];entries", 240, -
r,
r, 240,-
r,
r));
80 h_globHitRZ = registerHisto(
new TH2F(
"hitRZ",
"hitRz;r [mm]; z[mm];entries", 1200, 0,
r, 600,-
z,
z));
84 h_stationPhi = registerHisto(
new TH1F(
"stationPhi",
"StationPhi;stationPhi",8, 0.5, 8.5));
85 h_stationEta = registerHisto(
new TH1F(
"stationEta",
"StationEta;stationEta",17, -8.5, 8.5));
86 h_localHitPos = registerHisto(
new TH1F(
"localHitPosR",
"hit position;r [mm]", 61, -15, 15));
87 h_localHitZ = registerHisto(
new TH1F(
"localHitPosZ",
"position in gas gap;z [mm]", 310, -3100, 3100));
90 h_globHitXY = registerHisto(
new TH2F(
"hitXY",
"hitXY;x [mm]; y[mm];entries", 2400, -
r,
r, 2400,-
r,
r));
91 h_globHitRZ = registerHisto(
new TH2F(
"hitRZ",
"hitRz;r [mm]; z[mm];entries", 1200, 0,
r, 2200,-
z,
z));
95 h_stationPhi = registerHisto(
new TH1F(
"stationPhi",
"StationPhi;stationPhi",8, 0.5, 8.5));
96 h_stationEta = registerHisto(
new TH1F(
"stationEta",
"StationEta;stationEta",5, -2.5, 2.5));
97 h_localHitPos = registerHisto(
new TH2F(
"localHitPosXY",
"hit position;x [mm]; y[mm]",
98 480, -1200, 1200, 480, -2400, 2400));
99 h_localHitZ = registerHisto(
new TH1F(
"localHitPosZ",
"position in gas gap;z [mm]", 11, -0.5, 0.5));
102 h_globHitXY = registerHisto(
new TH2F(
"hitXY",
"hitXY;x [mm]; y[mm];entries", 1000, -
r,
r, 1000,-
r,
r));
103 h_globHitRZ = registerHisto(
new TH2F(
"hitRZ",
"hitRz;r [mm]; z[mm];entries", 500, 0,
r, 160, -
z,
z));
107 h_stationPhi = registerHisto(
new TH1F(
"stationPhi",
"StationPhi;stationPhi",8, 0.5, 8.5));
108 h_stationEta = registerHisto(
new TH1F(
"stationEta",
"StationEta;stationEta",7, -3.5, 3.5));
109 h_localHitPos = registerHisto(
new TH2F(
"localHitPosXY",
"hit position;x [mm]; y[mm]",
110 440, -1100, 1100, 440, -1100, 1100));
111 h_localHitZ = registerHisto(
new TH1F(
"localHitPosZ",
"position in gas gap;z [mm]", 11, -0.5, 0.5));
114 h_globHitXY = registerHisto(
new TH2F(
"hitXY",
"hitXY;x [mm]; y[mm];entries", 1000, -
r,
r, 1000,-
r,
r));
115 h_globHitRZ = registerHisto(
new TH2F(
"hitRZ",
"hitRz;r [mm]; z[mm];entries", 500, 0,
r, 160, -
z,
z));
128 std::set<int> histIds{-1};
133 for (
int s = 0 ;
s <
toInt(StIdx_t::StIndexMax); ++
s){
144 std::for_each(idHelper.module_begin(), idHelper.module_end(),
146 histIds.insert(idHelper.stationName(id));
151 std::for_each(idHelper.module_begin(), idHelper.module_end(),
153 histIds.insert(idHelper.stationName(id));
158 std::for_each(idHelper.module_begin(), idHelper.module_end(),
160 histIds.insert(idHelper.stationName(id));
165 return StatusCode::FAILURE;
167 for (
int id : histIds) {
170 return StatusCode::SUCCESS;
173 const EventContext& ctx{Gaudi::Hive::currentContext()};
177 if (simHits->empty()) {
179 return StatusCode::SUCCESS;
186 const Identifier refId{viewer.at(0)->identify()};
195 std::vector<unsigned> fillMe{};
205 const double theta = hit->localDirection().theta();
206 const double phi = hit->localDirection().phi();
208 IdentifierHash layHash{
re->layerHash(hitId)};
211 Amg::Vector3D::UnitZ(),
212 xAOD::toEigen(hit->localPosition()),
213 xAOD::toEigen(hit->localDirection()));
214 layHash =
re->measurementHash(hitId);
217 xAOD::toEigen(hit->localPosition())};
219 for (
unsigned h : fillMe) {
225 m_histos[
h].h_stationPhi->Fill(stationPhi);
226 m_histos[
h].h_stationEta->Fill(stationEta);
228 m_histos[
h].h_localHitPos->Fill(signedR);
230 m_histos[
h].h_localHitPos->Fill(hit->localPosition().x(),
231 hit->localPosition().y());
233 m_histos[
h].h_localHitZ->Fill(hit->localPosition().z());
234 m_histos[
h].h_globHitXY->Fill(globPos.x(), globPos.y());
235 m_histos[
h].h_globHitRZ->Fill(globPos.perp(), globPos.y());
238 }
while(viewer.next());
239 return StatusCode::SUCCESS;