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