BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
BesEmcDetectorMessenger Class Reference

#include <BesEmcDetectorMessenger.hh>

Inheritance diagram for BesEmcDetectorMessenger:

Public Member Functions

 BesEmcDetectorMessenger (BesEmcConstruction *, BesEmcGeometry *)
 ~BesEmcDetectorMessenger ()
void SetNewValue (G4UIcommand *, G4String)
G4String GetCurrentValue (G4UIcommand *)
 BesEmcDetectorMessenger (BesEmcConstruction *, BesEmcGeometry *)
 ~BesEmcDetectorMessenger ()
void SetNewValue (G4UIcommand *, G4String)
G4String GetCurrentValue (G4UIcommand *)
 BesEmcDetectorMessenger (BesEmcConstruction *, BesEmcGeometry *)
 ~BesEmcDetectorMessenger ()
void SetNewValue (G4UIcommand *, G4String)
G4String GetCurrentValue (G4UIcommand *)

Detailed Description

Constructor & Destructor Documentation

◆ BesEmcDetectorMessenger() [1/3]

BesEmcDetectorMessenger::BesEmcDetectorMessenger ( BesEmcConstruction * BesDet,
BesEmcGeometry * besEMCGeometry )

Definition at line 24 of file BesEmcDetectorMessenger.cc.

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 // CryMaterCmd->AvailableForStates(Idle);
45
46 CasingMaterCmd = new G4UIcmdWithAString( "/calor/setCasMat", this );
47 CasingMaterCmd->SetGuidance( "Select Material of the Casing." );
48 CasingMaterCmd->SetParameterName( "choice", true, true );
49 // CasingMaterCmd->AvailableForStates(Idle);
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 // CasingThickCmd->AvailableForStates(Idle);
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 // SizeRminCmd->AvailableForStates(Idle);
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 // NbPhiCmd->AvailableForStates(Idle);
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 // NbThetaCmd->AvailableForStates(Idle);
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 // StartIDThetaCmd->AvailableForStates(Idle);
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 // LengthCmd->AvailableForStates(Idle);
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 // UpdateCmd->AvailableForStates(Idle);
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 // MagFieldCmd->AvailableForStates(Idle);
111}

◆ ~BesEmcDetectorMessenger() [1/3]

BesEmcDetectorMessenger::~BesEmcDetectorMessenger ( )

Definition at line 115 of file BesEmcDetectorMessenger.cc.

115 {
116 delete verboseCmd;
117 delete LengthCmd;
118 delete NbPhiCmd;
119 delete NbThetaCmd;
120 delete StartIDThetaCmd;
121 delete CryMaterCmd;
122 delete CasingMaterCmd;
123 delete CasingThickCmd;
124 delete SizeRminCmd;
125 delete UpdateCmd;
126 delete MagFieldCmd;
127 delete BesdetDir;
128}

◆ BesEmcDetectorMessenger() [2/3]

BesEmcDetectorMessenger::BesEmcDetectorMessenger ( BesEmcConstruction * ,
BesEmcGeometry *  )

◆ ~BesEmcDetectorMessenger() [2/3]

BesEmcDetectorMessenger::~BesEmcDetectorMessenger ( )

◆ BesEmcDetectorMessenger() [3/3]

BesEmcDetectorMessenger::BesEmcDetectorMessenger ( BesEmcConstruction * ,
BesEmcGeometry *  )

◆ ~BesEmcDetectorMessenger() [3/3]

BesEmcDetectorMessenger::~BesEmcDetectorMessenger ( )

Member Function Documentation

◆ GetCurrentValue() [1/3]

G4String BesEmcDetectorMessenger::GetCurrentValue ( G4UIcommand * command)

Definition at line 165 of file BesEmcDetectorMessenger.cc.

165 {
166 G4String cv;
167
168 if ( command == verboseCmd )
169 { cv = verboseCmd->ConvertToString( BesEmc->GetVerboseLevel() ); }
170
171 if ( command == CryMaterCmd ) { cv = BesEmc->GetCrystalMaterial()->GetName(); }
172
173 if ( command == CasingMaterCmd ) { cv = BesEmc->GetCasingMaterial()->GetName(); }
174
175 return cv;
176}

◆ GetCurrentValue() [2/3]

G4String BesEmcDetectorMessenger::GetCurrentValue ( G4UIcommand * )

◆ GetCurrentValue() [3/3]

G4String BesEmcDetectorMessenger::GetCurrentValue ( G4UIcommand * )

◆ SetNewValue() [1/3]

void BesEmcDetectorMessenger::SetNewValue ( G4UIcommand * command,
G4String newValue )

Definition at line 132 of file BesEmcDetectorMessenger.cc.

132 {
133 if ( command == verboseCmd )
134 { BesEmc->SetVerboseLevel( verboseCmd->GetNewIntValue( newValue ) ); }
135
136 if ( command == CryMaterCmd ) { BesEmc->SetCrystalMaterial( newValue ); }
137
138 if ( command == CasingMaterCmd ) { BesEmc->SetCasingMaterial( newValue ); }
139
140 if ( command == CasingThickCmd )
141 { BesEmc->SetCasingThickness( CasingThickCmd->GetNew3VectorValue( newValue ) ); }
142
143 if ( command == SizeRminCmd )
144 { BesEmc->SetBSCRmin( SizeRminCmd->GetNewDoubleValue( newValue ) ); }
145
146 if ( command == NbPhiCmd ) { BesEmc->SetBSCNbPhi( NbPhiCmd->GetNewIntValue( newValue ) ); }
147
148 if ( command == NbThetaCmd )
149 { BesEmc->SetBSCNbTheta( NbThetaCmd->GetNewIntValue( newValue ) ); }
150
151 if ( command == StartIDThetaCmd )
152 { BesEmc->SetStartIDTheta( StartIDThetaCmd->GetNewIntValue( newValue ) ); }
153
154 if ( command == LengthCmd )
155 { BesEmc->SetBSCCrystalLength( LengthCmd->GetNewDoubleValue( newValue ) ); }
156
157 if ( command == UpdateCmd ) { BesEmc->UpdateGeometry(); }
158
159 if ( command == MagFieldCmd )
160 { BesEmc->SetMagField( MagFieldCmd->GetNewDoubleValue( newValue ) ); }
161}

◆ SetNewValue() [2/3]

void BesEmcDetectorMessenger::SetNewValue ( G4UIcommand * ,
G4String  )

◆ SetNewValue() [3/3]

void BesEmcDetectorMessenger::SetNewValue ( G4UIcommand * ,
G4String  )

The documentation for this class was generated from the following files: