Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/analysis/management/src/G4AnalysisMessenger.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 /analysis/management/src/G4AnalysisMessenger.cc (Version 11.3.0) and /analysis/management/src/G4AnalysisMessenger.cc (Version 10.0.p4)


  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 // $Id: G4AnalysisMessenger.cc 66310 2012-12-17 11:56:35Z ihrivnac $
 26                                                    27 
 27 // Author: Ivana Hrivnacova, 24/06/2013  (ivan     28 // Author: Ivana Hrivnacova, 24/06/2013  (ivana@ipno.in2p3.fr)
 28                                                    29 
 29 #include "G4AnalysisMessenger.hh"                  30 #include "G4AnalysisMessenger.hh"
 30 #include "G4VAnalysisManager.hh"                   31 #include "G4VAnalysisManager.hh"
 31 #include "G4NtupleMessenger.hh"                <<  32 #include "G4FileMessenger.hh"
                                                   >>  33 #include "G4H1Messenger.hh"
                                                   >>  34 #include "G4H2Messenger.hh"
                                                   >>  35 #include "G4HnMessenger.hh"
 32                                                    36 
 33 #include "G4UIcmdWithABool.hh"                     37 #include "G4UIcmdWithABool.hh"
 34 #include "G4UIcmdWithAnInteger.hh"                 38 #include "G4UIcmdWithAnInteger.hh"
 35 #include "G4UIcmdWithAString.hh"               << 
 36 #include "G4UIcmdWithoutParameter.hh"          << 
 37 #include "G4Threading.hh"                      << 
 38                                                << 
 39 using namespace G4Analysis;                    << 
 40                                                    39 
 41 //____________________________________________     40 //_____________________________________________________________________________
 42 G4AnalysisMessenger::G4AnalysisMessenger(G4VAn     41 G4AnalysisMessenger::G4AnalysisMessenger(G4VAnalysisManager* manager)
 43   : fManager(manager)                          <<  42   : G4UImessenger(),
 44 {                                              <<  43     fManager(manager),
 45   fAnalysisDir = std::make_unique<G4UIdirector <<  44     fFileMessenger(0),
                                                   >>  45     fH1Messenger(0),
                                                   >>  46     fH2Messenger(0),
                                                   >>  47     fH1HnMessenger(0),
                                                   >>  48     fH2HnMessenger(0),
                                                   >>  49     fAnalysisDir(0),  
                                                   >>  50     fSetActivationCmd(0),
                                                   >>  51     fVerboseCmd(0)
                                                   >>  52 {  
                                                   >>  53   fAnalysisDir = new G4UIdirectory("/analysis/");
 46   fAnalysisDir->SetGuidance("analysis control"     54   fAnalysisDir->SetGuidance("analysis control");
 47                                                    55 
 48   fOpenFileCmd = CreateCommand<G4UIcmdWithAStr <<  56   fSetActivationCmd = new G4UIcmdWithABool("/analysis/setActivation",this);
 49     "openFile", "Open analysis file", "FileNam <<  57   G4String guidance = "Set activation. \n";
 50   fOpenFileCmd->SetDefaultValue("");           <<  58   guidance += "When this option is enabled, only the histograms marked as activated\n";
 51   fOpenFileCmd->SetToBeBroadcasted(true);      <<  59   guidance += "are returned, filled or saved on file.\n";
 52                                                <<  60   guidance += "No warning is issued when Get or Fill is called on inactive histogram.";
 53   fWriteCmd = CreateCommandWithoutParameter(   <<  61   fSetActivationCmd->SetGuidance(guidance);
 54     "write", "Write analysis data.");          <<  62   fSetActivationCmd->SetParameterName("Activation",false);
 55   fWriteCmd->SetToBeBroadcasted(false);        <<  63 
 56                                                <<  64   fVerboseCmd = new G4UIcmdWithAnInteger("/analysis/verbose",this);
 57   fResetCmd = CreateCommandWithoutParameter(   <<  65   fVerboseCmd->SetGuidance("Set verbose level");
 58     "reset", "Reset analysis data.");          <<  66   fVerboseCmd->SetParameterName("VerboseLevel",false);
 59   fResetCmd->SetToBeBroadcasted(false);        << 
 60                                                << 
 61   fCloseFileCmd = CreateCommand<G4UIcmdWithABo << 
 62     "closeFile", "Close analysis file and (opt << 
 63   fCloseFileCmd->SetDefaultValue(true);        << 
 64   fCloseFileCmd->SetToBeBroadcasted(false);    << 
 65                                                << 
 66   fListCmd = CreateCommand<G4UIcmdWithABool>(  << 
 67     "list", "List all/activate analysis object << 
 68   fListCmd->SetDefaultValue(true);             << 
 69                                                << 
 70   fSetDefaultFileTypeCmd = CreateCommand<G4UIc << 
 71     "setDefaultFileType", "Set default output  << 
 72 #ifdef TOOLS_USE_HDF5                          << 
 73   fSetDefaultFileTypeCmd->SetCandidates("csv h << 
 74 #else                                          << 
 75   fSetDefaultFileTypeCmd->SetCandidates("csv r << 
 76 #endif                                         << 
 77                                                << 
 78   fSetActivationCmd = CreateCommand<G4UIcmdWit << 
 79     "setActivation",                           << 
 80     "Set activation. \n"                       << 
 81     "When this option is enabled, only the his << 
 82     "are returned, filled or saved on file.\n" << 
 83     "No warning is issued when Get or Fill is  << 
 84     "Activation");                             << 
 85                                                << 
 86   fVerboseCmd = CreateCommand<G4UIcmdWithAnInt << 
 87     "verbose", "Set verbose level", "VerboseLe << 
 88   fVerboseCmd->SetRange("VerboseLevel>=0 && Ve     67   fVerboseCmd->SetRange("VerboseLevel>=0 && VerboseLevel<=4");
 89                                                <<  68   
 90   fCompressionCmd = CreateCommand<G4UIcmdWithA <<  69   fFileMessenger = new G4FileMessenger(manager);
 91     "compression", "Set compression level", "C <<  70   fH1Messenger = new G4H1Messenger(manager);
 92   fCompressionCmd->SetRange("CompressionLevel> <<  71   fH2Messenger = new G4H2Messenger(manager);
 93                                                << 
 94   fSetFileNameCmd = CreateCommand<G4UIcmdWithA << 
 95     "setFileName", "Set name for the histogram << 
 96                                                << 
 97   fSetHistoDirNameCmd = CreateCommand<G4UIcmdW << 
 98     "setHistoDirName", "Set name for the histo << 
 99                                                << 
100   fSetNtupleDirNameCmd = CreateCommand<G4UIcmd << 
101     "setNtupleDirName", "Set name for the ntup << 
102                                                << 
103   fNtupleMessenger = std::make_unique<G4Ntuple << 
104 }                                                  72 }
105                                                    73 
106 //____________________________________________     74 //_____________________________________________________________________________
107 G4AnalysisMessenger::~G4AnalysisMessenger() =  <<  75 G4AnalysisMessenger::~G4AnalysisMessenger()
                                                   >>  76 {
                                                   >>  77   delete fSetActivationCmd;
                                                   >>  78   delete fVerboseCmd;
                                                   >>  79   delete fAnalysisDir;
                                                   >>  80   delete fFileMessenger;
                                                   >>  81   delete fH1Messenger;
                                                   >>  82   delete fH2Messenger;
                                                   >>  83   delete fH1HnMessenger;
                                                   >>  84   delete fH2HnMessenger;
                                                   >>  85 }
108                                                    86 
109 //                                                 87 //
110 // private functions                           <<  88 // public functions
111 //                                                 89 //
112                                                    90 
113                                                << 
114 //____________________________________________     91 //_____________________________________________________________________________
115 std::unique_ptr<G4UIcmdWithoutParameter>       <<  92 void G4AnalysisMessenger::SetH1HnManager(G4HnManager* h1HnManager)
116 G4AnalysisMessenger::CreateCommandWithoutParam << 
117   G4String name, G4String guidance)            << 
118 {                                                  93 {
119   G4String fullName = "/analysis/" + name;     <<  94   fH1HnMessenger = new G4HnMessenger(h1HnManager);
                                                   >>  95 }  
120                                                    96 
121   auto command = std::make_unique<G4UIcmdWitho <<  97 //_____________________________________________________________________________
122   command->SetGuidance(guidance.c_str());      <<  98 void G4AnalysisMessenger::SetH2HnManager(G4HnManager* h2HnManager)
123   command->AvailableForStates(G4State_PreInit, <<  99 {
124                                                << 100   fH2HnMessenger = new G4HnMessenger(h2HnManager);
125   return command;                              << 101 }  
126 }                                              << 
127                                                << 
128 //                                             << 
129 // public functions                            << 
130 //                                             << 
131                                                   102 
132 //____________________________________________    103 //_____________________________________________________________________________
133 void G4AnalysisMessenger::SetNewValue(G4UIcomm    104 void G4AnalysisMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
134 {                                                 105 {
135   if ( command == fOpenFileCmd.get() ) {       << 106   if ( command == fSetActivationCmd ) {
136     // G4cout << "Calling OpenFile from comman << 
137     fManager->OpenFile(newValues);             << 
138     return;                                    << 
139   }                                            << 
140                                                << 
141   if ( command == fWriteCmd.get() ) {          << 
142     fManager->WriteFromUI();                   << 
143     return;                                    << 
144   }                                            << 
145                                                << 
146   if ( command == fResetCmd.get() ) {          << 
147     fManager->ResetFromUI();                   << 
148     return;                                    << 
149   }                                            << 
150                                                << 
151   if ( command == fCloseFileCmd.get() ) {      << 
152     fManager->CloseFileFromUI(fCloseFileCmd->G << 
153     return;                                    << 
154   }                                            << 
155                                                << 
156   if ( command == fListCmd.get() ) {           << 
157     fManager->List(fListCmd->GetNewBoolValue(n << 
158     return;                                    << 
159   }                                            << 
160                                                << 
161   if ( command == fSetDefaultFileTypeCmd.get() << 
162     fManager->SetDefaultFileType(newValues);   << 
163     return;                                    << 
164   }                                            << 
165                                                << 
166   if ( command == fSetActivationCmd.get() ) {  << 
167     fManager->SetActivation(fSetActivationCmd-    107     fManager->SetActivation(fSetActivationCmd->GetNewBoolValue(newValues));
168     return;                                    << 108   }  
169   }                                            << 109   else if ( command == fVerboseCmd ) {
170                                                << 
171   if ( command == fVerboseCmd.get() ) {        << 
172     fManager->SetVerboseLevel(fVerboseCmd->Get    110     fManager->SetVerboseLevel(fVerboseCmd->GetNewIntValue(newValues));
173     return;                                    << 111   }  
174   }                                            << 112 }  
175                                                << 
176   if ( command == fCompressionCmd.get() ) {    << 
177     fManager->SetCompressionLevel(fCompression << 
178     return;                                    << 
179   }                                            << 
180                                                << 
181   if ( command == fSetFileNameCmd.get() ) {    << 
182     fManager->SetFileName(newValues);          << 
183     return;                                    << 
184   }                                            << 
185                                                << 
186   if ( command == fSetHistoDirNameCmd.get() )  << 
187     fManager->SetHistoDirectoryName(newValues) << 
188     return;                                    << 
189   }                                            << 
190                                                << 
191   if ( command == fSetNtupleDirNameCmd.get() ) << 
192     fManager->SetNtupleDirectoryName(newValues << 
193     return;                                    << 
194   }                                            << 
195 }                                              << 
196                                                   113