#include <G4CsvAnalysisManager.hh>
Inheritance diagram for G4CsvAnalysisManager:
Public Member Functions | |
G4CsvAnalysisManager () | |
~G4CsvAnalysisManager () | |
virtual G4bool | OpenFile (const G4String &fileName) |
virtual G4bool | Write () |
virtual G4bool | CloseFile () |
virtual G4int | CreateH1 (const G4String &name, const G4String &title, G4int nbins, G4double xmin, G4double xmax, const G4String &unitName="none", const G4String &fcnName="none") |
virtual G4int | CreateH2 (const G4String &name, const G4String &title, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none") |
virtual G4bool | SetH1 (G4int id, G4int nbins, G4double xmin, G4double xmax, const G4String &unitName="none", const G4String &fcnName="none") |
virtual G4bool | SetH2 (G4int id, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none") |
virtual G4bool | ScaleH1 (G4int id, G4double factor) |
virtual G4bool | ScaleH2 (G4int id, G4double factor) |
virtual void | CreateNtuple (const G4String &name, const G4String &title) |
virtual G4int | CreateNtupleIColumn (const G4String &name) |
virtual G4int | CreateNtupleFColumn (const G4String &name) |
virtual G4int | CreateNtupleDColumn (const G4String &name) |
virtual void | FinishNtuple () |
virtual G4bool | FillH1 (G4int id, G4double value, G4double weight=1.0) |
virtual G4bool | FillH2 (G4int id, G4double xvalue, G4double yvalue, G4double weight=1.0) |
virtual G4bool | FillNtupleIColumn (G4int id, G4int value) |
virtual G4bool | FillNtupleFColumn (G4int id, G4float value) |
virtual G4bool | FillNtupleDColumn (G4int id, G4double value) |
virtual G4bool | AddNtupleRow () |
virtual G4int | GetH1Nbins (G4int id) const |
virtual G4double | GetH1Xmin (G4int id) const |
virtual G4double | GetH1Xmax (G4int id) const |
virtual G4double | GetH1Width (G4int id) const |
virtual G4int | GetH2Nxbins (G4int id) const |
virtual G4double | GetH2Xmin (G4int id) const |
virtual G4double | GetH2Xmax (G4int id) const |
virtual G4double | GetH2XWidth (G4int id) const |
virtual G4int | GetH2Nybins (G4int id) const |
virtual G4double | GetH2Ymin (G4int id) const |
virtual G4double | GetH2Ymax (G4int id) const |
virtual G4double | GetH2YWidth (G4int id) const |
virtual G4bool | SetH1Title (G4int id, const G4String &title) |
virtual G4bool | SetH1XAxisTitle (G4int id, const G4String &title) |
virtual G4bool | SetH1YAxisTitle (G4int id, const G4String &title) |
virtual G4bool | SetH2Title (G4int id, const G4String &title) |
virtual G4bool | SetH2XAxisTitle (G4int id, const G4String &title) |
virtual G4bool | SetH2YAxisTitle (G4int id, const G4String &title) |
virtual G4bool | SetH2ZAxisTitle (G4int id, const G4String &title) |
virtual G4String | GetH1Title (G4int id) const |
virtual G4String | GetH1XAxisTitle (G4int id) const |
virtual G4String | GetH1YAxisTitle (G4int id) const |
virtual G4String | GetH2Title (G4int id) const |
virtual G4String | GetH2XAxisTitle (G4int id) const |
virtual G4String | GetH2YAxisTitle (G4int id) const |
virtual G4String | GetH2ZAxisTitle (G4int id) const |
virtual tools::wcsv::ntuple * | GetNtuple () const |
Static Public Member Functions | |
static G4CsvAnalysisManager * | Instance () |
Protected Member Functions | |
virtual G4bool | WriteOnAscii (std::ofstream &output) |
Definition at line 43 of file G4CsvAnalysisManager.hh.
G4CsvAnalysisManager::G4CsvAnalysisManager | ( | ) |
Definition at line 51 of file G4CsvAnalysisManager.cc.
References FatalException, and G4Exception().
Referenced by Instance().
00052 : G4VAnalysisManager("Csv"), 00053 fFile(0), 00054 fNtuple(0), 00055 fNtupleBooking(0), 00056 fNtupleIColumnMap(), 00057 fNtupleFColumnMap(), 00058 fNtupleDColumnMap() 00059 { 00060 if ( fgInstance ) { 00061 G4ExceptionDescription description; 00062 description << " " 00063 << "G4CsvAnalysisManager already exists." 00064 << "Cannot create another instance."; 00065 G4Exception("G4CsvAnalysisManager::G4CsvAnalysisManager()", 00066 "Analysis_F001", FatalException, description); 00067 } 00068 00069 fgInstance = this; 00070 }
G4CsvAnalysisManager::~G4CsvAnalysisManager | ( | ) |
Definition at line 73 of file G4CsvAnalysisManager.cc.
00074 { 00075 delete fNtuple; 00076 delete fNtupleBooking; 00077 delete fFile; 00078 00079 fgInstance = 0; 00080 }
G4bool G4CsvAnalysisManager::AddNtupleRow | ( | ) | [virtual] |
Implements G4VAnalysisManager.
Definition at line 617 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fpVerboseL4, G4Exception(), JustWarning, and G4AnalysisVerbose::Message().
00618 { 00619 #ifdef G4VERBOSE 00620 if ( fpVerboseL4 ) 00621 fpVerboseL4->Message("add", "ntuple row", ""); 00622 #endif 00623 00624 if ( ! fNtuple ) { 00625 G4ExceptionDescription description; 00626 description << " " << "ntuple does not exist. "; 00627 G4Exception("G4CsvAnalysisManager::AddNtupleRow()", 00628 "Analysis_W008", JustWarning, description); 00629 return false; 00630 } 00631 00632 fNtuple->add_row(); 00633 #ifdef G4VERBOSE 00634 if ( fpVerboseL4 ) 00635 fpVerboseL4->Message("add", "ntuple row", ""); 00636 #endif 00637 00638 return true; 00639 }
G4bool G4CsvAnalysisManager::CloseFile | ( | ) | [virtual] |
Implements G4VAnalysisManager.
Definition at line 266 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fLockFileName, G4VAnalysisManager::fpVerboseL1, G4VAnalysisManager::fpVerboseL4, G4Exception(), G4VAnalysisManager::GetFullFileName(), JustWarning, and G4AnalysisVerbose::Message().
00267 { 00268 G4bool result = true; 00269 00270 #ifdef G4VERBOSE 00271 if ( fpVerboseL4 ) 00272 fpVerboseL4->Message("close", "file", GetFullFileName()); 00273 #endif 00274 00275 // reset data 00276 result = Reset(); 00277 if ( ! result ) { 00278 G4ExceptionDescription description; 00279 description << " " << "Resetting data failed"; 00280 G4Exception("G4CsvAnalysisManager::CloseFile()", 00281 "Analysis_W002", JustWarning, description); 00282 result = false; 00283 } 00284 00285 // close file 00286 fFile->close(); 00287 fLockFileName = false; 00288 00289 #ifdef G4VERBOSE 00290 if ( fpVerboseL1 ) 00291 fpVerboseL1->Message("close", "file", GetFullFileName()); 00292 #endif 00293 00294 return true; 00295 }
G4int G4CsvAnalysisManager::CreateH1 | ( | const G4String & | name, | |
const G4String & | title, | |||
G4int | nbins, | |||
G4double | xmin, | |||
G4double | xmax, | |||
const G4String & | unitName = "none" , |
|||
const G4String & | fcnName = "none" | |||
) | [virtual] |
G4int G4CsvAnalysisManager::CreateH2 | ( | const G4String & | name, | |
const G4String & | title, | |||
G4int | nxbins, | |||
G4double | xmin, | |||
G4double | xmax, | |||
G4int | nybins, | |||
G4double | ymin, | |||
G4double | ymax, | |||
const G4String & | xunitName = "none" , |
|||
const G4String & | yunitName = "none" , |
|||
const G4String & | xfcnName = "none" , |
|||
const G4String & | yfcnName = "none" | |||
) | [virtual] |
Implements G4VAnalysisManager.
Definition at line 366 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fpVerboseL2, G4VAnalysisManager::fpVerboseL4, G4Exception(), JustWarning, and G4AnalysisVerbose::Message().
00368 { 00369 if ( fNtupleBooking ) { 00370 G4ExceptionDescription description; 00371 description << " " 00372 << "Ntuple already exists. " 00373 << "(Only one ntuple is currently supported.)"; 00374 G4Exception("G4CsvAnalysisManager::CreateNtuple()", 00375 "Analysis_W006", JustWarning, description); 00376 return; 00377 } 00378 00379 #ifdef G4VERBOSE 00380 if ( fpVerboseL4 ) 00381 fpVerboseL4->Message("create", "ntuple", name); 00382 #endif 00383 00384 // Create ntuple booking 00385 fNtupleBooking = new tools::ntuple_booking(); 00386 fNtupleBooking->m_name = name; 00387 fNtupleBooking->m_title = title; 00388 // ntuple booking object is deleted in destructor 00389 00390 // Create ntuple if the file is open 00391 if ( fFile ) { 00392 fNtuple = new tools::wcsv::ntuple(*fFile); 00393 // ntuple object is deleted when closing a file 00394 } 00395 00396 #ifdef G4VERBOSE 00397 if ( fpVerboseL2 ) 00398 fpVerboseL2->Message("create", "ntuple", name); 00399 #endif 00400 }
Implements G4VAnalysisManager.
Definition at line 479 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fFirstNtupleColumnId, G4VAnalysisManager::fLockFirstNtupleColumnId, G4VAnalysisManager::fpVerboseL2, G4VAnalysisManager::fpVerboseL4, G4Exception(), JustWarning, and G4AnalysisVerbose::Message().
00480 { 00481 #ifdef G4VERBOSE 00482 if ( fpVerboseL4 ) 00483 fpVerboseL4->Message("create", "ntuple D column", name); 00484 #endif 00485 00486 if ( ! fNtupleBooking ) { 00487 G4ExceptionDescription description; 00488 description << " " 00489 << "Ntuple has to be created first. "; 00490 G4Exception("G4CsvAnalysisManager::CreateNtupleDColumn()", 00491 "Analysis_W005", JustWarning, description); 00492 return -1; 00493 } 00494 00495 // Save column info in booking 00496 G4int index = fNtupleBooking->m_columns.size(); 00497 fNtupleBooking->add_column<double>(name); 00498 00499 // Create column if ntuple already exists 00500 if ( fNtuple ) { 00501 tools::wcsv::ntuple::column<double>* column 00502 = fNtuple->create_column<double>(name); 00503 fNtupleDColumnMap[index] = column; 00504 } 00505 00506 fLockFirstNtupleColumnId = true; 00507 00508 #ifdef G4VERBOSE 00509 if ( fpVerboseL2 ) 00510 fpVerboseL2->Message("create", "ntuple D column", name); 00511 #endif 00512 00513 return index + fFirstNtupleColumnId; 00514 }
Implements G4VAnalysisManager.
Definition at line 441 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fFirstNtupleColumnId, G4VAnalysisManager::fLockFirstNtupleColumnId, G4VAnalysisManager::fpVerboseL2, G4VAnalysisManager::fpVerboseL4, G4Exception(), JustWarning, and G4AnalysisVerbose::Message().
00442 { 00443 #ifdef G4VERBOSE 00444 if ( fpVerboseL4 ) 00445 fpVerboseL4->Message("create", "ntuple F column", name); 00446 #endif 00447 00448 if ( ! fNtupleBooking ) { 00449 G4ExceptionDescription description; 00450 description << " " 00451 << "Ntuple has to be created first. "; 00452 G4Exception("G4CsvAnalysisManager::CreateNtupleFColumn()", 00453 "Analysis_W005", JustWarning, description); 00454 return -1; 00455 } 00456 00457 // Save column info in booking 00458 G4int index = fNtupleBooking->m_columns.size(); 00459 fNtupleBooking->add_column<float>(name); 00460 00461 // Create column if ntuple already exists 00462 if ( fNtuple ) { 00463 tools::wcsv::ntuple::column<float>* column 00464 = fNtuple->create_column<float>(name); 00465 fNtupleFColumnMap[index] = column; 00466 } 00467 00468 fLockFirstNtupleColumnId = true; 00469 00470 #ifdef G4VERBOSE 00471 if ( fpVerboseL2 ) 00472 fpVerboseL2->Message("create", "ntuple F column", name); 00473 #endif 00474 00475 return index + fFirstNtupleColumnId; 00476 }
Implements G4VAnalysisManager.
Definition at line 403 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fFirstNtupleColumnId, G4VAnalysisManager::fLockFirstNtupleColumnId, G4VAnalysisManager::fpVerboseL2, G4VAnalysisManager::fpVerboseL4, G4Exception(), JustWarning, and G4AnalysisVerbose::Message().
00404 { 00405 #ifdef G4VERBOSE 00406 if ( fpVerboseL4 ) 00407 fpVerboseL4->Message("create", "ntuple I column", name); 00408 #endif 00409 00410 if ( ! fNtupleBooking ) { 00411 G4ExceptionDescription description; 00412 description << " " 00413 << "Ntuple has to be created first. "; 00414 G4Exception("G4CsvAnalysisManager::CreateNtupleIColumn()", 00415 "Analysis_W005", JustWarning, description); 00416 return -1; 00417 } 00418 00419 // Save column info in booking 00420 G4int index = fNtupleBooking->m_columns.size(); 00421 fNtupleBooking->add_column<int>(name); 00422 00423 // Create column if ntuple already exists 00424 if ( fNtuple ) { 00425 tools::wcsv::ntuple::column<int>* column 00426 = fNtuple->create_column<int>(name); 00427 fNtupleIColumnMap[index] = column; 00428 } 00429 00430 fLockFirstNtupleColumnId = true; 00431 00432 #ifdef G4VERBOSE 00433 if ( fpVerboseL2 ) 00434 fpVerboseL2->Message("create", "ntuple I column", name); 00435 #endif 00436 00437 return index + fFirstNtupleColumnId; 00438 }
Implements G4VAnalysisManager.
Definition at line 524 of file G4CsvAnalysisManager.cc.
References G4Exception(), and JustWarning.
00526 { 00527 G4ExceptionDescription description; 00528 description << " " 00529 << "Histograms are not supported." ; 00530 G4Exception("G4CsvAnalysisManager::FillH1()", 00531 "Analysis_W007", JustWarning, description); 00532 return false; 00533 }
G4bool G4CsvAnalysisManager::FillH2 | ( | G4int | id, | |
G4double | xvalue, | |||
G4double | yvalue, | |||
G4double | weight = 1.0 | |||
) | [virtual] |
Implements G4VAnalysisManager.
Definition at line 536 of file G4CsvAnalysisManager.cc.
References G4Exception(), and JustWarning.
00539 { 00540 G4ExceptionDescription description; 00541 description << " " 00542 << "Histograms are not supported." ; 00543 G4Exception("G4CsvAnalysisManager::FillH2()", 00544 "Analysis_W007", JustWarning, description); 00545 return false; 00546 }
Implements G4VAnalysisManager.
Definition at line 594 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fpVerboseL4, G4Exception(), JustWarning, and G4AnalysisVerbose::Message().
00595 { 00596 tools::wcsv::ntuple::column<double>* column = GetNtupleDColumn(id); 00597 if ( ! column ) { 00598 G4ExceptionDescription description; 00599 description << " " << "column " << id << " does not exist."; 00600 G4Exception("G4CsvAnalysisManager::FillNtupleDColumn()", 00601 "Analysis_W009", JustWarning, description); 00602 return false; 00603 } 00604 00605 column->fill(value); 00606 #ifdef G4VERBOSE 00607 if ( fpVerboseL4 ) { 00608 G4ExceptionDescription description; 00609 description << " id " << id << " value " << value; 00610 fpVerboseL4->Message("fill", "ntuple D column", description); 00611 } 00612 #endif 00613 return true; 00614 }
Implements G4VAnalysisManager.
Definition at line 571 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fpVerboseL4, G4Exception(), JustWarning, and G4AnalysisVerbose::Message().
00572 { 00573 tools::wcsv::ntuple::column<float>* column = GetNtupleFColumn(id); 00574 if ( ! column ) { 00575 G4ExceptionDescription description; 00576 description << " " << "column " << id << " does not exist."; 00577 G4Exception("G4CsvAnalysisManager::FillNtupleFColumn()", 00578 "Analysis_W009", JustWarning, description); 00579 return false; 00580 } 00581 00582 column->fill(value); 00583 #ifdef G4VERBOSE 00584 if ( fpVerboseL4 ) { 00585 G4ExceptionDescription description; 00586 description << " id " << id << " value " << value; 00587 fpVerboseL4->Message("fill", "ntuple F column", description); 00588 } 00589 #endif 00590 return true; 00591 }
Implements G4VAnalysisManager.
Definition at line 549 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::fpVerboseL4, G4Exception(), JustWarning, and G4AnalysisVerbose::Message().
00550 { 00551 tools::wcsv::ntuple::column<int>* column = GetNtupleIColumn(id); 00552 if ( ! column ) { 00553 G4ExceptionDescription description; 00554 description << " " << "column " << id << " does not exist."; 00555 G4Exception("G4CsvAnalysisManager::FillNtupleIColumn()", 00556 "Analysis_W009", JustWarning, description); 00557 return false; 00558 } 00559 00560 column->fill(value); 00561 #ifdef G4VERBOSE 00562 if ( fpVerboseL4 ) { 00563 G4ExceptionDescription description; 00564 description << " id " << id << " value " << value; 00565 fpVerboseL4->Message("fill", "ntuple I column", description); 00566 } 00567 #endif 00568 return true; 00569 }
void G4CsvAnalysisManager::FinishNtuple | ( | ) | [virtual] |
tools::wcsv::ntuple * G4CsvAnalysisManager::GetNtuple | ( | ) | const [virtual] |
G4CsvAnalysisManager * G4CsvAnalysisManager::Instance | ( | ) | [static] |
Definition at line 41 of file G4CsvAnalysisManager.cc.
References G4CsvAnalysisManager().
00042 { 00043 if ( fgInstance == 0 ) { 00044 fgInstance = new G4CsvAnalysisManager(); 00045 } 00046 00047 return fgInstance; 00048 }
Implements G4VAnalysisManager.
Definition at line 177 of file G4CsvAnalysisManager.cc.
References G4String::append(), G4VAnalysisManager::fFileName, G4VAnalysisManager::fLockFileName, G4VAnalysisManager::fpVerboseL1, G4VAnalysisManager::fpVerboseL4, G4cerr, G4cout, G4endl, G4Exception(), G4VAnalysisManager::GetFileType(), JustWarning, and G4AnalysisVerbose::Message().
00178 { 00179 // Keep file name 00180 fFileName = fileName; 00181 00182 // Add file extension .csv if no extension is given 00183 G4String name(fileName); 00184 if ( name.find(".") == std::string::npos ) { 00185 name.append("."); 00186 name.append(GetFileType()); 00187 } 00188 00189 #ifdef G4VERBOSE 00190 if ( fpVerboseL4 ) 00191 fpVerboseL4->Message("open", "analysis file", name); 00192 #endif 00193 00194 // delete a previous file if it exists 00195 if ( fFile ) delete fFile; 00196 00197 fFile = new std::ofstream(name); 00198 if ( fFile->fail() ) { 00199 G4ExceptionDescription description; 00200 description << " " << "Cannot open file " << fileName; 00201 G4Exception("G4CsvAnalysisManager::OpenFile()", 00202 "Analysis_W001", JustWarning, description); 00203 return false; 00204 } 00205 00206 // Create ntuple if it was already booked 00207 if ( fNtupleBooking && ( ! fNtuple ) ) { 00208 #ifdef G4VERBOSE 00209 if ( fpVerboseL4 ) 00210 fpVerboseL4->Message("create from booking", "ntuple", name); 00211 #endif 00212 fNtuple = new tools::wcsv::ntuple(*fFile, G4cerr, *fNtupleBooking); 00213 if ( fNtupleBooking->m_columns.size() ) { 00214 // store ntuple columns in local maps 00215 const std::vector<tools::ntuple_booking::col_t>& columns 00216 = fNtupleBooking->m_columns; 00217 std::vector<tools::ntuple_booking::col_t>::const_iterator it; 00218 G4int index = 0; 00219 for ( it = columns.begin(); it!=columns.end(); ++it) { 00220 if ( (*it).second == tools::_cid(int(0) ) ) { 00221 G4cout << "adding int " << fNtuple->find_column<int>((*it).first) << G4endl; 00222 fNtupleIColumnMap[index++] = fNtuple->find_column<int>((*it).first); 00223 } 00224 else if( (*it).second == tools::_cid(float(0) ) ) { 00225 fNtupleFColumnMap[index++] = fNtuple->find_column<float>((*it).first); 00226 } 00227 else if((*it).second== tools::_cid(double(0))) { 00228 fNtupleDColumnMap[index++] = fNtuple->find_column<double>((*it).first); 00229 } 00230 else { 00231 G4ExceptionDescription description; 00232 description << " " 00233 << "Unsupported column type " << (*it).first; 00234 G4Exception("G4CsvAnalysisManager::OpenFile()", 00235 "Analysis_W004", JustWarning, description); 00236 } 00237 } 00238 } 00239 } 00240 00241 fLockFileName = true; 00242 00243 #ifdef G4VERBOSE 00244 if ( fpVerboseL1 ) 00245 fpVerboseL1->Message("open", "analysis file", name); 00246 #endif 00247 00248 return true; 00249 }
G4bool G4CsvAnalysisManager::SetH1 | ( | G4int | id, | |
G4int | nbins, | |||
G4double | xmin, | |||
G4double | xmax, | |||
const G4String & | unitName = "none" , |
|||
const G4String & | fcnName = "none" | |||
) | [virtual] |
G4bool G4CsvAnalysisManager::SetH2 | ( | G4int | id, | |
G4int | nxbins, | |||
G4double | xmin, | |||
G4double | xmax, | |||
G4int | nybins, | |||
G4double | ymin, | |||
G4double | ymax, | |||
const G4String & | xunitName = "none" , |
|||
const G4String & | yunitName = "none" , |
|||
const G4String & | xfcnName = "none" , |
|||
const G4String & | yfcnName = "none" | |||
) | [virtual] |
G4bool G4CsvAnalysisManager::Write | ( | ) | [virtual] |
Implements G4VAnalysisManager.
Definition at line 252 of file G4CsvAnalysisManager.cc.
References G4VAnalysisManager::IsAscii(), and G4VAnalysisManager::WriteAscii().
00253 { 00254 // nothing to be done for Csv file 00255 G4bool result = true; 00256 00257 // Write ASCII if activated 00258 if ( IsAscii() ) { 00259 result = WriteAscii(); 00260 } 00261 00262 return result; 00263 }
G4bool G4CsvAnalysisManager::WriteOnAscii | ( | std::ofstream & | output | ) | [protected, virtual] |
Implements G4VAnalysisManager.
Definition at line 164 of file G4CsvAnalysisManager.cc.
00165 { 00166 // Write selected objects on ASCII file 00167 // To be added: ntuple 00168 00169 return true; 00170 }