537{
538 MsgStream log(messageService(), name());
539 int npart = 0;
540
541
542 GenEvent* evt = new GenEvent(1,1);
543
544 GenVertex* prod_vtx = new GenVertex();
545
546 evt->add_vertex( prod_vtx );
547
548
549 GenParticle* p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][0],
CTES.momenta[2][0],
CTES.momenta[3][0],
CTES.momenta[0][0] ), -11, 3);
550 p->suggest_barcode( ++npart );
551 prod_vtx->add_particle_in(p);
552
553
554 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][1],
CTES.momenta[2][1],
CTES.momenta[3][1],
CTES.momenta[0][1] ), 11, 3);
555 p->suggest_barcode( ++npart );
556 prod_vtx->add_particle_in(p);
557
558
559
560 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][2],
CTES.momenta[2][2],
CTES.momenta[3][2],
CTES.momenta[0][2] ), 22, 1);
561 p->suggest_barcode( ++npart );
562 prod_vtx->add_particle_out(p);
563
564 if(
CTES.momenta[0][3] != 0 )
565 {
566 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][3],
CTES.momenta[2][3],
CTES.momenta[3][3],
CTES.momenta[0][3] ), 22, 1);
567 p->suggest_barcode( ++npart );
568 prod_vtx->add_particle_out(p);
569 }
570
571
572 if (
FLAGS.pion == 0) {
573
574 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ), -13, 1);
575 p->suggest_barcode( ++npart );
576 prod_vtx->add_particle_out(p);
577
578 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), 13, 1);
579 p->suggest_barcode( ++npart );
580 prod_vtx->add_particle_out(p);
581 }
582
583 if (
FLAGS.pion == 1) {
584
585 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ),211, 1);
586 p->suggest_barcode( ++npart );
587 prod_vtx->add_particle_out(p);
588
589 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), -211, 1);
590 p->suggest_barcode( ++npart );
591 prod_vtx->add_particle_out(p);
592 }
593
594 if (
FLAGS.pion == 2) {
595
596 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ),111, 1);
597 p->suggest_barcode( ++npart );
598 prod_vtx->add_particle_out(p);
599
600 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), 111, 1);
601 p->suggest_barcode( ++npart );
602 prod_vtx->add_particle_out(p);
603
604 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][7],
CTES.momenta[2][7],
CTES.momenta[3][7],
CTES.momenta[0][7] ),-211, 1);
605 p->suggest_barcode( ++npart );
606 prod_vtx->add_particle_out(p);
607
608 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][8],
CTES.momenta[2][8],
CTES.momenta[3][8],
CTES.momenta[0][8] ), 211, 1);
609 p->suggest_barcode( ++npart );
610 prod_vtx->add_particle_out(p);
611 }
612
613 if (
FLAGS.pion == 3) {
614
615 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ),211, 1);
616 p->suggest_barcode( ++npart );
617 prod_vtx->add_particle_out(p);
618
619 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), -211, 1);
620 p->suggest_barcode( ++npart );
621 prod_vtx->add_particle_out(p);
622
623 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][7],
CTES.momenta[2][7],
CTES.momenta[3][7],
CTES.momenta[0][7] ),-211, 1);
624 p->suggest_barcode( ++npart );
625 prod_vtx->add_particle_out(p);
626
627 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][8],
CTES.momenta[2][8],
CTES.momenta[3][8],
CTES.momenta[0][8] ), 211, 1);
628 p->suggest_barcode( ++npart );
629 prod_vtx->add_particle_out(p);
630 }
631
632 if (
FLAGS.pion == 4) {
633
634 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ),-2212, 1);
635 p->suggest_barcode( ++npart );
636 prod_vtx->add_particle_out(p);
637
638 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), 2212, 1);
639 p->suggest_barcode( ++npart );
640 prod_vtx->add_particle_out(p);
641 }
642
643 if (
FLAGS.pion == 5) {
644
645 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ),-2112, 1);
646 p->suggest_barcode( ++npart );
647 prod_vtx->add_particle_out(p);
648
649 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), 2112, 1);
650 p->suggest_barcode( ++npart );
651 prod_vtx->add_particle_out(p);
652 }
653
654 if (
FLAGS.pion == 6) {
655
656 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ),321, 1);
657 p->suggest_barcode( ++npart );
658 prod_vtx->add_particle_out(p);
659
660 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), -321, 1);
661 p->suggest_barcode( ++npart );
662 prod_vtx->add_particle_out(p);
663 }
664
665 if (
FLAGS.pion == 7) {
666
667 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ), 311, 1);
668 p->suggest_barcode( ++npart );
669 prod_vtx->add_particle_out(p);
670
671 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), -311, 1);
672 p->suggest_barcode( ++npart );
673 prod_vtx->add_particle_out(p);
674 }
675
676 if (
FLAGS.pion == 8) {
677
678 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ), 211, 1);
679 p->suggest_barcode( ++npart );
680 prod_vtx->add_particle_out(p);
681
682 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), -211, 1);
683 p->suggest_barcode( ++npart );
684 prod_vtx->add_particle_out(p);
685
686 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][7],
CTES.momenta[2][7],
CTES.momenta[3][7],
CTES.momenta[0][7] ), 111, 1);
687 p->suggest_barcode( ++npart );
688 prod_vtx->add_particle_out(p);
689 }
690
691 if (
FLAGS.pion == 9) {
692
693 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][5],
CTES.momenta[2][5],
CTES.momenta[3][5],
CTES.momenta[0][5] ), -3122, 2);
694 p->suggest_barcode( ++npart );
695 prod_vtx->add_particle_out(p);
696
697 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][6],
CTES.momenta[2][6],
CTES.momenta[3][6],
CTES.momenta[0][6] ), 3122, 2);
698 p->suggest_barcode( ++npart );
699 prod_vtx->add_particle_out(p);
700
701 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][7],
CTES.momenta[2][7],
CTES.momenta[3][7],
CTES.momenta[0][7] ), 211, 1);
702 p->suggest_barcode( ++npart );
703 prod_vtx->add_particle_out(p);
704
705 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][8],
CTES.momenta[2][8],
CTES.momenta[3][8],
CTES.momenta[0][8] ), -2212, 1);
706 p->suggest_barcode( ++npart );
707 prod_vtx->add_particle_out(p);
708
709 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][9],
CTES.momenta[2][9],
CTES.momenta[3][9],
CTES.momenta[0][9] ), -211, 1);
710 p->suggest_barcode( ++npart );
711 prod_vtx->add_particle_out(p);
712
713 p =
new GenParticle( CLHEP::HepLorentzVector(
CTES.momenta[1][10],
CTES.momenta[2][10],
CTES.momenta[3][10],
CTES.momenta[0][10] ), 2212, 1);
714 p->suggest_barcode( ++npart );
715 prod_vtx->add_particle_out(p);
716 }
717
718 if( log.level() < MSG::INFO )
719 {
720 evt->print();
721 }
722
723
724 SmartDataPtr<McGenEventCol> anMcCol(eventSvc(), "/Event/Gen");
725 if (anMcCol!=0)
726 {
727
728 MsgStream log(messageService(), name());
729 log << MSG::INFO << "Add McGenEvent to existing collection" << endreq;
731 anMcCol->push_back(mcEvent);
732 }
733 else
734 {
735
738 mcColl->push_back(mcEvent);
739 StatusCode sc = eventSvc()->registerObject("/Event/Gen",mcColl);
740 if (sc != StatusCode::SUCCESS)
741 {
742 log << MSG::ERROR << "Could not register McGenEvent" << endreq;
743 delete mcColl;
744 delete evt;
745 delete mcEvent;
746 return StatusCode::FAILURE;
747 }
748 else
749 {
750 log << MSG::INFO << "McGenEventCol created and " << npart <<" particles stored in McGenEvent" << endreq;
751 }
752 }
753
754 return StatusCode::SUCCESS;
755
756}
ObjectVector< McGenEvent > McGenEventCol