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
663 static_cast<Float_t>(WSTRIPZ * 0.5)};
664 TVirtualMC::GetMC()->Gsvolu(
"FSTR",
"BOX",
getMediumID(
kFre), parfp, 3);
666 Float_t posfp[3] = {0., 0., 0.};
675 posfp[1] = -HSTRIPY * 0.5 + parfp[1];
677 TVirtualMC::GetMC()->Gspos(
"FHON", 1,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
678 TVirtualMC::GetMC()->Gspos(
"FHON", 2,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
684 TVirtualMC::GetMC()->Gsvolu(
"FPC1",
"BOX",
getMediumID(
kG10), parfp, 3);
690 TVirtualMC::GetMC()->Gsvolu(
"FPC2",
"BOX",
getMediumID(
kG10), parfp, 3);
694 posfp[1] = -HSTRIPY * 0.5 +
Geo::HHONY + parfp[1];
696 TVirtualMC::GetMC()->Gspos(
"FPC1", 1,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
697 TVirtualMC::GetMC()->Gspos(
"FPC2", 1,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
703 TVirtualMC::GetMC()->Gsvolu(
"FPCB",
"BOX",
getMediumID(
kG10), parfp, 3);
704 gGeoManager->GetVolume(
"FPCB")->VisibleDaughters(kFALSE);
707 TVirtualMC::GetMC()->Gspos(
"FPCB", 1,
"FSTR", 0., 0., 0., 0,
"ONLY");
711 static_cast<Float_t>(WSENSMZ * 0.5)};
712 TVirtualMC::GetMC()->Gsvolu(
"FSEN",
"BOX",
getMediumID(
kCuS), parfs, 3);
720 TVirtualMC::GetMC()->Gsdvn(
"FSEZ",
"FSEN",
Geo::NPADZ, 3);
721 TVirtualMC::GetMC()->Gsdvn(
"FPAD",
"FSEZ",
Geo::NPADX, 1);
723 TVirtualMC::GetMC()->Gspos(
"FSEN", 1,
"FPCB", 0., 0., 0., 0,
"ONLY");
734 TVirtualMC::GetMC()->Gspos(
"FRGL", 1,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
735 TVirtualMC::GetMC()->Gspos(
"FRGL", 4,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
739 TVirtualMC::GetMC()->Gspos(
"FRGL", 2,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
740 TVirtualMC::GetMC()->Gspos(
"FRGL", 3,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
751 TVirtualMC::GetMC()->Gspos(
"FGLF", 1,
"FSTR", 0., -posfp[1], 0., 0,
"ONLY");
752 TVirtualMC::GetMC()->Gspos(
"FGLF", 2,
"FSTR", 0., posfp[1], 0., 0,
"ONLY");
762 Int_t totalStrip = 0;
764 for (Int_t iplate = 0; iplate <
Geo::NPLATES; iplate++) {
766 totalStrip += maxStripNumbers[iplate - 1];
768 for (Int_t istrip = 0; istrip < maxStripNumbers[iplate]; istrip++) {
772 Matrix(idrotm[istrip + totalStrip], 90., 0., 90. + ang, 90., ang, 90.);
773 }
else if (ang == 0.) {
774 Matrix(idrotm[istrip + totalStrip], 90., 0., 90., 90., 0., 0.);
775 }
else if (ang < 0.) {
776 Matrix(idrotm[istrip + totalStrip], 90., 0., 90. + ang, 90., -ang, 270.);
782 TVirtualMC::GetMC()->Gspos(
"FSTR", istrip + totalStrip + 1,
"FLTA", xpos, ypos, -zpos,
783 idrotm[istrip + totalStrip],
"ONLY");
786 if (istrip + totalStrip + 1 > 53) {
787 TVirtualMC::GetMC()->Gspos(
788 "FSTR", istrip + totalStrip + 1,
"FLTC", xpos, ypos,
790 idrotm[istrip + totalStrip],
"ONLY");
792 if (istrip + totalStrip + 1 < 39) {
793 TVirtualMC::GetMC()->Gspos(
794 "FSTR", istrip + totalStrip + 1,
"FLTB", xpos, ypos,
796 idrotm[istrip + totalStrip],
"ONLY");
803void Detector::createModuleCovers(
Float_t xtof,
Float_t zlenA)
const
816 par[0] = xtof * 0.5 + 2.;
818 par[2] = zlenA * 0.5 + 2.;
819 TVirtualMC::GetMC()->Gsvolu(
"FPEA",
"BOX ",
getMediumID(
kAir), par, 3);
821 TVirtualMC::GetMC()->Gsvolu(
"FPEB",
"BOX ",
getMediumID(
kAir), par, 3);
824 constexpr Float_t ALCOVERTHICKNESS = 1.5;
825 constexpr Float_t INTERFACECARDTHICKNESS = 0.16;
826 constexpr Float_t ALSKINTHICKNESS = 0.1;
827 constexpr Float_t PLASTICFLATCABLETHICKNESS = 0.25;
828 constexpr Float_t COPPERFLATCABLETHICKNESS = 0.01;
831 par[1] = ALCOVERTHICKNESS * 0.5;
841 TVirtualMC::GetMC()->Gspos(
"FALT", 0,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
843 TVirtualMC::GetMC()->Gspos(
"FALB", 0,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
853 TVirtualMC::GetMC()->Gspos(
"FPE1", 0,
"FALT", xcoor, ycoor, zcoor, 0,
"ONLY");
857 par[1] = ALCOVERTHICKNESS * 0.5 - ALSKINTHICKNESS;
863 TVirtualMC::GetMC()->Gspos(
"FPE4", 0,
"FALB", xcoor, ycoor, zcoor, 0,
"ONLY");
873 TVirtualMC::GetMC()->Gspos(
"FPE2", 1,
"FALT", xcoor, ycoor, zcoor, 0,
"ONLY");
874 TVirtualMC::GetMC()->Gspos(
"FPE2", 2,
"FALT", xcoor, ycoor, -zcoor, 0,
"ONLY");
880 TVirtualMC::GetMC()->Gspos(
"FPE2", 1,
"FALB", xcoor, ycoor, zcoor, 0,
"ONLY");
881 TVirtualMC::GetMC()->Gspos(
"FPE2", 2,
"FALB", xcoor, ycoor, -zcoor, 0,
"ONLY");
891 TVirtualMC::GetMC()->Gspos(
"FPE3", 1,
"FALT", xcoor, ycoor, zcoor, 0,
"ONLY");
892 TVirtualMC::GetMC()->Gspos(
"FPE3", 2,
"FALT", xcoor, ycoor, -zcoor, 0,
"ONLY");
898 TVirtualMC::GetMC()->Gspos(
"FPE3", 1,
"FALB", xcoor, ycoor, zcoor, 0,
"ONLY");
899 TVirtualMC::GetMC()->Gspos(
"FPE3", 2,
"FALB", xcoor, ycoor, -zcoor, 0,
"ONLY");
904 par[1] = INTERFACECARDTHICKNESS * 0.5;
906 TVirtualMC::GetMC()->Gsvolu(
"FIF1",
"BOX ",
getMediumID(
kG10), par, 3);
908 ycoor = ALCOVERTHICKNESS * 0.5 + INTERFACECARDTHICKNESS * 0.5;
910 TVirtualMC::GetMC()->Gspos(
"FIF1", 0,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
915 TVirtualMC::GetMC()->Gsvolu(
"FIF2",
"BOX ",
getMediumID(
kG10), par, 3);
919 TVirtualMC::GetMC()->Gspos(
"FIF2", 1,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
920 TVirtualMC::GetMC()->Gspos(
"FIF2", 2,
"FPEA", xcoor, ycoor, -zcoor, 0,
"ONLY");
922 TVirtualMC::GetMC()->Gspos(
"FIF2", 1,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
923 TVirtualMC::GetMC()->Gspos(
"FIF2", 2,
"FPEB", xcoor, ycoor, -zcoor, 0,
"ONLY");
929 TVirtualMC::GetMC()->Gsvolu(
"FIF3",
"BOX ",
getMediumID(
kG10), par, 3);
933 TVirtualMC::GetMC()->Gspos(
"FIF3", 1,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
934 TVirtualMC::GetMC()->Gspos(
"FIF3", 2,
"FPEA", xcoor, ycoor, -zcoor, 0,
"ONLY");
936 TVirtualMC::GetMC()->Gspos(
"FIF3", 1,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
937 TVirtualMC::GetMC()->Gspos(
"FIF3", 2,
"FPEB", xcoor, ycoor, -zcoor, 0,
"ONLY");
943 par[1] = PLASTICFLATCABLETHICKNESS * 0.5;
947 ycoor = -ALCOVERTHICKNESS * 0.5 - PLASTICFLATCABLETHICKNESS * 0.5;
949 TVirtualMC::GetMC()->Gspos(
"FFC1", 0,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
958 TVirtualMC::GetMC()->Gspos(
"FFC2", 1,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
959 TVirtualMC::GetMC()->Gspos(
"FFC2", 2,
"FPEA", xcoor, ycoor, -zcoor, 0,
"ONLY");
961 TVirtualMC::GetMC()->Gspos(
"FFC2", 1,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
962 TVirtualMC::GetMC()->Gspos(
"FFC2", 2,
"FPEB", xcoor, ycoor, -zcoor, 0,
"ONLY");
972 TVirtualMC::GetMC()->Gspos(
"FFC3", 1,
"FPEA", xcoor, ycoor, zcoor, 0,
"ONLY");
973 TVirtualMC::GetMC()->Gspos(
"FFC3", 2,
"FPEA", xcoor, ycoor, -zcoor, 0,
"ONLY");
975 TVirtualMC::GetMC()->Gspos(
"FFC3", 1,
"FPEB", xcoor, ycoor, zcoor, 0,
"ONLY");
976 TVirtualMC::GetMC()->Gspos(
"FFC3", 2,
"FPEB", xcoor, ycoor, -zcoor, 0,
"ONLY");
981 par[1] = COPPERFLATCABLETHICKNESS * 0.5;
984 TVirtualMC::GetMC()->Gspos(
"FCC1", 0,
"FFC1", 0., 0., 0., 0,
"ONLY");
990 TVirtualMC::GetMC()->Gspos(
"FCC2", 0,
"FFC2", 0., 0., 0., 0,
"ONLY");
996 TVirtualMC::GetMC()->Gspos(
"FCC3", 0,
"FFC3", 0., 0., 0., 0,
"ONLY");
1010 Int_t idrotm[1] = {0};
1015 par[0] = xtof * 0.5;
1017 par[2] = zlenA * 0.5;
1018 TVirtualMC::GetMC()->Gsvolu(
"FAIA",
"BOX ",
getMediumID(
kAir), par, 3);
1020 TVirtualMC::GetMC()->Gsvolu(
"FAIB",
"BOX ",
getMediumID(
kAir), par, 3);
1022 TVirtualMC::GetMC()->Gsvolu(
"FAIC",
"BOX ",
getMediumID(
kAir), par, 3);
1033 TVirtualMC::GetMC()->Gsvolu(
"FCA1",
"BOX ",
getMediumID(
kAir), carpar, 3);
1034 TVirtualMC::GetMC()->Gsvolu(
"FCA2",
"BOX ",
getMediumID(
kAir), carpar, 3);
1037 Matrix(idrotm[0], 90., 180., 90., 90., 180., 0.);
1041 Float_t rowgap[5] = {13.5, 22.9, 16.94, 23.8, 20.4};
1042 Int_t rowb[5] = {6, 7, 6, 19, 7};
1044 TVirtualMC::GetMC()->Gspos(
"FCA1", 91,
"FAIA", carpos[0], carpos[1], carpos[2], 0,
"MANY");
1045 TVirtualMC::GetMC()->Gspos(
"FCA2", 91,
"FAIC", carpos[0], carpos[1], carpos[2], 0,
"MANY");
1049 for (Int_t sg = -1; sg < 2; sg += 2) {
1050 carpos[2] = sg * zlenA * 0.5 - 0.8;
1051 for (Int_t nb = 0; nb < 5; ++nb) {
1052 carpos[2] = carpos[2] - sg * (rowgap[nb] - rowstep);
1053 nrow =
row + rowb[nb];
1054 for (;
row < nrow; ++
row) {
1055 carpos[2] -= sg * rowstep;
1058 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIA", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1059 TVirtualMC::GetMC()->Gspos(
"FCA2",
row,
"FAIC", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1064 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIA", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1065 TVirtualMC::GetMC()->Gspos(
"FCA2",
row,
"FAIC", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1068 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIA", carpos[0], carpos[1], carpos[2], idrotm[0],
"ONLY");
1069 TVirtualMC::GetMC()->Gspos(
"FCA2",
row,
"FAIC", carpos[0], carpos[1], carpos[2], idrotm[0],
"ONLY");
1079 for (Int_t sg = -1; sg < 2; sg += 2) {
1080 carpos[2] = sg * zlenA * 0.5 - 0.8;
1081 for (Int_t nb = 0; nb < 4; ++nb) {
1082 carpos[2] = carpos[2] - sg * (rowgap[nb] - rowstep);
1083 nrow =
row + rowb[nb];
1084 for (;
row < nrow; ++
row) {
1085 carpos[2] -= sg * rowstep;
1089 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIB", carpos[0], carpos[1], carpos[2], 0,
"ONLY");
1092 TVirtualMC::GetMC()->Gspos(
"FCA1",
row,
"FAIB", carpos[0], carpos[1], carpos[2], idrotm[0],
"ONLY");
1101void Detector::makeFrontEndElectronics(
Float_t xtof)
const
1109 TVirtualMC::GetMC()->Gsvolu(
"FFEA",
"BOX ",
getMediumID(
kG10), feaParam, 3);
1121 Float_t xCoor = xtof * 0.5 - 25.;
1122 Float_t yCoor = -carpar[1] + feaParam[1];
1123 Float_t zCoor = -carpar[2] + (2. * feaRoof1[2] - 2. * al1[2] - feaParam[2]);
1124 TVirtualMC::GetMC()->Gspos(
"FFEA", 1,
"FCA1", -xCoor, yCoor, zCoor, 0,
"ONLY");
1125 TVirtualMC::GetMC()->Gspos(
"FFEA", 4,
"FCA1", xCoor, yCoor, zCoor, 0,
"ONLY");
1126 TVirtualMC::GetMC()->Gspos(
"FFEA", 1,
"FCA2", -xCoor, yCoor, zCoor, 0,
"ONLY");
1127 TVirtualMC::GetMC()->Gspos(
"FFEA", 4,
"FCA2", xCoor, yCoor, zCoor, 0,
"ONLY");
1129 TVirtualMC::GetMC()->Gspos(
"FFEA", 2,
"FCA1", -xCoor, yCoor, zCoor, 0,
"ONLY");
1130 TVirtualMC::GetMC()->Gspos(
"FFEA", 3,
"FCA1", xCoor, yCoor, zCoor, 0,
"ONLY");
1131 TVirtualMC::GetMC()->Gspos(
"FFEA", 2,
"FCA2", -xCoor, yCoor, zCoor, 0,
"ONLY");
1132 TVirtualMC::GetMC()->Gspos(
"FFEA", 3,
"FCA2", xCoor, yCoor, zCoor, 0,
"ONLY");
1135void Detector::makeFEACooling(
Float_t xtof)
const
1156 TVirtualMC::GetMC()->Gsvolu(
"FREE",
"BOX ",
getMediumID(
kAir), airHole, 3);
1157 TVirtualMC::GetMC()->Gspos(
"FREE", 1,
"FRO1", 0., feaRoof1[1] - airHole[1], 0., 0,
"ONLY");
1158 gGeoManager->GetVolume(
"FRO1")->VisibleDaughters(kFALSE);
1179 Float_t xcoor = xtof * 0.5 - 25.;
1181 Float_t zcoor = -carpar[2] + 2. * feaRoof1[2] - al1[2];
1182 TVirtualMC::GetMC()->Gspos(
"FAL1", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1183 TVirtualMC::GetMC()->Gspos(
"FAL1", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1184 TVirtualMC::GetMC()->Gspos(
"FAL1", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1185 TVirtualMC::GetMC()->Gspos(
"FAL1", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1187 TVirtualMC::GetMC()->Gspos(
"FAL1", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1188 TVirtualMC::GetMC()->Gspos(
"FAL1", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1189 TVirtualMC::GetMC()->Gspos(
"FAL1", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1190 TVirtualMC::GetMC()->Gspos(
"FAL1", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1193 xcoor = xtof * 0.5 - 25.;
1195 zcoor = -carpar[2] + feaRoof1[2];
1196 TVirtualMC::GetMC()->Gspos(
"FRO1", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"MANY");
1197 TVirtualMC::GetMC()->Gspos(
"FRO1", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"MANY");
1198 TVirtualMC::GetMC()->Gspos(
"FRO1", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1199 TVirtualMC::GetMC()->Gspos(
"FRO1", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1201 TVirtualMC::GetMC()->Gspos(
"FRO1", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"MANY");
1202 TVirtualMC::GetMC()->Gspos(
"FRO1", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"MANY");
1203 TVirtualMC::GetMC()->Gspos(
"FRO1", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1204 TVirtualMC::GetMC()->Gspos(
"FRO1", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1207 xcoor = xtof * 0.5 - 25.;
1209 zcoor = -carpar[2] + bar[2];
1210 TVirtualMC::GetMC()->Gspos(
"FBAR", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1211 TVirtualMC::GetMC()->Gspos(
"FBAR", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1212 TVirtualMC::GetMC()->Gspos(
"FBAR", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1213 TVirtualMC::GetMC()->Gspos(
"FBAR", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1215 TVirtualMC::GetMC()->Gspos(
"FBAR", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1216 TVirtualMC::GetMC()->Gspos(
"FBAR", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1217 TVirtualMC::GetMC()->Gspos(
"FBAR", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1218 TVirtualMC::GetMC()->Gspos(
"FBAR", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1222 xcoor = xtof * 0.5 - 25.;
1224 zcoor = -carpar[2] + 2. * bar[2] + 2. * tubepar[1] + bar1[2];
1225 TVirtualMC::GetMC()->Gspos(
"FBA1", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1226 TVirtualMC::GetMC()->Gspos(
"FBA1", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1227 TVirtualMC::GetMC()->Gspos(
"FBA1", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1228 TVirtualMC::GetMC()->Gspos(
"FBA1", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1230 TVirtualMC::GetMC()->Gspos(
"FBA1", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1231 TVirtualMC::GetMC()->Gspos(
"FBA1", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1232 TVirtualMC::GetMC()->Gspos(
"FBA1", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1233 TVirtualMC::GetMC()->Gspos(
"FBA1", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1236 xcoor = xtof * 0.5 - 25.;
1238 zcoor = -carpar[2] + 2. * bar[2] + bar2[2];
1239 TVirtualMC::GetMC()->Gspos(
"FBA2", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1240 TVirtualMC::GetMC()->Gspos(
"FBA2", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1241 TVirtualMC::GetMC()->Gspos(
"FBA2", 1,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1242 TVirtualMC::GetMC()->Gspos(
"FBA2", 4,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1244 TVirtualMC::GetMC()->Gspos(
"FBA2", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1245 TVirtualMC::GetMC()->Gspos(
"FBA2", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1246 TVirtualMC::GetMC()->Gspos(
"FBA2", 2,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1247 TVirtualMC::GetMC()->Gspos(
"FBA2", 3,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1249 xcoor = xtof * 0.5 - 25.;
1250 ycoor = carpar[1] - 2. *
Geo::ROOF2PARAMETERS[1] * 0.5 - 2. * feaRoof1[1] - 2. * bar2[1] - 2. * tubepar[1] - bar2[1];
1251 zcoor = -carpar[2] + 2. * bar[2] + bar2[2];
1252 TVirtualMC::GetMC()->Gspos(
"FBA2", 5,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1253 TVirtualMC::GetMC()->Gspos(
"FBA2", 8,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1254 TVirtualMC::GetMC()->Gspos(
"FBA2", 5,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1255 TVirtualMC::GetMC()->Gspos(
"FBA2", 8,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1257 TVirtualMC::GetMC()->Gspos(
"FBA2", 6,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1258 TVirtualMC::GetMC()->Gspos(
"FBA2", 7,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1259 TVirtualMC::GetMC()->Gspos(
"FBA2", 6,
"FCA2", -xcoor, ycoor, zcoor, 0,
"ONLY");
1260 TVirtualMC::GetMC()->Gspos(
"FBA2", 7,
"FCA2", xcoor, ycoor, zcoor, 0,
"ONLY");
1263void Detector::makeNinoMask(
Float_t xtof)
const
1291 Float_t xcoor = xtof * 0.5 - 25.;
1292 Float_t ycoor = carpar[1] - 2. * al3[1];
1293 Float_t zcoor = carpar[2] - 2. * al3[2] - al2[2];
1294 TVirtualMC::GetMC()->Gspos(
"FAL2", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1295 TVirtualMC::GetMC()->Gspos(
"FAL2", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1297 TVirtualMC::GetMC()->Gspos(
"FAL2", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1298 TVirtualMC::GetMC()->Gspos(
"FAL2", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1301 xcoor = xtof * 0.5 - 25.;
1302 ycoor = carpar[1] - al3[1];
1303 zcoor = carpar[2] - al3[2];
1304 TVirtualMC::GetMC()->Gspos(
"FAL3", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1305 TVirtualMC::GetMC()->Gspos(
"FAL3", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1307 TVirtualMC::GetMC()->Gspos(
"FAL3", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1308 TVirtualMC::GetMC()->Gspos(
"FAL3", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1311 xcoor = xtof * 0.5 - 25.;
1314 TVirtualMC::GetMC()->Gspos(
"FRO2", 1,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1315 TVirtualMC::GetMC()->Gspos(
"FRO2", 4,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1317 TVirtualMC::GetMC()->Gspos(
"FRO2", 2,
"FCA1", -xcoor, ycoor, zcoor, 0,
"ONLY");
1318 TVirtualMC::GetMC()->Gspos(
"FRO2", 3,
"FCA1", xcoor, ycoor, zcoor, 0,
"ONLY");
1329 Int_t idrotm[1] = {0};
1336 Float_t tubeparW[3] = {0., 0.3, tubepar[2]};
1340 TVirtualMC::GetMC()->Gspos(
"FITU", 1,
"FTUB", 0., 0., 0., 0,
"ONLY");
1343 Float_t trapar[3] = {tubepar[2], 6.175 , 0.7};
1347 Matrix(idrotm[0], 180., 90., 90., 90., 90., 0.);
1365 Float_t zcoor = -carpar[2] + 2. * bar[2] + tubepar[1];
1366 TVirtualMC::GetMC()->Gspos(
"FTUB", 1,
"FCA1", 0., ycoor, zcoor, idrotm[0],
"ONLY");
1367 TVirtualMC::GetMC()->Gspos(
"FTUB", 1,
"FCA2", 0., ycoor, zcoor, idrotm[0],
"ONLY");
1368 gGeoManager->GetVolume(
"FTUB")->VisibleDaughters(kFALSE);
1371 for (Int_t sg = -1; sg < 2; sg += 2) {
1373 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 4 * sg,
"FAIA", 0., yFLTN, 369.9 * sg, 0,
"MANY");
1374 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 3 * sg,
"FAIA", 0., yFLTN, 366.9 * sg, 0,
"MANY");
1375 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 2 * sg,
"FAIA", 0., yFLTN, 198.8 * sg, 0,
"MANY");
1376 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + sg,
"FAIA", 0., yFLTN, 56.82 * sg, 0,
"MANY");
1377 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 4 * sg,
"FAIC", 0., yFLTN, 369.9 * sg, 0,
"MANY");
1378 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 3 * sg,
"FAIC", 0., yFLTN, 366.9 * sg, 0,
"MANY");
1379 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 2 * sg,
"FAIC", 0., yFLTN, 198.8 * sg, 0,
"MANY");
1380 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + sg,
"FAIC", 0., yFLTN, 56.82 * sg, 0,
"MANY");
1384 Float_t lonpar1[3] = {2., 0.5,
static_cast<Float_t>(56.82 - trapar[2])};
1385 Float_t lonpar2[3] = {lonpar1[0], lonpar1[1],
static_cast<Float_t>((198.8 - 56.82) * 0.5 - trapar[2])};
1386 Float_t lonpar3[3] = {lonpar1[0], lonpar1[1],
static_cast<Float_t>((366.9 - 198.8) * 0.5 - trapar[2])};
1392 ycoor = ytub + (tubepar[1] + 2. * bar2[1] + lonpar1[1]);
1393 TVirtualMC::GetMC()->Gspos(
"FLO1", 4,
"FAIA", -24., ycoor, 0., 0,
"MANY");
1394 TVirtualMC::GetMC()->Gspos(
"FLO1", 2,
"FAIA", 24., ycoor, 0., 0,
"MANY");
1395 TVirtualMC::GetMC()->Gspos(
"FLO1", 4,
"FAIC", -24., ycoor, 0., 0,
"MANY");
1396 TVirtualMC::GetMC()->Gspos(
"FLO1", 2,
"FAIC", 24., ycoor, 0., 0,
"MANY");
1398 zcoor = (198.8 + 56.82) * 0.5;
1399 TVirtualMC::GetMC()->Gspos(
"FLO2", 4,
"FAIA", -24., ycoor, -zcoor, 0,
"MANY");
1400 TVirtualMC::GetMC()->Gspos(
"FLO2", 2,
"FAIA", 24., ycoor, -zcoor, 0,
"MANY");
1401 TVirtualMC::GetMC()->Gspos(
"FLO2", 4,
"FAIC", -24., ycoor, -zcoor, 0,
"MANY");
1402 TVirtualMC::GetMC()->Gspos(
"FLO2", 2,
"FAIC", 24., ycoor, -zcoor, 0,
"MANY");
1403 TVirtualMC::GetMC()->Gspos(
"FLO2", 8,
"FAIA", -24., ycoor, zcoor, 0,
"MANY");
1404 TVirtualMC::GetMC()->Gspos(
"FLO2", 6,
"FAIA", 24., ycoor, zcoor, 0,
"MANY");
1405 TVirtualMC::GetMC()->Gspos(
"FLO2", 8,
"FAIC", -24., ycoor, zcoor, 0,
"MANY");
1406 TVirtualMC::GetMC()->Gspos(
"FLO2", 6,
"FAIC", 24., ycoor, zcoor, 0,
"MANY");
1408 zcoor = (366.9 + 198.8) * 0.5;
1409 TVirtualMC::GetMC()->Gspos(
"FLO3", 4,
"FAIA", -24., ycoor, -zcoor, 0,
"MANY");
1410 TVirtualMC::GetMC()->Gspos(
"FLO3", 2,
"FAIA", 24., ycoor, -zcoor, 0,
"MANY");
1411 TVirtualMC::GetMC()->Gspos(
"FLO3", 4,
"FAIC", -24., ycoor, -zcoor, 0,
"MANY");
1412 TVirtualMC::GetMC()->Gspos(
"FLO3", 2,
"FAIC", 24., ycoor, -zcoor, 0,
"MANY");
1413 TVirtualMC::GetMC()->Gspos(
"FLO3", 8,
"FAIA", -24., ycoor, zcoor, 0,
"MANY");
1414 TVirtualMC::GetMC()->Gspos(
"FLO3", 6,
"FAIA", 24., ycoor, zcoor, 0,
"MANY");
1415 TVirtualMC::GetMC()->Gspos(
"FLO3", 8,
"FAIC", -24., ycoor, zcoor, 0,
"MANY");
1416 TVirtualMC::GetMC()->Gspos(
"FLO3", 6,
"FAIC", 24., ycoor, zcoor, 0,
"MANY");
1418 ycoor = ytub - (tubepar[1] + 2. * bar2[1] + lonpar1[1]);
1419 TVirtualMC::GetMC()->Gspos(
"FLO1", 3,
"FAIA", -24., ycoor, 0., 0,
"MANY");
1420 TVirtualMC::GetMC()->Gspos(
"FLO1", 1,
"FAIA", 24., ycoor, 0., 0,
"MANY");
1421 TVirtualMC::GetMC()->Gspos(
"FLO1", 3,
"FAIC", -24., ycoor, 0., 0,
"MANY");
1422 TVirtualMC::GetMC()->Gspos(
"FLO1", 1,
"FAIC", 24., ycoor, 0., 0,
"MANY");
1424 zcoor = (198.8 + 56.82) * 0.5;
1425 TVirtualMC::GetMC()->Gspos(
"FLO2", 3,
"FAIA", -24., ycoor, -zcoor, 0,
"MANY");
1426 TVirtualMC::GetMC()->Gspos(
"FLO2", 1,
"FAIA", 24., ycoor, -zcoor, 0,
"MANY");
1427 TVirtualMC::GetMC()->Gspos(
"FLO2", 3,
"FAIC", -24., ycoor, -zcoor, 0,
"MANY");
1428 TVirtualMC::GetMC()->Gspos(
"FLO2", 1,
"FAIC", 24., ycoor, -zcoor, 0,
"MANY");
1429 TVirtualMC::GetMC()->Gspos(
"FLO2", 7,
"FAIA", -24., ycoor, zcoor, 0,
"MANY");
1430 TVirtualMC::GetMC()->Gspos(
"FLO2", 5,
"FAIA", 24., ycoor, zcoor, 0,
"MANY");
1431 TVirtualMC::GetMC()->Gspos(
"FLO2", 7,
"FAIC", -24., ycoor, zcoor, 0,
"MANY");
1432 TVirtualMC::GetMC()->Gspos(
"FLO2", 5,
"FAIC", 24., ycoor, zcoor, 0,
"MANY");
1434 zcoor = (366.9 + 198.8) * 0.5;
1435 TVirtualMC::GetMC()->Gspos(
"FLO3", 3,
"FAIA", -24., ycoor, -zcoor, 0,
"MANY");
1436 TVirtualMC::GetMC()->Gspos(
"FLO3", 1,
"FAIA", 24., ycoor, -zcoor, 0,
"MANY");
1437 TVirtualMC::GetMC()->Gspos(
"FLO3", 3,
"FAIC", -24., ycoor, -zcoor, 0,
"MANY");
1438 TVirtualMC::GetMC()->Gspos(
"FLO3", 1,
"FAIC", 24., ycoor, -zcoor, 0,
"MANY");
1439 TVirtualMC::GetMC()->Gspos(
"FLO3", 7,
"FAIA", -24., ycoor, zcoor, 0,
"MANY");
1440 TVirtualMC::GetMC()->Gspos(
"FLO3", 5,
"FAIA", 24., ycoor, zcoor, 0,
"MANY");
1441 TVirtualMC::GetMC()->Gspos(
"FLO3", 7,
"FAIC", -24., ycoor, zcoor, 0,
"MANY");
1442 TVirtualMC::GetMC()->Gspos(
"FLO3", 5,
"FAIC", 24., ycoor, zcoor, 0,
"MANY");
1447 for (Int_t sg = -1; sg < 2; sg += 2) {
1448 carpos[2] = sg * zlenA * 0.5;
1449 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 4 * sg,
"FAIB", 0., yFLTN, 369.9 * sg, 0,
"MANY");
1450 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 3 * sg,
"FAIB", 0., yFLTN, 366.9 * sg, 0,
"MANY");
1451 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + 2 * sg,
"FAIB", 0., yFLTN, 198.8 * sg, 0,
"MANY");
1452 TVirtualMC::GetMC()->Gspos(
"FTLN", 5 + sg,
"FAIB", 0., yFLTN, 56.82 * sg, 0,
"MANY");
1455 ycoor = ytub + (tubepar[1] + 2. * bar2[1] + lonpar1[1]);
1456 zcoor = (198.8 + 56.82) * 0.5;
1457 TVirtualMC::GetMC()->Gspos(
"FLO2", 2,
"FAIB", -24., ycoor, -zcoor, 0,
"MANY");
1458 TVirtualMC::GetMC()->Gspos(
"FLO2", 1,
"FAIB", -24., ycoor, zcoor, 0,
"MANY");
1459 zcoor = (366.9 + 198.8) * 0.5;
1460 TVirtualMC::GetMC()->Gspos(
"FLO3", 2,
"FAIB", -24., ycoor, -zcoor, 0,
"MANY");
1461 TVirtualMC::GetMC()->Gspos(
"FLO3", 1,
"FAIB", -24., ycoor, zcoor, 0,
"MANY");
1462 ycoor = ytub - (tubepar[1] + 2. * bar2[1] + lonpar1[1]);
1463 zcoor = (198.8 + 56.82) * 0.5;
1464 TVirtualMC::GetMC()->Gspos(
"FLO2", 4,
"FAIB", 24., ycoor, -zcoor, 0,
"MANY");
1465 TVirtualMC::GetMC()->Gspos(
"FLO2", 3,
"FAIB", 24., ycoor, zcoor, 0,
"MANY");
1466 zcoor = (366.9 + 198.8) * 0.5;
1467 TVirtualMC::GetMC()->Gspos(
"FLO3", 4,
"FAIB", 24., ycoor, -zcoor, 0,
"MANY");
1468 TVirtualMC::GetMC()->Gspos(
"FLO3", 3,
"FAIB", 24., ycoor, zcoor, 0,
"MANY");
1482 zcoor = -carpar[2] + barS[2];
1483 TVirtualMC::GetMC()->Gspos(
"FBAS", 1,
"FCA1", -24., ycoor, zcoor, 0,
"ONLY");
1484 TVirtualMC::GetMC()->Gspos(
"FBAS", 2,
"FCA1", 24., ycoor, zcoor, 0,
"ONLY");
1485 TVirtualMC::GetMC()->Gspos(
"FBAS", 1,
"FCA2", -24., ycoor, zcoor, 0,
"ONLY");
1486 TVirtualMC::GetMC()->Gspos(
"FBAS", 2,
"FCA2", 24., ycoor, zcoor, 0,
"ONLY");
1488 zcoor = -carpar[2] + 2. * barS[2] + 2. * tubepar[1] + barS1[2];
1489 TVirtualMC::GetMC()->Gspos(
"FBS1", 1,
"FCA1", -24., ycoor, zcoor, 0,
"ONLY");
1490 TVirtualMC::GetMC()->Gspos(
"FBS1", 2,
"FCA1", 24., ycoor, zcoor, 0,
"ONLY");
1491 TVirtualMC::GetMC()->Gspos(
"FBS1", 1,
"FCA2", -24., ycoor, zcoor, 0,
"ONLY");
1492 TVirtualMC::GetMC()->Gspos(
"FBS1", 2,
"FCA2", 24., ycoor, zcoor, 0,
"ONLY");
1494 ycoor = ytubBis + (tubepar[1] + barS2[1]);
1495 zcoor = -carpar[2] + 2. * barS[2] + barS2[2];
1496 TVirtualMC::GetMC()->Gspos(
"FBS2", 1,
"FCA1", -24., ycoor, zcoor, 0,
"ONLY");
1497 TVirtualMC::GetMC()->Gspos(
"FBS2", 2,
"FCA1", 24., ycoor, zcoor, 0,
"ONLY");
1498 TVirtualMC::GetMC()->Gspos(
"FBS2", 1,
"FCA2", -24., ycoor, zcoor, 0,
"ONLY");
1499 TVirtualMC::GetMC()->Gspos(
"FBS2", 2,
"FCA2", 24., ycoor, zcoor, 0,
"ONLY");
1501 ycoor = ytubBis - (tubepar[1] + barS2[1]);
1503 TVirtualMC::GetMC()->Gspos(
"FBS2", 3,
"FCA1", -24., ycoor, zcoor, 0,
"ONLY");
1504 TVirtualMC::GetMC()->Gspos(
"FBS2", 4,
"FCA1", 24., ycoor, zcoor, 0,
"ONLY");
1505 TVirtualMC::GetMC()->Gspos(
"FBS2", 3,
"FCA2", -24., ycoor, zcoor, 0,
"ONLY");
1506 TVirtualMC::GetMC()->Gspos(
"FBS2", 4,
"FCA2", 24., ycoor, zcoor, 0,
"ONLY");
1518 Int_t idrotm[3] = {0, 0, 0};
1532 Float_t cbparS[3] = {cbpar[0], cbpar[1],
1538 Matrix(idrotm[0], 180., 90., 90., 90., 90., 0.);
1551 Float_t zcoor = -carpar[2] + (2. * feaRoof1[2] - 2. * al1[2] - 2. * feaParam[2] - cbpar[1]);
1552 TVirtualMC::GetMC()->Gspos(
"FCAB", 1,
"FCA1", -xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1553 TVirtualMC::GetMC()->Gspos(
"FCAB", 2,
"FCA1", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1554 TVirtualMC::GetMC()->Gspos(
"FCAB", 1,
"FCA2", -xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1555 TVirtualMC::GetMC()->Gspos(
"FCAB", 2,
"FCA2", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1557 ycoor -= 2. * cbpar[1];
1558 TVirtualMC::GetMC()->Gspos(
"FCAL", 1,
"FCA1", -xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1559 TVirtualMC::GetMC()->Gspos(
"FCAL", 2,
"FCA1", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1560 TVirtualMC::GetMC()->Gspos(
"FCAL", 1,
"FCA2", -xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1561 TVirtualMC::GetMC()->Gspos(
"FCAL", 2,
"FCA2", xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1578 cblpar[3] = kCBLl * 0.5;
1581 cblpar[6] = TMath::ATan(tgal) * TMath::RadToDeg();
1582 cblpar[7] = kCBLl * 0.5;
1585 cblpar[10] = cblpar[6];
1592 Matrix(idrotm[1], 90., 90., 180., 0., 90., 180.);
1593 Matrix(idrotm[2], 90., 90., 0., 0., 90., 0.);
1596 xcoor = (xtof -
Geo::CBLW) * 0.5 - 2. * sawpar[0];
1598 zcoor = kCBLl * 0.5;
1599 TVirtualMC::GetMC()->Gspos(
"FCBL", 1,
"FAIA", -xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1600 TVirtualMC::GetMC()->Gspos(
"FCBL", 2,
"FAIA", xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1601 TVirtualMC::GetMC()->Gspos(
"FCBL", 3,
"FAIA", -xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1602 TVirtualMC::GetMC()->Gspos(
"FCBL", 4,
"FAIA", xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1603 TVirtualMC::GetMC()->Gspos(
"FCBL", 1,
"FAIC", -xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1604 TVirtualMC::GetMC()->Gspos(
"FCBL", 2,
"FAIC", xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1605 TVirtualMC::GetMC()->Gspos(
"FCBL", 3,
"FAIC", -xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1606 TVirtualMC::GetMC()->Gspos(
"FCBL", 4,
"FAIC", xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1609 cblpar[3] = kCBLlh * 0.5;
1610 cblpar[5] =
Geo::CBLH1 * 0.5 + kCBLlh * tgal;
1611 cblpar[7] = kCBLlh * 0.5;
1612 cblpar[9] = cblpar[5];
1615 xcoor = (xtof -
Geo::CBLW) * 0.5 - 2. * sawpar[0];
1617 zcoor = kCBLl - kCBLlh * 0.5;
1618 TVirtualMC::GetMC()->Gspos(
"FCBB", 1,
"FAIB", -xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1619 TVirtualMC::GetMC()->Gspos(
"FCBB", 2,
"FAIB", xcoor, ycoor, -zcoor, idrotm[1],
"ONLY");
1620 TVirtualMC::GetMC()->Gspos(
"FCBB", 3,
"FAIB", -xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1621 TVirtualMC::GetMC()->Gspos(
"FCBB", 4,
"FAIB", xcoor, ycoor, zcoor, idrotm[2],
"ONLY");
1625 xcoor = xtof * 0.5 - sawpar[0];
1628 TVirtualMC::GetMC()->Gspos(
"FSAW", 1,
"FAIA", -xcoor, ycoor, zcoor, 0,
"ONLY");
1629 TVirtualMC::GetMC()->Gspos(
"FSAW", 2,
"FAIA", xcoor, ycoor, zcoor, 0,
"ONLY");
1630 TVirtualMC::GetMC()->Gspos(
"FSAW", 1,
"FAIC", -xcoor, ycoor, zcoor, 0,
"ONLY");
1631 TVirtualMC::GetMC()->Gspos(
"FSAW", 2,
"FAIC", xcoor, ycoor, zcoor, 0,
"ONLY");
1634 xcoor = xtof * 0.5 - sawpar[0];
1636 TVirtualMC::GetMC()->Gspos(
"FSAW", 1,
"FAIB", -xcoor, ycoor, 0., 0,
"ONLY");
1637 TVirtualMC::GetMC()->Gspos(
"FSAW", 2,
"FAIB", xcoor, ycoor, 0., 0,
"ONLY");
1653 TVirtualMC::GetMC()->Gspos(
"FCOV", 0,
"FAIA", xcoor, ycoor, zcoor, 0,
"ONLY");
1654 TVirtualMC::GetMC()->Gspos(
"FCOV", 0,
"FAIC", xcoor, ycoor, zcoor, 0,
"ONLY");
1657 TVirtualMC::GetMC()->Gspos(
"FCOB", 1,
"FAIB", xcoor, ycoor, zcoor, 0,
"ONLY");
1658 TVirtualMC::GetMC()->Gspos(
"FCOB", 2,
"FAIB", xcoor, ycoor, -zcoor, 0,
"ONLY");
1660 TVirtualMC::GetMC()->Gspos(
"FCOP", 0,
"FAIB", xcoor, ycoor, zcoor, 0,
"ONLY");
1665void Detector::makeReadoutCrates(
Float_t ytof)
const
1700 Float_t serpar[3] = {29. * 0.5, 121. * 0.5, 90. * 0.5};
1704 zcoor = (118. - 90.) * 0.5;
1708 xcoor = ra * TMath::Cos(phi * TMath::DegToRad());
1709 ycoor = ra * TMath::Sin(phi * TMath::DegToRad());
1710 Matrix(idrotm[
i], 90., phi, 90., phi + 270., 0., 0.);
1711 TVirtualMC::GetMC()->Gspos(
"FTOS",
i,
"BFMO", xcoor, ycoor, zcoor, idrotm[
i],
"ONLY");
1714 zcoor = (90. - 223.) * 0.5;
1715 TVirtualMC::GetMC()->Gspos(
"FTOS", 1,
"BBCE", ra, -3., zcoor, 0,
"ONLY");
1718void Detector::makeModulesInBTOFvolumes(
Float_t ytof,
Float_t zlenA)
const
1727 constexpr Int_t SIZESTR = 16;
1729 Int_t idrotm[1] = {0};
1732 Matrix(idrotm[0], 90., 0., 0., 0., 90., 270.);
1739 if (mTOFSectors[isec] == -1) {
1744 snprintf(
name, SIZESTR,
"BTOF%d", isec);
1745 if (mTOFHoles && (isec == 13 || isec == 14 || isec == 15)) {
1748 zcoor = -ytof * 0.25;
1749 TVirtualMC::GetMC()->Gspos(
"FTOB", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1750 TVirtualMC::GetMC()->Gspos(
"FTOC", 0,
name, xcoor, -ycoor, zcoor, idrotm[0],
"ONLY");
1754 zcoor = -ytof * 0.25;
1755 TVirtualMC::GetMC()->Gspos(
"FTOA", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1768void Detector::makeCoversInBTOFvolumes()
const
1778 constexpr Int_t SIZESTR = 16;
1780 Int_t idrotm[1] = {0};
1783 Matrix(idrotm[0], 90., 0., 0., 0., 90., 270.);
1794 if (mTOFSectors[isec] == -1) {
1797 snprintf(
name, SIZESTR,
"BTOF%d", isec);
1798 if (mTOFHoles && (isec == 13 || isec == 14 || isec == 15)) {
1799 TVirtualMC::GetMC()->Gspos(
"FPEB", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1801 TVirtualMC::GetMC()->Gspos(
"FPEA", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1807void Detector::makeBackInBTOFvolumes(
Float_t ytof)
const
1816 constexpr Int_t SIZESTR = 16;
1818 Int_t idrotm[1] = {0};
1821 Matrix(idrotm[0], 90., 0., 0., 0., 90., 270.);
1832 if (mTOFSectors[isec] == -1) {
1835 snprintf(
name, SIZESTR,
"BTOF%d", isec);
1837 TVirtualMC::GetMC()->Gspos(
"FAIA", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1839 if (mTOFHoles && (isec == 13 || isec == 14 || isec == 15)) {
1840 TVirtualMC::GetMC()->Gspos(
"FAIB", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1842 TVirtualMC::GetMC()->Gspos(
"FAIC", 0,
name, xcoor, ycoor, zcoor, idrotm[0],
"ONLY");
1857 Int_t modUID, modnum = 0;
1862 TString vpL0 =
"cave/barrel_1/B077_1/BSEGMO";
1863 TString vpL1 =
"_1/BTOF";
1864 TString vpL2 =
"_1";
1865 TString vpL3 =
"/FTOA_0";
1866 TString vpL4 =
"/FLTA_0/FSTR_";
1868 TString snSM =
"TOF/sm";
1869 TString snSTRIP =
"/strip";
1882 LOG(
debug) <<
"modUID: " << modUID;
1884 if (mTOFSectors[isect] == -1) {
1888 if (mTOFHoles && (isect == 13 || isect == 14 || isect == 15)) {
1891 vpL4 =
"/FLTB_0/FSTR_";
1892 }
else if (istr > 53) {
1894 vpL4 =
"/FLTC_0/FSTR_";
1900 vpL4 =
"/FLTA_0/FSTR_";
1913 symName += Form(
"%02d", isect);
1915 symName += Form(
"%02d", istr);
1917 LOG(
debug) <<
"--------------------------------------------"
1919 LOG(
debug) <<
"Alignable object" << imod <<
"\n";
1920 LOG(
debug) <<
"volPath=" << volPath <<
"\n";
1921 LOG(
debug) <<
"symName=" << symName <<
"\n";
1922 LOG(
debug) <<
"--------------------------------------------"
1925 LOG(
debug) <<
"Check for alignable entry: " << symName;
1927 if (!gGeoManager->SetAlignableEntry(symName.Data(), volPath.Data(), modUID)) {
1928 LOG(error) <<
"Alignable entry " << symName <<
" NOT set";
1930 LOG(
debug) <<
"Alignable entry " << symName <<
" set";
1933 TGeoPNEntry* e = gGeoManager->GetAlignableEntryByUID(modUID);
1934 LOG(
debug) <<
"Got TGeoPNEntry " << e;
1937 TGeoHMatrix* globMatrix = e->GetGlobalOrig();
1939 TGeoHMatrix* t2l =
new TGeoHMatrix();
1941 const TGeoHMatrix& globMatrixi = globMatrix->Inverse();
1942 t2l->MultiplyLeft(&globMatrixi);
1965 symName += Form(
"%02d", isect);
1973 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
Node par(int index)
Parameters.
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"