Helper struct to define histograms spectrometer region.
20 :
22
23 auto registerHisto = [&](TH1*
h) {
26
27 std::string
stName =
"Inclusive";
28 if (stIdent >= 0) {
29 switch (techIdx) {
30 case TechIdx_t::MDT:
31 case TechIdx_t::RPC: {
33 break;
34 } case TechIdx_t::TGC: {
36 break;
37 } case TechIdx_t::STGC: {
39 break;
40 } case TechIdx_t::MM: {
42 break;
43 } default:
44 break;
45 }
46 }
47 const std::string histPath = std::format("/{}/Station_{}/{}",
48 basePath,
stName,
h->GetName());
49 histSvc->regHist(histPath, h).ignore();
51 };
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));
57
58 switch (techIdx) {
59 case TechIdx_t::TGC: {
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));
65
66 constexpr double r = 12. * Gaudi::Units::m;
67 constexpr double z = 14 * Gaudi::Units::m;
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));
70 break;
71 } case TechIdx_t::RPC: {
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));
77 constexpr double r = 12. * Gaudi::Units::m;
78 constexpr double z = 12 * Gaudi::Units::m;
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));
81
82 break;
83 } case TechIdx_t::MDT: {
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));
88 constexpr double r = 12. * Gaudi::Units::m;
89 constexpr double z = 22 * Gaudi::Units::m;
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));
92
93 break;
94 } case TechIdx_t::MM: {
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));
100 constexpr double r = 5 * Gaudi::Units::m;
101 constexpr double z = 8. *Gaudi::Units::m;
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));
104
105 break;
106 } case TechIdx_t::STGC: {
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));
112 constexpr double r = 5 * Gaudi::Units::m;
113 constexpr double z = 8. *Gaudi::Units::m;
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));
116 break;
117 } default:
118 break;
119 }
120 }
const ServiceHandle< ITHistSvc > & histSvc() const
The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a...
const std::string & stationNameString(const int &index) const
Muon::MuonStationIndex::StIndex StIdx_t
virtual const MmIdHelper & mmIdHelper() const =0
access to CscIdHelper
virtual const sTgcIdHelper & stgcIdHelper() const =0
access to TgcIdHelper
virtual const TgcIdHelper & tgcIdHelper() const =0
access to TgcIdHelper
const std::string & stName(StIndex index)
convert StIndex into a string
TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
TH1 * h_dirPhi
Local phi direction of the hit.
TH1 * h_deposit
Energy deposit of the hit.
TH1 * h_localHitPos
Local position of the hit (signed radius) / pos in x-y plane.
TH1 * h_stationEta
Station eta of the hit.
TH1 * h_energy
Energy of the hit.
TH1 * h_stationPhi
Station phi of the hit.
TH1 * h_localHitZ
Local z-hit position.
TH1 * h_globHitXY
Global hit position (x-y) plane.
int identifier
Identifier (Either the stationIndex (Mdt/Rpc) or stationName (Tgc/Mm/sTgc))
TH1 * h_dirTheta
Local theta direction of the hit.
TH1 * h_pdgId
pdgId of the hit
TH1 * h_globHitRZ
Global hit position (r-z) plane.