Commit dc4622a12812d1ad6e0f17e1afd1305cf300f230
1 parent
0b1c5b6e
Openmp support works for cabin (#1970)
Finalized a workaround to the python wrapper issue that caused the 'ctbin::run()' method to crash.
Showing
1 changed file
with
13 additions
and
20 deletions
src/ctbin/ctbin.cpp
| @@ -235,26 +235,21 @@ void ctbin::run(void) | @@ -235,26 +235,21 @@ void ctbin::run(void) | ||
| 235 | // Write header into logger | 235 | // Write header into logger |
| 236 | log_header1(TERSE, gammalib::number("Bin observation", m_obs.size())); | 236 | log_header1(TERSE, gammalib::number("Bin observation", m_obs.size())); |
| 237 | 237 | ||
| 238 | + // Extract out all of the non-NULL observations | ||
| 239 | + log_header2(TERSE, "Executing pre-loop"); | ||
| 240 | + std::vector<GCTAObservation*> obs_list(0); | ||
| 241 | + for (GCTAObservation* obs = first_unbinned_observation(); obs != NULL; | ||
| 242 | + obs = next_unbinned_observation()) { | ||
| 243 | + obs_list.push_back(obs); | ||
| 244 | + } | ||
| 245 | + | ||
| 246 | + // Write sub-header into logger | ||
| 247 | + log_header2(TERSE, "Filling observations"); | ||
| 248 | + | ||
| 238 | // Loop over all unbinned CTA observations in the container | 249 | // Loop over all unbinned CTA observations in the container |
| 239 | #pragma omp parallel for | 250 | #pragma omp parallel for |
| 240 | - for (int o=0; o<m_obs.size(); o++) { | ||
| 241 | - GCTAObservation* obs = dynamic_cast<GCTAObservation*>(m_obs[o]); | ||
| 242 | - | ||
| 243 | - // Skip if the observation is NULL. This can happen if the observation | ||
| 244 | - // isn't a CTA observation | ||
| 245 | - if (obs == NULL) { | ||
| 246 | - std::string msg = " Skipping "+obs->instrument()+" observation"; | ||
| 247 | - log_string(NORMAL, msg); | ||
| 248 | - continue; | ||
| 249 | - } | ||
| 250 | - | ||
| 251 | - // Skip observation if we have a binned observation | ||
| 252 | - if (obs->eventtype() == "CountsCube") { | ||
| 253 | - obs = NULL; | ||
| 254 | - std::string msg = " Skipping binned "+obs->instrument()+" observation"; | ||
| 255 | - log_string(NORMAL, msg); | ||
| 256 | - continue; | ||
| 257 | - } | 251 | + for (int oindx=0; oindx<obs_list.size(); ++oindx) { |
| 252 | + GCTAObservation* obs = obs_list[oindx]; | ||
| 258 | 253 | ||
| 259 | // Fill the cube | 254 | // Fill the cube |
| 260 | fill_cube(obs); | 255 | fill_cube(obs); |
| @@ -282,8 +277,6 @@ void ctbin::run(void) | @@ -282,8 +277,6 @@ void ctbin::run(void) | ||
| 282 | publish(); | 277 | publish(); |
| 283 | } | 278 | } |
| 284 | 279 | ||
| 285 | -log_string(NORMAL, "RUNNING HAS FINISHED"); | ||
| 286 | - | ||
| 287 | // Return | 280 | // Return |
| 288 | return; | 281 | return; |
| 289 | } | 282 | } |