Commit 500fc41f1933c2c71e56a295aa17e93a0ebe227d

Authored by knodlseder
1 parent 0201b1fa

Put deadtime correction after effective area selection in GCTAResponse::mc.

Showing 1 changed file with 24 additions and 25 deletions
inst/cta/src/GCTAResponse.cpp
... ... @@ -475,34 +475,33 @@ GCTAEventAtom* GCTAResponse::mc(const double& area, const GPhoton& photon,
475 475 // Initialise event
476 476 GCTAEventAtom* event = NULL;
477 477  
478   - // Continue only if the photon arrives at the moment when the detector
479   - // is not dead. This implements the deadtime correction.
480   - double deadc = obs.deadc(photon.time());
481   - if (deadc >= 1.0 || ran.uniform() <= deadc) {
482   -
483   - // Get pointer on CTA pointing
484   - GCTAPointing* pnt = dynamic_cast<GCTAPointing*>(obs.pointing());
485   - if (pnt == NULL) {
486   - throw GCTAException::no_pointing(G_MC);
487   - }
  478 + // Get pointer on CTA pointing
  479 + GCTAPointing* pnt = dynamic_cast<GCTAPointing*>(obs.pointing());
  480 + if (pnt == NULL) {
  481 + throw GCTAException::no_pointing(G_MC);
  482 + }
488 483  
489   - // Get pointing direction zenith angle and azimuth [radians]
490   - double zenith = pnt->zenith();
491   - double azimuth = pnt->azimuth();
  484 + // Get pointing direction zenith angle and azimuth [radians]
  485 + double zenith = pnt->zenith();
  486 + double azimuth = pnt->azimuth();
492 487  
493   - // Get radial offset and polar angles of true photon in camera [radians]
494   - double theta_p = pnt->dir().dist(photon.dir());
495   - double phi_p = 0.0; //TODO Implement Phi dependence
  488 + // Get radial offset and polar angles of true photon in camera [radians]
  489 + double theta_p = pnt->dir().dist(photon.dir());
  490 + double phi_p = 0.0; //TODO Implement Phi dependence
496 491  
497   - // Compute effective area for photon
498   - double srcLogEng = photon.energy().log10TeV();
499   - double effective_area = aeff(theta_p, phi_p, zenith, azimuth, srcLogEng);
  492 + // Compute effective area for photon
  493 + double srcLogEng = photon.energy().log10TeV();
  494 + double effective_area = aeff(theta_p, phi_p, zenith, azimuth, srcLogEng);
500 495  
501   - // Compute limiting value
502   - double ulimite = effective_area / area;
  496 + // Compute limiting value
  497 + double ulimite = effective_area / area;
503 498  
504   - // Continue only if event is detected
505   - if (ran.uniform() <= ulimite) {
  499 + // Continue only if event is detected
  500 + if (ran.uniform() <= ulimite) {
  501 +
  502 + // Apply deadtime correction
  503 + double deadc = obs.deadc(photon.time());
  504 + if (deadc >= 1.0 || ran.uniform() <= deadc) {
506 505  
507 506 // Simulate offset from photon arrival direction
508 507 //TODO: Make a proper implementation depending on the response
... ... @@ -527,9 +526,9 @@ GCTAEventAtom* GCTAResponse::mc(const double&amp; area, const GPhoton&amp; photon,
527 526 event->energy(photon.energy());
528 527 event->time(photon.time());
529 528  
530   - } // endif: event was detected
  529 + } // endif: detector was alive
531 530  
532   - } // endif: detector was alive
  531 + } // endif: event was detected
533 532  
534 533 // Return event
535 534 return event;
... ...