12#include "TGeoManager.h"
16#include <fairlogger/Logger.h>
17#include "FairVolume.h"
18#include "FairRootManager.h"
20#include "TOFSimulation/Detector.h"
22#include <TVirtualMC.h>
41 mTOFHoles(rhs.mTOFHoles),
45 mTOFSectors[
i] = rhs.mTOFSectors[
i];
56 TGeoVolume*
v = gGeoManager->GetVolume(
"FPAD");
58 printf(
"Sensitive volume FSEN not found!!!!!!!!");
60 AddSensitiveVolume(
v);
67 if (
static_cast<int>(fMC->TrackCharge()) == 0) {
72 float pos2x, pos2y, pos2z;
73 fMC->TrackPosition(pos2x, pos2y, pos2z);
74 Float_t radius = std::sqrt(pos2x * pos2x + pos2y * pos2y);
75 LOG(
debug) <<
"Process hit in TOF volume ar R=" << radius <<
" - Z=" << pos2z;
83 float posx, posy, posz;
84 fMC->TrackPosition(posx, posy, posz);
85 float time = fMC->TrackTime() * 1.0e09;
88 int sensID =
v->getMCid();
94 HitType newhit(posx, posy, posz,
time, enDep, trackID, sensID);
95 if (channel != mLastChannelID || !isMergable(newhit, mHits->back())) {
96 mHits->push_back(newhit);
97 stack->addHit(GetDetId());
99 mHits->back().SetEnergyLoss(mHits->back().GetEnergyLoss() + newhit.
GetEnergyLoss());
103 mLastChannelID = channel;
110 FairRootManager::Instance()->RegisterAny(
addNameTo(
"Hit").
data(), mHits, kTRUE);
129 Float_t aq[2] = {28.0855, 15.9994};
136 Float_t anox[4] = {12.011, 1.00794, 15.9994, 14.00674};
137 Float_t znox[4] = {6., 1., 8., 7.};
138 Float_t wnox[4] = {14., 22., 2., 2.};
146 Float_t ag10[5] = {28.0855, 15.9994, 12.011, 1.00794, 15.9994};
147 Float_t zg10[5] = {14., 8., 6., 1., 8.};
150 na[0] = 1., na[1] = 2., na[2] = 0., na[3] = 0., na[4] = 0.;
152 wmatg10[0] = we[0] * 0.6;
153 wmatg10[1] = we[1] * 0.6;
154 na[0] = 0., na[1] = 0., na[2] = 14., na[3] = 20., na[4] = 3.;
156 wmatg10[2] = we[2] * 0.4;
157 wmatg10[3] = we[3] * 0.4;
158 wmatg10[4] = we[4] * 0.4;
163 Float_t awa[2] = {1.00794, 15.9994};
170 Float_t aAir[4] = {12.011, 14.00674, 15.9994, 39.948};
171 Float_t zAir[4] = {6., 7., 8., 18.};
172 Float_t wAir[4] = {0.000124, 0.755267, 0.231781, 0.012827};
176 Float_t afg[4] = {28.0855, 15.9994, 12.011, 1.00794};
177 Float_t zfg[4] = {14., 8., 6., 1.};
178 Float_t wfg[4] = {0.12906, 0.29405, 0.51502, 0.06187};
184 Float_t afre[4] = {12.011, 1.00794, 18.9984032, 32.0065};
185 Float_t zfre[4] = {6., 1., 9., 16.};
186 Float_t wfre[4] = {0.21250, 0.01787, 0.74827, 0.021355};
191 Float_t acbt[2] = {26.981539, 63.546};
193 Float_t wcbt[2] = {0.407, 0.593};
197 Float_t asc[4] = {12.011, 1.00794, 26.981539, 63.546};
198 Float_t zsc[4] = {6., 1., 13., 29.};
200 for (Int_t ii = 0; ii < 4; ii++) {
205 for (Int_t ii = 0; ii < 4; ii++) {
208 for (Int_t ii = 0; ii < 4; ii++) {
214 wsc[0] = 0.4375 * wDummy[0];
215 wsc[1] = 0.4375 * wDummy[1];
221 Float_t acra[5] = {26.981539, 63.546, 55.845, 51.9961, 58.6934};
222 Float_t zcra[5] = {13., 29., 26., 24., 28.};
223 Float_t wcra[5] = {0.7, 0.2, 0.07, 0.018, 0.012};
227 Float_t aPlastic[2] = {12.011, 1.00794};
228 Float_t zPlastic[2] = {6., 1.};
229 Float_t wPlastic[2] = {1., 2.};
232 Int_t nwPlastic = -2;
234 Mixture(0,
"Air$", aAir, zAir, dAir, 4, wAir);
235 Mixture(1,
"Nomex$", anox, znox, dnox, nnox, wnox);
236 Mixture(2,
"G10$", ag10, zg10, densg10, nlmatg10, wmatg10);
237 Mixture(3,
"fibre glass$", afg, zfg, dfg, nfg, wfg);
238 Material(4,
"Al $", 26.981539, 13., 2.7, -8.9, 999.);
239 Float_t factor = 0.4 / 1.5 * 2. / 3.;
240 Material(5,
"Al honeycomb$", 26.981539, 13., 2.7 * factor, -8.9 / factor, 999.);
241 Mixture(6,
"Freon$", afre, zfre, densfre, nfre, wfre);
242 Mixture(7,
"Glass$", aq, zq, dq, nq, wq);
243 Mixture(8,
"Water$", awa, zwa, dwa, nwa, wwa);
244 Mixture(9,
"cables+tubes$", acbt, zcbt, decbt, 2, wcbt);
245 Material(10,
"Cu $", 63.546, 29., 8.96, -1.43, 999.);
246 Mixture(11,
"cable$", asc, zsc, dsc, 4, wsc);
247 Mixture(12,
"Al+Cu+steel$", acra, zcra, dcra, 5, wcra);
248 Mixture(13,
"plastic$", aPlastic, zPlastic, dPlastic, nwPlastic, wPlastic);
249 Float_t factorHoles = 1. / 36.5;
250 Material(14,
"Al honey for holes$", 26.981539, 13., 2.7 * factorHoles, -8.9 / factorHoles, 999.);
252 Float_t epsil, stmin, deemax, stemax;
266 Medium(
kAir,
"Air$", 0, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
267 Medium(
kNomex,
"Nomex$", 1, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
268 Medium(
kG10,
"G10$", 2, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
269 Medium(
kFiberGlass,
"fibre glass$", 3, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
270 Medium(
kAlFrame,
"Al Frame$", 4, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
271 Medium(
kHoneycomb,
"honeycomb$", 5, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
272 Medium(
kFre,
"Fre$", 6, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
273 Medium(
kCuS,
"Cu-S$", 10, 1, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
274 Medium(
kGlass,
"Glass$", 7, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
275 Medium(
kWater,
"Water$", 8, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
276 Medium(
kCable,
"Cable$", 11, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
277 Medium(
kCableTubes,
"Cables+Tubes$", 9, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
278 Medium(
kCopper,
"Copper$", 10, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
279 Medium(
kPlastic,
"Plastic$", 13, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
280 Medium(
kCrates,
"Crates$", 12, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
281 Medium(
kHoneyHoles,
"honey_holes$", 14, 0, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
290 for (Int_t
i = 0;
i <
n; ++
i) {
294 for (Int_t
i = 0;
i <
n; ++
i) {
312 LOG(info) <<
"Loaded TOF geometry";
327 createModules(xtof, ytof, zlenA, xFLT, yFLT, zFLTA);
328 makeStripsInModules(ytof, zlenA);
330 createModuleCovers(xtof, zlenA);
332 createBackZone(xtof, ytof, zlenA);
333 makeFrontEndElectronics(xtof);
334 makeFEACooling(xtof);
336 makeSuperModuleCooling(xtof, ytof, zlenA);
337 makeSuperModuleServices(xtof, ytof, zlenA);
339 makeModulesInBTOFvolumes(ytof, zlenA);
340 makeCoversInBTOFvolumes();
341 makeBackInBTOFvolumes(ytof);
343 makeReadoutCrates(ytof);
354 for (Int_t ii = 0; ii < 8; ii++) {
361 par[1] = ytof * 0.25;
362 par[2] = zlenA * 0.5;
367 par[1] = ytof * 0.25;
377 par[2] = zFLTA * 0.5;
378 TVirtualMC::GetMC()->Gsvolu(
"FLTA",
"BOX ",
getMediumID(
kFre), par, 3);
384 TVirtualMC::GetMC()->Gspos(
"FLTA", 0,
"FTOA", xcoor, ycoor, zcoor, 0,
"ONLY");
388 TVirtualMC::GetMC()->Gsvolu(
"FLTB",
"BOX ",
getMediumID(
kFre), par, 3);
389 TVirtualMC::GetMC()->Gsvolu(
"FLTC",
"BOX ",
getMediumID(
kFre), par, 3);
394 TVirtualMC::GetMC()->Gspos(
"FLTB", 0,
"FTOB", xcoor, ycoor, zcoor, 0,
"ONLY");
395 TVirtualMC::GetMC()->Gspos(
"FLTC", 0,
"FTOC", xcoor, ycoor, -zcoor, 0,
"ONLY");
404 alpha = TMath::ATan(tgal);
405 beta = (TMath::Pi() * 0.5 -
alpha) * 0.5;
406 tgbe = TMath::Tan(beta);
407 trpa[0] = xFLT * 0.5;
416 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
423 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
426 Matrix(idrotm[0], 90., 90., 180., 0., 90., 180.);
427 Matrix(idrotm[1], 90., 90., 0., 0., 90., 0.);
433 TVirtualMC::GetMC()->Gspos(
"FWZ1D", 1,
"FLTA", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
434 TVirtualMC::GetMC()->Gspos(
"FWZ1D", 2,
"FLTA", xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
441 trpa[0] = xFLT * 0.5;
448 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
453 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
459 TVirtualMC::GetMC()->Gspos(
"FWZAD", 1,
"FLTB", xcoor, ycoorB, zcoorB, idrotm[1],
"ONLY");
460 TVirtualMC::GetMC()->Gspos(
"FWZAD", 2,
"FLTC", xcoor, ycoorB, -zcoorB, idrotm[0],
"ONLY");
465 alpha = TMath::ATan(tgal);
466 beta = (TMath::Pi() * 0.5 -
alpha) * 0.5;
467 tgbe = TMath::Tan(beta);
468 trpa[0] = xFLT * 0.5;
477 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
484 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
487 Matrix(idrotm[2], 90., 270., 0., 0., 90., 180.);
488 Matrix(idrotm[3], 90., 270., 180., 0., 90., 0.);
494 TVirtualMC::GetMC()->Gspos(
"FWZ1U", 1,
"FLTA", xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
495 TVirtualMC::GetMC()->Gspos(
"FWZ1U", 2,
"FLTA", xcoor, ycoor, -zcoor, idrotm[3],
"ONLY");
500 trpa[0] = xFLT * 0.5;
507 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
512 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
518 TVirtualMC::GetMC()->Gspos(
"FWZBU", 1,
"FLTB", xcoor, ycoorB, zcoorB, idrotm[3],
"ONLY");
519 TVirtualMC::GetMC()->Gspos(
"FWZBU", 2,
"FLTC", xcoor, ycoorB, -zcoorB, idrotm[2],
"ONLY");
524 trpa[2] = xFLT * 0.5;
525 trpa[3] = -beta * TMath::RadToDeg();
530 Matrix(idrotm[4],
alpha * TMath::RadToDeg(), 90., 90. +
alpha * TMath::RadToDeg(), 90., 90., 180.);
531 Matrix(idrotm[5], 180. -
alpha * TMath::RadToDeg(), 90., 90. -
alpha * TMath::RadToDeg(), 90., 90., 0.);
537 TVirtualMC::GetMC()->Gspos(
"FWZ2", 1,
"FLTA", xcoor, ycoor, zcoor, idrotm[4],
"ONLY");
538 TVirtualMC::GetMC()->Gspos(
"FWZ2", 2,
"FLTA", xcoor, ycoor, -zcoor, idrotm[5],
"ONLY");
543 trpa[2] = xFLT * 0.5;
544 trpa[3] = -beta * TMath::RadToDeg();
552 TVirtualMC::GetMC()->Gspos(
"FWZC", 1,
"FLTB", xcoor, ycoorB, zcoorB, idrotm[5],
"ONLY");
553 TVirtualMC::GetMC()->Gspos(
"FWZC", 2,
"FLTC", xcoor, ycoorB, -zcoorB, idrotm[4],
"ONLY");
559 alpha = TMath::ATan(tgal);
560 beta = (TMath::Pi() * 0.5 -
alpha) * 0.5;
561 tgbe = TMath::Tan(beta);
562 trpa[0] = xFLT * 0.5;
569 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
574 TMath::ATan(tgbe * 0.5) * TMath::RadToDeg();
580 TVirtualMC::GetMC()->Gspos(
"FWZ3", 1,
"FLTA", xcoor, ycoor, zcoor, idrotm[3],
"ONLY");
581 TVirtualMC::GetMC()->Gspos(
"FWZ3", 2,
"FLTA", xcoor, ycoor, -zcoor, idrotm[2],
"ONLY");
588 TVirtualMC::GetMC()->Gspos(
"FWZ3", 5,
"FLTB", xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
589 TVirtualMC::GetMC()->Gspos(
"FWZ3", 6,
"FLTC", xcoor, ycoor, -zcoor, idrotm[3],
"ONLY");
595 TVirtualMC::GetMC()->Gspos(
"FWZ3", 3,
"FLTA", xcoor, ycoor, zcoor, idrotm[1],
"ONLY");
596 TVirtualMC::GetMC()->Gspos(
"FWZ3", 4,
"FLTA", xcoor, ycoor, -zcoor, idrotm[0],
"ONLY");
603 TVirtualMC::GetMC()->Gspos(
"FWZ3", 7,
"FLTB", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
604 TVirtualMC::GetMC()->Gspos(
"FWZ3", 8,
"FLTC", xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
609 trpa[2] = xFLT * 0.5;
610 trpa[3] = -beta * TMath::RadToDeg();
615 Matrix(idrotm[6],
alpha * TMath::RadToDeg(), 90., 90. +
alpha * TMath::RadToDeg(), 90., 90., 180.);
616 Matrix(idrotm[7], 180. -
alpha * TMath::RadToDeg(), 90., 90. -
alpha * TMath::RadToDeg(), 90., 90., 0.);
621 TVirtualMC::GetMC()->Gspos(
"FWZ4", 1,
"FLTA", xcoor, ycoor, zcoor, idrotm[7],
"ONLY");
622 TVirtualMC::GetMC()->Gspos(
"FWZ4", 2,
"FLTA", xcoor, ycoor, -zcoor, idrotm[6],
"ONLY");
629 TVirtualMC::GetMC()->Gspos(
"FWZ4", 3,
"FLTB", xcoor, ycoor, zcoor, idrotm[6],
"ONLY");
630 TVirtualMC::GetMC()->Gspos(
"FWZ4", 4,
"FLTC", xcoor, ycoor, -zcoor, idrotm[7],
"ONLY");
634void Detector::makeStripsInModules(
Float_t ytof,
Float_t zlenA)
const
664 static_cast<Float_t>(WSTRIPZ * 0.5)};
665 TVirtualMC::GetMC()->Gsvolu(
"FSTR",
"BOX",
getMediumID(
kFre), parfp, 3);
667 Float_t posfp[3] = {0., 0., 0.};
676 posfp[1] = -HSTRIPY * 0.5 + parfp[1];
678 TVirtualMC::GetMC()->Gspos(
"FHON", 1,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
679 TVirtualMC::GetMC()->Gspos(
"FHON", 2,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
685 TVirtualMC::GetMC()->Gsvolu(
"FPC1",
"BOX",
getMediumID(
kG10), parfp, 3);
691 TVirtualMC::GetMC()->Gsvolu(
"FPC2",
"BOX",
getMediumID(
kG10), parfp, 3);
695 posfp[1] = -HSTRIPY * 0.5 +
Geo::HHONY + parfp[1];
697 TVirtualMC::GetMC()->Gspos(
"FPC1", 1,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
698 TVirtualMC::GetMC()->Gspos(
"FPC2", 1,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
704 TVirtualMC::GetMC()->Gsvolu(
"FPCB",
"BOX",
getMediumID(
kG10), parfp, 3);
705 gGeoManager->GetVolume(
"FPCB")->VisibleDaughters(kFALSE);
708 TVirtualMC::GetMC()->Gspos(
"FPCB", 1,
"FSTR", 0., 0., 0., 0,
"ONLY");
712 static_cast<Float_t>(WSENSMZ * 0.5)};
713 TVirtualMC::GetMC()->Gsvolu(
"FSEN",
"BOX",
getMediumID(
kCuS), parfs, 3);
721 TVirtualMC::GetMC()->Gsdvn(
"FSEZ",
"FSEN",
Geo::NPADZ, 3);
722 TVirtualMC::GetMC()->Gsdvn(
"FPAD",
"FSEZ",
Geo::NPADX, 1);
724 TVirtualMC::GetMC()->Gspos(
"FSEN", 1,
"FPCB", 0., 0., 0., 0,
"ONLY");
735 TVirtualMC::GetMC()->Gspos(
"FRGL", 1,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
736 TVirtualMC::GetMC()->Gspos(
"FRGL", 4,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
740 TVirtualMC::GetMC()->Gspos(
"FRGL", 2,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
741 TVirtualMC::GetMC()->Gspos(
"FRGL", 3,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
752 TVirtualMC::GetMC()->Gspos(
"FGLF", 1,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
753 TVirtualMC::GetMC()->Gspos(
"FGLF", 2,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
763 Int_t totalStrip = 0;
765 for (Int_t iplate = 0; iplate <
Geo::NPLATES; iplate++) {
767 totalStrip += maxStripNumbers[iplate - 1];
769 for (Int_t istrip = 0; istrip < maxStripNumbers[iplate]; istrip++) {
773 Matrix(idrotm[istrip + totalStrip], 90., 0., 90. + ang, 90., ang, 90.);
774 }
else if (ang == 0.) {
775 Matrix(idrotm[istrip + totalStrip], 90., 0., 90., 90., 0., 0.);
776 }
else if (ang < 0.) {
777 Matrix(idrotm[istrip + totalStrip], 90., 0., 90. + ang, 90., -ang, 270.);
783 TVirtualMC::GetMC()->Gspos(
"FSTR", istrip + totalStrip + 1,
"FLTA", xpos, ypos, -zpos,
784 idrotm[istrip + totalStrip],
"ONLY");
787 if (istrip + totalStrip + 1 > 53) {
788 TVirtualMC::GetMC()->Gspos(
789 "FSTR", istrip + totalStrip + 1,
"FLTC", xpos, ypos,
791 idrotm[istrip + totalStrip],
"ONLY");
793 if (istrip + totalStrip + 1 < 39) {
794 TVirtualMC::GetMC()->Gspos(
795 "FSTR", istrip + totalStrip + 1,
"FLTB", xpos, ypos,
797 idrotm[istrip + totalStrip],
"ONLY");
804void Detector::createModuleCovers(
Float_t xtof,
Float_t zlenA)
const
817 par[0] = xtof * 0.5 + 2.;
819 par[2] = zlenA * 0.5 + 2.;
820 TVirtualMC::GetMC()->Gsvolu(
"FPEA",
"BOX ",
getMediumID(
kAir), par, 3);
822 TVirtualMC::GetMC()->Gsvolu(
"FPEB",
"BOX ",
getMediumID(
kAir), par, 3);
825 constexpr Float_t ALCOVERTHICKNESS = 1.5;
826 constexpr Float_t INTERFACECARDTHICKNESS = 0.16;
827 constexpr Float_t ALSKINTHICKNESS = 0.1;
828 constexpr Float_t PLASTICFLATCABLETHICKNESS = 0.25;
829 constexpr Float_t COPPERFLATCABLETHICKNESS = 0.01;
832 par[1] = ALCOVERTHICKNESS * 0.5;
842 TVirtualMC::GetMC()->Gspos(
"FALT", 0,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
844 TVirtualMC::GetMC()->Gspos(
"FALB", 0,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
854 TVirtualMC::GetMC()->Gspos(
"FPE1", 0,
"FALT", xcoor, ycoor, zcoor, 0,
"ONLY");
858 par[1] = ALCOVERTHICKNESS * 0.5 - ALSKINTHICKNESS;
864 TVirtualMC::GetMC()->Gspos(
"FPE4", 0,
"FALB", xcoor, ycoor, zcoor, 0,
"ONLY");
874 TVirtualMC::GetMC()->Gspos(
"FPE2", 1,
"FALT", xcoor, ycoor, zcoor, 0,
"ONLY");
875 TVirtualMC::GetMC()->Gspos(
"FPE2", 2,
"FALT", xcoor, ycoor, -zcoor, 0,
"ONLY");
881 TVirtualMC::GetMC()->Gspos(
"FPE2", 1,
"FALB", xcoor, ycoor, zcoor, 0,
"ONLY");
882 TVirtualMC::GetMC()->Gspos(
"FPE2", 2,
"FALB", xcoor, ycoor, -zcoor, 0,
"ONLY");
892 TVirtualMC::GetMC()->Gspos(
"FPE3", 1,
"FALT", xcoor, ycoor, zcoor, 0,
"ONLY");
893 TVirtualMC::GetMC()->Gspos(
"FPE3", 2,
"FALT", xcoor, ycoor, -zcoor, 0,
"ONLY");
899 TVirtualMC::GetMC()->Gspos(
"FPE3", 1,
"FALB", xcoor, ycoor, zcoor, 0,
"ONLY");
900 TVirtualMC::GetMC()->Gspos(
"FPE3", 2,
"FALB", xcoor, ycoor, -zcoor, 0,
"ONLY");
905 par[1] = INTERFACECARDTHICKNESS * 0.5;
907 TVirtualMC::GetMC()->Gsvolu(
"FIF1",
"BOX ",
getMediumID(
kG10), par, 3);
909 ycoor = ALCOVERTHICKNESS * 0.5 + INTERFACECARDTHICKNESS * 0.5;
911 TVirtualMC::GetMC()->Gspos(
"FIF1", 0,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
916 TVirtualMC::GetMC()->Gsvolu(
"FIF2",
"BOX ",
getMediumID(
kG10), par, 3);
920 TVirtualMC::GetMC()->Gspos(
"FIF2", 1,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
921 TVirtualMC::GetMC()->Gspos(
"FIF2", 2,
"FPEA", xcoor, ycoor, -zcoor, 0,
"ONLY");
923 TVirtualMC::GetMC()->Gspos(
"FIF2", 1,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
924 TVirtualMC::GetMC()->Gspos(
"FIF2", 2,
"FPEB", xcoor, ycoor, -zcoor, 0,
"ONLY");
930 TVirtualMC::GetMC()->Gsvolu(
"FIF3",
"BOX ",
getMediumID(
kG10), par, 3);
934 TVirtualMC::GetMC()->Gspos(
"FIF3", 1,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
935 TVirtualMC::GetMC()->Gspos(
"FIF3", 2,
"FPEA", xcoor, ycoor, -zcoor, 0,
"ONLY");
937 TVirtualMC::GetMC()->Gspos(
"FIF3", 1,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
938 TVirtualMC::GetMC()->Gspos(
"FIF3", 2,
"FPEB", xcoor, ycoor, -zcoor, 0,
"ONLY");
944 par[1] = PLASTICFLATCABLETHICKNESS * 0.5;
948 ycoor = -ALCOVERTHICKNESS * 0.5 - PLASTICFLATCABLETHICKNESS * 0.5;
950 TVirtualMC::GetMC()->Gspos(
"FFC1", 0,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
959 TVirtualMC::GetMC()->Gspos(
"FFC2", 1,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
960 TVirtualMC::GetMC()->Gspos(
"FFC2", 2,
"FPEA", xcoor, ycoor, -zcoor, 0,
"ONLY");
962 TVirtualMC::GetMC()->Gspos(
"FFC2", 1,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
963 TVirtualMC::GetMC()->Gspos(
"FFC2", 2,
"FPEB", xcoor, ycoor, -zcoor, 0,
"ONLY");
973 TVirtualMC::GetMC()->Gspos(
"FFC3", 1,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
974 TVirtualMC::GetMC()->Gspos(
"FFC3", 2,
"FPEA", xcoor, ycoor, -zcoor, 0,
"ONLY");
976 TVirtualMC::GetMC()->Gspos(
"FFC3", 1,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
977 TVirtualMC::GetMC()->Gspos(
"FFC3", 2,
"FPEB", xcoor, ycoor, -zcoor, 0,
"ONLY");
982 par[1] = COPPERFLATCABLETHICKNESS * 0.5;
985 TVirtualMC::GetMC()->Gspos(
"FCC1", 0,
"FFC1", 0., 0., 0., 0,
"ONLY");
991 TVirtualMC::GetMC()->Gspos(
"FCC2", 0,
"FFC2", 0., 0., 0., 0,
"ONLY");
997 TVirtualMC::GetMC()->Gspos(
"FCC3", 0,
"FFC3", 0., 0., 0., 0,
"ONLY");
1011 Int_t idrotm[1] = {0};
1016 par[0] = xtof * 0.5;
1018 par[2] = zlenA * 0.5;
1019 TVirtualMC::GetMC()->Gsvolu(
"FAIA",
"BOX ",
getMediumID(
kAir), par, 3);
1021 TVirtualMC::GetMC()->Gsvolu(
"FAIB",
"BOX ",
getMediumID(
kAir), par, 3);
1023 TVirtualMC::GetMC()->Gsvolu(
"FAIC",
"BOX ",
getMediumID(
kAir), par, 3);
1034 TVirtualMC::GetMC()->Gsvolu(
"FCA1",
"BOX ",
getMediumID(
kAir), carpar, 3);
1035 TVirtualMC::GetMC()->Gsvolu(
"FCA2",
"BOX ",
getMediumID(
kAir), carpar, 3);
1038 Matrix(idrotm[0], 90., 180., 90., 90., 180., 0.);
1042 Float_t rowgap[5] = {13.5, 22.9, 16.94, 23.8, 20.4};
1043 Int_t rowb[5] = {6, 7, 6, 19, 7};
1045 TVirtualMC::GetMC()->Gspos(
"FCA1", 91,
"FAIA", carpos[0], carpos[1], carpos[2], 0,
"MANY");
1046 TVirtualMC::GetMC()->Gspos(
"FCA2", 91,
"FAIC", carpos[0], carpos[1], carpos[2], 0,
"MANY");
1050 for (Int_t sg = -1; sg < 2; sg += 2) {
1051 carpos[2] = sg * zlenA * 0.5 - 0.8;
1052 for (Int_t nb = 0; nb < 5; ++nb) {
1053 carpos[2] = carpos[2] - sg * (rowgap[nb] - rowstep);
1054 nrow =
row + rowb[nb];
1055 for (;
row < nrow; ++
row) {
1056 carpos[2] -= sg * rowstep;
1059 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIA", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1060 TVirtualMC::GetMC()->Gspos(
"FCA2",
row,
"FAIC", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1065 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIA", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1066 TVirtualMC::GetMC()->Gspos(
"FCA2",
row,
"FAIC", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1069 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIA", carpos[0], carpos[1], carpos[2], idrotm[0],
"ONLY");
1070 TVirtualMC::GetMC()->Gspos(
"FCA2",
row,
"FAIC", carpos[0], carpos[1], carpos[2], idrotm[0],
"ONLY");
1080 for (Int_t sg = -1; sg < 2; sg += 2) {
1081 carpos[2] = sg * zlenA * 0.5 - 0.8;
1082 for (Int_t nb = 0; nb < 4; ++nb) {
1083 carpos[2] = carpos[2] - sg * (rowgap[nb] - rowstep);
1084 nrow =
row + rowb[nb];
1085 for (;
row < nrow; ++
row) {
1086 carpos[2] -= sg * rowstep;
1090 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIB", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1093 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIB", carpos[0], carpos[1], carpos[2], idrotm[0],
"ONLY");
1102void Detector::makeFrontEndElectronics(
Float_t xtof)
const
1110 TVirtualMC::GetMC()->Gsvolu(
"FFEA",
"BOX ",
getMediumID(
kG10), feaParam, 3);
1122 Float_t xCoor = xtof * 0.5 - 25.;
1123 Float_t yCoor = -carpar[1] + feaParam[1];
1124 Float_t zCoor = -carpar[2] + (2. * feaRoof1[2] - 2. * al1[2] - feaParam[2]);
1125 TVirtualMC::GetMC()->Gspos(
"FFEA", 1,
"FCA1", -xCoor, yCoor, zCoor, 0,
"ONLY");
1126 TVirtualMC::GetMC()->Gspos(
"FFEA", 4,
"FCA1", xCoor, yCoor, zCoor, 0,
"ONLY");
1127 TVirtualMC::GetMC()->Gspos(
"FFEA", 1,
"FCA2", -xCoor, yCoor, zCoor, 0,
"ONLY");
1128 TVirtualMC::GetMC()->Gspos(
"FFEA", 4,
"FCA2", xCoor, yCoor, zCoor, 0,
"ONLY");
1130 TVirtualMC::GetMC()->Gspos(
"FFEA", 2,
"FCA1", -xCoor, yCoor, zCoor, 0,
"ONLY");
1131 TVirtualMC::GetMC()->Gspos(
"FFEA", 3,
"FCA1", xCoor, yCoor, zCoor, 0,
"ONLY");
1132 TVirtualMC::GetMC()->Gspos(
"FFEA", 2,
"FCA2", -xCoor, yCoor, zCoor, 0,
"ONLY");
1133 TVirtualMC::GetMC()->Gspos(
"FFEA", 3,
"FCA2", xCoor, yCoor, zCoor, 0,
"ONLY");
1136void Detector::makeFEACooling(
Float_t xtof)
const
1157 TVirtualMC::GetMC()->Gsvolu(
"FREE",
"BOX ",
getMediumID(
kAir), airHole, 3);
1158 TVirtualMC::GetMC()->Gspos(
"FREE", 1,
"FRO1", 0., feaRoof1[1] - airHole[1], 0., 0,
"ONLY");
1159 gGeoManager->GetVolume(
"FRO1")->VisibleDaughters(kFALSE);
1180 Float_t xcoor = xtof * 0.5 - 25.;
1182 Float_t zcoor = -carpar[2] + 2. * feaRoof1[2] - al1[2];
1183 TVirtualMC::GetMC()->Gspos(
"FAL1", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1184 TVirtualMC::GetMC()->Gspos(
"FAL1", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1185 TVirtualMC::GetMC()->Gspos(
"FAL1", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1186 TVirtualMC::GetMC()->Gspos(
"FAL1", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1188 TVirtualMC::GetMC()->Gspos(
"FAL1", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1189 TVirtualMC::GetMC()->Gspos(
"FAL1", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1190 TVirtualMC::GetMC()->Gspos(
"FAL1", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1191 TVirtualMC::GetMC()->Gspos(
"FAL1", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1194 xcoor = xtof * 0.5 - 25.;
1196 zcoor = -carpar[2] + feaRoof1[2];
1197 TVirtualMC::GetMC()->Gspos(
"FRO1", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"MANY");
1198 TVirtualMC::GetMC()->Gspos(
"FRO1", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"MANY");
1199 TVirtualMC::GetMC()->Gspos(
"FRO1", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1200 TVirtualMC::GetMC()->Gspos(
"FRO1", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1202 TVirtualMC::GetMC()->Gspos(
"FRO1", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"MANY");
1203 TVirtualMC::GetMC()->Gspos(
"FRO1", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"MANY");
1204 TVirtualMC::GetMC()->Gspos(
"FRO1", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1205 TVirtualMC::GetMC()->Gspos(
"FRO1", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1208 xcoor = xtof * 0.5 - 25.;
1210 zcoor = -carpar[2] + bar[2];
1211 TVirtualMC::GetMC()->Gspos(
"FBAR", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1212 TVirtualMC::GetMC()->Gspos(
"FBAR", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1213 TVirtualMC::GetMC()->Gspos(
"FBAR", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1214 TVirtualMC::GetMC()->Gspos(
"FBAR", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1216 TVirtualMC::GetMC()->Gspos(
"FBAR", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1217 TVirtualMC::GetMC()->Gspos(
"FBAR", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1218 TVirtualMC::GetMC()->Gspos(
"FBAR", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1219 TVirtualMC::GetMC()->Gspos(
"FBAR", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1223 xcoor = xtof * 0.5 - 25.;
1225 zcoor = -carpar[2] + 2. * bar[2] + 2. * tubepar[1] + bar1[2];
1226 TVirtualMC::GetMC()->Gspos(
"FBA1", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1227 TVirtualMC::GetMC()->Gspos(
"FBA1", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1228 TVirtualMC::GetMC()->Gspos(
"FBA1", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1229 TVirtualMC::GetMC()->Gspos(
"FBA1", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1231 TVirtualMC::GetMC()->Gspos(
"FBA1", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1232 TVirtualMC::GetMC()->Gspos(
"FBA1", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1233 TVirtualMC::GetMC()->Gspos(
"FBA1", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1234 TVirtualMC::GetMC()->Gspos(
"FBA1", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1237 xcoor = xtof * 0.5 - 25.;
1239 zcoor = -carpar[2] + 2. * bar[2] + bar2[2];
1240 TVirtualMC::GetMC()->Gspos(
"FBA2", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1241 TVirtualMC::GetMC()->Gspos(
"FBA2", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1242 TVirtualMC::GetMC()->Gspos(
"FBA2", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1243 TVirtualMC::GetMC()->Gspos(
"FBA2", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1245 TVirtualMC::GetMC()->Gspos(
"FBA2", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1246 TVirtualMC::GetMC()->Gspos(
"FBA2", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1247 TVirtualMC::GetMC()->Gspos(
"FBA2", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1248 TVirtualMC::GetMC()->Gspos(
"FBA2", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1250 xcoor = xtof * 0.5 - 25.;
1251 ycoor = carpar[1] - 2. *
Geo::ROOF2PARAMETERS[1] * 0.5 - 2. * feaRoof1[1] - 2. * bar2[1] - 2. * tubepar[1] - bar2[1];
1252 zcoor = -carpar[2] + 2. * bar[2] + bar2[2];
1253 TVirtualMC::GetMC()->Gspos(
"FBA2", 5,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1254 TVirtualMC::GetMC()->Gspos(
"FBA2", 8,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1255 TVirtualMC::GetMC()->Gspos(
"FBA2", 5,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1256 TVirtualMC::GetMC()->Gspos(
"FBA2", 8,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1258 TVirtualMC::GetMC()->Gspos(
"FBA2", 6,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1259 TVirtualMC::GetMC()->Gspos(
"FBA2", 7,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1260 TVirtualMC::GetMC()->Gspos(
"FBA2", 6,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1261 TVirtualMC::GetMC()->Gspos(
"FBA2", 7,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1264void Detector::makeNinoMask(
Float_t xtof)
const
1292 Float_t xcoor = xtof * 0.5 - 25.;
1293 Float_t ycoor = carpar[1] - 2. * al3[1];
1294 Float_t zcoor = carpar[2] - 2. * al3[2] - al2[2];
1295 TVirtualMC::GetMC()->Gspos(
"FAL2", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1296 TVirtualMC::GetMC()->Gspos(
"FAL2", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1298 TVirtualMC::GetMC()->Gspos(
"FAL2", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1299 TVirtualMC::GetMC()->Gspos(
"FAL2", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1302 xcoor = xtof * 0.5 - 25.;
1303 ycoor = carpar[1] - al3[1];
1304 zcoor = carpar[2] - al3[2];
1305 TVirtualMC::GetMC()->Gspos(
"FAL3", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1306 TVirtualMC::GetMC()->Gspos(
"FAL3", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1308 TVirtualMC::GetMC()->Gspos(
"FAL3", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1309 TVirtualMC::GetMC()->Gspos(
"FAL3", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1312 xcoor = xtof * 0.5 - 25.;
1315 TVirtualMC::GetMC()->Gspos(
"FRO2", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1316 TVirtualMC::GetMC()->Gspos(
"FRO2", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1318 TVirtualMC::GetMC()->Gspos(
"FRO2", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1319 TVirtualMC::GetMC()->Gspos(
"FRO2", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1330 Int_t idrotm[1] = {0};
1337 Float_t tubeparW[3] = {0., 0.3, tubepar[2]};
1341 TVirtualMC::GetMC()->Gspos(
"FITU", 1,
"FTUB", 0., 0., 0., 0,
"ONLY");
1344 Float_t trapar[3] = {tubepar[2], 6.175 , 0.7};
1348 Matrix(idrotm[0], 180., 90., 90., 90., 90., 0.);
1366 Float_t zcoor = -carpar[2] + 2. * bar[2] + tubepar[1];
1367 TVirtualMC::GetMC()->Gspos(
"FTUB", 1,
"FCA1", 0., ycoor, zcoor, idrotm[0],
"ONLY");
1368 TVirtualMC::GetMC()->Gspos(
"FTUB", 1,
"FCA2", 0., ycoor, zcoor, idrotm[0],
"ONLY");
1369 gGeoManager->GetVolume(
"FTUB")->VisibleDaughters(kFALSE);
1372 for (Int_t sg = -1; sg < 2; sg += 2) {
1374 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 4 * sg,
"FAIA", 0., yFLTN, 369.9 * sg, 0,
"MANY");
1375 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 3 * sg,
"FAIA", 0., yFLTN, 366.9 * sg, 0,
"MANY");
1376 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 2 * sg,
"FAIA", 0., yFLTN, 198.8 * sg, 0,
"MANY");
1377 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + sg,
"FAIA", 0., yFLTN, 56.82 * sg, 0,
"MANY");
1378 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 4 * sg,
"FAIC", 0., yFLTN, 369.9 * sg, 0,
"MANY");
1379 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 3 * sg,
"FAIC", 0., yFLTN, 366.9 * sg, 0,
"MANY");
1380 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 2 * sg,
"FAIC", 0., yFLTN, 198.8 * sg, 0,
"MANY");
1381 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + sg,
"FAIC", 0., yFLTN, 56.82 * sg, 0,
"MANY");
1385 Float_t lonpar1[3] = {2., 0.5,
static_cast<Float_t>(56.82 - trapar[2])};
1386 Float_t lonpar2[3] = {lonpar1[0], lonpar1[1],
static_cast<Float_t>((198.8 - 56.82) * 0.5 - trapar[2])};
1387 Float_t lonpar3[3] = {lonpar1[0], lonpar1[1],
static_cast<Float_t>((366.9 - 198.8) * 0.5 - trapar[2])};
1393 ycoor = ytub + (tubepar[1] + 2. * bar2[1] + lonpar1[1]);
1394 TVirtualMC::GetMC()->Gspos(
"FLO1", 4,
"FAIA", -24., ycoor, 0., 0,
"MANY");
1395 TVirtualMC::GetMC()->Gspos(
"FLO1", 2,
"FAIA", 24., ycoor, 0., 0,
"MANY");
1396 TVirtualMC::GetMC()->Gspos(
"FLO1", 4,
"FAIC", -24., ycoor, 0., 0,
"MANY");
1397 TVirtualMC::GetMC()->Gspos(
"FLO1", 2,
"FAIC", 24., ycoor, 0., 0,
"MANY");
1399 zcoor = (198.8 + 56.82) * 0.5;
1400 TVirtualMC::GetMC()->Gspos(
"FLO2", 4,
"FAIA", -24., ycoor, -zcoor, 0,
"MANY");
1401 TVirtualMC::GetMC()->Gspos(
"FLO2", 2,
"FAIA", 24., ycoor, -zcoor, 0,
"MANY");
1402 TVirtualMC::GetMC()->Gspos(
"FLO2", 4,
"FAIC", -24., ycoor, -zcoor, 0,
"MANY");
1403 TVirtualMC::GetMC()->Gspos(
"FLO2", 2,
"FAIC", 24., ycoor, -zcoor, 0,
"MANY");
1404 TVirtualMC::GetMC()->Gspos(
"FLO2", 8,
"FAIA", -24., ycoor, zcoor, 0,
"MANY");
1405 TVirtualMC::GetMC()->Gspos(
"FLO2", 6,
"FAIA", 24., ycoor, zcoor, 0,
"MANY");
1406 TVirtualMC::GetMC()->Gspos(
"FLO2", 8,
"FAIC", -24., ycoor, zcoor, 0,
"MANY");
1407 TVirtualMC::GetMC()->Gspos(
"FLO2", 6,
"FAIC", 24., ycoor, zcoor, 0,
"MANY");
1409 zcoor = (366.9 + 198.8) * 0.5;
1410 TVirtualMC::GetMC()->Gspos(
"FLO3", 4,
"FAIA", -24., ycoor, -zcoor, 0,
"MANY");
1411 TVirtualMC::GetMC()->Gspos(
"FLO3", 2,
"FAIA", 24., ycoor, -zcoor, 0,
"MANY");
1412 TVirtualMC::GetMC()->Gspos(
"FLO3", 4,
"FAIC", -24., ycoor, -zcoor, 0,
"MANY");
1413 TVirtualMC::GetMC()->Gspos(
"FLO3", 2,
"FAIC", 24., ycoor, -zcoor, 0,
"MANY");
1414 TVirtualMC::GetMC()->Gspos(
"FLO3", 8,
"FAIA", -24., ycoor, zcoor, 0,
"MANY");
1415 TVirtualMC::GetMC()->Gspos(
"FLO3", 6,
"FAIA", 24., ycoor, zcoor, 0,
"MANY");
1416 TVirtualMC::GetMC()->Gspos(
"FLO3", 8,
"FAIC", -24., ycoor, zcoor, 0,
"MANY");
1417 TVirtualMC::GetMC()->Gspos(
"FLO3", 6,
"FAIC", 24., ycoor, zcoor, 0,
"MANY");
1419 ycoor = ytub - (tubepar[1] + 2. * bar2[1] + lonpar1[1]);
1420 TVirtualMC::GetMC()->Gspos(
"FLO1", 3,
"FAIA", -24., ycoor, 0., 0,
"MANY");
1421 TVirtualMC::GetMC()->Gspos(
"FLO1", 1,
"FAIA", 24., ycoor, 0., 0,
"MANY");
1422 TVirtualMC::GetMC()->Gspos(
"FLO1", 3,
"FAIC", -24., ycoor, 0., 0,
"MANY");
1423 TVirtualMC::GetMC()->Gspos(
"FLO1", 1,
"FAIC", 24., ycoor, 0., 0,
"MANY");
1425 zcoor = (198.8 + 56.82) * 0.5;
1426 TVirtualMC::GetMC()->Gspos(
"FLO2", 3,
"FAIA", -24., ycoor, -zcoor, 0,
"MANY");
1427 TVirtualMC::GetMC()->Gspos(
"FLO2", 1,
"FAIA", 24., ycoor, -zcoor, 0,
"MANY");
1428 TVirtualMC::GetMC()->Gspos(
"FLO2", 3,
"FAIC", -24., ycoor, -zcoor, 0,
"MANY");
1429 TVirtualMC::GetMC()->Gspos(
"FLO2", 1,
"FAIC", 24., ycoor, -zcoor, 0,
"MANY");
1430 TVirtualMC::GetMC()->Gspos(
"FLO2", 7,
"FAIA", -24., ycoor, zcoor, 0,
"MANY");
1431 TVirtualMC::GetMC()->Gspos(
"FLO2", 5,
"FAIA", 24., ycoor, zcoor, 0,
"MANY");
1432 TVirtualMC::GetMC()->Gspos(
"FLO2", 7,
"FAIC", -24., ycoor, zcoor, 0,
"MANY");
1433 TVirtualMC::GetMC()->Gspos(
"FLO2", 5,
"FAIC", 24., ycoor, zcoor, 0,
"MANY");
1435 zcoor = (366.9 + 198.8) * 0.5;
1436 TVirtualMC::GetMC()->Gspos(
"FLO3", 3,
"FAIA", -24., ycoor, -zcoor, 0,
"MANY");
1437 TVirtualMC::GetMC()->Gspos(
"FLO3", 1,
"FAIA", 24., ycoor, -zcoor, 0,
"MANY");
1438 TVirtualMC::GetMC()->Gspos(
"FLO3", 3,
"FAIC", -24., ycoor, -zcoor, 0,
"MANY");
1439 TVirtualMC::GetMC()->Gspos(
"FLO3", 1,
"FAIC", 24., ycoor, -zcoor, 0,
"MANY");
1440 TVirtualMC::GetMC()->Gspos(
"FLO3", 7,
"FAIA", -24., ycoor, zcoor, 0,
"MANY");
1441 TVirtualMC::GetMC()->Gspos(
"FLO3", 5,
"FAIA", 24., ycoor, zcoor, 0,
"MANY");
1442 TVirtualMC::GetMC()->Gspos(
"FLO3", 7,
"FAIC", -24., ycoor, zcoor, 0,
"MANY");
1443 TVirtualMC::GetMC()->Gspos(
"FLO3", 5,
"FAIC", 24., ycoor, zcoor, 0,
"MANY");
1448 for (Int_t sg = -1; sg < 2; sg += 2) {
1449 carpos[2] = sg * zlenA * 0.5;
1450 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 4 * sg,
"FAIB", 0., yFLTN, 369.9 * sg, 0,
"MANY");
1451 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 3 * sg,
"FAIB", 0., yFLTN, 366.9 * sg, 0,
"MANY");
1452 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 2 * sg,
"FAIB", 0., yFLTN, 198.8 * sg, 0,
"MANY");
1453 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + sg,
"FAIB", 0., yFLTN, 56.82 * sg, 0,
"MANY");
1456 ycoor = ytub + (tubepar[1] + 2. * bar2[1] + lonpar1[1]);
1457 zcoor = (198.8 + 56.82) * 0.5;
1458 TVirtualMC::GetMC()->Gspos(
"FLO2", 2,
"FAIB", -24., ycoor, -zcoor, 0,
"MANY");
1459 TVirtualMC::GetMC()->Gspos(
"FLO2", 1,
"FAIB", -24., ycoor, zcoor, 0,
"MANY");
1460 zcoor = (366.9 + 198.8) * 0.5;
1461 TVirtualMC::GetMC()->Gspos(
"FLO3", 2,
"FAIB", -24., ycoor, -zcoor, 0,
"MANY");
1462 TVirtualMC::GetMC()->Gspos(
"FLO3", 1,
"FAIB", -24., ycoor, zcoor, 0,
"MANY");
1463 ycoor = ytub - (tubepar[1] + 2. * bar2[1] + lonpar1[1]);
1464 zcoor = (198.8 + 56.82) * 0.5;
1465 TVirtualMC::GetMC()->Gspos(
"FLO2", 4,
"FAIB", 24., ycoor, -zcoor, 0,
"MANY");
1466 TVirtualMC::GetMC()->Gspos(
"FLO2", 3,
"FAIB", 24., ycoor, zcoor, 0,
"MANY");
1467 zcoor = (366.9 + 198.8) * 0.5;
1468 TVirtualMC::GetMC()->Gspos(
"FLO3", 4,
"FAIB", 24., ycoor, -zcoor, 0,
"MANY");
1469 TVirtualMC::GetMC()->Gspos(
"FLO3", 3,
"FAIB", 24., ycoor, zcoor, 0,
"MANY");
1483 zcoor = -carpar[2] + barS[2];
1484 TVirtualMC::GetMC()->Gspos(
"FBAS", 1,
"FCA1", -24., ycoor, zcoor, 0,
"ONLY");
1485 TVirtualMC::GetMC()->Gspos(
"FBAS", 2,
"FCA1", 24., ycoor, zcoor, 0,
"ONLY");
1486 TVirtualMC::GetMC()->Gspos(
"FBAS", 1,
"FCA2", -24., ycoor, zcoor, 0,
"ONLY");
1487 TVirtualMC::GetMC()->Gspos(
"FBAS", 2,
"FCA2", 24., ycoor, zcoor, 0,
"ONLY");
1489 zcoor = -carpar[2] + 2. * barS[2] + 2. * tubepar[1] + barS1[2];
1490 TVirtualMC::GetMC()->Gspos(
"FBS1", 1,
"FCA1", -24., ycoor, zcoor, 0,
"ONLY");
1491 TVirtualMC::GetMC()->Gspos(
"FBS1", 2,
"FCA1", 24., ycoor, zcoor, 0,
"ONLY");
1492 TVirtualMC::GetMC()->Gspos(
"FBS1", 1,
"FCA2", -24., ycoor, zcoor, 0,
"ONLY");
1493 TVirtualMC::GetMC()->Gspos(
"FBS1", 2,
"FCA2", 24., ycoor, zcoor, 0,
"ONLY");
1495 ycoor = ytubBis + (tubepar[1] + barS2[1]);
1496 zcoor = -carpar[2] + 2. * barS[2] + barS2[2];
1497 TVirtualMC::GetMC()->Gspos(
"FBS2", 1,
"FCA1", -24., ycoor, zcoor, 0,
"ONLY");
1498 TVirtualMC::GetMC()->Gspos(
"FBS2", 2,
"FCA1", 24., ycoor, zcoor, 0,
"ONLY");
1499 TVirtualMC::GetMC()->Gspos(
"FBS2", 1,
"FCA2", -24., ycoor, zcoor, 0,
"ONLY");
1500 TVirtualMC::GetMC()->Gspos(
"FBS2", 2,
"FCA2", 24., ycoor, zcoor, 0,
"ONLY");
1502 ycoor = ytubBis - (tubepar[1] + barS2[1]);
1504 TVirtualMC::GetMC()->Gspos(
"FBS2", 3,
"FCA1", -24., ycoor, zcoor, 0,
"ONLY");
1505 TVirtualMC::GetMC()->Gspos(
"FBS2", 4,
"FCA1", 24., ycoor, zcoor, 0,
"ONLY");
1506 TVirtualMC::GetMC()->Gspos(
"FBS2", 3,
"FCA2", -24., ycoor, zcoor, 0,
"ONLY");
1507 TVirtualMC::GetMC()->Gspos(
"FBS2", 4,
"FCA2", 24., ycoor, zcoor, 0,
"ONLY");
1519 Int_t idrotm[3] = {0, 0, 0};
1533 Float_t cbparS[3] = {cbpar[0], cbpar[1],
1539 Matrix(idrotm[0], 180., 90., 90., 90., 90., 0.);
1552 Float_t zcoor = -carpar[2] + (2. * feaRoof1[2] - 2. * al1[2] - 2. * feaParam[2] - cbpar[1]);
1553 TVirtualMC::GetMC()->Gspos(
"FCAB", 1,
"FCA1", -xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1554 TVirtualMC::GetMC()->Gspos(
"FCAB", 2,
"FCA1", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1555 TVirtualMC::GetMC()->Gspos(
"FCAB", 1,
"FCA2", -xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1556 TVirtualMC::GetMC()->Gspos(
"FCAB", 2,
"FCA2", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1558 ycoor -= 2. * cbpar[1];
1559 TVirtualMC::GetMC()->Gspos(
"FCAL", 1,
"FCA1", -xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1560 TVirtualMC::GetMC()->Gspos(
"FCAL", 2,
"FCA1", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1561 TVirtualMC::GetMC()->Gspos(
"FCAL", 1,
"FCA2", -xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1562 TVirtualMC::GetMC()->Gspos(
"FCAL", 2,
"FCA2", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1579 cblpar[3] = kCBLl * 0.5;
1582 cblpar[6] = TMath::ATan(tgal) * TMath::RadToDeg();
1583 cblpar[7] = kCBLl * 0.5;
1586 cblpar[10] = cblpar[6];
1593 Matrix(idrotm[1], 90., 90., 180., 0., 90., 180.);
1594 Matrix(idrotm[2], 90., 90., 0., 0., 90., 0.);
1597 xcoor = (xtof -
Geo::CBLW) * 0.5 - 2. * sawpar[0];
1599 zcoor = kCBLl * 0.5;
1600 TVirtualMC::GetMC()->Gspos(
"FCBL", 1,
"FAIA", -xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1601 TVirtualMC::GetMC()->Gspos(
"FCBL", 2,
"FAIA", xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1602 TVirtualMC::GetMC()->Gspos(
"FCBL", 3,
"FAIA", -xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1603 TVirtualMC::GetMC()->Gspos(
"FCBL", 4,
"FAIA", xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1604 TVirtualMC::GetMC()->Gspos(
"FCBL", 1,
"FAIC", -xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1605 TVirtualMC::GetMC()->Gspos(
"FCBL", 2,
"FAIC", xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1606 TVirtualMC::GetMC()->Gspos(
"FCBL", 3,
"FAIC", -xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1607 TVirtualMC::GetMC()->Gspos(
"FCBL", 4,
"FAIC", xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1610 cblpar[3] = kCBLlh * 0.5;
1611 cblpar[5] =
Geo::CBLH1 * 0.5 + kCBLlh * tgal;
1612 cblpar[7] = kCBLlh * 0.5;
1613 cblpar[9] = cblpar[5];
1616 xcoor = (xtof -
Geo::CBLW) * 0.5 - 2. * sawpar[0];
1618 zcoor = kCBLl - kCBLlh * 0.5;
1619 TVirtualMC::GetMC()->Gspos(
"FCBB", 1,
"FAIB", -xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1620 TVirtualMC::GetMC()->Gspos(
"FCBB", 2,
"FAIB", xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1621 TVirtualMC::GetMC()->Gspos(
"FCBB", 3,
"FAIB", -xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1622 TVirtualMC::GetMC()->Gspos(
"FCBB", 4,
"FAIB", xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1626 xcoor = xtof * 0.5 - sawpar[0];
1629 TVirtualMC::GetMC()->Gspos(
"FSAW", 1,
"FAIA", -xcoor, ycoor, zcoor, 0,
"ONLY");
1630 TVirtualMC::GetMC()->Gspos(
"FSAW", 2,
"FAIA", xcoor, ycoor, zcoor, 0,
"ONLY");
1631 TVirtualMC::GetMC()->Gspos(
"FSAW", 1,
"FAIC", -xcoor, ycoor, zcoor, 0,
"ONLY");
1632 TVirtualMC::GetMC()->Gspos(
"FSAW", 2,
"FAIC", xcoor, ycoor, zcoor, 0,
"ONLY");
1635 xcoor = xtof * 0.5 - sawpar[0];
1637 TVirtualMC::GetMC()->Gspos(
"FSAW", 1,
"FAIB", -xcoor, ycoor, 0., 0,
"ONLY");
1638 TVirtualMC::GetMC()->Gspos(
"FSAW", 2,
"FAIB", xcoor, ycoor, 0., 0,
"ONLY");
1654 TVirtualMC::GetMC()->Gspos(
"FCOV", 0,
"FAIA", xcoor, ycoor, zcoor, 0,
"ONLY");
1655 TVirtualMC::GetMC()->Gspos(
"FCOV", 0,
"FAIC", xcoor, ycoor, zcoor, 0,
"ONLY");
1658 TVirtualMC::GetMC()->Gspos(
"FCOB", 1,
"FAIB", xcoor, ycoor, zcoor, 0,
"ONLY");
1659 TVirtualMC::GetMC()->Gspos(
"FCOB", 2,
"FAIB", xcoor, ycoor, -zcoor, 0,
"ONLY");
1661 TVirtualMC::GetMC()->Gspos(
"FCOP", 0,
"FAIB", xcoor, ycoor, zcoor, 0,
"ONLY");
1666void Detector::makeReadoutCrates(
Float_t ytof)
const
1701 Float_t serpar[3] = {29. * 0.5, 121. * 0.5, 90. * 0.5};
1705 zcoor = (118. - 90.) * 0.5;
1709 xcoor = ra * TMath::Cos(phi * TMath::DegToRad());
1710 ycoor = ra * TMath::Sin(phi * TMath::DegToRad());
1711 Matrix(idrotm[
i], 90., phi, 90., phi + 270., 0., 0.);
1712 TVirtualMC::GetMC()->Gspos(
"FTOS",
i,
"BFMO", xcoor, ycoor, zcoor, idrotm[
i],
"ONLY");
1715 zcoor = (90. - 223.) * 0.5;
1716 TVirtualMC::GetMC()->Gspos(
"FTOS", 1,
"BBCE", ra, -3., zcoor, 0,
"ONLY");
1719void Detector::makeModulesInBTOFvolumes(
Float_t ytof,
Float_t zlenA)
const
1728 constexpr Int_t SIZESTR = 16;
1730 Int_t idrotm[1] = {0};
1733 Matrix(idrotm[0], 90., 0., 0., 0., 90., 270.);
1740 if (mTOFSectors[isec] == -1) {
1745 snprintf(
name, SIZESTR,
"BTOF%d", isec);
1746 if (mTOFHoles && (isec == 13 || isec == 14 || isec == 15)) {
1749 zcoor = -ytof * 0.25;
1750 TVirtualMC::GetMC()->Gspos(
"FTOB", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1751 TVirtualMC::GetMC()->Gspos(
"FTOC", 0,
name, xcoor, -ycoor, zcoor, idrotm[0],
"ONLY");
1755 zcoor = -ytof * 0.25;
1756 TVirtualMC::GetMC()->Gspos(
"FTOA", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1769void Detector::makeCoversInBTOFvolumes()
const
1779 constexpr Int_t SIZESTR = 16;
1781 Int_t idrotm[1] = {0};
1784 Matrix(idrotm[0], 90., 0., 0., 0., 90., 270.);
1795 if (mTOFSectors[isec] == -1) {
1798 snprintf(
name, SIZESTR,
"BTOF%d", isec);
1799 if (mTOFHoles && (isec == 13 || isec == 14 || isec == 15)) {
1800 TVirtualMC::GetMC()->Gspos(
"FPEB", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1802 TVirtualMC::GetMC()->Gspos(
"FPEA", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1808void Detector::makeBackInBTOFvolumes(
Float_t ytof)
const
1817 constexpr Int_t SIZESTR = 16;
1819 Int_t idrotm[1] = {0};
1822 Matrix(idrotm[0], 90., 0., 0., 0., 90., 270.);
1833 if (mTOFSectors[isec] == -1) {
1836 snprintf(
name, SIZESTR,
"BTOF%d", isec);
1838 TVirtualMC::GetMC()->Gspos(
"FAIA", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1840 if (mTOFHoles && (isec == 13 || isec == 14 || isec == 15)) {
1841 TVirtualMC::GetMC()->Gspos(
"FAIB", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1843 TVirtualMC::GetMC()->Gspos(
"FAIC", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1858 Int_t modUID, modnum = 0;
1863 TString vpL0 =
"cave/barrel_1/B077_1/BSEGMO";
1864 TString vpL1 =
"_1/BTOF";
1865 TString vpL2 =
"_1";
1866 TString vpL3 =
"/FTOA_0";
1867 TString vpL4 =
"/FLTA_0/FSTR_";
1869 TString snSM =
"TOF/sm";
1870 TString snSTRIP =
"/strip";
1883 LOG(
debug) <<
"modUID: " << modUID;
1885 if (mTOFSectors[isect] == -1) {
1889 if (mTOFHoles && (isect == 13 || isect == 14 || isect == 15)) {
1892 vpL4 =
"/FLTB_0/FSTR_";
1893 }
else if (istr > 53) {
1895 vpL4 =
"/FLTC_0/FSTR_";
1901 vpL4 =
"/FLTA_0/FSTR_";
1914 symName += Form(
"%02d", isect);
1916 symName += Form(
"%02d", istr);
1918 LOG(
debug) <<
"--------------------------------------------"
1920 LOG(
debug) <<
"Alignable object" << imod <<
"\n";
1921 LOG(
debug) <<
"volPath=" << volPath <<
"\n";
1922 LOG(
debug) <<
"symName=" << symName <<
"\n";
1923 LOG(
debug) <<
"--------------------------------------------"
1926 LOG(
debug) <<
"Check for alignable entry: " << symName;
1928 if (!gGeoManager->SetAlignableEntry(symName.Data(), volPath.Data(), modUID)) {
1929 LOG(error) <<
"Alignable entry " << symName <<
" NOT set";
1931 LOG(
debug) <<
"Alignable entry " << symName <<
" set";
1934 TGeoPNEntry* e = gGeoManager->GetAlignableEntryByUID(modUID);
1935 LOG(
debug) <<
"Got TGeoPNEntry " << e;
1938 TGeoHMatrix* globMatrix = e->GetGlobalOrig();
1940 TGeoHMatrix* t2l =
new TGeoHMatrix();
1942 const TGeoHMatrix& globMatrixi = globMatrix->Inverse();
1943 t2l->MultiplyLeft(&globMatrixi);
1966 symName += Form(
"%02d", isect);
1974 gGeoManager->SetAlignableEntry(symName.Data(), volPath.Data());
Definition of the GeometryManager class.
Definition of the Stack class.
void Matrix(Int_t &nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2, Float_t theta3, Float_t phi3) const
void Mixture(Int_t imat, const char *name, Float_t *a, Float_t *z, Float_t dens, Int_t nlmat, Float_t *wmat)
void Medium(Int_t numed, const char *name, Int_t nmat, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin, Float_t *ubuf=nullptr, Int_t nbuf=0)
int getMediumID(int imed) const
static void initFieldTrackingParams(int &mode, float &maxfield)
void Material(Int_t imat, const char *name, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl, Float_t *buf=nullptr, Int_t nwbuf=0)
std::string addNameTo(const char *ext) const
static int getSensID(o2::detectors::DetID detid, int sensid)
Int_t GetCurrentTrackNumber() const override
virtual void MaterialMixer(Float_t *p, const Float_t *const a, const Float_t *const m, Int_t n) const final
void ConstructGeometry() final
void InitializeO2Detector() final
void addAlignableVolumes() const override
declare alignable volumes of detector
Bool_t ProcessHits(FairVolume *v=nullptr) final
virtual void DefineGeometry(Float_t xtof, Float_t ytof, Float_t zlenA) final
static constexpr Float_t RMAX
static constexpr Float_t ZPAD
static constexpr Float_t HFILIY
static constexpr Float_t MODULECOVERTHICKNESS
static constexpr Float_t ROOF2PARAMETERS[3]
static constexpr Float_t XPAD
static constexpr Float_t LENGTHEXINMODBORDER
static constexpr Int_t NSECTORS
static constexpr Float_t HCPCBY
static constexpr Float_t BARS[3]
static constexpr Float_t HGLASSY
static Float_t getAngles(Int_t iplate, Int_t istrip)
static constexpr Int_t NPADZ
static constexpr Float_t HHONY
static constexpr Float_t WGLFZ
static constexpr Float_t HPCBY
static constexpr Float_t CBLH2
static constexpr Float_t WRGLZ
static constexpr Float_t HRGLY
static constexpr Int_t NSTRIPXSECTOR
static constexpr Float_t ROOF1PARAMETERS[3]
static constexpr Float_t HSENSMY
static constexpr Float_t INTERCENTRMODBORDER1
static constexpr Float_t BAR2[3]
static Float_t getHeights(Int_t iplate, Int_t istrip)
static constexpr Int_t NSTRIPB
static constexpr Int_t NSTRIPC
static constexpr Float_t AL1PARAMETERS[3]
static constexpr Float_t FEAPARAMETERS[3]
static constexpr Int_t NSTRIPA
static constexpr Float_t CBLH1
static constexpr Float_t ZLENA
static constexpr Float_t BAR1[3]
static constexpr Float_t BETWEENLANDMASK
static constexpr Float_t AL2PARAMETERS[3]
static constexpr Float_t WPCBZ1
static constexpr Float_t LENGTHINCEMODBORDERD
static constexpr Float_t INTERCENTRMODBORDER2
static constexpr Float_t MODULEWALLTHICKNESS
static constexpr Float_t FEAWIDTH1
static constexpr Float_t RMIN
static constexpr Float_t BARS2[3]
static constexpr Float_t SAWTHICKNESS
static Int_t getIndex(const Int_t *detId)
static constexpr Int_t NPLATES
static constexpr Float_t WPCBZ2
static Float_t getDistances(Int_t iplate, Int_t istrip)
static constexpr Float_t BARS1[3]
static void getPadDxDyDz(const Float_t *pos, Int_t *det, Float_t *DeltaPos, int sector=-1)
static constexpr Float_t WHONZ
static constexpr Float_t EXTERINTERMODBORDER1
static constexpr Int_t NPADX
static constexpr Float_t FEAWIDTH2
static constexpr Float_t STRIPLENGTH
static constexpr Float_t BAR[3]
static constexpr Float_t LENGTHINCEMODBORDERU
static constexpr Float_t EXTERINTERMODBORDER2
static constexpr Float_t WCPCBZ
static constexpr Float_t PHISEC
static constexpr Float_t CBLW
static constexpr Float_t AL3PARAMETERS[3]
static constexpr Bool_t FEAWITHMASKS[NSECTORS]
static ShmManager & Instance()
GLfloat GLfloat GLfloat alpha
GLuint const GLchar * name
GLboolean GLboolean GLboolean GLboolean a
void freeSimVector(std::vector< T > *ptr)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Common utility functions.
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"