553 {
554 MsgStream log(
msgSvc(), name() );
555
556 log << MSG::INFO
557 << "=============================================================" << endmsg;
558 log << MSG::INFO << "This is EKHARA, Version 3.1" << endmsg;
559 switch ( m_finalState )
560 {
561 case 0:
562 log << MSG::INFO << "\tSimulating the process:\te+e- -> e+e- pi0pi0" << endmsg;
563 break;
564 case 1:
565 log << MSG::INFO << "\tSimulating the process:\te+e- -> e+e- pi+pi-" << endmsg;
566 break;
567 case 2: log << MSG::INFO << "\tSimulating the process:\te+e- -> e+e- pi0" << endmsg; break;
568 case 3: log << MSG::INFO << "\tSimulating the process:\te+e- -> e+e- eta" << endmsg; break;
569 case 4:
570 log << MSG::INFO << "\tSimulating the process:\te+e- -> e+e- etaPRIME" << endmsg;
571 break;
572 case 5:
573 log << MSG::INFO << "\tSimulating the process:\te+e- -> e+e- Chi_c0" << endmsg;
574 break;
575 case 6:
576 log << MSG::INFO << "\tSimulating the process:\te+e- -> e+e- Chi_c1" << endmsg;
577 break;
578 case 7:
579 log << MSG::INFO << "\tSimulating the process:\te+e- -> e+e- Chi_c2" << endmsg;
580 break;
581 default:
582 log << MSG::ERROR << "WRONG channel ID: Process not implemented!" << endmsg;
583 return StatusCode::FAILURE;
584 break;
585 }
586
587 if ( m_finalState == 0 )
588 {
589 if ( m_switchNLO )
590 {
591 log << MSG::ERROR << "NLO not implemented for this Process!" << endmsg;
592 return StatusCode::FAILURE;
593 }
594 if ( m_twoPionAmplitudes != 4 )
595 {
596 log << MSG::ERROR
597 << " Neutral Pion Pairs only with full TwoPionAmplitudes == 4 ! \t You used "
598 << m_twoPionAmplitudes << endmsg;
599 return StatusCode::FAILURE;
600 }
601 if ( m_twoPionPhspAlg != 1 )
602 {
603 log << MSG::ERROR
604 << " Neutral Pion Pairs only with full TwoPionPhaseSpaceAlg == 1 ! \t You used "
605 << m_twoPionPhspAlg << endmsg;
606 return StatusCode::FAILURE;
607 }
608 log << MSG::INFO << "\tPhase space generation using algorithm: " << m_twoPionPhspAlg
609 << endmsg;
610 log << MSG::INFO << "\tMatrix element: \t|M_s + M_t + M_2g(full)|^2" << endmsg;
611
612 log << MSG::INFO << "The following conditions are applied:" << endmsg;
613 log << MSG::INFO << "\tPion Momentum: " << m_twoPionThetaMin << " < Theta [deg] < "
614 << m_twoPionThetaMax << endmsg;
615 log << MSG::INFO << "\tMissing Momentum: " << m_twoPionMissThetaMin << " < Theta [deg] < "
616 << m_twoPionMissThetaMax << endmsg;
617 }
618 else if ( m_finalState == 1 )
619 {
620 if ( m_switchNLO )
621 {
622 log << MSG::ERROR << "NLO not implemented for this Process!" << endmsg;
623 return StatusCode::FAILURE;
624 }
625 if ( m_twoPionPhspAlg < 0 || m_twoPionPhspAlg > 1 )
626 {
627 log << MSG::ERROR
628 << " Wrong choice of phase space generation algorithm: " << m_twoPionPhspAlg
629 << endmsg;
630 return StatusCode::FAILURE;
631 }
632
633 log << MSG::INFO << "\tPhase space generation using algorithm: " << m_twoPionPhspAlg
634 << endmsg;
635 log << MSG::INFO << "\tMatrix element: ";
636 switch ( m_twoPionAmplitudes )
637 {
638 case 1: log << MSG::INFO << "\t|M_s|^2" << endmsg; break;
639 case 2: log << MSG::INFO << "\t|M_s + M_t|^2" << endmsg; break;
640 case 3: log << MSG::INFO << "\t|M_s + M_t + M_2g(Born)|^2" << endmsg; break;
641 case 4: log << MSG::INFO << "\t|M_s + M_t + M_2g(full)|^2" << endmsg; break;
642 default: break;
643 }
644
645 switch ( m_twoPionFormFactor )
646 {
647 case 0: log << MSG::INFO << "\tUsing KS pion form factor" << endmsg; break;
648 case 1: log << MSG::INFO << "\tUsing GS pion form factor" << endmsg; break;
649 case 2: log << MSG::INFO << "\tUsing new GS pion form factor" << endmsg; break;
650 default:
651 log << MSG::WARNING
652 << "Undefined pion form factor switch! Using new GS pion form factor instead!"
653 << endmsg;
654 m_twoPionFormFactor = 2;
655 break;
656 }
657
658 log << MSG::INFO << "The following conditions are applied:" << endmsg;
659 log << MSG::INFO << "\tPion Momentum: " << m_twoPionThetaMin << " < Theta [deg] < "
660 << m_twoPionThetaMax << endmsg;
661 log << MSG::INFO << "\tMissing Momentum: " << m_twoPionMissThetaMin << " < Theta [deg] < "
662 << m_twoPionMissThetaMax << endmsg;
663 }
664 else if ( m_finalState >= 2 && m_finalState <= 4 )
665 {
666 if ( m_switchNLO )
667 {
668 log << MSG::INFO << "\tWith NLO corrections: mgamma = " << m_eps_ph * 0.51099906E-3
669 << endmsg;
670 if ( m_nloWithWeights )
671 { log << MSG::WARNING << "Output will contain weighted events!" << endmsg; }
672 else
673 { log << MSG::WARNING << "Attention! Events will be unweighted for output!" << endmsg; }
674 if ( m_switchVP )
675 {
676 log << MSG::INFO << "\tVacuum polarization included:" << endmsg;
677 log << MSG::INFO << "\thttp://www-com.physik.hu-berlin.de/~fjeger/software.html"
678 << endmsg;
679 }
680 else { log << MSG::INFO << "\tVacuum polarization NOT included:" << endmsg; }
681 }
682 else
683 {
684 log << MSG::INFO << "\tWithout NLO corrections!" << endmsg;
685 if ( m_switchVP )
686 {
687 log << MSG::ERROR << "Vacuum polarization can ONLY be included for NLO!" << endmsg;
688 return StatusCode::FAILURE;
689 }
690 }
691
692 log << MSG::INFO << "The cross section will be calculated" << endmsg;
693 log << MSG::INFO << "\tMatrix element: ";
694 switch ( m_mesonAmplitudes )
695 {
696 case 1:
697 log << MSG::INFO << "\t|M_s|^2" << endmsg;
698 if ( m_switchNLO == 1 )
699 {
700 log << MSG::ERROR << " NLO not implemented for s-channel!" << endmsg;
701 return StatusCode::FAILURE;
702 }
703 if ( m_TFF_ID == 7 || m_TFF_ID == 8 )
704 {
705 log << MSG::WARNING
706 << "TFF Models 7 and 8 were not compared to data in the only-s-channel "
707 "configuration!"
708 << endmsg;
709 }
710 break;
711 case 2: log << MSG::INFO << "\t|M_t|^2" << endmsg; break;
712 case 3: log << MSG::INFO << "\t|M_s + M_t|^2" << endmsg; break;
713 default: break;
714 }
715
716 log << MSG::INFO << "The following conditions are applied:" << endmsg;
717 log << MSG::INFO << "\te+ : " << m_posiThetaMin << " < Theta [deg] < " << m_posiThetaMax
718 << endmsg;
719 log << MSG::INFO << "\t " << m_posiEnergyMin << " < Energy [GeV] < "
720 << m_posiEnergyMin << endmsg;
721 log << MSG::INFO << "\te- : " << m_elecThetaMin << " < Theta [deg] < " << m_elecThetaMax
722 << endmsg;
723 log << MSG::INFO << "\t " << m_elecEnergyMin << " < Energy [GeV] < "
724 << m_elecEnergyMin << endmsg;
725
726 double cosTagAngleRad = fabs(
cos( m_taggingAngle * TMath::DegToRad() ) );
727 switch ( m_taggingMode )
728 {
729 case 1:
730 log << MSG::INFO << "\t Generating Untagged event configuration!" << endmsg;
731 log << MSG::INFO << "\t Accepting only events with: |cos(Theta Lepton)| > "
732 << cosTagAngleRad << "!" << endmsg;
733 break;
734 case 2:
735 log << MSG::INFO << "\t Generating Single Tagged event configuration!" << endmsg;
736 log << MSG::INFO << "\t Accepting only events with:" << endmsg;
737 log << MSG::INFO << "\t\t |cos(Theta e+/-)| > " << cosTagAngleRad
738 << " and |cos(Theta e-/+)| < " << cosTagAngleRad << endmsg;
739 break;
740 case 3:
741 log << MSG::INFO << "\t Generating Double Tagged event configuration!" << endmsg;
742 log << MSG::INFO << "\t Accepting only events with: |cos(Theta Lepton)| < "
743 << cosTagAngleRad << "!" << endmsg;
744 break;
745 case 11:
746 log << MSG::INFO << "\t Generating Untagged event configuration!" << endmsg;
747 log << MSG::INFO << "\t Accepting only events with: Q^2 (Lepton)| < " << m_taggingQsquare
748 << "!" << endmsg;
749 break;
750 case 12:
751 log << MSG::INFO << "\t Generating Single Tagged event configuration!" << endmsg;
752 log << MSG::INFO << "\t Accepting only events with:" << endmsg;
753 log << MSG::INFO << "\t\t Q^2 (e+/-) > " << m_taggingQsquare << " and Q^2 (e-/+) < "
754 << m_taggingQsquare << endmsg;
755 break;
756 case 13:
757 log << MSG::INFO << "\t Generating Double Tagged event configuration!" << endmsg;
758 log << MSG::INFO << "\t Accepting only events with: Q^2 (Lepton) > " << m_taggingQsquare
759 << "!" << endmsg;
760 break;
761 default:
762 if ( m_taggingMode > 0 )
763 {
764 log << MSG::INFO << "\t Unknown tagging mode selected!" << endmsg;
765 log << MSG::INFO << "\t Generating events without tagging configuration!" << endmsg;
766 }
767 m_taggingMode = 0;
768 break;
769 }
770
771 switch ( m_finalState )
772 {
773 case 2: log << MSG::INFO << "\tpi0 : "; break;
774 case 3: log << MSG::INFO << "\teta : "; break;
775 case 4: log << MSG::INFO << "\teta' : "; break;
776 default: break;
777 }
778 log << MSG::INFO << m_mesonThetaMin << " < Theta [deg] < " << m_mesonThetaMax << endmsg;
779 log << MSG::INFO << "\t " << m_mesonEnergyMin << " < Energy [GeV] < "
780 << m_mesonEnergyMin << endmsg;
781 }
782 else if ( m_finalState >= 5 && m_finalState <= 7 )
783 {
784 if ( m_switchNLO )
785 {
786 log << MSG::ERROR << "NLO not implemented for this Process!" << endmsg;
787 return StatusCode::FAILURE;
788 }
789 log << MSG::INFO << "The following conditions are applied:" << endmsg;
790 log << MSG::INFO << "\te+ : " << m_posiThetaMin << " < Theta [deg] < " << m_posiThetaMax
791 << endmsg;
792 log << MSG::INFO << "\t " << m_posiEnergyMin << " < Energy [GeV] < "
793 << m_posiEnergyMin << endmsg;
794 log << MSG::INFO << "\te- : " << m_elecThetaMin << " < Theta [deg] < " << m_elecThetaMax
795 << endmsg;
796 log << MSG::INFO << "\t " << m_elecEnergyMin << " < Energy [GeV] < "
797 << m_elecEnergyMin << endmsg;
798 switch ( m_finalState )
799 {
800 case 5: log << MSG::INFO << "\tchi_c0 : "; break;
801 case 6: log << MSG::INFO << "\tchi_c1 : "; break;
802 case 7: log << MSG::INFO << "\tchi_c2 : "; break;
803 default: break;
804 }
805 log << MSG::INFO << m_chicjThetaMin << " < Theta [deg] < " << m_chicjThetaMax << endmsg;
806 log << MSG::INFO << "\t " << m_chicjEnergyMin << " < Energy [GeV] < "
807 << m_chicjEnergyMin << endmsg;
808 }
809 log << MSG::INFO
810 << "=============================================================" << endmsg;
811
812 return StatusCode::SUCCESS;
813}
double cos(const BesAngle a)