LBNEPlacementMessenger.hh
Go to the documentation of this file.
1 #ifndef LBNEPLACEMENTMESSENGER_H
2 #define LBNEPLACEMENTMESSENGER_H 1
3 
4 #include <vector>
5 
6 //#include "G4VUserVolumePlacement.hh"
7 #include "globals.hh"
8 #include "G4ThreeVector.hh"
9 #include "G4RotationMatrix.hh"
10 #include "G4UImessenger.hh"
11 #include "G4UIdirectory.hh"
12 #include "G4UIcmdWithADoubleAndUnit.hh"
13 #include "G4UIcmdWithADouble.hh"
14 #include "G4UIcmdWithABool.hh"
15 #include "G4UIcmdWithADoubleAndUnit.hh"
16 #include "G4PVPlacement.hh"
17 #include "G4UIcmdWith3VectorAndUnit.hh"
18 //
19 // Geant User Interface utility for handling the nominal paramtof the geometry.
20 //
21 class LBNEPlacementMessenger: public G4UImessenger {
22 
23 public:
26  void SetNewValue(G4UIcommand* command, G4String cmd); // Will set data in the singleton LBNEVolumePlacements
27 
28 private:
31 
32 // G4UIdirectory* fLBNEDir;
33 // G4UIdirectory* fdetDir;
34 
35  G4UIcmdWithADoubleAndUnit* fWaterLayerThickInHorn;
36  G4UIcmdWithADoubleAndUnit* fHorn1Length;
37  G4UIcmdWithADoubleAndUnit* fBaffleLength;
38  G4UIcmdWithADoubleAndUnit* fBaffleInnerRadius;
39  G4UIcmdWithADoubleAndUnit* fBaffleZPosition;
40  G4UIcmdWithADoubleAndUnit* fPlugLength;
41  G4UIcmdWithADoubleAndUnit* fPlugInnerRadius;
42  G4UIcmdWithADoubleAndUnit* fPlugOuterRadius;
43  G4UIcmdWithADoubleAndUnit* fPlugZPosition;
44  G4UIcmdWithABool* fConstructPlug;
45  G4UIcmdWithABool* fConstructPlugInHorn1;
46 //
47  G4UIcmdWithADoubleAndUnit* fTargetSLengthGraphite;
48  G4UIcmdWithADoubleAndUnit* fTargetFinWidth;
49  G4UIcmdWithADoubleAndUnit* fTargetLengthIntoHorn;
50  G4UIcmdWithADoubleAndUnit* fTargetLengthOutsideHorn;
51  G4UIcmdWithADoubleAndUnit* fTargetBerylCapThickness;
52  G4UIcmdWithAString* fTargetMaterial;
53  G4UIcmdWithAString* fPlugMaterial;
54  G4UIcmdWithADoubleAndUnit* fTargetDensity;
55  // Oct-Nov 2016
56  G4UIcmdWithAnInteger* fTargetNumFinsWithWings;
57 //
58 // December 2013: Simple target.
59 //
60  G4UIcmdWithABool* fUseSimpleTargetBox;
61  G4UIcmdWithABool* fUseSimpleTargetCylinder;
62  // The length will be set by the cmd fTargetSLengthGraphite
63  G4UIcmdWithADoubleAndUnit* fSimpleTargetRadius; // not used if box.
64  G4UIcmdWithADoubleAndUnit* fSimpleTargetHeight; // not used if cylinder
65  G4UIcmdWithADoubleAndUnit* fSimpleTargetWidth; // not used if cylinder
66  G4UIcmdWithADoubleAndUnit* fSimpleTargetLength; // used if either cylinder or box
67 
68 //August 2014, Quynh added
69  G4UIcmdWithABool* fUseMultiSphereTarget;
70  G4UIcmdWithADoubleAndUnit* fMultiSphereTargetRadius;
71 
72 
73  G4UIcmdWithADouble* fHorn1RadialRescale;
74  G4UIcmdWithADouble* fHorn1LongRescale;
75  G4UIcmdWithAString* fHorn1InnerCondMat;
76  G4UIcmdWithAString* fHorn1AllCondMat;
77  G4UIcmdWithAString* fHornsInnerCondMat;
78  G4UIcmdWithAString* fHornsAllCondMat;
79  G4UIcmdWithADoubleAndUnit* fHorn1RadialSafetyMargin;
80  G4UIcmdWithABool* fHorn1RadiusBigEnough;
81 //
82  G4UIcmdWithADouble* fHorn2RadialRescale;
83 // December 16 2014: The mapping will now be Rnew = rOld* fHorn2RadialRescale + fHorn2RadialRescaleCst
84  G4UIcmdWithADoubleAndUnit* fHorn2RadialRescaleCst;
85  G4UIcmdWithADouble* fHorn2LongRescale;
86  G4UIcmdWithADoubleAndUnit* fHorn2LongPosition; // from the origin MCZero to the middle of Horn 2
87  G4UIcmdWithAString* fHorn2InnerCondMat;
88  G4UIcmdWithAString* fHorn2AllCondMat;
89  G4UIcmdWithAString* fHorn3InnerCondMat;
90  G4UIcmdWithAString* fHorn3AllCondMat;
91 //
92  G4UIcmdWithADoubleAndUnit* fDecayPipeLength;
93  G4UIcmdWithADoubleAndUnit* fDecayPipeRadius;
94  G4UIcmdWithADoubleAndUnit* fDecayPipeLongPosition; // From the target
95  G4UIcmdWithADoubleAndUnit* fDecayPipeUpstreamWindowThickness;
96  G4UIcmdWithAString* fDecayPipeGas; // Air or Helium supported
97 //
98 // March 10-15 Placing a magnetic field inside the decay pipe.
99 // Assuming coming from a wire. Suggested by Millind Diwan
100 //
101  G4UIcmdWithADoubleAndUnit* fRadiusMilindWire;
102  G4UIcmdWithADoubleAndUnit* fCurrentMilindWire;
103 
104  G4UIcmdWithADoubleAndUnit* fLengthOfRockDownstr;
105 
106  G4UIcmdWithABool* fUseMarsTargetHorns; // if true (default is false), we use MARS target and horns rather than usual g4lbne geometry
107 
108  G4UIcmdWithAString* fMarsTargetHornsGDMLFilename;
109 
110  G4UIcmdWithAString* fAbsorberGDMLFilename;
111 
112  G4UIcmdWithABool* fWriteGDMLFile;
113 
114  G4UIcmdWithABool* fInstallShield; // if true (default), we place roated chunk of steel surround Horns
115 //
116 // February 2014: 1.2 MW option.
117 //
118  G4UIcmdWithABool* fUse1p2MW;
119  G4UIcmdWithABool* fUse1p2MWSmallTgt;
120  G4UIcmdWithABool* fUseRALTGTv1;
121 // March 2014: implementing round corners. Only for the 1.2 MW target.
122 //
123  G4UIcmdWithABool* fUseRoundedTargetFins;
124 //
125 // August, September 2014: Adding the Polycone Horn1 volume, with a maximum of 20 inner points on the Z-plane.
126 //
127  G4UIcmdWithABool* fUseHorn1Polycone;
128  G4UIcmdWithAnInteger* fUseHorn1PolyNumInnerPts;
129  std::vector<G4UIcmdWith3VectorAndUnit*> fHorn1PolyListRinThickZVects;
130  G4UIcmdWithADoubleAndUnit* fHorn1PolyOuterRadius;
131 //
132 // October 2014: Remove the decay pipe snout to leave more space to extend Horns..
133 //
134  G4UIcmdWithABool* fRemoveDecayPipeSnout;
135 //
136 // October 2015: Remove the target (and break the Hadron dump, but that part will be be implemented.. )
137 //
138  G4UIcmdWithABool* fRemoveTargetAlltogether;
139 //
140 // August 2015: add more Polycones Horn1. We limit ourself to 5
141 //
142  G4UIcmdWithAnInteger* fUseNumberOfHornsPoly; // from 1 to 5
143  // if one 1, revert to the version Sept 2014, we keep Horn2.
144 
145  G4UIcmdWithAnInteger* fUseHorn2PolyNumInnerPts;
146  std::vector<G4UIcmdWith3VectorAndUnit*> fHorn2PolyListRinThickZVects;
147  G4UIcmdWithADoubleAndUnit* fHorn2PolyOuterRadius;
148  G4UIcmdWithADoubleAndUnit* fHorn2PolyZStartPos;
149 
150  G4UIcmdWithAnInteger* fUseHorn3PolyNumInnerPts;
151  std::vector<G4UIcmdWith3VectorAndUnit*> fHorn3PolyListRinThickZVects;
152  G4UIcmdWithADoubleAndUnit* fHorn3PolyOuterRadius;
153  G4UIcmdWithADoubleAndUnit* fHorn3PolyZStartPos;
154 
155  G4UIcmdWithAnInteger* fUseHorn4PolyNumInnerPts;
156  std::vector<G4UIcmdWith3VectorAndUnit*> fHorn4PolyListRinThickZVects;
157  G4UIcmdWithADoubleAndUnit* fHorn4PolyOuterRadius;
158  G4UIcmdWithADoubleAndUnit* fHorn4PolyZStartPos;
159 
160  G4UIcmdWithAnInteger* fUseHorn5PolyNumInnerPts;
161  std::vector<G4UIcmdWith3VectorAndUnit*> fHorn5PolyListRinThickZVects;
162  G4UIcmdWithADoubleAndUnit* fHorn5PolyOuterRadius;
163  G4UIcmdWithADoubleAndUnit* fHorn5PolyZStartPos;
164 
165  G4UIcmdWithAnInteger* fSetPolyconeHornParabolic; // from 1 to 5. Set the corresponding horn to parabolic shape, ala LoSecco.
166 
167  void SetMyUnitsAndConditions(G4UIcmdWithADoubleAndUnit *cmd, double value);
168 
169  // John Back, March 2016, target module (e.g. SAT) options
170  G4UIcmdWithABool* fUseTargetModule;
171  G4UIcmdWithAnInteger* fTargetModuleType; // The target module type
172  G4UIcmdWithADoubleAndUnit* fTargetRadius; // Target object radius
173  G4UIcmdWithADoubleAndUnit* fTargetLength; // Target object length
174  G4UIcmdWithADouble* fTargetNLambda; // Target object length via nucl int length
175  G4UIcmdWithADouble* fTargetFracOutHornL; // Target module length fraction outside Horn1
176  G4UIcmdWithADoubleAndUnit* fTargetLengthOutsideExtra; // Target module z shift
177  // Second target module options
178  G4UIcmdWithABool* fUseTarget2Module;
179  G4UIcmdWithAnInteger* fTarget2ModuleType; // The target module type
180  G4UIcmdWithADoubleAndUnit* fTarget2Radius; // Target object radius
181  G4UIcmdWithADoubleAndUnit* fTarget2Length; // Target object length
182  G4UIcmdWithADouble* fTarget2NLambda; // Target object length via nucl int length
183  G4UIcmdWithAString* fTarget2Material; // Material name
184 
185  // June 2016: Starting on the detailed representation of the 3 Horns for LBNF, optimized and conceptual engineering.
186  //
190  //
191  // The installation of a slightly long mother volume for HornA mother volume inadvertantly shifted the
192  // baffle and the horizontal fin target.
193  //
194  // To facilitate the comparison, we give the option to remove both.
195  //
196  G4UIcmdWithABool* fInstallBaffle;
197  G4UIcmdWithABool* fRemoveRALBafflet;
199  G4UIcmdWithABool* fInstallRALShortTarget;
200  G4UIcmdWithADoubleAndUnit* fRALSimpleTargetLength;
201  //
202  // December 2016, install a cmd card to remove entirely the downstream target support.
203  //
204  G4UIcmdWithABool* fInstallDownstTargetSupport;
205  //
206  // January 2017, install a convenience data cards that configures the whole thing for the Conceptual Design,
207  // Optimized version, Realistic (or engineered) version, Rev 2.
208  //
210  //
211  // February 2017, install a convenience data cards that configure the horns as it was in the CDR2015, optimized
212  // version. Since we re-configure the code, using either NuMI, or a set of Polycones horns, more specific
213  // if statements need to be put in place.
214  //
215  G4UIcmdWithABool* fUseCDR2015Optimized;
216 
217 };
218 #endif
G4UIcmdWithABool * fInstallRALShortTarget
G4UIcmdWithABool * fHorn1RadiusBigEnough
G4UIcmdWithADoubleAndUnit * fHorn4PolyZStartPos
G4UIcmdWithAnInteger * fTargetNumFinsWithWings
G4UIcmdWithABool * fUseSimpleTargetCylinder
G4UIcmdWithADouble * fTarget2NLambda
G4UIcmdWithABool * fInstallDownstTargetSupport
G4UIcmdWithAnInteger * fTarget2ModuleType
G4UIcmdWithABool * fInstallShield
G4UIcmdWithADoubleAndUnit * fSimpleTargetHeight
G4UIcmdWithADoubleAndUnit * fRALSimpleTargetLength
G4UIcmdWithAString * fHorn3AllCondMat
std::vector< G4UIcmdWith3VectorAndUnit * > fHorn1PolyListRinThickZVects
void SetNewValue(G4UIcommand *command, G4String cmd)
G4UIcmdWithADoubleAndUnit * fTargetLengthIntoHorn
G4UIcmdWithADoubleAndUnit * fTargetBerylCapThickness
int command
G4UIcmdWithABool * fUseLBNFOptimConceptDesignHornA
G4UIcmdWithADoubleAndUnit * fDecayPipeLongPosition
G4UIcmdWithADouble * fHorn2LongRescale
G4UIcmdWithADoubleAndUnit * fTargetLengthOutsideExtra
G4UIcmdWithAString * fHorn2InnerCondMat
G4UIcmdWithADoubleAndUnit * fTargetDensity
G4UIcmdWithADoubleAndUnit * fHorn3PolyOuterRadius
G4UIcmdWithADoubleAndUnit * fMultiSphereTargetRadius
G4UIcmdWithADouble * fHorn1LongRescale
G4UIcmdWithADoubleAndUnit * fHorn2PolyZStartPos
G4UIcmdWithABool * fConstructPlugInHorn1
G4UIcmdWithAnInteger * fUseNumberOfHornsPoly
G4UIcmdWithAString * fHornsAllCondMat
G4UIcmdWithABool * fUse1p2MWSmallTgt
G4UIcmdWithABool * fUseLBNFOptimConceptDesignHornB
G4UIcmdWithAnInteger * fUseHorn5PolyNumInnerPts
G4UIcmdWithADoubleAndUnit * fDecayPipeLength
G4UIcmdWithADoubleAndUnit * fDecayPipeRadius
G4UIcmdWithADoubleAndUnit * fHorn5PolyZStartPos
G4UIcmdWithABool * fUseLBNFOptimConceptDesignHornC
G4UIcmdWithADoubleAndUnit * fRadiusMilindWire
G4UIcmdWithADoubleAndUnit * fPlugLength
G4UIcmdWithAString * fHorn1AllCondMat
G4UIcmdWithADoubleAndUnit * fBaffleInnerRadius
G4UIcmdWithABool * fRemoveTargetAlltogether
G4UIcmdWithADoubleAndUnit * fSimpleTargetLength
G4UIcmdWithADoubleAndUnit * fBaffleZPosition
G4UIcmdWithABool * fInstallBaffle
G4UIcmdWithAnInteger * fUseHorn2PolyNumInnerPts
G4UIcmdWithADoubleAndUnit * fCurrentMilindWire
G4UIcmdWithABool * fRemoveRALBafflet
G4UIcmdWithABool * fUseTarget2Module
G4UIcmdWithADoubleAndUnit * fLengthOfRockDownstr
G4UIcmdWithAString * fHornsInnerCondMat
G4UIcmdWithADoubleAndUnit * fHorn1RadialSafetyMargin
G4UIcmdWithADoubleAndUnit * fHorn2RadialRescaleCst
G4UIcmdWithABool * fUseRoundedTargetFins
G4UIcmdWithADoubleAndUnit * fHorn4PolyOuterRadius
G4UIcmdWithADoubleAndUnit * fSimpleTargetWidth
G4UIcmdWithAString * fDecayPipeGas
G4UIcmdWithAString * fTarget2Material
G4UIcmdWithADoubleAndUnit * fPlugInnerRadius
G4UIcmdWithADoubleAndUnit * fHorn2PolyOuterRadius
G4UIcmdWithADoubleAndUnit * fBaffleLength
G4UIcmdWithADoubleAndUnit * fTargetSLengthGraphite
G4UIcmdWithADouble * fHorn2RadialRescale
G4UIcmdWithAString * fHorn1InnerCondMat
G4UIcmdWithADoubleAndUnit * fDecayPipeUpstreamWindowThickness
G4UIcmdWithADoubleAndUnit * fHorn3PolyZStartPos
G4UIcmdWithAnInteger * fUseHorn3PolyNumInnerPts
G4UIcmdWithADoubleAndUnit * fSimpleTargetRadius
G4UIcmdWithAString * fMarsTargetHornsGDMLFilename
std::vector< G4UIcmdWith3VectorAndUnit * > fHorn5PolyListRinThickZVects
G4UIcmdWithADoubleAndUnit * fHorn1PolyOuterRadius
G4UIcmdWithADoubleAndUnit * fTargetLengthOutsideHorn
void SetMyUnitsAndConditions(G4UIcmdWithADoubleAndUnit *cmd, double value)
G4UIcmdWithABool * fWriteGDMLFile
G4UIcmdWithADoubleAndUnit * fHorn1Length
G4UIcmdWithADoubleAndUnit * fTarget2Length
G4UIcmdWithAString * fHorn3InnerCondMat
G4UIcmdWithADoubleAndUnit * fPlugOuterRadius
G4UIcmdWithADoubleAndUnit * fPlugZPosition
G4UIcmdWithADoubleAndUnit * fTargetLength
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1225
G4UIcmdWithABool * fUseHorn1Polycone
G4UIcmdWithABool * fUseCDR2015Optimized
G4UIcmdWithAnInteger * fSetPolyconeHornParabolic
G4UIcmdWithABool * fInstallUpstreamHorizontalTarget
std::vector< G4UIcmdWith3VectorAndUnit * > fHorn2PolyListRinThickZVects
G4UIcmdWithADoubleAndUnit * fTargetFinWidth
G4UIcmdWithADouble * fTargetFracOutHornL
std::vector< G4UIcmdWith3VectorAndUnit * > fHorn3PolyListRinThickZVects
G4UIcmdWithABool * fUseMultiSphereTarget
G4UIcmdWithADouble * fTargetNLambda
G4UIcmdWithADoubleAndUnit * fTarget2Radius
G4UIcmdWithABool * fUseMarsTargetHorns
static LBNEPlacementMessenger * fInstance
G4UIcmdWithABool * fUseConceptDesignOptimEngineered
G4UIcmdWithABool * fUseTargetModule
G4UIcmdWithADoubleAndUnit * fHorn5PolyOuterRadius
G4UIcmdWithAString * fPlugMaterial
G4UIcmdWithAnInteger * fUseHorn4PolyNumInnerPts
list cmd
Definition: getreco.py:22
G4UIcmdWithAnInteger * fUseHorn1PolyNumInnerPts
G4UIcmdWithABool * fConstructPlug
G4UIcmdWithABool * fRemoveDecayPipeSnout
G4UIcmdWithADouble * fHorn1RadialRescale
G4UIcmdWithAString * fHorn2AllCondMat
std::vector< G4UIcmdWith3VectorAndUnit * > fHorn4PolyListRinThickZVects
G4UIcmdWithAString * fTargetMaterial
G4UIcmdWithABool * fUseSimpleTargetBox
G4UIcmdWithADoubleAndUnit * fHorn2LongPosition
G4UIcmdWithAnInteger * fTargetModuleType
G4UIcmdWithADoubleAndUnit * fTargetRadius
static LBNEPlacementMessenger * Instance()
G4UIcmdWithAString * fAbsorberGDMLFilename
G4UIcmdWithADoubleAndUnit * fWaterLayerThickInHorn