Commit 5f3ab77ebc6db3785edfbe7d7096ccc24c01f5d8
1 parent
8567f16c
Close temporary file properly to avoid file opening error. Use new GCTAObservati…
…on::load method to avoid creation of temporary file in ctselect::select_events method.
Showing
1 changed file
with
15 additions
and
18 deletions
src/ctselect/ctselect.cpp
| ... | ... | @@ -40,6 +40,7 @@ |
| 40 | 40 | /* __ Debug definitions __________________________________________________ */ |
| 41 | 41 | |
| 42 | 42 | /* __ Coding definitions _________________________________________________ */ |
| 43 | +//#define G_USE_MKSTEMP //!< Use mkstemp for temporary filename | |
| 43 | 44 | |
| 44 | 45 | |
| 45 | 46 | /*========================================================================== |
| ... | ... | @@ -291,10 +292,13 @@ void ctselect::run(void) |
| 291 | 292 | m_infiles[i] = obs->eventfile(); |
| 292 | 293 | |
| 293 | 294 | // Get temporary file name |
| 294 | - //std::string filename = std::tmpnam(NULL); | |
| 295 | - char tpl[] = "ctselectXXXXXX"; | |
| 296 | - mkstemp(tpl); | |
| 295 | + #if G_USE_MKSTEMP | |
| 296 | + char tpl[] = "ctselectXXXXXX"; | |
| 297 | + int fileid = mkstemp(tpl); | |
| 297 | 298 | std::string filename(tpl); |
| 299 | + #else | |
| 300 | + std::string filename = std::tmpnam(NULL); | |
| 301 | + #endif | |
| 298 | 302 | |
| 299 | 303 | // Save observation in temporary file |
| 300 | 304 | obs->save(filename, true); |
| ... | ... | @@ -317,6 +321,11 @@ void ctselect::run(void) |
| 317 | 321 | // Load observation from temporary file, including event selection |
| 318 | 322 | select_events(obs, filename); |
| 319 | 323 | |
| 324 | + // Close temporary file | |
| 325 | + #if G_USE_MKSTEMP | |
| 326 | + close(fileid); | |
| 327 | + #endif | |
| 328 | + | |
| 320 | 329 | // Remove temporary file |
| 321 | 330 | std::remove(filename.c_str()); |
| 322 | 331 | |
| ... | ... | @@ -415,7 +424,7 @@ void ctselect::get_parameters(void) |
| 415 | 424 | try { |
| 416 | 425 | |
| 417 | 426 | // Load event list in CTA observation |
| 418 | - obs.load_unbinned(m_infile); | |
| 427 | + obs.load(m_infile); | |
| 419 | 428 | |
| 420 | 429 | // Append CTA observation to container |
| 421 | 430 | m_obs.append(obs); |
| ... | ... | @@ -628,20 +637,8 @@ void ctselect::select_events(GCTAObservation* obs, const std::string& filename) |
| 628 | 637 | } |
| 629 | 638 | else { |
| 630 | 639 | |
| 631 | - // Get temporary file name | |
| 632 | - //std::string tmpname = std::tmpnam(NULL); | |
| 633 | - char tpl[] = "ctselectXXXXXX"; | |
| 634 | - mkstemp(tpl); | |
| 635 | - std::string tmpname(tpl); | |
| 636 | - | |
| 637 | - // Save FITS file to temporary file | |
| 638 | - file.saveto(tmpname, true); | |
| 639 | - | |
| 640 | - // Load observation from temporary file | |
| 641 | - obs->load_unbinned(tmpname); | |
| 642 | - | |
| 643 | - // Remove temporary file | |
| 644 | - std::remove(tmpname.c_str()); | |
| 640 | + // Readload observation from FITS file | |
| 641 | + obs->load(file); | |
| 645 | 642 | |
| 646 | 643 | } |
| 647 | 644 | ... | ... |