37 Float_t mPosModuleAx[
Geometry::NCellsA] = {-12.25, -6.15, -0.05, 6.15, 12.25, -12.25, -6.15, -0.05, 6.15, 12.25, -13.58, -7.48, 7.48, 13.58, -12.25, -6.15, 0.05, 6.15, 12.25, -12.25, -6.15, 0.05, 6.15, 12.25};
39 Float_t mPosModuleAy[
Geometry::NCellsA] = {12.2, 12.2, 13.53, 12.2, 12.2, 6.1, 6.1, 7.43, 6.1, 6.1, 0.0, 0.0, 0.0, 0.0, -6.1, -6.1, -7.43, -6.1, -6.1, -12.2, -12.2, -13.53, -12.2, -12.2};
42 for (Int_t ipmt = 0; ipmt <
NCellsA; ipmt++) {
43 mMCP[ipmt].SetXYZ(mPosModuleAx[ipmt], mPosModuleAy[ipmt],
ZdetA);
49 Float_t mInStart[3] = {2.9491, 2.9491, 2.5};
50 Float_t mStartC[3] = {20., 20, 5.5};
52 Double_t crad =
ZdetC;
54 Double_t dP = mInStart[0];
57 Double_t btta = 2 * TMath::ATan(dP / crad);
60 Double_t grdin[6] = {-3, -2, -1, 1, 2, 3};
61 Double_t gridpoints[6];
62 for (Int_t
i = 0;
i < 6;
i++) {
63 gridpoints[
i] = crad * TMath::Sin((1 - 1 / (2 * TMath::Abs(grdin[
i]))) * grdin[
i] * btta);
65 Double_t xi[
NCellsC] = {-15.038271418735729, 15.038271418735729,
66 -15.003757581112167, 15.003757581112167, -9.02690018974363,
67 9.02690018974363, -9.026897413747076, 9.026897413747076,
68 -9.026896531935773, 9.026896531935773, -3.0004568618531313,
69 3.0004568618531313, -3.0270795197907225, 3.0270795197907225,
70 3.0003978432927543, -3.0003978432927543, 3.0270569670429572,
71 -3.0270569670429572, 9.026750365564254, -9.026750365564254,
72 9.026837450695885, -9.026837450695885, 9.026849243816981,
73 -9.026849243816981, 15.038129472387304, -15.038129472387304,
74 15.003621961057961, -15.003621961057961};
75 Double_t yi[
NCellsC] = {3.1599494336464455, -3.1599494336464455,
76 9.165191680982874, -9.165191680982874, 3.1383331772537426,
77 -3.1383331772537426, 9.165226363918643, -9.165226363918643,
78 15.141616002932361, -15.141616002932361, 9.16517861649866,
79 -9.16517861649866, 15.188854859073416, -15.188854859073416,
80 9.165053319552113, -9.165053319552113, 15.188703787345304,
81 -15.188703787345304, 3.138263189805292, -3.138263189805292,
82 9.165104089644917, -9.165104089644917, 15.141494417823818,
83 -15.141494417823818, 3.1599158563428644, -3.1599158563428644,
84 9.165116302773846, -9.165116302773846};
88 zi[
i] = TMath::Sqrt(TMath::Power(crad, 2) - TMath::Power(xi[
i], 2) - TMath::Power(yi[
i], 2));
94 ac[
i] = TMath::ATan(yi[
i] / xi[
i]) - TMath::Pi() / 2 + 2 * TMath::Pi();
96 bc[
i] = TMath::ACos(zi[
i] / crad);
98 bc[
i] = -1 * TMath::ACos(zi[
i] / crad);
105 Double_t rcomp = crad + mStartC[2] / 2.0;
108 xc2[
i] = rcomp * TMath::Cos(ac[
i] + TMath::Pi() / 2) * TMath::Sin(-1 *
bc[
i]);
109 yc2[
i] = rcomp * TMath::Sin(ac[
i] + TMath::Pi() / 2) * TMath::Sin(-1 *
bc[
i]);
110 zc2[
i] = rcomp * TMath::Cos(
bc[
i]);
113 ac[
i] *= 180 / TMath::Pi();
114 bc[
i] *= 180 / TMath::Pi();
116 mAngles[
i].SetXYZ(ac[
i],
bc[
i], gc[
i]);
132 Double_t delta = 5.3 / 4.;
138 for (
int iModA = 0; iModA <
NCellsA; iModA++) {
139 xLocalChannels[4 * iModA + 0] = mMCP[iModA].X() - delta;
140 xLocalChannels[4 * iModA + 1] = mMCP[iModA].X() + delta;
141 xLocalChannels[4 * iModA + 2] = mMCP[iModA].X() - delta;
142 xLocalChannels[4 * iModA + 3] = mMCP[iModA].X() + delta;
144 yLocalChannels[4 * iModA + 0] = mMCP[iModA].Y() + delta;
145 yLocalChannels[4 * iModA + 1] = mMCP[iModA].Y() + delta;
146 yLocalChannels[4 * iModA + 2] = mMCP[iModA].Y() - delta;
147 yLocalChannels[4 * iModA + 3] = mMCP[iModA].Y() - delta;
149 zLocalChannels[4 * iModA + 0] = mMCP[iModA].Z();
150 zLocalChannels[4 * iModA + 1] = mMCP[iModA].Z();
151 zLocalChannels[4 * iModA + 2] = mMCP[iModA].Z();
152 zLocalChannels[4 * iModA + 3] = mMCP[iModA].Z();
157 for (
int iModC = 0; iModC <
NCellsC; iModC++) {
158 xLocalChannels[4 * (iModC +
NCellsA) + 0] = mMCP[iModC +
NCellsA].X() - delta;
159 xLocalChannels[4 * (iModC +
NCellsA) + 1] = mMCP[iModC +
NCellsA].X() + delta;
160 xLocalChannels[4 * (iModC +
NCellsA) + 2] = mMCP[iModC +
NCellsA].X() - delta;
161 xLocalChannels[4 * (iModC +
NCellsA) + 3] = mMCP[iModC +
NCellsA].X() + delta;
163 yLocalChannels[4 * (iModC +
NCellsA) + 0] = mMCP[iModC +
NCellsA].Y() + delta;
164 yLocalChannels[4 * (iModC +
NCellsA) + 1] = mMCP[iModC +
NCellsA].Y() + delta;
165 yLocalChannels[4 * (iModC +
NCellsA) + 2] = mMCP[iModC +
NCellsA].Y() - delta;
166 yLocalChannels[4 * (iModC +
NCellsA) + 3] = mMCP[iModC +
NCellsA].Y() - delta;
168 zLocalChannels[4 * (iModC +
NCellsA) + 0] = mMCP[iModC +
NCellsA].Z();
169 zLocalChannels[4 * (iModC +
NCellsA) + 1] = mMCP[iModC +
NCellsA].Z();
170 zLocalChannels[4 * (iModC +
NCellsA) + 2] = mMCP[iModC +
NCellsA].Z();
171 zLocalChannels[4 * (iModC +
NCellsA) + 3] = mMCP[iModC +
NCellsA].Z();
174 for (
int iChannel = 0; iChannel <
Nchannels; iChannel++) {
175 mChannelCenter[localChannelOrder[iChannel]].SetXYZ(xLocalChannels[iChannel], yLocalChannels[iChannel], zLocalChannels[iChannel]);