Skip to content
Snippets Groups Projects
Psi2SToKpKmPiGamStates.cc 5.20 KiB
#include <getopt.h>
#include <fstream>
#include <sstream>
#include <string>
#include "Examples/Psi2SToKpKmPiGam/Psi2SToKpKmPiGamStates.hh"
#include "ErrLogger/ErrLogger.hh"

Psi2SToKpKmPiGamStates::Psi2SToKpKmPiGamStates() :
  _psiJPC(new jpcRes(1, -1, -1)),
  _chic1JPC(new jpcRes(1, 1, 1)),
  _Kst0JPC(new jpcRes(0, 1, 0)),
  _Kst1JPC(new jpcRes(1, -1, 0)),
  _Kst2JPC(new jpcRes(2, 1, 0)),
  _a0JPC(new jpcRes(0, 1, 1)),
  _a2JPC(new jpcRes(2, 1, 1)),
  _pi0JPC(new jpcRes(0, -1, 1)),
  _kJPC(new jpcRes(0, -1, 0)),
  _gamJPC(new jpcRes(1, -1, -1))
{
  //LS combinations for Psi(2S) decay to Chi_c1 gamma
  fillJPCLS(_psiJPC, _chic1JPC, _gamJPC, _PsiJPCLS);

  //LS combinations for the Chi_c1 decay to K*0-+ K+-
  fillJPCLS(_chic1JPC, _Kst0JPC, _kJPC, _ChiToKst0KJPCLS);

  //LS combinations for the Chi_c1 decay to K*1-+ K+-
  fillJPCLS(_chic1JPC, _Kst1JPC, _kJPC, _ChiToKst1KJPCLS);

  //LS combinations for the Chi_c1 decay to K*2-+ K+-
  fillJPCLS(_chic1JPC, _Kst2JPC, _kJPC, _ChiToKst2KJPCLS);

  //LS combinations for the Chi_c1 decay to a0(980) Pi0
  fillJPCLS(_chic1JPC, _a0JPC, _pi0JPC, _ChiToa0PiJPCLS);

  //LS combinations for the Chi_c1 decay to a0(980) Pi0
  fillJPCLS(_chic1JPC, _a2JPC, _pi0JPC, _ChiToa2PiJPCLS);

  //LS combinations for the K*+- decay to K+- Pi0
  fillJPCLS(_Kst1JPC, _kJPC, _pi0JPC, _Kst1JPCLS);

  //LS combinations for the K*+- decay to K+- Pi0
  fillJPCLS(_Kst2JPC, _kJPC, _pi0JPC, _Kst2JPCLS);

  //LS combinations for the a0(980) decay to K K
  fillJPCLS(_a0JPC, _kJPC, _kJPC, _a0JPCLS);

  //LS combinations for the a0(980) decay to K K
  fillJPCLS(_a2JPC, _kJPC, _kJPC, _a2JPCLS);
}

Psi2SToKpKmPiGamStates::~Psi2SToKpKmPiGamStates()
{
}

void Psi2SToKpKmPiGamStates::fillJPCLS(boost::shared_ptr<jpcRes> motherRes, boost::shared_ptr<jpcRes> daughterRes1, boost::shared_ptr<jpcRes> daughterRes2, std::vector< boost::shared_ptr<const JPCLS> >& theJPCLSVec)
{
  // first: check C-parity
  if ( motherRes->C != daughterRes1->C*daughterRes2->C){
    Warning << "C-Parity not valid for the reaction: JPC= " 
	    << motherRes->J << " " << motherRes->P << " " << motherRes->C
	    << " --> "
	    << " JPC= " << daughterRes1->J << " " << daughterRes1->P << " " << daughterRes1->C
	    << " and "
	    << " JPC= " << daughterRes2->J << " " << daughterRes2->P << " " << daughterRes2->C
	    << endmsg; 
  }
  
  vector<LS> LSs=GetValidLS(motherRes->J, motherRes->P, daughterRes1->J, daughterRes1->P, daughterRes2->J, daughterRes2->P);

  int num_LS = (int) LSs.size();

  for(int ls = 0; ls < num_LS; ls++){
    Spin L= LSs[ls].L;
    Spin S= LSs[ls].S;
    boost::shared_ptr<const JPCLS> tmpJPCLS(new JPCLS(motherRes, L, S));
    theJPCLSVec.push_back(tmpJPCLS);
  }
} 


void Psi2SToKpKmPiGamStates::print(std::ostream& os) const
{
  os << "*** Psi(2S):  LS combinations for the decay to Psi(2S) gamma*** "<< std::endl;
  
  std::vector< boost::shared_ptr<const JPCLS > >::const_iterator itJPCLS;
  
  for ( itJPCLS=_PsiJPCLS.begin(); itJPCLS!=_PsiJPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "*** Chi_c1:  LS combinations for the decay to K*0+- K-+ *** "<< std::endl;
  for ( itJPCLS=_ChiToKst0KJPCLS.begin(); itJPCLS!=_ChiToKst0KJPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "*** Chi_c1:  LS combinations for the decay to K*1+- K-+ *** "<< std::endl;
  for ( itJPCLS=_ChiToKst1KJPCLS.begin(); itJPCLS!=_ChiToKst1KJPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "*** Chi_c1:  LS combinations for the decay to K*2+- K-+ *** "<< std::endl;
  for ( itJPCLS=_ChiToKst2KJPCLS.begin(); itJPCLS!=_ChiToKst2KJPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "*** Chi_c1:  LS combinations for the decay to a0(980) pi0 *** "<< std::endl;
  for ( itJPCLS=_ChiToa0PiJPCLS.begin(); itJPCLS!=_ChiToa0PiJPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "*** Chi_c1:  LS combinations for the decay to a2 pi0 *** "<< std::endl;
  for ( itJPCLS=_ChiToa2PiJPCLS.begin(); itJPCLS!=_ChiToa2PiJPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "\n *** K*1+-:   LS combinations for the decay to K*1+- -> K+- pi0 *** "<< std::endl;
  for ( itJPCLS=_Kst1JPCLS.begin(); itJPCLS!=_Kst1JPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "\n *** K*2+-:   LS combinations for the decay to K*2+- -> K+- pi0 *** "<< std::endl;
  for ( itJPCLS=_Kst2JPCLS.begin(); itJPCLS!=_Kst2JPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "\n *** a0(980):  LS combinations for the decay to K K *** "<< std::endl;
  for ( itJPCLS=_a0JPCLS.begin(); itJPCLS!=_a0JPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "\n *** a2:  LS combinations for the decay to K K *** "<< std::endl;
  for ( itJPCLS=_a2JPCLS.begin(); itJPCLS!=_a2JPCLS.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << "\n" << std::endl;
  }

  os << "\n *** K+- *** "<< std::endl;
  _kJPC->print(os);

  os << "\n *** pi0 *** "<< std::endl;
  _pi0JPC->print(os);

  os << "\n *** gamma *** "<< std::endl;
  _gamJPC->print(os);
  os << "\n"<< std::endl;
}