Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 27 // Author: Ivana Hrivnacova, 25/07/2014 (ivana 28 29 #include "G4CsvRNtupleManager.hh" 30 #include "G4CsvRFileManager.hh" 31 #include "G4AnalysisManagerState.hh" 32 #include "G4AnalysisUtilities.hh" 33 34 using namespace G4Analysis; 35 36 //____________________________________________ 37 G4CsvRNtupleManager::G4CsvRNtupleManager(const 38 : G4TRNtupleManager<tools::rcsv::ntuple>(stat 39 {} 40 41 // 42 // private methods 43 // 44 45 //____________________________________________ 46 G4int G4CsvRNtupleManager::ReadNtupleImpl(cons 47 cons 48 cons 49 G4bo 50 { 51 Message(kVL4, "read", "ntuple", ntupleName); 52 53 // Ntuples are saved per object and per thre 54 // but apply the ntuple name and the thread 55 // only if fileName is not provided explicit 56 G4String fullFileName = fileName; 57 if ( ! isUserFileName ) { 58 fullFileName = fFileManager->GetNtupleFile 59 } 60 61 // Update directory path 62 if ( ! dirName.empty() ) { 63 fullFileName = "./" + dirName + "/" + full 64 } 65 66 // Open file 67 if ( ! fFileManager->OpenRFile(fullFileName) 68 auto ntupleFile = fFileManager->GetRFile(ful 69 70 // Create ntuple 71 auto rntuple = new tools::rcsv::ntuple(*ntup 72 auto id = SetNtuple(new G4TRNtupleDescriptio 73 74 Message(kVL2, "read", "ntuple", ntupleName, 75 76 return id; 77 } 78 79 //____________________________________________ 80 G4bool G4CsvRNtupleManager::GetTNtupleRow( 81 G4TRNtupleDescription<tools::rcsv::ntuple>* 82 { 83 auto ntuple = ntupleDescription->fNtuple; 84 85 auto isInitialized = ntupleDescription->fIsI 86 if ( ! isInitialized ) { 87 auto ntupleBinding = ntupleDescription->fN 88 if ( ! ntuple->initialize(G4cout, *ntupleB 89 Warn("Ntuple initialization failed !!", 90 return false; 91 } 92 ntupleDescription->fIsInitialized = true; 93 ntuple->start(); 94 } 95 96 auto next = ntuple->next(); 97 if ( next ) { 98 if ( ! ntuple->get_row() ) { 99 Warn("Ntuple get_row() failed !!", fkCla 100 return false; 101 } 102 } 103 104 return next; 105 } 106