5 #ifndef LBNEVolumePlacement_H 6 #define LBNEVolumePlacement_H 1 13 #include "G4ThreeVector.hh" 14 #include "G4RotationMatrix.hh" 15 #include "G4UImessenger.hh" 16 #include "G4UIdirectory.hh" 17 #include "G4UIcmdWithADoubleAndUnit.hh" 18 #include "G4UIcmdWithABool.hh" 19 #include "G4UIcmdWithADoubleAndUnit.hh" 20 #include "G4PVPlacement.hh" 21 #include "G4ExceptionSeverity.hh" 79 fRotation = G4RotationMatrix();
80 fRotationIsUnitMatrix =
true;
81 fPosition = G4ThreeVector(0.0, 0.0, 0.0);
82 fParams.resize(3, 0.0);
84 fTypeName = G4String(
"Tubs");
94 double GetVal(
double z)
const ;
135 void InitializeMessenger();
136 void Initialize(
const G4LogicalVolume* matriarch);
140 G4PVPlacement* PlaceFinal(
const G4String &
name, G4VPhysicalVolume *mother);
142 void PlaceFinalUpstrTarget(G4PVPlacement *mother);
144 void PlaceFinalDownstrTarget(G4PVPlacement *mother);
146 void PlaceFinalHorn1(G4PVPlacement *mother, G4PVPlacement *motherDownstrTarget);
147 void PlaceFinalNoSplitHorn1(G4PVPlacement *mother, G4PVPlacement *motherTop);
148 void UpdateParamsForHorn1MotherPoly();
150 void PlaceFinalSimpleHornPolyNumber(
size_t iHorn, G4PVPlacement *mother);
152 void UpdateParamsForHornMotherPolyNum(
size_t iH);
155 void ExtendChaseLengthForHorn2();
156 void PlaceFinalHorn2(G4PVPlacement *mother);
158 void PlaceFinalDecayPipeSnout(G4PVPlacement *mother);
159 double GetMaxRadiusMotherHorn1();
193 fLengthOfRockDownstr = 2.0*
l;
194 const double aRockLength = 2.0*(fDecayPipeLength + 160.*
CLHEP::m );
196 fTotalLength = aRockLength+fLengthOfRockDownstr;
203 const double lCorr = l + fDecayPipeLengthCorrection;
204 fDecayPipeLength=lCorr; fTotalLength = 2.0*(fDecayPipeLength + 160.*
CLHEP::m + fLengthOfRockDownstr);
261 fTargetFinWidth /=2.;
262 fTargetFinWidthRequired = fTargetFinWidth;
339 void SegmentTarget();
340 void SegmentTargetSmallTgt();
341 void SegmentRALTGTv1();
347 void RescaleHorn1Lengthwise();
348 void RescaleHorn2Lengthwise();
349 void RescaleHorn1Radially();
350 void RescaleHorn2Radially();
351 void ShiftHorn2Radially();
403 if (eqn >= fHorn1Equations.size())
return -1.;
404 return fHorn1Equations[eqn].GetVal(zD);
407 if (eqn >= fHorn2Equations.size())
return -1.;
408 return fHorn2Equations[eqn].GetVal(zD);
425 void adaptTargetFor1p2MW();
426 void adaptTargetFor1p2MWSmallTgt();
427 void adaptRALTGTv1();
428 void configureTargetForConceptHornARev2();
455 if (numPts >= static_cast<size_t>(fUseHorn1PolyNumInnerPts)) {
456 G4Exception(
"GetHorn1PolyInnerConductorRadius",
" ", FatalErrorInArgument,
"Bad Index");
458 G4ThreeVector v = fHorn1PolyListRinThickZVects[numPts];
462 if (numPts >= static_cast<size_t>(fUseHorn1PolyNumInnerPts)) {
463 G4Exception(
"GetHorn1PolyInnerConductorThickness",
" ", FatalErrorInArgument,
"Bad Index");
465 G4ThreeVector v = fHorn1PolyListRinThickZVects[numPts];
469 if (numPts >= static_cast<size_t>(fUseHorn1PolyNumInnerPts)) {
470 G4Exception(
"GetHorn1PolyInnerConductorZCoord",
" ", FatalErrorInArgument,
"Bad Index");
472 G4ThreeVector v = fHorn1PolyListRinThickZVects[numPts];
481 fUseHorn1Polycone = t;
483 fUseHornsPolycone =
false;
485 fUseNumberOfHornsPoly = 1;
486 fMotherHornsAllLengths.resize(1);
487 fMotherHornsAllRads.resize(1);
488 fUseHornsPolyNumInnerPts.resize(1);
489 fHornsPolyOuterRadius.resize(1);
490 fHornsPolyListRinThickZVects.resize(1);
491 fPolyconeHornsAreParabolic.resize(1); fPolyconeHornsAreParabolic[0] =
false;
492 fMotherHornsAllThick.resize(1);
493 fHornsLength.resize(1);
494 fHornsPolyZStartPos.resize(1);
495 fHornsPolyZStartPos[0] = 0.;
496 fHornsOuterTubeOuterRad.resize(1);
497 fRemoveDecayPipeSnout =
true;
500 fUseHorn1PolyNumInnerPts =
n;
501 fHorn1PolyListRinThickZVects.resize(static_cast<size_t>(n));
504 if (fHorn1PolyListRinThickZVects.size() < iP) {
505 size_t numMiss = iP - fHorn1PolyListRinThickZVects.size();
506 for (
size_t ipp = 0; ipp != numMiss; ipp++) {
507 G4ThreeVector vNew; vNew[0] = 40.; vNew[1] = 2; vNew[2] = 400.;
508 fHorn1PolyListRinThickZVects.push_back(vNew);
511 for (
size_t kv=0; kv != 3; kv++)
512 fHorn1PolyListRinThickZVects[iP][kv] = vVal[kv];
520 if ((i < 1) || (i > fUseHornsPolyNumInnerPts.size())) {
521 G4Exception(
"GetUseHornsPolyNumInnerPts",
" ", FatalErrorInArgument,
"Illegal Horn number");
523 return fUseHornsPolyNumInnerPts[i-1];
526 if ((iH < 1) || (iH > fUseHornsPolyNumInnerPts.size())) {
527 G4Exception(
"GetHornsPolyInnerConductorRadius",
" ", FatalErrorInArgument,
"Illegal Horn number");
529 std::vector<G4ThreeVector> data = fHornsPolyListRinThickZVects[(iH-1)];
530 if (numPts >= data.size()) {
531 G4Exception(
"GetHornsPolyInnerConductorRadius",
" ", FatalErrorInArgument,
"Bad Index");
533 G4ThreeVector v = data[numPts];
537 if ((iH < 1) || (iH > fUseHornsPolyNumInnerPts.size())) {
538 G4Exception(
"GetHornsPolyInnerConductorThickness",
" ", FatalErrorInArgument,
"Illegal Horn number");
540 std::vector<G4ThreeVector> data = fHornsPolyListRinThickZVects[(iH-1)];
541 if (numPts >= data.size()) {
542 G4Exception(
"GetHornsPolyInnerConductorThickness",
" ", FatalErrorInArgument,
"Bad Index");
544 G4ThreeVector v = data[numPts];
548 if ((iH < 1) || (iH > fUseHornsPolyNumInnerPts.size())) {
549 G4Exception(
"GetHorn2PolyInnerConductorZCoord",
" ", FatalErrorInArgument,
"Illegal Horn number");
551 std::vector<G4ThreeVector> data = fHornsPolyListRinThickZVects[(iH-1)];
552 if (numPts >= data.size()) {
553 G4Exception(
"GetHornsPolyInnerConductorZCoord",
" ", FatalErrorInArgument,
"Bad Index");
555 G4ThreeVector v = data[numPts];
559 if ((iH < 1) || (iH > fHornsPolyOuterRadius.size())) {
560 std::cerr <<
" GetHornsPolyOuterRadius, iH = " << iH <<
" size of container.. " << fHornsPolyOuterRadius.size() <<
std::endl;
561 G4Exception(
"GetHornsPolyOuterRadius",
" ", FatalErrorInArgument,
"Illegal Horn number");
564 return fHornsPolyOuterRadius[(iH-1)];
567 if ((iH < 1) || (iH > fHornsPolyZStartPos.size())) {
568 G4Exception(
"GetHornsPolyZStartPos",
" ", FatalErrorInArgument,
"Illegal Horn number");
571 return fHornsPolyZStartPos[(iH-1)];
577 return fPolyconeHornsAreParabolic[numHorn-1];
580 return fPolyconeHorn1IsParabolic;
591 if ((n < 1) || (n > 5)) {
592 G4Exception(
"SetNumberOfHornsPolycone",
" ", FatalErrorInArgument,
"Valid Number are 1, 2, 3, 4 or 5 ");
595 " We hereby declaring the number of horns used in the simulation, either simple Polycone, or engineered \n");
599 G4String msg1(
" We will be using one and only one Horn, Mother is Polycone style. \n ");
600 msg1 +=
std::string(
" We assume it is the first horn. \n");
604 fUseHorn1Polycone =
false;
605 fUseHornsPolycone =
true;
607 fUseNumberOfHornsPoly =
n;
608 fMotherHornsAllLengths.resize(n);
609 fMotherHornsAllRads.resize(n);
610 fUseHornsPolyNumInnerPts.resize(n);
611 fHornsPolyOuterRadius.resize(n);
612 fHornsPolyListRinThickZVects.resize(n);
613 fHornsLength.resize(n);
614 fHornsPolyZStartPos.resize(n);
615 fHornsPolyZStartPos[0] = 0.;
617 for (
size_t k=1;
k !=
static_cast<size_t>(
n);
k++) {
618 fHornsPolyZStartPos[
k] = -10000.*
CLHEP::m; fHornsLength[
k] = -1.;
621 fHornsOuterTubeOuterRad.resize(n);
622 fPolyconeHornsAreParabolic.resize(n);
623 fMotherHornsAllThick.resize(n);
624 for (
size_t k=0;
k !=
static_cast<size_t>(
n);
k++) fPolyconeHornsAreParabolic[
k] =
false;
625 fRemoveDecayPipeSnout =
true;
628 if (hornNumber > 5) {
629 G4Exception(
"SetPolyconeHornParabolic",
" ", FatalErrorInArgument,
"Valid Number are 1, 2, 3, 4 or 5 ");
631 if (fUseNumberOfHornsPoly < static_cast<int>(hornNumber))
632 this->SetNumberOfHornsPolycone(hornNumber);
633 std::cerr <<
" Setting index " << hornNumber-1
634 <<
" Hornpara.., size " << fPolyconeHornsAreParabolic.size() <<
std::endl;
635 fPolyconeHornsAreParabolic[hornNumber-1] = t;
638 fPolyconeHorn1IsParabolic = t;
641 if (hornNumber > 5) {
642 G4Exception(
"SetUseHornsPolyNumInnerPts",
" ", FatalErrorInArgument,
"Valid Number are 1, 2, 3, 4 or 5 ");
644 fUseHornsPolyNumInnerPts[hornNumber-1] = nElem;
645 fHornsPolyListRinThickZVects[hornNumber-1].resize(nElem);
646 fMotherHornsAllLengths[hornNumber-1].resize(nElem);
647 fMotherHornsAllRads[hornNumber-1].resize(nElem);
650 if (hornNumber > 5) {
651 G4Exception(
"SetUseHornsPolyInnerThreeVect",
" ", FatalErrorInArgument,
"Valid Number are 1, 2, 3, 4 or 5 ");
653 if (fHornsPolyListRinThickZVects[hornNumber-1].size() < iP) {
654 size_t numMiss = iP - fHornsPolyListRinThickZVects[hornNumber-1].size();
655 for (
size_t ipp = 0; ipp != numMiss; ipp++) {
656 G4ThreeVector vNew; vNew[0] = 40.; vNew[1] = 2; vNew[2] = 400.;
657 fHornsPolyListRinThickZVects[hornNumber-1].push_back(vNew);
660 for (
size_t kv=0; kv != 3; kv++)
661 fHornsPolyListRinThickZVects[hornNumber-1][iP][kv] = vVal[kv];
664 if (hornNumber > 5) {
665 G4Exception(
"SetUseHornsPolyOuterRadius",
" ", FatalErrorInArgument,
"Valid Number are 1, 2, 3, 4 or 5 ");
667 fHornsPolyOuterRadius[hornNumber-1] =
r;
670 if (hornNumber > 5) {
671 G4Exception(
"SetUseHornsPolyZStartPos",
" ", FatalErrorInArgument,
"Valid Number are 1, 2, 3, 4 or 5 ");
673 if ((hornNumber == 1) && (
std::abs(z) > 5.0*CLHEP::mm)) {
674 std::ostringstream mStrStr; mStrStr <<
" The Z start of the 1rst simple Horn must be at zero. Found value : " <<
z;
676 G4Exception(
"SetUseHornsPolyZStartPos",
" ", FatalErrorInArgument, mStr.c_str());
679 fHornsPolyZStartPos[hornNumber-1] =
z;
1038 G4RotationMatrix* fRotHornBStrpLineConnFlatB[4];
1039 G4RotationMatrix* fRotHornBStrpLineConnFlatC[4];
1172 size_t fLBNFOptimConceptDesignHornCNumStepIC[10];
1176 bool CheckOverlaps(
const G4PVPlacement *phys, G4int nres, G4double eps, G4bool
verbose)
const;
1180 void DeclareHorn1Dims();
1181 void CheckHorn1InnerConductAndTargetRadii();
1184 int GetNumberOfInnerHornSubSections(
size_t eqn,
double z1,
double z2,
int nMax)
const;
1185 int GetNumberOfInnerHorn2SubSections(
size_t eqn,
double z1,
double z2,
int nMax)
const;
1187 void Horn1InstallSpiderHanger(
const G4String &
name,
double zFromStartInnerConduct,
double zPos,
1188 G4PVPlacement *vMother );
1189 void Horn2InstallSpiderHanger(
const G4String &
name, G4PVPlacement *vMother );
1190 void Horn1PlaceAWeld(
const G4String &
name,
double z,
1193 void DeclareHorn2Dims();
1197 void PlaceFinalUpstrTarget1p2MW(G4PVPlacement *mother);
1198 void PlaceFinalDownstrTarget1p2MW(G4PVPlacement *mother);
1199 void PlaceFinalSmallTarget1p2MW(G4PVPlacement *mother);
1200 void PlaceRALTGTv1(G4PVPlacement *mother);
1205 void PlaceFinalRALTarget(G4PVPlacement *mother);
1206 void PlaceFinalUpstrTargetSimpleCylinder(G4PVPlacement *mother);
1207 void PlaceFinalUpstrTargetSimpleBox(G4PVPlacement *mother);
1212 void setMotherVolumeForHorn1();
1213 void setEntireTargetDims();
1214 void DumpAllHornsPolyconeParameters();
1237 void AdaptForMultiSphereTarget();
1274 void InitTargetModule();
1275 void InitTarget2Module();
1278 void PlaceTargetModule(
int number = 1);
1284 void PlaceTargetOuterCan(
int number = 1);
1287 void PlaceTargetInnerCan(
int number = 1);
1290 void PlaceTargetSupport(
int number = 1);
1293 void PlaceTargetObject(
int number = 1);
1376 G4double FindNTargetSpheres(
int number = 1)
const;
1410 void PlaceFinalLBNFConceptHornA();
1411 void PlaceFinalLBNFConceptTgtSupport();
1412 void PlaceFinalLBNFConceptHornB();
1413 void PlaceFinalLBNFConceptStripLinesConnectHornB();
1414 void PlaceFinalLBNFConceptHornC();
1415 void PreparePolyconForConceptHornA();
1416 void PreparePolyconForConceptHornB();
1417 void PreparePolyconForConceptHornC();
1418 void PlaceFinalLBNFConceptStripLinesConnectHornC();
1433 fRALSimpleTargetLength; }
double GetCurrentMilindWire() const
G4double fTargetDistToStartOfFlange
double GetLengthOfRockDownstreamAlcove() const
G4PVPlacement * fHorn1HallPhysPtr
G4double fPlugInnerRadius
void SetRadialRescaleFactorCst(double r)
std::vector< G4double > fHorn2UpstrOuterIOTransRadsTwo
void SetMultiSphereTargetLength(double r)
bool fInstallUpstreamHorizontalTarget
std::vector< double > fMotherHorn1AllLengths
std::vector< LBNEHornRadialEquation > fHorn1Equations
double fArbitraryOffsetHystericalOne
double fThickICDRevisedHornA
G4double fTargetFinHeight
G4String fTargetUpstrPlateMaterial
G4double fTargetCTubeReturnLengthUstr
double GetHorn1OuterTubeOuterRad() const
G4double fTargetBaffletLengthNoFlange
G4double fTargetSLengthDownstrEnd
double GetChaseWidthForLBNF() const
G4double fTargetOutHeContTubeInnerRadiusTapered
G4double fDistMCZeroToACTRN1Pts
void SetSimpleTargetWidth(double r)
bool GetUsePseudoNova() const
void SetTargetNumFinsWithWings(unsigned int n)
G4double fTargetLengthOutsideHorn
double GetSimpleTargetHeight() const
void SetDecayPipeUpstrWindowThick(double l)
G4double fTarget2ModuleTotL
G4double fTargetDSSupportOuterRingLength
std::vector< G4ThreeVector > fHorn1PolyListRinThickZVects
bool GetUseTargetModule() const
double GetTargetDensity() const
double fThickICDRevisedHornB
G4double fTargetAndPlugLengthApprox
void SetTargetFracOutHornL(double l)
G4double fTargetHeContTubeThickness
bool fUseLBNFOptimConceptDesignHornA
std::vector< G4double > fTargetHorn1ZPositions
G4double fSimpleTargetRALLength
G4double fTarget2SpecificLambda
double GetDecayPipeUpstrWindowThick() const
G4double fTargetCTubeReturnLengthDownstr
G4double fTargetDSSupportSmallConeSmallOuterRad
double fZHallHorn1ToHorn1PolyM1
G4double fTargetHeContTubeLargeConeLength
void SetTotalLength(double l)
G4double fTargetFinWWingRadius
double GetHorn2ZEqnChange(size_t k) const
G4double fTargetDownstrCanFlangeInnerRadius
bool GetUseMultiSphereTarget() const
std::vector< std::vector< G4ThreeVector > > fHornsPolyListRinThickZVects
G4double fHorn2NeckOuterRadius
G4double fHorn1DownstreamPlateLength
G4double fHorn2RadialRescale
G4double fTargetModuleTotL
double GetHorn1EffectiveLength() const
G4double fHorn1ZDEndNeckRegion
double GetMultiSphereTargetRadius() const
void SetPlugMaterial(std::string name)
std::vector< double > fZCoordCDRevisedHornC
LBNEVolumePlacements_AlignmentAlgo
G4double fCurrentMilindWire
void SetTarget2Radius(double r)
bool GetUseLBNFOptimConceptDesignHornB() const
G4double fSimpleTargetWidth
G4double fHorn2OuterTubeOuterRadMax
bool fPolyconeHorn1IsParabolic
double GetHorn2RadialRescale()
G4double fTargetFlangeThick
void SetMarsTargetHornsGDMLFilename(G4String &name)
G4double fTargetSpecificLambda
bool fInstallRALShortTarget
G4double fTargetHeContTubeLengthInHorn
std::vector< double > fHornsPolyOuterRadius
void SetNumberOfHornsPolycone(int n)
void SetHorn1Length(double l)
std::vector< G4double > fHorn1UpstrOuterIOTransPositions
double GetPlugZPosition() const
std::vector< std::vector< double > > fMotherHornsAllRads
double GetDecayPipeLongPosition() const
G4LogicalVolume * fCurrent
G4double fHorn1OuterConnectorRad
G4double fTargetCTubeReturnDownstrCutAngleStart
G4double fDecayPipeWindowThickAlum
void SetTargetHorn1HallPhysPtr(G4VPhysicalVolume *p)
bool GetInstallUpstreamHorizontalTarget() const
double GetTarget2Length() const
bool GetHorn1MotherIsPolycone() const
void SetRALSimpleTargetLength(double l)
std::vector< double > fRInCoordCDRevisedHornA
double GetHornsOuterTubeOuterRad(size_t iH) const
G4String GetMarsTargetHornsGDMLFilename() const
std::vector< G4double > fHorn1UpstrOuterIOTransLengths
double GetHorn1DeltaZEntranceToZOrigin() const
double GetBaffleWindowThickness() const
G4double fHorn1TopUpstrOuterRad
std::vector< double > fHornsPolyZStartPos
void SetHorn3AllConductorMaterial(G4String &name)
void SetUseLBNFOptimConceptDesignHornB(bool f)
void SetTargetNLambda(double N)
bool GetUseLBNFOptimConceptDesignHornC() const
void SetInstallBaffle(bool f)
void SetZHallHorn1ToHorn1PolyM1(double d)
G4double fTargetFinWidthRequired
std::vector< G4String > GetHorn2ICList() const
void SetTargetFinWidth(double l)
G4double fLengthOfRockDownstr
double GetHorn1RMinAllBG() const
G4double fBaffleOuterRadius
double GetTargetRadius() const
G4double fHorn3OCQLengthIntoHornMother
G4double fTargetAlignRingInnerRadius
G4double fHorn1IOTransInnerRad
double GetHorn1PolyOuterRadius() const
G4double fTargetHeContTubeLargeConeOuterRad
G4bool fUseSimpleTargetBox
void SetHorn2RadialRescaleCst(double r)
bool fHorn1RadiusBigEnough
G4double fHorn1InnerConnectorThick
void SetUseCDR2015Optimized(bool f)
G4double fHorn1OuterConnectorPosition
G4double fTargetFinContainerWidth
G4double fRadInnerICCurrEqHornC
G4double fTargetCTubeReturnDownstrThickTitanium
void SetRemoveRALBafflet(bool f)
G4int fTargetNumFinsUpstr
double GetHorn2DeltaZEntranceToZOrigin() const
G4String fHorn1AllCondMat
G4double fTargetHeContTubeOuterRadius
G4UImessenger * fPlacementMessenger
G4double fTargetOutHeContTubeInnerRadius
std::vector< double > GetHornsPolyInnerConductorRadiiHornARev2() const
G4double fTargetCTubeLength
bool GetUseHorn1Polycone() const
double GetTargetSLengthGraphite() const
G4double fTargetFinLengthSplitDwnstr
std::vector< int > fUseHornsPolyNumInnerPts
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
double GetSimpleTargetWidth() const
void SetUsePseudoNova(bool t)
G4double fTargetOutHeContTubeOuterSphericalEndCap
void SetMultiSphereTargetRadius(double r)
G4String fHorn1InnerCondMat
bool fUseLBNFOptimConceptDesignHornC
std::vector< double > fRInCoordCDRevisedHornC
std::vector< G4double > fHorn2UpstrOuterIOTransPositions
G4double fHorn1IOTransLength
void SetRemoveDecayPipeSnout(bool t)
G4double fTargetAlignRingThick
G4int fHorn2RadialRescaleCnt
G4String GetAbsorberGDMLFilename() const
double GetHornsPolyInnerConductorZCoord(size_t iH, size_t numPts) const
double GetBaffleInnerRadius() const
void SetTargetLengthOutsideExtra(double l)
G4double fTargetDSSupportSmallConeLargeOuterRad
void SetBaffleInnerRadius(double r)
G4double fTargetCTubeReturnDownstrRadOuter
G4double fHorn1TopUpstrLength
void SetConstructPlugInHorn1(bool t)
void SetTarget2SpecificLambda(double l)
void SetWriteGDMLFile(bool t)
void SetTargetMaterialName(G4String &aName)
double GetTarget2Radius() const
double GetHorn2ZEndIC() const
bool GetUseLBNFOptimConceptDesignHornA() const
std::vector< G4double > fHorn2ZEqnChanges
G4double fHorn1InnerConnectorRad
std::vector< G4double > fTargetHorn1InnerRadsUpstr
bool GetInstallBaffle() const
double GetDecayPipeLength() const
G4int fHorn1LongRescaleCnt
G4double fTargetZ0Downstr
double GetHornParabolicRZCoord(size_t iH, size_t k) const
G4double fTargetDSSupportOuterRingOuterRad
bool fUseCDR2015Optimized
G4double fTargetDSSupportSmallConeSmallInnerRad
G4double fRadOuterICCurrEqHorn2
G4double fMultiSphereTargetLength
bool GetUseSimpleTargetBox() const
double GetThickICDRevisedHornB() const
G4double fRadInnerOCCurrEqHornC
G4RotationMatrix fRotation
G4double GetTarget2NLambda() const
G4double fTargetOutHeContTubeTaperedLength
void SetHorn1RadialRescale(double r)
void SetInstallRALShortTarget(bool f)
double GetHorn1NeckInnerRadius() const
void SetTargetSpecificLambda(double l)
G4String fTarget2MaterialName
G4double fExtendChaseLength
void SetHornsPolyZStartPos(size_t hornNumber, double z)
G4double fTargetSLengthGraphite
size_t GetHorn2ZEqnChangeNumEqn() const
G4double fBaffleWindowThickness
double GetHorn1LongRescale() const
unsigned int GetTargetNumFinsWithWings() const
G4double fTargetCTubeReturnDownstrRadInner
void SetTargetModuleType(int i)
std::vector< double > fHornsOuterTubeOuterRad
G4double fPlugOuterRadius
void SetHorn2LongPosition(double l)
G4double fBaffleInnerRadius
std::map< G4String, LBNEVolumePlacementData > fSubVolumes
double GetHorn2OuterTubeOuterRad() const
G4double fHorn2LengthNominal
std::vector< G4double > fHorn1UpstrOuterIOTransInnerRads
G4double fTargetCTubeInnerRadius
double GetTargetSpecificLambda() const
G4double fChaseWidthForLBNF
G4double fHorn1TopDownstrOuterRad
G4double fDecayPipeWallThick
double GetPlugLength() const
G4double fBaffleZPosition
void SetTargetNoSplitM1(G4VPhysicalVolume *p)
G4String GetDecayPipeGas() const
void SetTargetRadius(double r)
std::vector< G4double > fHorn2PartsRadii
G4String fHorn2InnerCondMat
G4double fTargetCTubeUpstrLength
G4double fHorn1InnerConnectorPosition
std::vector< G4String > fHorn2IC
G4double fTargetBerylDownstrWindowRadius
double GetSimpleTargetRadius() const
G4double fTargetDSSupportLargeConeLength
void SetConstructPlug(bool t)
G4double fTargetCanLength
G4double fTargetCTubeOuterRadius
G4double fZHorn1ACRNT1Shift
G4double fHorn1OuterTubeOuterRad
G4bool fUseMultiSphereTarget
G4double fHorn1NeckInnerRadius
bool GetUseMarsTargetHorns() const
double GetTargetFinWidth() const
void SetDecayPipeRadius(double l)
G4double fHorn2LengthMargin
void SetPolyconeHorn1Parabolic(bool t)
void SetUseMultiSphereTarget(bool t)
G4double fTargetAlignRingCutAngle
std::vector< double > GetHornsPolyInnerConductorZsHornARev2() const
std::vector< double > fParams
void SetHorn2AllConductorMaterial(G4String &name)
G4double fTotalLengthUpstreamAssembly
G4double fRadOuterICCurrEqHornC
std::vector< double > GetHornsPolyInnerConductorRadiiHornBRev2() const
void SetUseSimpleTargetBox(bool t)
double GetTotalLengthOfRock() const
G4double fTargetHeContTubeSmallCylLength
void PrintAll(std::string someText)
G4VPhysicalVolume * fMother
G4double fTargetDSSupportAlRingInnerRad
double GetHornsPolyOuterRadius(size_t iH) const
G4double fTargetOutHeContTubeStraightLength
double GetHornsPolyZStartPos(size_t iH) const
G4bool fUseRoundedTargetFins
std::vector< G4double > fTargetHorn1Lengths
G4double fRadOuterOCCurrEqHorn2
void SetUseHorn1Polycone(bool t)
double GetHorn2NeckInnerRadius() const
double GetTargetLength() const
int fUseNumberOfHornsPoly
std::vector< LBNEHornRadialEquation > fHorn2Equations
void SetHorn3InnerConductorMaterial(G4String &name)
G4double fTargetDownstrCanFlangeThick
std::string fPlugMaterial
bool fRotationIsUnitMatrix
G4double fHorn2DeltaZEntranceToZOrigin
G4double fTargetCTubeUpstrRadCurve
std::vector< double > GetHornsPolyInnerConductorRadiiHornCRev2() const
G4String fHorn3InnerCondMat
G4double fTotalLengthTargetAndHorn1Hall
unsigned int fTargetNumFinsWithWings
G4double fTargetUpstrPlateThick
G4double fHorn3ICQLengthIntoHornMother
std::vector< bool > fPolyconeHornsAreParabolic
void SetSimpleTargetHeight(double r)
G4String GetTargetMaterialName() const
double GetHornsPolyInnerConductorThickness(size_t iH, size_t numPts) const
void SetDecayPipeGas(G4String &name)
G4RotationMatrix * fRotHornBStrpLineRotY
std::vector< double > fRInCoordCDRevisedHornB
std::vector< G4double > fHorn2PartsLengths
void SetHorn1PolyOuterRadius(double r)
G4String GetHorn2InnerConductorMaterial() const
G4double fTargetFinLength
G4double fHorn2LongPosition
void SetTarget2Length(double l)
G4double fTargetHeContTubeInnerRadius
double GetTargetHallZ() const
void SetCurrentMilindWire(double r)
G4double fDecayPipeLongPosition
double GetHorn2NeckLength() const
std::vector< G4double > fHorn2UpstrOuterIOTransLengths
void SetTargetDensity(double l)
G4double fTargetFlangeInnerRadius
void SetTotalLengthOfRock(double l)
G4String GetHorn2AllConductorMaterial() const
G4double fTargetInCaseUpL
bool fInstallDownstTargetSupport
G4double fTargetUpstrPlateOuterRadius
void SetPlugInnerRadius(double r)
double GetHorn1RadialSafetyMargin() const
void SetUseHorn1PolyNumInnerPts(int n)
void SetHorn2InnerConductorMaterial(G4String &name)
double GetDecayPipeRadius() const
G4double fTargetOutHeContTubeInnerSphericalEndCap
G4String GetTarget2MaterialName() const
double GetHorn1ZEndIC() const
G4int fHorn1RadialRescaleCnt
G4double fTargetCTubeReturnLengthUpstrEnd
G4double fRadiusMilindWire
double GetHorn1PolyInnerConductorThickness(size_t numPts) const
G4double fDecayPipeUpstrWindowThick
G4double fTargetDSSupportLargeConeSmallInnerRad
double GetTargetBerylDownstrWindowThick() const
double GetTarget2Density() const
G4double fTargetHeContTubeLargeConeInnerRad
G4double fHorn1RadialSafetyMargin
void SetTargetLengthIntoHorn(double l)
int fUseHorn1PolyNumInnerPts
G4String fMarsTargetHornsGDMLFilename
G4double fTargetHeContTubeBaffletLength
G4double fTargetZOffsetStart
G4double fTargetDSSupportLargeConeLargeOuterRad
std::vector< double > fZCoordCDRevisedHornA
bool fRemoveTargetAlltogether
G4double GetTargetNLambda() const
void SetSimpleTargetLength(double l)
void SetUseLBNFOptimConceptDesignHornA(bool f)
int GetTargetModuleType() const
G4double fTargetHeContTubeLength
G4String fTargetAlignRingMaterial
void SetUseRALTGTv1(bool t)
std::vector< G4double > fHorn1UpstrInnerRadsOuterUpstr
bool IsHornPnParabolic(size_t numHorn) const
std::vector< double > fMotherHorn1AllThick
G4double fTargetInCaseDnL
bool GetRemoveDecayPipeSnout() const
double GetHorn1NeckOuterRadius() const
G4double fHorn2NeckZPosition
bool GetDoInstallShield() const
G4double fTargetDSSupportAlRingThickness
G4double fTargetFlangeOuterRadius
G4double fTargetBerylUpstrWindowRadius
G4double fMultiSphereTargetRadius
double fZShiftConceptHornAStartIC
void SetHorn1InnerConductorMaterial(G4String &name)
G4double fDecayPipeRadius
void SetUseLBNFOptimConceptDesignHornC(bool f)
G4RotationMatrix fRotTgtTitCTubeHor
std::vector< double > fHornsLength
void SetPlugZPosition(double z)
std::string GetPlugMaterial() const
bool GetUseCDR2015Optimized() const
G4bool fUseSimpleTargetCylinder
double GetConductorRadiusHorn2(double zD, size_t eqn) const
bool IsHorn1PlParabolic() const
void SetHorn2LongRescale(double r)
static LBNEVolumePlacements * fInstance
G4double fTargetHeContTubeLengthUpstr
double GetHorn1NeckZPosition() const
bool fUseLBNFOptimConceptDesignHornB
G4double fHorn1NeckOuterRadius
G4double fTargetBerylDownstrWindowThick
double GetHorn1PolyInnerConductorRadius(size_t numPts) const
G4double fTargetOutCaseInnerR
G4String fTargetDownstrCanFlangeMaterial
G4double fHorn1RadialRescale
G4double fDecayPipeWindowRadiusAlum
void SetDecayPipeLongPosition(double l)
G4double fRALTargetRadius
G4double fTargetCaseDiffL
G4double fHorn2OuterTubeInnerRad
bool GetRemoveRALBafflet() const
std::vector< G4double > fHorn1UpstrInnerRadsOuterDownstr
int GetUseHornsPolyNumInnerPts(size_t i) const
void SetInstallDownstTargetSupport(bool t)
bool fCheckVolumeOverLapWC
void SetTargetLength(double l)
std::vector< std::vector< double > > fMotherHornsAllThick
void SetPolyconeHornParabolic(size_t hornNumber, bool t)
void SetRadialRescaleFactor(double r)
G4String GetHorn3AllConductorMaterial() const
G4double fSimpleTargetHeight
G4double fHorn1OuterConnectorLength
G4double fTargetCanInnerRadius
void SetUseTargetModule(bool t)
G4double fTargetDSSupportLargeConeLargeInnerRad
G4double fTargetCTubeReturnDownstrThickWater
G4double fSimpleTargetRadius
double GetBaffleLength() const
std::vector< G4double > fHorn1UpstrOuterIOTransThicks
G4double fHorn1TopUpstrInnerRad
G4RotationMatrix * fMirrorRotation
G4double fHorn1IOTransOuterRad
std::vector< double > GetHornsPolyInnerConductorZsHornCRev2() const
G4double fRALSimpleTargetLength
G4double fDecayPipeWindowThickBeryl
G4RotationMatrix fRotVertical
double GetHorn2LongRescale() const
void SetHorn1RadiusBigEnough(bool t)
G4double fDecayPipeWindowZLocation
std::vector< G4double > fHorn1UpstrInnerRadsDownstr
void SetPlugOuterRadius(double r)
double GetHornsPolyInnerConductorRadius(size_t iH, size_t numPts) const
void SetPlugLength(double l)
void SetUseTarget2Module(bool t)
void SetTarget2MaterialName(G4String &aName)
G4double fTargetCTubeReturnLengthUpstr
G4String fTargetCTubeMaterial
void SetRemoveTargetAlltogether(bool t)
double GetHorn1Length() const
void SetHorn1HallPhysPtr(G4PVPlacement *p)
G4bool fConstructPlugInHorn1
G4String fTargetMaterialName
double GetHorn1PolyInnerConductorZCoord(size_t numPts) const
bool GetRemoveTargetAlltogether()
G4double fDecayPipeLengthCorrection
G4double fHorn1NeckLength
G4double fTargetDownstrCanFlangeOuterRadius
G4RotationMatrix fRotTgtTitCTubeVert
G4double fTargetFinSpacingLength
G4double fHorn1TopDownstrLength
double GetRALSimpleTargetLength() const
std::vector< G4double > fTargetHorn1TransThick
std::vector< G4double > fHorn1UpstrZPositions
double GetRadiusMilindWire() const
double GetTargetLengthIntoHorn() const
G4double fHorn1LongRescale
std::vector< G4double > fHorn1UpstrInnerRadsUpstr
bool fRemoveDecayPipeSnout
G4double GetTargetLengthOutsideExtra() const
void SetUseMarsTargetHorns(bool v)
G4double fTargetLengthOutsideExtra
bool GetConstructPlug() const
bool fHorn1MotherIsPolycone
double GetThickICDRevisedHornC() const
G4double fTargetCTubeReturnHOffset
G4double fTargetAlignRingOuterRadius
void SetTargetSLengthGraphite(double l)
G4String GetHorn1AllConductorMaterial() const
int GetTarget2ModuleType() const
void SetHornsPolyOuterRadius(size_t hornNumber, double r)
void SetTarget2Density(double l)
G4double fTargetCanOuterRadius
G4double fHorn1NeckZPosition
void SetLengthOfRockDownstreamAlcove(double l)
G4String fAbsorberGDMLFilename
G4double fTargetBaffletFlangeLength
std::vector< G4double > fHorn1UpstrLengths
bool GetConstructPlugInHorn1() const
void SetSimpleTargetRadius(double r)
double GetZHallHorn1ToHorn1PolyM1()
G4double fRadOuterOCCurrEqHornC
G4double fHorn2InnerIOTransLength
double GetHornParabolicThick(size_t iH, size_t k) const
bool GetUseSimpleTargetCylinder() const
std::vector< double > fZCoordCDRevisedHornB
G4double fHorn2LongRescale
void SetUseHornsPolyNumInnerPts(size_t hornNumber, size_t nElem)
G4double fTargetUpstrPlateHoleRadius
double GetHorn1NeckLength() const
G4VPhysicalVolume * fTargetHorn1HallPhysPtr
G4double fTargetDSSupportConnRing
double GetThickICDRevisedHornA() const
G4String fTargetFlangeMaterial
void SetDecayPipeLength(double l)
void SetHorn2RadialRescale(double r)
double GetSimpleTargetLength() const
G4double fSimpleTargetLength
bool GetUseRALTGTv1() const
void SetHorn1LongRescale(double r)
std::vector< double > fMotherHorn1AllRads
void SetHornsPolyInnerThreeVect(size_t hornNumber, size_t iP, G4ThreeVector vVal)
double GetHorn2NeckZPosition() const
G4double fTargetDSSupportOuterRingInnerRad
void SetRadiusMilindWire(double r)
bool GetInstallDownstTargetSupport() const
double GetConductorRadiusHorn1(double zD, size_t eqn) const
G4String fTargetCanMaterial
G4int fTargetCTubeUpstrNumSegCurve
G4double fTargetDSSupportSmallConeLargeInnerRad
const G4LogicalVolume * fTopLogicalVolume
double GetHornParabolicRIn(size_t iH, size_t k) const
G4double fHorn1InnerConnectorLength
G4String fHorn2AllCondMat
G4double fHorn2RadialRescaleCst
G4double fTargetFinLengthSplitUpstr
G4int fHorn2LongRescaleCnt
void SetBaffleLength(double l)
G4String GetHorn1InnerConductorMaterial() const
G4double fWaterLayerThickInHorns
void SetTargetBerylDownstrWindowThick(double t)
double GetZShiftConceptHornAStartIC()
bool GetUseRoundedTargetFins() const
G4double fTargetHeContTubeSmallConeOuterRad
G4double fHorn2NeckInnerRadius
G4double fTarget2OutCaseL
void SetTarget2ModuleType(int i)
G4double fThicknessBafflet
G4String fHorn3AllCondMat
G4double fHorn1OuterConnectorThick
G4double fTargetHeContTubeSmallConeLength
double GetPlugInnerRadius() const
int GetNumberOfHornsPolycone() const
G4double fTargetFinExtraWidth
G4double fTargetBaffletOutRadius
void SetAbsorberGDMLFilename(G4String &name)
void SetHorn1PolyInnerThreeVect(size_t iP, G4ThreeVector vVal)
G4double fTargetOutHeContTubeOuterRadius
bool GetUseTarget2Module() const
G4double fTargetDSSupportSmallConeLength
G4double fHorn2NeckLength
double fThickICDRevisedHornC
G4double fTargetUpstrDwnstrMargin
std::vector< G4double > fTargetHorn1InnerRadsDownstr
G4VPhysicalVolume * fTargetNoSplitM1
double GetPlugOuterRadius() const
void SetLongRescaleFactor(double r)
G4double GetTargetFracOutHornL() const
double GetHorn1ZDEndNeckRegion() const
void SetBaffleZPosition(double z)
bool GetInstallRALShortTarget() const
std::vector< G4double > fHorn2UpstrOuterIOTransRadsOne
G4double fHorn2OuterTubeOuterRad
size_t GetHornParabolicNumInnerPts(size_t iH) const
G4double fTargetDSSupportLargeConeSmallOuterRad
G4double fHorn1OuterTubeInnerRad
void SetHorn1RadialSafetyMargin(double t)
G4double fTargetBerylUpstrWindowThick
G4double fTargetUpstrUpstrMargin
G4double fTargetAlignRingSpacing
G4double fTargetLengthIntoHorn
double GetHorn2LongPosition() const
double GetBaffleZPosition() const
G4double fTarget2OutCaseInnerR
G4double fTargetCTubeUpstrOffset
G4double fDecayPipeWindowRadiusBeryl
double GetDecayHallZ() const
bool GetWriteGDMLFile() const
void SetUseSimpleTargetCylinder(bool t)
double GetAbsorberHallZ() const
G4double fTargetCTubeReturnDownstrCutAngleSize
double GetTarget2SpecificLambda() const
void SetUse1p2MWSmallTgt(bool t)
G4String GetHorn3InnerConductorMaterial() const
void SetTarget2NLambda(double N)
LBNEVolumePlacements_AlignmentAlgo fAlignmentModel
int GetUseHorn1PolyNumInnerPts() const
double GetHorn1RMaxAllBG() const
std::vector< G4String > GetHorn1ICList() const
QTextStream & endl(QTextStream &s)
G4int fTargetNumFinsInHorn
G4double fTargetHeContTubeColdHeCurvature
G4double fTargetDistFlangeToTargetStart
std::vector< double > GetHornsPolyInnerConductorZsHornBRev2() const
G4double fTargetAndBaffleLengthApprox
bool GetUse1p2MWSmallTgt() const
G4double fHorn2OffsetIOTr1
void SetUseRoundedTargetFins(bool t)
bool IsHorn1RadiusBigEnough() const
G4double fTargetHeContTubeSmallConeInnerRad
void SetHorn1AllConductorMaterial(G4String &name)
std::vector< std::vector< double > > fMotherHornsAllLengths
void SetWaterLayerThickInHorns(double l)
std::vector< G4String > fHorn1IC
void SetTargetLengthOutsideHorn(double l)
void SetInstallUpstreamHorizontalTarget(bool f)
void SetDoInstallShield(bool v)
G4double fTargetFracOutHornL
G4double fTargetOutHeContTubeOuterRadiusTapered
G4double fDecayPipeLength
double fHorn1PolyOuterRadius
double GetHorn2NeckOuterRadius() const