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.3.p3)


  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"
                                                   >>  32 #include "G4FileMessenger.hh"
                                                   >>  33 #include "G4H1Messenger.hh"
                                                   >>  34 #include "G4H2Messenger.hh"
                                                   >>  35 #include "G4H3Messenger.hh"
                                                   >>  36 #include "G4P1Messenger.hh"
                                                   >>  37 #include "G4P2Messenger.hh"
 31 #include "G4NtupleMessenger.hh"                    38 #include "G4NtupleMessenger.hh"
                                                   >>  39 #include "G4HnMessenger.hh"
                                                   >>  40 #include "G4AnalysisUtilities.hh"
 32                                                    41 
 33 #include "G4UIcmdWithABool.hh"                     42 #include "G4UIcmdWithABool.hh"
 34 #include "G4UIcmdWithAnInteger.hh"                 43 #include "G4UIcmdWithAnInteger.hh"
 35 #include "G4UIcmdWithAString.hh"               << 
 36 #include "G4UIcmdWithoutParameter.hh"          << 
 37 #include "G4Threading.hh"                      << 
 38                                                    44 
 39 using namespace G4Analysis;                        45 using namespace G4Analysis;
 40                                                    46 
 41 //____________________________________________     47 //_____________________________________________________________________________
 42 G4AnalysisMessenger::G4AnalysisMessenger(G4VAn     48 G4AnalysisMessenger::G4AnalysisMessenger(G4VAnalysisManager* manager)
 43   : fManager(manager)                          <<  49   : G4UImessenger(),
 44 {                                              <<  50     fManager(manager),
 45   fAnalysisDir = std::make_unique<G4UIdirector <<  51     fFileMessenger(nullptr),
                                                   >>  52     fH1Messenger(nullptr),
                                                   >>  53     fH2Messenger(nullptr),
                                                   >>  54     fH3Messenger(nullptr),
                                                   >>  55     fP1Messenger(nullptr),
                                                   >>  56     fP2Messenger(nullptr),
                                                   >>  57     fNtupleMessenger(nullptr),
                                                   >>  58     fH1HnMessenger(nullptr),
                                                   >>  59     fH2HnMessenger(nullptr),
                                                   >>  60     fH3HnMessenger(nullptr),
                                                   >>  61     fP1HnMessenger(nullptr),
                                                   >>  62     fP2HnMessenger(nullptr),
                                                   >>  63     fAnalysisDir(nullptr),  
                                                   >>  64     fSetActivationCmd(nullptr),
                                                   >>  65     fVerboseCmd(nullptr),
                                                   >>  66     fCompressionCmd(nullptr)
                                                   >>  67 {  
                                                   >>  68   fAnalysisDir = G4Analysis::make_unique<G4UIdirectory>("/analysis/");
 46   fAnalysisDir->SetGuidance("analysis control"     69   fAnalysisDir->SetGuidance("analysis control");
 47                                                    70 
 48   fOpenFileCmd = CreateCommand<G4UIcmdWithAStr <<  71   fSetActivationCmd = G4Analysis::make_unique<G4UIcmdWithABool>("/analysis/setActivation",this);
 49     "openFile", "Open analysis file", "FileNam <<  72   G4String guidance = "Set activation. \n";
 50   fOpenFileCmd->SetDefaultValue("");           <<  73   guidance += "When this option is enabled, only the histograms marked as activated\n";
 51   fOpenFileCmd->SetToBeBroadcasted(true);      <<  74   guidance += "are returned, filled or saved on file.\n";
 52                                                <<  75   guidance += "No warning is issued when Get or Fill is called on inactive histogram.";
 53   fWriteCmd = CreateCommandWithoutParameter(   <<  76   fSetActivationCmd->SetGuidance(guidance);
 54     "write", "Write analysis data.");          <<  77   fSetActivationCmd->SetParameterName("Activation",false);
 55   fWriteCmd->SetToBeBroadcasted(false);        <<  78 
 56                                                <<  79   fVerboseCmd = G4Analysis::make_unique<G4UIcmdWithAnInteger>("/analysis/verbose",this);
 57   fResetCmd = CreateCommandWithoutParameter(   <<  80   fVerboseCmd->SetGuidance("Set verbose level");
 58     "reset", "Reset analysis data.");          <<  81   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     82   fVerboseCmd->SetRange("VerboseLevel>=0 && VerboseLevel<=4");
 89                                                <<  83   
 90   fCompressionCmd = CreateCommand<G4UIcmdWithA <<  84   fCompressionCmd = G4Analysis::make_unique<G4UIcmdWithAnInteger>("/analysis/compression",this);
 91     "compression", "Set compression level", "C <<  85   fCompressionCmd->SetGuidance("Set compression level");
                                                   >>  86   fCompressionCmd->SetParameterName("CompressionLevel",false);
 92   fCompressionCmd->SetRange("CompressionLevel>     87   fCompressionCmd->SetRange("CompressionLevel>=0 && CompressionLevel<=4");
 93                                                <<  88   
 94   fSetFileNameCmd = CreateCommand<G4UIcmdWithA <<  89   fFileMessenger = G4Analysis::make_unique<G4FileMessenger>(manager);
 95     "setFileName", "Set name for the histogram <<  90   fH1Messenger = G4Analysis::make_unique<G4H1Messenger>(manager);
 96                                                <<  91   fH2Messenger = G4Analysis::make_unique<G4H2Messenger>(manager);
 97   fSetHistoDirNameCmd = CreateCommand<G4UIcmdW <<  92   fH3Messenger = G4Analysis::make_unique<G4H3Messenger>(manager);
 98     "setHistoDirName", "Set name for the histo <<  93   fP1Messenger = G4Analysis::make_unique<G4P1Messenger>(manager);
 99                                                <<  94   fP2Messenger = G4Analysis::make_unique<G4P2Messenger>(manager);
100   fSetNtupleDirNameCmd = CreateCommand<G4UIcmd <<  95   fNtupleMessenger = G4Analysis::make_unique<G4NtupleMessenger>(manager);
101     "setNtupleDirName", "Set name for the ntup << 
102                                                << 
103   fNtupleMessenger = std::make_unique<G4Ntuple << 
104 }                                                  96 }
105                                                    97 
106 //____________________________________________     98 //_____________________________________________________________________________
107 G4AnalysisMessenger::~G4AnalysisMessenger() =  <<  99 G4AnalysisMessenger::~G4AnalysisMessenger()
                                                   >> 100 {}
108                                                   101 
109 //                                                102 //
110 // private functions                           << 103 // public functions
111 //                                                104 //
112                                                   105 
                                                   >> 106 //_____________________________________________________________________________
                                                   >> 107 void G4AnalysisMessenger::SetH1HnManager(G4HnManager& h1HnManager)
                                                   >> 108 {
                                                   >> 109   fH1HnMessenger = G4Analysis::make_unique<G4HnMessenger>(h1HnManager);
                                                   >> 110 }  
113                                                   111 
114 //____________________________________________    112 //_____________________________________________________________________________
115 std::unique_ptr<G4UIcmdWithoutParameter>       << 113 void G4AnalysisMessenger::SetH2HnManager(G4HnManager& h2HnManager)
116 G4AnalysisMessenger::CreateCommandWithoutParam << 
117   G4String name, G4String guidance)            << 
118 {                                                 114 {
119   G4String fullName = "/analysis/" + name;     << 115   fH2HnMessenger = G4Analysis::make_unique<G4HnMessenger>(h2HnManager);
                                                   >> 116 }  
120                                                   117 
121   auto command = std::make_unique<G4UIcmdWitho << 118 //_____________________________________________________________________________
122   command->SetGuidance(guidance.c_str());      << 119 void G4AnalysisMessenger::SetH3HnManager(G4HnManager& h2HnManager)
123   command->AvailableForStates(G4State_PreInit, << 120 {
                                                   >> 121   fH2HnMessenger = G4Analysis::make_unique<G4HnMessenger>(h2HnManager);
                                                   >> 122 }  
124                                                   123 
125   return command;                              << 124 //_____________________________________________________________________________
126 }                                              << 125 void G4AnalysisMessenger::SetP1HnManager(G4HnManager& p1HnManager)
                                                   >> 126 {
                                                   >> 127   fP1HnMessenger = G4Analysis::make_unique<G4HnMessenger>(p1HnManager);
                                                   >> 128 }  
127                                                   129 
128 //                                             << 130 //_____________________________________________________________________________
129 // public functions                            << 131 void G4AnalysisMessenger::SetP2HnManager(G4HnManager& p2HnManager)
130 //                                             << 132 {
                                                   >> 133   fP2HnMessenger = G4Analysis::make_unique<G4HnMessenger>(p2HnManager);
                                                   >> 134 }  
131                                                   135 
132 //____________________________________________    136 //_____________________________________________________________________________
133 void G4AnalysisMessenger::SetNewValue(G4UIcomm    137 void G4AnalysisMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
134 {                                                 138 {
135   if ( command == fOpenFileCmd.get() ) {       << 
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() ) {     139   if ( command == fSetActivationCmd.get() ) {
167     fManager->SetActivation(fSetActivationCmd-    140     fManager->SetActivation(fSetActivationCmd->GetNewBoolValue(newValues));
168     return;                                    << 141   }  
169   }                                            << 142   else if ( command == fVerboseCmd.get() ) {
170                                                << 
171   if ( command == fVerboseCmd.get() ) {        << 
172     fManager->SetVerboseLevel(fVerboseCmd->Get    143     fManager->SetVerboseLevel(fVerboseCmd->GetNewIntValue(newValues));
173     return;                                    << 144   }  
174   }                                            << 145   else if ( command == fCompressionCmd.get() ) {
175                                                << 
176   if ( command == fCompressionCmd.get() ) {    << 
177     fManager->SetCompressionLevel(fCompression    146     fManager->SetCompressionLevel(fCompressionCmd->GetNewIntValue(newValues));
178     return;                                    << 147   }  
179   }                                            << 148 }  
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                                                   149