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.6)


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