Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/ChargeExchangeMC/src/CexmcChargeExchangeReconstructorMessenger.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/advanced/ChargeExchangeMC/src/CexmcChargeExchangeReconstructorMessenger.cc (Version 11.3.0) and /examples/advanced/ChargeExchangeMC/src/CexmcChargeExchangeReconstructorMessenger.cc (Version 9.4.p2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 /*                                                 26 /*
 27  * ===========================================     27  * ============================================================================
 28  *                                                 28  *
 29  *       Filename:  CexmcChargeExchangeReconst     29  *       Filename:  CexmcChargeExchangeReconstructorMessenger.cc
 30  *                                                 30  *
 31  *    Description:  charge exchange reconstruc     31  *    Description:  charge exchange reconstructor messenger
 32  *                                                 32  *
 33  *        Version:  1.0                            33  *        Version:  1.0
 34  *        Created:  14.12.2009 17:53:33            34  *        Created:  14.12.2009 17:53:33
 35  *       Revision:  none                           35  *       Revision:  none
 36  *       Compiler:  gcc                            36  *       Compiler:  gcc
 37  *                                                 37  *
 38  *         Author:  Alexey Radkov (),              38  *         Author:  Alexey Radkov (), 
 39  *        Company:  PNPI                           39  *        Company:  PNPI
 40  *                                                 40  *
 41  * ===========================================     41  * ============================================================================
 42  */                                                42  */
 43                                                    43 
 44 #include <G4UIcmdWithABool.hh>                     44 #include <G4UIcmdWithABool.hh>
 45 #include <G4UIcmdWithAString.hh>               << 
 46 #include <G4UIcmdWithADoubleAndUnit.hh>            45 #include <G4UIcmdWithADoubleAndUnit.hh>
 47 #include "CexmcChargeExchangeReconstructorMess     46 #include "CexmcChargeExchangeReconstructorMessenger.hh"
 48 #include "CexmcChargeExchangeReconstructor.hh"     47 #include "CexmcChargeExchangeReconstructor.hh"
 49 #include "CexmcMessenger.hh"                       48 #include "CexmcMessenger.hh"
 50                                                    49 
 51                                                    50 
 52 CexmcChargeExchangeReconstructorMessenger::        51 CexmcChargeExchangeReconstructorMessenger::
 53         CexmcChargeExchangeReconstructorMessen     52         CexmcChargeExchangeReconstructorMessenger(
 54                         CexmcChargeExchangeRec <<  53                         CexmcChargeExchangeReconstructor *  reconstructor ) :
 55             reconstructor( reconstructor_ ), u <<  54             reconstructor( reconstructor ), useTableMass( NULL ),
 56             useMassCut( NULL ), mCutOPCenter(      55             useMassCut( NULL ), mCutOPCenter( NULL ), mCutNOPCenter( NULL ),
 57             mCutOPWidth( NULL ), mCutNOPWidth(     56             mCutOPWidth( NULL ), mCutNOPWidth( NULL ), mCutAngle( NULL ),
 58             useAbsorbedEnergyCut( NULL ), aeCu     57             useAbsorbedEnergyCut( NULL ), aeCutCLCenter( NULL ),
 59             aeCutCRCenter( NULL ), aeCutCLWidt     58             aeCutCRCenter( NULL ), aeCutCLWidth( NULL ), aeCutCRWidth( NULL ),
 60             aeCutAngle( NULL ), setExpectedMom <<  59             aeCutAngle( NULL )
 61             setExpectedMomentumAmpDiff( NULL ) << 
 62 {                                                  60 {
 63     useTableMass = new G4UIcmdWithABool(           61     useTableMass = new G4UIcmdWithABool(
 64         ( CexmcMessenger::reconstructorDirName     62         ( CexmcMessenger::reconstructorDirName + "useTableMass" ).c_str(),
 65         this );                                    63         this );
 66     useTableMass->SetGuidance( "\n    If true      64     useTableMass->SetGuidance( "\n    If true then reconstructor will use "
 67         "table mass of output\n    particle wh     65         "table mass of output\n    particle when building output particle "
 68         "energy,\n    otherwise reconstructed      66         "energy,\n    otherwise reconstructed mass will be used" );
 69     useTableMass->SetParameterName( "UseTableM <<  67     useTableMass->SetParameterName( "UseTableMass", false );
 70     useTableMass->SetDefaultValue( true );     <<  68     useTableMass->SetDefaultValue( false );
 71     useTableMass->AvailableForStates( G4State_     69     useTableMass->AvailableForStates( G4State_PreInit, G4State_Idle );
 72                                                    70 
 73     useMassCut = new G4UIcmdWithABool(             71     useMassCut = new G4UIcmdWithABool(
 74         ( CexmcMessenger::reconstructorDirName     72         ( CexmcMessenger::reconstructorDirName + "useMassCut" ).c_str(), this );
 75     useMassCut->SetGuidance( "\n    Use ellipt     73     useMassCut->SetGuidance( "\n    Use elliptical cut for masses of output "
 76                              "particle\n    an     74                              "particle\n    and nucleus output particle" );
 77     useMassCut->SetParameterName( "UseMassCut" <<  75     useMassCut->SetParameterName( "UseMassCut", false );
 78     useMassCut->SetDefaultValue( true );       <<  76     useMassCut->SetDefaultValue( false );
 79     useMassCut->AvailableForStates( G4State_Pr     77     useMassCut->AvailableForStates( G4State_PreInit, G4State_Idle );
 80                                                    78 
 81     mCutOPCenter = new G4UIcmdWithADoubleAndUn     79     mCutOPCenter = new G4UIcmdWithADoubleAndUnit(
 82         ( CexmcMessenger::reconstructorDirName     80         ( CexmcMessenger::reconstructorDirName + "mCutOPCenter" ).c_str(),
 83         this );                                    81         this );
 84     mCutOPCenter->SetGuidance( "\n    Center o <<  82     mCutOPCenter->SetGuidance( "Center of the ellipse in output particle mass "
 85                                "mass coordinat <<  83                                "coordinate" );
 86     mCutOPCenter->SetParameterName( "MCutOPCen     84     mCutOPCenter->SetParameterName( "MCutOPCenter", false );
 87     mCutOPCenter->SetDefaultValue( reconstruct     85     mCutOPCenter->SetDefaultValue( reconstructor->GetProductionModelData().
 88                                    outputParti     86                                    outputParticle->GetPDGMass() );
 89     mCutOPCenter->SetUnitCandidates( "eV keV M << 
 90     mCutOPCenter->SetDefaultUnit( "MeV" );         87     mCutOPCenter->SetDefaultUnit( "MeV" );
                                                   >>  88     mCutOPCenter->SetUnitCandidates( "eV keV MeV GeV" );
 91     mCutOPCenter->AvailableForStates( G4State_     89     mCutOPCenter->AvailableForStates( G4State_PreInit, G4State_Idle );
 92                                                    90 
 93     mCutNOPCenter = new G4UIcmdWithADoubleAndU     91     mCutNOPCenter = new G4UIcmdWithADoubleAndUnit(
 94         ( CexmcMessenger::reconstructorDirName     92         ( CexmcMessenger::reconstructorDirName + "mCutNOPCenter" ).c_str(),
 95         this );                                    93         this );
 96     mCutNOPCenter->SetGuidance( "\n    Center  <<  94     mCutNOPCenter->SetGuidance( "Center of the ellipse in nucleus output "
 97                                 "particle mass     95                                 "particle mass\n    coordinate" );
 98     mCutNOPCenter->SetParameterName( "MCutNOPC     96     mCutNOPCenter->SetParameterName( "MCutNOPCenter", false );
 99     mCutNOPCenter->SetDefaultValue( reconstruc     97     mCutNOPCenter->SetDefaultValue( reconstructor->GetProductionModelData().
100                                     nucleusOut     98                                     nucleusOutputParticle->GetPDGMass() );
101     mCutNOPCenter->SetUnitCandidates( "eV keV  << 
102     mCutNOPCenter->SetDefaultUnit( "MeV" );        99     mCutNOPCenter->SetDefaultUnit( "MeV" );
                                                   >> 100     mCutNOPCenter->SetUnitCandidates( "eV keV MeV GeV" );
103     mCutNOPCenter->AvailableForStates( G4State    101     mCutNOPCenter->AvailableForStates( G4State_PreInit, G4State_Idle );
104                                                   102 
105     mCutOPWidth = new G4UIcmdWithADoubleAndUni    103     mCutOPWidth = new G4UIcmdWithADoubleAndUnit(
106         ( CexmcMessenger::reconstructorDirName    104         ( CexmcMessenger::reconstructorDirName + "mCutOPWidth" ).c_str(),
107         this );                                   105         this );
108     mCutOPWidth->SetGuidance( "\n    Width of  << 106     mCutOPWidth->SetGuidance( "Width of the ellipse in output particle mass "
109                                "mass coordinat << 107                                "coordinate" );
110     mCutOPWidth->SetParameterName( "MCutOPWidt    108     mCutOPWidth->SetParameterName( "MCutOPWidth", false );
111     mCutOPWidth->SetDefaultValue( reconstructo    109     mCutOPWidth->SetDefaultValue( reconstructor->GetProductionModelData().
112                                   outputPartic    110                                   outputParticle->GetPDGMass() * 0.1 );
113     mCutOPWidth->SetUnitCandidates( "eV keV Me << 
114     mCutOPWidth->SetDefaultUnit( "MeV" );         111     mCutOPWidth->SetDefaultUnit( "MeV" );
                                                   >> 112     mCutOPWidth->SetUnitCandidates( "eV keV MeV GeV" );
115     mCutOPWidth->AvailableForStates( G4State_P    113     mCutOPWidth->AvailableForStates( G4State_PreInit, G4State_Idle );
116                                                   114 
117     mCutNOPWidth = new G4UIcmdWithADoubleAndUn    115     mCutNOPWidth = new G4UIcmdWithADoubleAndUnit(
118         ( CexmcMessenger::reconstructorDirName    116         ( CexmcMessenger::reconstructorDirName + "mCutNOPWidth" ).c_str(),
119         this );                                   117         this );
120     mCutNOPWidth->SetGuidance( "\n    Width of << 118     mCutNOPWidth->SetGuidance( "Width of the ellipse in nucleus output "
121                                "particle mass\ << 119                                "particle mass\n     coordinate" );
122     mCutNOPWidth->SetParameterName( "MCutNOPWi    120     mCutNOPWidth->SetParameterName( "MCutNOPWidth", false );
123     mCutNOPWidth->SetDefaultValue( reconstruct    121     mCutNOPWidth->SetDefaultValue( reconstructor->GetProductionModelData().
124                                    nucleusOutp    122                                    nucleusOutputParticle->GetPDGMass() * 0.1 );
125     mCutNOPWidth->SetUnitCandidates( "eV keV M << 
126     mCutNOPWidth->SetDefaultUnit( "MeV" );        123     mCutNOPWidth->SetDefaultUnit( "MeV" );
                                                   >> 124     mCutNOPWidth->SetUnitCandidates( "eV keV MeV GeV" );
127     mCutNOPWidth->AvailableForStates( G4State_    125     mCutNOPWidth->AvailableForStates( G4State_PreInit, G4State_Idle );
128                                                   126 
129     mCutAngle = new G4UIcmdWithADoubleAndUnit(    127     mCutAngle = new G4UIcmdWithADoubleAndUnit(
130         ( CexmcMessenger::reconstructorDirName    128         ( CexmcMessenger::reconstructorDirName + "mCutAngle" ).c_str(),
131         this );                                   129         this );
132     mCutAngle->SetGuidance( "\n    Angle of th << 130     mCutAngle->SetGuidance( "Angle of the ellipse" );
133     mCutAngle->SetParameterName( "MCutAngle",     131     mCutAngle->SetParameterName( "MCutAngle", false );
134     mCutAngle->SetDefaultValue( 0 );              132     mCutAngle->SetDefaultValue( 0 );
135     mCutAngle->SetUnitCandidates( "deg rad" ); << 
136     mCutAngle->SetDefaultUnit( "deg" );           133     mCutAngle->SetDefaultUnit( "deg" );
                                                   >> 134     mCutAngle->SetUnitCandidates( "deg rad" );
137     mCutAngle->AvailableForStates( G4State_Pre    135     mCutAngle->AvailableForStates( G4State_PreInit, G4State_Idle );
138                                                   136 
139     useAbsorbedEnergyCut = new G4UIcmdWithABoo    137     useAbsorbedEnergyCut = new G4UIcmdWithABool(
140         ( CexmcMessenger::reconstructorDirName    138         ( CexmcMessenger::reconstructorDirName + "useAbsorbedEnergyCut" ).
141             c_str(), this );                      139             c_str(), this );
142     useAbsorbedEnergyCut->SetGuidance( "\n     << 140     useAbsorbedEnergyCut->SetGuidance( "Use elliptical cut for absorbed "
143                                        "energi << 141                                        "energies in\n     calorimeters" );
144     useAbsorbedEnergyCut->SetParameterName( "U << 142     useAbsorbedEnergyCut->SetParameterName( "UseAbsorbedEnergyCut", false );
145     useAbsorbedEnergyCut->SetDefaultValue( tru << 143     useAbsorbedEnergyCut->SetDefaultValue( false );
146     useAbsorbedEnergyCut->AvailableForStates(     144     useAbsorbedEnergyCut->AvailableForStates( G4State_PreInit, G4State_Idle );
147                                                   145 
148     aeCutCLCenter = new G4UIcmdWithADoubleAndU    146     aeCutCLCenter = new G4UIcmdWithADoubleAndUnit(
149         ( CexmcMessenger::reconstructorDirName    147         ( CexmcMessenger::reconstructorDirName + "aeCutCLCenter" ).c_str(),
150         this );                                   148         this );
151     aeCutCLCenter->SetGuidance( "\n    Center  << 149     aeCutCLCenter->SetGuidance( "Center of the ellipse in left calorimeter"
152                                 "calorimeter\n << 150                                 "\n     absorbed energy coordinate" );
153     aeCutCLCenter->SetParameterName( "AECutCLC    151     aeCutCLCenter->SetParameterName( "AECutCLCenter", false );
154     aeCutCLCenter->SetDefaultValue( 0 );          152     aeCutCLCenter->SetDefaultValue( 0 );
155     aeCutCLCenter->SetUnitCandidates( "eV keV  << 
156     aeCutCLCenter->SetDefaultUnit( "MeV" );       153     aeCutCLCenter->SetDefaultUnit( "MeV" );
                                                   >> 154     aeCutCLCenter->SetUnitCandidates( "eV keV MeV GeV" );
157     aeCutCLCenter->AvailableForStates( G4State    155     aeCutCLCenter->AvailableForStates( G4State_PreInit, G4State_Idle );
158                                                   156 
159     aeCutCRCenter = new G4UIcmdWithADoubleAndU    157     aeCutCRCenter = new G4UIcmdWithADoubleAndUnit(
160         ( CexmcMessenger::reconstructorDirName    158         ( CexmcMessenger::reconstructorDirName + "aeCutCRCenter" ).c_str(),
161         this );                                   159         this );
162     aeCutCRCenter->SetGuidance( "\n    Center  << 160     aeCutCRCenter->SetGuidance( "Center of the ellipse in right calorimeter"
163                                 "calorimeter\n << 161                                 "\n     absorbed energy coordinate" );
164     aeCutCRCenter->SetParameterName( "AECutCRC    162     aeCutCRCenter->SetParameterName( "AECutCRCenter", false );
165     aeCutCRCenter->SetDefaultValue( 0 );          163     aeCutCRCenter->SetDefaultValue( 0 );
166     aeCutCRCenter->SetUnitCandidates( "eV keV  << 
167     aeCutCRCenter->SetDefaultUnit( "MeV" );       164     aeCutCRCenter->SetDefaultUnit( "MeV" );
                                                   >> 165     aeCutCRCenter->SetUnitCandidates( "eV keV MeV GeV" );
168     aeCutCRCenter->AvailableForStates( G4State    166     aeCutCRCenter->AvailableForStates( G4State_PreInit, G4State_Idle );
169                                                   167 
170     aeCutCLWidth = new G4UIcmdWithADoubleAndUn    168     aeCutCLWidth = new G4UIcmdWithADoubleAndUnit(
171         ( CexmcMessenger::reconstructorDirName    169         ( CexmcMessenger::reconstructorDirName + "aeCutCLWidth" ).c_str(),
172         this );                                   170         this );
173     aeCutCLWidth->SetGuidance( "\n    Width of << 171     aeCutCLWidth->SetGuidance( "Width of the ellipse in left calorimeter"
174                                "\n    absorbed << 172                                "\n     absorbed energy coordinate" );
175     aeCutCLWidth->SetParameterName( "AECutCLWi    173     aeCutCLWidth->SetParameterName( "AECutCLWidth", false );
176     aeCutCLWidth->SetDefaultValue( 0 );           174     aeCutCLWidth->SetDefaultValue( 0 );
177     aeCutCLWidth->SetUnitCandidates( "eV keV M << 
178     aeCutCLWidth->SetDefaultUnit( "MeV" );        175     aeCutCLWidth->SetDefaultUnit( "MeV" );
                                                   >> 176     aeCutCLWidth->SetUnitCandidates( "eV keV MeV GeV" );
179     aeCutCLWidth->AvailableForStates( G4State_    177     aeCutCLWidth->AvailableForStates( G4State_PreInit, G4State_Idle );
180                                                   178 
181     aeCutCRWidth = new G4UIcmdWithADoubleAndUn    179     aeCutCRWidth = new G4UIcmdWithADoubleAndUnit(
182         ( CexmcMessenger::reconstructorDirName    180         ( CexmcMessenger::reconstructorDirName + "aeCutCRWidth" ).c_str(),
183         this );                                   181         this );
184     aeCutCRWidth->SetGuidance( "\n    Width of << 182     aeCutCRWidth->SetGuidance( "Width of the ellipse in right calorimeter"
185                                "\n    absorbed << 183                                "\n     absorbed energy coordinate" );
186     aeCutCRWidth->SetParameterName( "AECutCRWi    184     aeCutCRWidth->SetParameterName( "AECutCRWidth", false );
187     aeCutCRWidth->SetDefaultValue( 0 );           185     aeCutCRWidth->SetDefaultValue( 0 );
188     aeCutCRWidth->SetUnitCandidates( "eV keV M << 
189     aeCutCRWidth->SetDefaultUnit( "MeV" );        186     aeCutCRWidth->SetDefaultUnit( "MeV" );
                                                   >> 187     aeCutCRWidth->SetUnitCandidates( "eV keV MeV GeV" );
190     aeCutCRWidth->AvailableForStates( G4State_    188     aeCutCRWidth->AvailableForStates( G4State_PreInit, G4State_Idle );
191                                                   189 
192     aeCutAngle = new G4UIcmdWithADoubleAndUnit    190     aeCutAngle = new G4UIcmdWithADoubleAndUnit(
193         ( CexmcMessenger::reconstructorDirName    191         ( CexmcMessenger::reconstructorDirName + "aeCutAngle" ).c_str(),
194         this );                                   192         this );
195     aeCutAngle->SetGuidance( "\n    Angle of t << 193     aeCutAngle->SetGuidance( "Angle of the ellipse" );
196     aeCutAngle->SetParameterName( "AECutAngle"    194     aeCutAngle->SetParameterName( "AECutAngle", false );
197     aeCutAngle->SetDefaultValue( 0 );             195     aeCutAngle->SetDefaultValue( 0 );
198     aeCutAngle->SetUnitCandidates( "deg rad" ) << 
199     aeCutAngle->SetDefaultUnit( "deg" );          196     aeCutAngle->SetDefaultUnit( "deg" );
                                                   >> 197     aeCutAngle->SetUnitCandidates( "deg rad" );
200     aeCutAngle->AvailableForStates( G4State_Pr    198     aeCutAngle->AvailableForStates( G4State_PreInit, G4State_Idle );
201                                                << 
202     setExpectedMomentumAmp = new G4UIcmdWithAD << 
203         ( CexmcMessenger::reconstructorDirName << 
204         this );                                << 
205     setExpectedMomentumAmp->SetGuidance( "\n   << 
206         "expected in the target;\n    this val << 
207         "momentum\n    of the beam as far as p << 
208         "    to the place where it starts. Thi << 
209         "    in reconstruction procedure");    << 
210     setExpectedMomentumAmp->SetParameterName(  << 
211     setExpectedMomentumAmp->SetRange( "RecMome << 
212     setExpectedMomentumAmp->SetUnitCandidates( << 
213     setExpectedMomentumAmp->SetDefaultUnit( "M << 
214     setExpectedMomentumAmp->AvailableForStates << 
215                                                << 
216     setExpectedMomentumAmpDiff = new G4UIcmdWi << 
217         ( CexmcMessenger::reconstructorDirName << 
218         this );                                << 
219     setExpectedMomentumAmpDiff->SetGuidance( " << 
220         "between momenta of the beam\n    on i << 
221         "parameter can\n    be used to automat << 
222         "    previous parameter 'momentumAmp'" << 
223     setExpectedMomentumAmpDiff->SetParameterNa << 
224     setExpectedMomentumAmpDiff->SetDefaultValu << 
225     setExpectedMomentumAmpDiff->SetUnitCandida << 
226     setExpectedMomentumAmpDiff->SetDefaultUnit << 
227     setExpectedMomentumAmpDiff->AvailableForSt << 
228                                                << 
229                                                << 
230     setEDCollectionAlgorithm = new G4UIcmdWith << 
231         ( CexmcMessenger::reconstructorDirName << 
232         this );                                << 
233     setEDCollectionAlgorithm->SetGuidance(     << 
234         "\n    Choose crystals to be selected  << 
235         "    all - all,\n"                     << 
236         "    adjacent - crystal with maximum e << 
237         "               adjacent crystals" );  << 
238     setEDCollectionAlgorithm->SetParameterName << 
239     setEDCollectionAlgorithm->SetCandidates( " << 
240     setEDCollectionAlgorithm->SetDefaultValue( << 
241     setEDCollectionAlgorithm->AvailableForStat << 
242                                                << 
243 }                                                 199 }
244                                                   200 
245                                                   201 
246 CexmcChargeExchangeReconstructorMessenger::       202 CexmcChargeExchangeReconstructorMessenger::
247                                     ~CexmcChar    203                                     ~CexmcChargeExchangeReconstructorMessenger()
248 {                                                 204 {
249     delete useTableMass;                          205     delete useTableMass;
250     delete useMassCut;                            206     delete useMassCut;
251     delete mCutOPCenter;                          207     delete mCutOPCenter;
252     delete mCutNOPCenter;                         208     delete mCutNOPCenter;
253     delete mCutOPWidth;                           209     delete mCutOPWidth;
254     delete mCutNOPWidth;                          210     delete mCutNOPWidth;
255     delete mCutAngle;                             211     delete mCutAngle;
256     delete useAbsorbedEnergyCut;                  212     delete useAbsorbedEnergyCut;
257     delete aeCutCLCenter;                         213     delete aeCutCLCenter;
258     delete aeCutCRCenter;                         214     delete aeCutCRCenter;
259     delete aeCutCLWidth;                          215     delete aeCutCLWidth;
260     delete aeCutCRWidth;                          216     delete aeCutCRWidth;
261     delete aeCutAngle;                            217     delete aeCutAngle;
262     delete setExpectedMomentumAmp;             << 
263     delete setExpectedMomentumAmpDiff;         << 
264     delete setEDCollectionAlgorithm;           << 
265 }                                                 218 }
266                                                   219 
267                                                   220 
268 void  CexmcChargeExchangeReconstructorMessenge    221 void  CexmcChargeExchangeReconstructorMessenger::SetNewValue(
269                                         G4UIco    222                                         G4UIcommand *  cmd, G4String  value )
270 {                                                 223 {
271     do                                            224     do
272     {                                             225     {
273         if ( cmd == useTableMass )                226         if ( cmd == useTableMass )
274         {                                         227         {
275             reconstructor->UseTableMass(          228             reconstructor->UseTableMass(
276                         G4UIcmdWithABool::GetN    229                         G4UIcmdWithABool::GetNewBoolValue( value ) );
277             break;                                230             break;
278         }                                         231         }
279         if ( cmd == useMassCut )                  232         if ( cmd == useMassCut )
280         {                                         233         {
281             reconstructor->UseMassCut(            234             reconstructor->UseMassCut(
282                         G4UIcmdWithABool::GetN    235                         G4UIcmdWithABool::GetNewBoolValue( value ) );
283             break;                                236             break;
284         }                                         237         }
285         if ( cmd == mCutOPCenter )                238         if ( cmd == mCutOPCenter )
286         {                                         239         {
287             reconstructor->SetMassCutOPCenter(    240             reconstructor->SetMassCutOPCenter(
288                         G4UIcmdWithADoubleAndU    241                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
289             break;                                242             break;
290         }                                         243         }
291         if ( cmd == mCutNOPCenter )               244         if ( cmd == mCutNOPCenter )
292         {                                         245         {
293             reconstructor->SetMassCutNOPCenter    246             reconstructor->SetMassCutNOPCenter(
294                         G4UIcmdWithADoubleAndU    247                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
295             break;                                248             break;
296         }                                         249         }
297         if ( cmd == mCutOPWidth )                 250         if ( cmd == mCutOPWidth )
298         {                                         251         {
299             reconstructor->SetMassCutOPWidth(     252             reconstructor->SetMassCutOPWidth(
300                         G4UIcmdWithADoubleAndU    253                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
301             break;                                254             break;
302         }                                         255         }
303         if ( cmd == mCutNOPWidth )                256         if ( cmd == mCutNOPWidth )
304         {                                         257         {
305             reconstructor->SetMassCutNOPWidth(    258             reconstructor->SetMassCutNOPWidth(
306                         G4UIcmdWithADoubleAndU    259                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
307             break;                                260             break;
308         }                                         261         }
309         if ( cmd == mCutAngle )                   262         if ( cmd == mCutAngle )
310         {                                         263         {
311             reconstructor->SetMassCutEllipseAn    264             reconstructor->SetMassCutEllipseAngle(
312                         G4UIcmdWithADoubleAndU    265                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
313             break;                                266             break;
314         }                                         267         }
315         if ( cmd == useAbsorbedEnergyCut )        268         if ( cmd == useAbsorbedEnergyCut )
316         {                                         269         {
317             reconstructor->UseAbsorbedEnergyCu    270             reconstructor->UseAbsorbedEnergyCut(
318                         G4UIcmdWithABool::GetN    271                         G4UIcmdWithABool::GetNewBoolValue( value ) );
319             break;                                272             break;
320         }                                         273         }
321         if ( cmd == aeCutCLCenter )               274         if ( cmd == aeCutCLCenter )
322         {                                         275         {
323             reconstructor->SetAbsorbedEnergyCu    276             reconstructor->SetAbsorbedEnergyCutCLCenter(
324                         G4UIcmdWithADoubleAndU    277                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
325             break;                                278             break;
326         }                                         279         }
327         if ( cmd == aeCutCRCenter )               280         if ( cmd == aeCutCRCenter )
328         {                                         281         {
329             reconstructor->SetAbsorbedEnergyCu    282             reconstructor->SetAbsorbedEnergyCutCRCenter(
330                         G4UIcmdWithADoubleAndU    283                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
331             break;                                284             break;
332         }                                         285         }
333         if ( cmd == aeCutCLWidth )                286         if ( cmd == aeCutCLWidth )
334         {                                         287         {
335             reconstructor->SetAbsorbedEnergyCu    288             reconstructor->SetAbsorbedEnergyCutCLWidth(
336                         G4UIcmdWithADoubleAndU    289                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
337             break;                                290             break;
338         }                                         291         }
339         if ( cmd == aeCutCRWidth )                292         if ( cmd == aeCutCRWidth )
340         {                                         293         {
341             reconstructor->SetAbsorbedEnergyCu    294             reconstructor->SetAbsorbedEnergyCutCRWidth(
342                         G4UIcmdWithADoubleAndU    295                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
343             break;                                296             break;
344         }                                         297         }
345         if ( cmd == aeCutAngle )                  298         if ( cmd == aeCutAngle )
346         {                                         299         {
347             reconstructor->SetAbsorbedEnergyCu    300             reconstructor->SetAbsorbedEnergyCutEllipseAngle(
348                         G4UIcmdWithADoubleAndU    301                         G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) );
349             break;                             << 
350         }                                      << 
351         if ( cmd == setExpectedMomentumAmp )   << 
352         {                                      << 
353             reconstructor->SetExpectedMomentum << 
354                         G4UIcmdWithADoubleAndU << 
355             break;                             << 
356         }                                      << 
357         if ( cmd == setExpectedMomentumAmpDiff << 
358         {                                      << 
359             reconstructor->SetExpectedMomentum << 
360                         G4UIcmdWithADoubleAndU << 
361             break;                             << 
362         }                                      << 
363         if ( cmd == setEDCollectionAlgorithm ) << 
364         {                                      << 
365             CexmcEDCollectionAlgoritm          << 
366                         edCollectionAlgorithm( << 
367             do                                 << 
368             {                                  << 
369                 if ( value == "adjacent" )     << 
370                 {                              << 
371                     edCollectionAlgorithm = Ce << 
372                     break;                     << 
373                 }                              << 
374             } while ( false );                 << 
375             reconstructor->SetEDCollectionAlgo << 
376             break;                                302             break;
377         }                                         303         }
378     } while ( false );                            304     } while ( false );
379 }                                                 305 }
380                                                   306 
381                                                   307