26 : BesEmc( BesDet ) {
27 fBesEmcGeometry = besEMCGeometry;
28
29 BesdetDir = new G4UIdirectory( "/calor/" );
30 BesdetDir->SetGuidance( "Bes calorimeter detector control." );
31
32 verboseCmd = new G4UIcmdWithAnInteger( "/calor/verbose", this );
33 verboseCmd->SetGuidance( "Set Verbose level of calor management category." );
34 verboseCmd->SetGuidance( " 0 : Important information" );
35 verboseCmd->SetGuidance( " 1 : Base information" );
36 verboseCmd->SetGuidance( " 2 : More..." );
37 verboseCmd->SetParameterName( "level", true );
38 verboseCmd->SetRange( "level>=0" );
39 verboseCmd->SetDefaultValue( 0 );
40
41 CryMaterCmd = new G4UIcmdWithAString( "/calor/setCryMat", this );
42 CryMaterCmd->SetGuidance( "Select Material of the Crystal." );
43 CryMaterCmd->SetParameterName( "choice", true, true );
44
45
46 CasingMaterCmd = new G4UIcmdWithAString( "/calor/setCasMat", this );
47 CasingMaterCmd->SetGuidance( "Select Material of the Casing." );
48 CasingMaterCmd->SetParameterName( "choice", true, true );
49
50
51 CasingThickCmd = new G4UIcmdWith3VectorAndUnit( "/calor/setCasThick", this );
52 CasingThickCmd->SetGuidance( "Set Thickness of the Casing" );
53 CasingThickCmd->SetParameterName( "TyvekThk", "AlThk", "MylarThk", true );
54 CasingThickCmd->SetRange( "Size>=0." );
55 CasingThickCmd->SetUnitCategory( "Length" );
56 CasingThickCmd->SetDefaultValue( fBesEmcGeometry->GetCasingThickness() / mm );
57 CasingThickCmd->SetDefaultUnit( "mm" );
58
59
60 SizeRminCmd = new G4UIcmdWithADoubleAndUnit( "/calor/setSizeRmin", this );
61 SizeRminCmd->SetGuidance( "Set Rmin size of the barrel calorimeter" );
62 SizeRminCmd->SetParameterName( "Size", true );
63 SizeRminCmd->SetRange( "Size>0." );
64 SizeRminCmd->SetUnitCategory( "Length" );
65 SizeRminCmd->SetDefaultValue( fBesEmcGeometry->GetBSCRmin() / cm );
66 SizeRminCmd->SetDefaultUnit( "cm" );
67
68
69 NbPhiCmd = new G4UIcmdWithAnInteger( "/calor/setNbPhi", this );
70 NbPhiCmd->SetGuidance( "Set number of crystals at phi direction." );
71 NbPhiCmd->SetParameterName( "NbCrystals", false );
72 NbPhiCmd->SetRange( "NbCrystals>0 && NbCrystals<=150" );
73
74
75 NbThetaCmd = new G4UIcmdWithAnInteger( "/calor/setNbTheta", this );
76 NbThetaCmd->SetGuidance( "Set number of crystals at theta direction." );
77 NbThetaCmd->SetParameterName( "NbCrystals", false );
78 NbThetaCmd->SetRange( "NbCrystals>0 && NbCrystals<=22" );
79
80
81 StartIDThetaCmd = new G4UIcmdWithAnInteger( "/calor/setStartTheta", this );
82 StartIDThetaCmd->SetGuidance( "Set ID of starting crystals at theta direction." );
83 StartIDThetaCmd->SetParameterName( "IDCrystal", false );
84 StartIDThetaCmd->SetRange( "IDCrystal>=0 && IDCrystal<22" );
85
86
87 LengthCmd = new G4UIcmdWithADoubleAndUnit( "/calor/setCryLength", this );
88 LengthCmd->SetGuidance( "Set Length of crystals of barrel calorimeter" );
89 LengthCmd->SetParameterName( "Size", true );
90 LengthCmd->SetRange( "Size>0." );
91 LengthCmd->SetUnitCategory( "Length" );
92 LengthCmd->SetDefaultValue( fBesEmcGeometry->GetBSCCryLength() / cm );
93 LengthCmd->SetDefaultUnit( "cm" );
94
95
96 UpdateCmd = new G4UIcmdWithoutParameter( "/calor/update", this );
97 UpdateCmd->SetGuidance( "Update calorimeter geometry." );
98 UpdateCmd->SetGuidance( "This command MUST be applied before \"beamOn\" " );
99 UpdateCmd->SetGuidance( "if you changed geometrical value(s)." );
100
101
102 MagFieldCmd = new G4UIcmdWithADoubleAndUnit( "/calor/setField", this );
103 MagFieldCmd->SetGuidance( "Define magnetic field." );
104 MagFieldCmd->SetGuidance( "Magnetic field will be in Z direction." );
105 MagFieldCmd->SetParameterName( "Bz", true );
106 MagFieldCmd->SetRange( "Bz>=0." );
107 MagFieldCmd->SetUnitCategory( "Magnetic flux density" );
108 MagFieldCmd->SetDefaultValue( BesEmc->GetMagField() / tesla );
109 MagFieldCmd->SetDefaultUnit( "tesla" );
110
111}