22 : mdcDigitizer( pointer ) {
23 noiseDirectory =
new G4UIdirectory(
"/mdc/noise/" );
24 noiseDirectory->SetGuidance(
"BESIII MDC noise control" );
27 noiseFlag =
new G4UIcmdWithAnInteger(
"/mdc/noise/flag",
this );
28 noiseFlag->SetGuidance(
"whether to add noise to MdcDigi." );
29 noiseFlag->SetParameterName(
"MdcNoiseFlag",
false );
30 noiseFlag->SetRange(
"MdcNoiseFlag>=0" );
34 noiseType =
new G4UIcmdWithAnInteger(
"/mdc/noise/type",
this );
35 noiseType->SetGuidance(
"select noise type." );
36 noiseType->SetParameterName(
"MdcNoiseType",
false );
37 noiseType->SetRange(
"MdcNoiseType>=0" );
41 noiseLevel =
new G4UIcmdWithADouble(
"/mdc/noise/level",
this );
42 noiseLevel->SetGuidance(
"noise level" );
43 noiseLevel->SetParameterName(
"MdcNoiseLevel",
false );
44 noiseLevel->SetRange(
"MdcNoiseLevel>=0." );
47 digiDirectory =
new G4UIdirectory(
"/mdc/digi/" );
48 digiDirectory->SetGuidance(
"BESIII MDC digitizer control" );
51 smearFlag =
new G4UIcmdWithAnInteger(
"/mdc/digi/smearflag",
this );
52 smearFlag->SetGuidance(
"whether to do T smear to MdcDigi." );
53 smearFlag->SetParameterName(
"MdcSmearFlag",
true );
54 smearFlag->SetRange(
"MdcSmearFlag>=0" );
55 smearFlag->SetDefaultValue( 1 );
58 mdcDRes =
new G4UIcmdWithADouble(
"/mdc/digi/spaceres",
this );
59 mdcDRes->SetGuidance(
"value of space resolution" );
60 mdcDRes->SetParameterName(
"MdcDRes",
false );
61 mdcDRes->SetRange(
"MdcDRes>0" );
63 effDirectory =
new G4UIdirectory(
"/mdc/eff/" );
64 effDirectory->SetGuidance(
"BESIII MDC wire efficiency control" );
67 effFlag =
new G4UIcmdWithAnInteger(
"/mdc/eff/flag",
this );
68 effFlag->SetGuidance(
"Get eff. from 0: CalSvc; 1: mac file" );
69 effFlag->SetParameterName(
"MdcEffFlag",
false );
70 effFlag->SetRange(
"MdcEffFlag>=0" );
73 G4UIparameter* parameter;
77 layerEff =
new G4UIcommand(
"/mdc/eff/eff",
this );
78 layerEff->SetGuidance(
"Set eff. of MDC layers" );
80 parameter =
new G4UIparameter(
"layer",
'i', omittable =
false );
81 parameter->SetGuidance(
"Which layer to be modified" );
82 parameter->SetParameterRange(
"layer >= -1 && layer < 43" );
83 parameter->SetDefaultValue( -1 );
84 layerEff->SetParameter( parameter );
86 parameter =
new G4UIparameter(
"eff",
'd', omittable =
false );
87 parameter->SetGuidance(
"Eff. value" );
88 parameter->SetParameterRange(
"eff >= 0. && eff <=1." );
89 parameter->SetDefaultValue( 1. );
90 layerEff->SetParameter( parameter );
107 if ( command == noiseFlag )
108 { mdcDigitizer->SetNoiseFlag( noiseFlag->GetNewIntValue( newValue ) ); }
109 else if ( command == noiseType )
110 { mdcDigitizer->SetNoiseType( noiseType->GetNewIntValue( newValue ) ); }
111 else if ( command == noiseLevel )
112 { mdcDigitizer->SetNoiseLevel( noiseLevel->GetNewDoubleValue( newValue ) ); }
113 else if ( command == smearFlag )
114 { mdcDigitizer->SetSmearFlag( smearFlag->GetNewIntValue( newValue ) ); }
115 else if ( command == mdcDRes )
116 { mdcDigitizer->SetMdcDRes( mdcDRes->GetNewDoubleValue( newValue ) ); }
117 else if ( command == effFlag )
118 { mdcDigitizer->SetEffFlag( effFlag->GetNewIntValue( newValue ) ); }
119 else if ( command == layerEff )
123 std::istringstream is( (
char*)newValue.data() );
125 mdcDigitizer->SetEff( layer, eff );