Geant4 Cross Reference |
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 // $Id: XrayFluoAnalysisManager.hh >> 28 // GEANT4 tag $Name: xray_fluo-V03-02-00 27 // 29 // 28 // Author: Elena Guardincerri (Elena.Guardince 30 // Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) 29 // 31 // 30 // History: 32 // History: 31 // ----------- 33 // ----------- 32 // 11 Jul 2003 A.Mantero, code cleaning / Plo 34 // 11 Jul 2003 A.Mantero, code cleaning / Plotter-XML addiction 33 // Sep 2002 A.Mantero, AIDA3.0 Migration 35 // Sep 2002 A.Mantero, AIDA3.0 Migration 34 // 06 Dec 2001 A.Pfeiffer updated for singlet 36 // 06 Dec 2001 A.Pfeiffer updated for singleton 35 // 30 Nov 2001 Guy Barrand : migrate to AIDA- 37 // 30 Nov 2001 Guy Barrand : migrate to AIDA-2.2. 36 // 28 Nov 2001 Elena Guardincerri Created 38 // 28 Nov 2001 Elena Guardincerri Created 37 // 39 // 38 // ------------------------------------------- 40 // ------------------------------------------------------------------- 39 41 40 #ifndef G4PROCESSTESTANALYSIS_HH 42 #ifndef G4PROCESSTESTANALYSIS_HH 41 #define G4PROCESSTESTANALYSIS_HH 43 #define G4PROCESSTESTANALYSIS_HH >> 44 #ifdef G4ANALYSIS_USE 42 45 43 #include "globals.hh" 46 #include "globals.hh" 44 #include <vector> 47 #include <vector> 45 #include "G4ThreeVector.hh" 48 #include "G4ThreeVector.hh" 46 #include "XrayFluoDataSet.hh" 49 #include "XrayFluoDataSet.hh" >> 50 #include "AIDA/AIDA.h" // Headers for AIDA interfaces 47 #include "XrayFluoAnalysisMessenger.hh" 51 #include "XrayFluoAnalysisMessenger.hh" 48 52 49 class G4Step; 53 class G4Step; 50 class XrayFluoAnalysisMessenger; 54 class XrayFluoAnalysisMessenger; 51 55 52 //....oooOO0OOoo........oooOO0OOooo........ooo 56 //....oooOO0OOoo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 53 class XrayFluoAnalysisManager 57 class XrayFluoAnalysisManager 54 { 58 { 55 public: 59 public: 56 60 57 virtual ~XrayFluoAnalysisManager(); 61 virtual ~XrayFluoAnalysisManager(); 58 62 59 void book(); 63 void book(); 60 64 61 void finish(); 65 void finish(); 62 66 63 //fill histograms with data from XrayFluoSte 67 //fill histograms with data from XrayFluoSteppingAction 64 void analyseStepping(const G4Step* aStep); 68 void analyseStepping(const G4Step* aStep); 65 69 66 //fill histograms with data from XrayFluoEven 70 //fill histograms with data from XrayFluoEventAction 67 void analyseEnergyDep(G4double eDep); 71 void analyseEnergyDep(G4double eDep); 68 72 69 //fill histograms with data from XrayFluoPrim 73 //fill histograms with data from XrayFluoPrimarygeneratorAction 70 void analysePrimaryGenerator(G4double energy 74 void analysePrimaryGenerator(G4double energy); 71 75 72 //method to call to create an instance of th 76 //method to call to create an instance of this class 73 static XrayFluoAnalysisManager* getInstance( 77 static XrayFluoAnalysisManager* getInstance(); 74 78 >> 79 //method to create hbook or xml file for persistency >> 80 >> 81 void CreatePersistency(G4String fileName,G4String persistencyType, >> 82 G4bool readOnly = false, G4bool createNew = true); >> 83 >> 84 inline void CreatePersistency() {CreatePersistency(outputFileName,persistencyType);} >> 85 75 // methods to set the flag for the storage o 86 // methods to set the flag for the storage of the space of phases into ntuple 76 inline void PhaseSpaceOn(){phaseSpaceFlag = 87 inline void PhaseSpaceOn(){phaseSpaceFlag = true;} 77 88 78 inline void PhaseSpaceOff(){phaseSpaceFlag = 89 inline void PhaseSpaceOff(){phaseSpaceFlag = false;} 79 90 >> 91 void ExtractData(); >> 92 80 //method to chenge the name of the output fi 93 //method to chenge the name of the output file 81 void SetOutputFileName(G4String); 94 void SetOutputFileName(G4String); 82 95 83 const std::pair<G4double,G4String> GetEmitte << 96 //method to chenge the type of the output file >> 97 void SetOutputFileType(G4String); >> 98 >> 99 // method used by the messenger >> 100 G4bool GetDeletePersistencyFileFlag(); 84 101 >> 102 // methods used by RunManager and EvenManager to visualize partial results >> 103 void InitializePlotter(); >> 104 >> 105 void PlotCurrentResults(); >> 106 >> 107 std::vector<G4double>* GetEmittedParticleEnergies(); >> 108 std::vector<G4String>* GetEmittedParticleTypes(); 85 void LoadGunData(G4String, G4bool); 109 void LoadGunData(G4String, G4bool); 86 110 87 void SetPhysicFlag(G4bool); 111 void SetPhysicFlag(G4bool); 88 112 89 private: 113 private: 90 //private constructor in order to create a s 114 //private constructor in order to create a singleton 91 XrayFluoAnalysisManager(); 115 XrayFluoAnalysisManager(); 92 116 93 G4String outputFileName; 117 G4String outputFileName; 94 118 >> 119 G4bool visPlotter; >> 120 95 G4bool phaseSpaceFlag; 121 G4bool phaseSpaceFlag; 96 122 97 G4bool physicFlag; 123 G4bool physicFlag; 98 124 >> 125 G4String persistencyType; >> 126 >> 127 G4bool deletePersistencyFile; >> 128 >> 129 99 std::vector<G4double>* gunParticleEnergies; 130 std::vector<G4double>* gunParticleEnergies; 100 std::vector<G4String>* gunParticleTypes; 131 std::vector<G4String>* gunParticleTypes; 101 132 102 //Instance for singleton implementation this 133 //Instance for singleton implementation this is the returned 103 static XrayFluoAnalysisManager* instance; 134 static XrayFluoAnalysisManager* instance; 104 135 105 //pointer to the analysis messenger 136 //pointer to the analysis messenger 106 XrayFluoAnalysisMessenger* analisysMessenger 137 XrayFluoAnalysisMessenger* analisysMessenger; 107 138 108 G4bool dataLoaded; << 139 //XrayFluoEventAction* pEvent; 109 << 140 110 G4int fParticleEnergyAndTypeIndex; << 141 // analysis data members >> 142 >> 143 AIDA::IAnalysisFactory* analysisFactory; >> 144 AIDA::ITree* tree; >> 145 AIDA::ITree* treeDet; >> 146 >> 147 AIDA::IHistogramFactory* histogramFactory; >> 148 AIDA::IHistogram1D* histo_1; >> 149 AIDA::IHistogram1D* histo_2; >> 150 AIDA::IHistogram1D* histo_3; >> 151 AIDA::IHistogram1D* histo_4; >> 152 AIDA::IHistogram1D* histo_5; >> 153 AIDA::IHistogram1D* histo_6; >> 154 AIDA::IHistogram1D* histo_7; >> 155 AIDA::IHistogram1D* histo_8; >> 156 AIDA::IHistogram1D* histo_9; >> 157 //AIDA::IHistogram1D* histo_10; // >> 158 //AIDA::IHistogram1D* histo_12; // Created for debuggig purpose >> 159 //AIDA::IHistogram1D* histo_11; // >> 160 >> 161 AIDA::ICloud1D* beamCloud; >> 162 AIDA::ICloud1D* cloud_1; >> 163 AIDA::ICloud1D* cloud_2; >> 164 AIDA::ICloud1D* cloud_3; >> 165 >> 166 AIDA::ITupleFactory* tupleFactory; >> 167 AIDA::ITupleFactory* tupleDetFactory; >> 168 >> 169 AIDA::ITuple* tupleFluo; >> 170 AIDA::ITuple* tupleDetFluo; >> 171 >> 172 AIDA::IPlotterFactory* plotterFactory; >> 173 AIDA::IPlotter* plotter; 111 174 112 }; 175 }; >> 176 #endif 113 #endif 177 #endif 114 178 115 179 116 180 117 181