Skip to content
Snippets Groups Projects
pbarpToOmegaPi0StatesLS.cc 8.42 KiB
Newer Older
#include "Examples/pbarpToOmegaPiLS/pbarpToOmegaPi0StatesLS.hh"

#include "Utils/MathUtils.hh"
#include "ErrLogger/ErrLogger.hh"
#include "PwaUtils/pbarpStates.hh"
 

pbarpToOmegaPi0StatesLS::pbarpToOmegaPi0StatesLS(int Lmax):
   pbarpStatesLS(Lmax),
  _omegaJPC(1, -1, -1),
  _piJPC(0, -1, 1)
{
//   _lmax=Lmax;
  _alljpcRes.clear();
  _allStates.clear();
  _lamUpUp_JPCLSJJ_States.clear();
  _lamUpDown_JPCLSJJ_States.clear();
  _lamDownUp_JPCLSJJ_States.clear();
  _lamDownDown_JPCLSJJ_States.clear();
  _lamUpUp_JPCLS_States.clear();
  _lamUpDown_JPCLS_States.clear();
  _lamDownUp_JPCLS_States.clear();
  _lamDownDown_JPCLS_States.clear();
  _JPCLS_AllStates.clear();
  _singlet_JPCLS_States.clear();
  _triplet0_JPCLS_States.clear();
  _tripletp1_JPCLS_States.clear();
  _tripletm1_JPCLS_States.clear();
   calcStates();
}



pbarpToOmegaPi0StatesLS::~pbarpToOmegaPi0StatesLS(){
}

bool pbarpToOmegaPi0StatesLS::calcStates(){
  
  pbarpStatesLS allpbarpStateLS(_lmax);

  std::vector< boost::shared_ptr<const jpcRes> > thepbarpJPCs=allpbarpStateLS.jpcStates();

//   if ( 0 == thepbarpJPCs ) { Alert << "thepbarpJPCs->jpcStates()==0 !!!" << endmsg; exit(1); }  

  std::vector< boost::shared_ptr<const jpcRes> >::const_iterator it;

  for ( it=thepbarpJPCs.begin(); it!=thepbarpJPCs.end(); ++it){
    // first: check C-parity
    if ( (*it)->C != (_omegaJPC.C*_piJPC.C)) continue;

    //second: extract all LS combinations
    vector<LS> motherLSs=GetValidLS((*it)->J, (*it)->P, _omegaJPC.J, _omegaJPC.P, _piJPC.J, _piJPC.P);
    int num_ls = (int) motherLSs.size();
    if (num_ls==0) continue;

    DebugMsg << "valid LS combinations for JP(pbar p -> omega pi0)=" << (*it)->J <<" " << (*it)->P << endmsg;

    boost::shared_ptr<const jpcRes> jpcPtr=(*it);

    for(int ls = 0; ls < num_ls; ls++){
      Spin l= motherLSs[ls].L;
      Spin s= motherLSs[ls].S;
      DebugMsg << "l=" << l <<" s=" << s << endmsg;
      
      boost::shared_ptr<const JPCLS> tmpJPCLS(new JPCLS(jpcPtr, l, s) );
      
      for(Spin M = -s; M <= s; M++){
	double Clebschg=Clebsch(l,0,s,M, (*it)->J, M);
        if ( fabs(Clebschg)>1e-8){
	  fillVec(jpcPtr, _alljpcRes);
	  fillVec(tmpJPCLS, _allOmegaPiStates);

	}
      }
    }
  }

  // now fill all pbarp states vectors
  std::vector< boost::shared_ptr<const JPCLS> > allJPCLSStates=allpbarpStateLS.all_JPCLS_States();
  _JPCLS_AllStates= extractStates(_alljpcRes, allJPCLSStates);

  std::vector< boost::shared_ptr<const JPCLS> > uuJPCLSStates=allpbarpStateLS.lamUpUp_JPCLS_States();
  _lamUpUp_JPCLS_States= extractStates(_alljpcRes, uuJPCLSStates);

  std::vector< boost::shared_ptr<const JPCLS> > udJPCLSStates=allpbarpStateLS.lamUpDown_JPCLS_States();
  _lamUpDown_JPCLS_States= extractStates(_alljpcRes, udJPCLSStates);

  std::vector< boost::shared_ptr<const JPCLS> > duJPCLSStates=allpbarpStateLS.lamDownUp_JPCLS_States();
  _lamDownUp_JPCLS_States= extractStates(_alljpcRes, duJPCLSStates);

   std::vector< boost::shared_ptr<const JPCLS> > ddJPCLSStates=allpbarpStateLS.lamDownDown_JPCLS_States();
  _lamDownDown_JPCLS_States= extractStates(_alljpcRes, ddJPCLSStates);

  std::vector< boost::shared_ptr<const JPCLSJJ> > allJPCLSJJStates=allpbarpStateLS.all_JPCLSJJ_States();  
  _allStates= extractStates(_alljpcRes, allJPCLSJJStates);

  std::vector< boost::shared_ptr<const JPCLSJJ> > uuJPCLSJJStates=allpbarpStateLS.lamUpUp_JPCLSJJ_States();
  _lamUpUp_JPCLSJJ_States= extractStates(_alljpcRes, uuJPCLSJJStates);

  std::vector< boost::shared_ptr<const JPCLSJJ> > udJPCLSJJStates=allpbarpStateLS.lamUpDown_JPCLSJJ_States();
  _lamUpDown_JPCLSJJ_States= extractStates(_alljpcRes, udJPCLSJJStates);

  std::vector< boost::shared_ptr<const JPCLSJJ> > duJPCLSJJStates=allpbarpStateLS.lamDownUp_JPCLSJJ_States();
  _lamDownUp_JPCLSJJ_States= extractStates(_alljpcRes, duJPCLSJJStates);

  std::vector< boost::shared_ptr<const JPCLSJJ> > ddJPCLSJJStates=allpbarpStateLS.lamDownDown_JPCLSJJ_States();
  _lamDownDown_JPCLSJJ_States= extractStates(_alljpcRes, ddJPCLSJJStates);  


  std::vector< boost::shared_ptr<const JPCLS> > singletJPCLS=allpbarpStateLS.singlet_JPCLS_States();
  _singlet_JPCLS_States= extractStates(_alljpcRes, singletJPCLS);

  std::vector< boost::shared_ptr<const JPCLS> > triplet0JPCLS=allpbarpStateLS.triplet0_JPCLS_States();
  _triplet0_JPCLS_States= extractStates(_alljpcRes, triplet0JPCLS);

  std::vector< boost::shared_ptr<const JPCLS> > tripletp1JPCLS=allpbarpStateLS.tripletp1_JPCLS_States();
  _tripletp1_JPCLS_States= extractStates(_alljpcRes, tripletp1JPCLS);

  std::vector< boost::shared_ptr<const JPCLS> > tripletm1JPCLS=allpbarpStateLS.tripletm1_JPCLS_States();
  _tripletm1_JPCLS_States= extractStates(_alljpcRes, tripletm1JPCLS);

  // now fill all initial+decay states 
  
  fillStatesInitialDec( _JPCLS_AllStates, _allOmegaPiStates, _allJPCLSlsStates);  
  fillStatesInitialDec( _singlet_JPCLS_States, _allOmegaPiStates,_singlet_JPCLS_StatesDec);
  fillStatesInitialDec( _triplet0_JPCLS_States, _allOmegaPiStates,_triplet0_JPCLS_StatesDec);
  fillStatesInitialDec( _tripletp1_JPCLS_States, _allOmegaPiStates,_tripletp1_JPCLS_StatesDec);
  fillStatesInitialDec( _tripletm1_JPCLS_States, _allOmegaPiStates,_tripletm1_JPCLS_StatesDec);

  fillStatesInitialDec( _lamUpUp_JPCLSJJ_States, _allOmegaPiStates, _lamUpUp_JPCLSJJ_StatesDec);
  fillStatesInitialDec( _lamUpDown_JPCLSJJ_States, _allOmegaPiStates, _lamUpDown_JPCLSJJ_StatesDec);
  fillStatesInitialDec( _lamDownUp_JPCLSJJ_States, _allOmegaPiStates, _lamDownUp_JPCLSJJ_StatesDec);
  fillStatesInitialDec( _lamDownDown_JPCLSJJ_States, _allOmegaPiStates, _lamDownDown_JPCLSJJ_StatesDec);
  return true;
}

void pbarpToOmegaPi0StatesLS::print(std::ostream& os) const{

   pbarpStatesLS::print(os);

  os << "\n \n \n ************* pbar p -> omega pi0 states for Lmax = " << _lmax << " are: *************" << std::endl;

   std::vector< boost::shared_ptr<const JPCLS > >::const_iterator itJPCLS;

  os << "\n\n******* all JPCls states ************ " << std::endl;
  for ( itJPCLS=_allOmegaPiStates.begin(); itJPCLS!=_allOmegaPiStates.end(); ++itJPCLS){
    (*itJPCLS)->print(os);
    os << std::endl;
  }

   std::vector< boost::shared_ptr<const JPCLSls > >::const_iterator itJPCLSls;
  os << "\n\n******** all JPCLSls states ************ " << std::endl;
  for ( itJPCLSls=_allJPCLSlsStates.begin(); itJPCLSls!=_allJPCLSlsStates.end(); ++itJPCLSls){
    (*itJPCLSls)->print(os);
    os << std::endl;
  } 

  os << "\n\n******** JPCLSls states (singlet)************ " << std::endl;
  for ( itJPCLSls=_singlet_JPCLS_StatesDec.begin(); itJPCLSls!=_singlet_JPCLS_StatesDec.end(); ++itJPCLSls){
    (*itJPCLSls)->print(os);
    os << std::endl;
  } 

  os << "\n******** JPCLSls states (triplet 0)************ " << std::endl;
  for ( itJPCLSls=_triplet0_JPCLS_StatesDec.begin(); itJPCLSls!=_triplet0_JPCLS_StatesDec.end(); ++itJPCLSls){
    (*itJPCLSls)->print(os);
    os << std::endl;
  } 

  os << "\n******** JPCLSls states (triplet 1)************ " << std::endl;
  for ( itJPCLSls=_tripletp1_JPCLS_StatesDec.begin(); itJPCLSls!=_tripletp1_JPCLS_StatesDec.end(); ++itJPCLSls){
    (*itJPCLSls)->print(os);
    os << std::endl;
  }

  os << "\n******** JPCLSls states (triplet -1)************ " << std::endl;
  for ( itJPCLSls=_tripletm1_JPCLS_StatesDec.begin(); itJPCLSls!=_tripletm1_JPCLS_StatesDec.end(); ++itJPCLSls){
    (*itJPCLSls)->print(os);
    os << std::endl;
  }

  std::vector< boost::shared_ptr<const JPCLSJJls > >::const_iterator itJPCLSJJls;

  os << "\n******** JPCLSJJls states (lambda(pbar)=1/2 and lambda(p)=1/2)  ************ " << std::endl;
  for ( itJPCLSJJls=_lamUpUp_JPCLSJJ_StatesDec.begin(); itJPCLSJJls!=_lamUpUp_JPCLSJJ_StatesDec.end(); ++itJPCLSJJls){
    (*itJPCLSJJls)->print(os);
    os << std::endl;
  }

  os << "\n******** LS states (lambda(pbar)=1/2 and lambda(p)=-1/2)  ************ " << std::endl;
  for ( itJPCLSJJls=_lamUpDown_JPCLSJJ_StatesDec.begin(); itJPCLSJJls!=_lamUpDown_JPCLSJJ_StatesDec.end(); ++itJPCLSJJls){
    (*itJPCLSJJls)->print(os);
    os << std::endl;
  }

  os << "\n******** LS states (lambda(pbar)=-1/2 and lambda(p)=1/2)  ************ " << std::endl;
  for ( itJPCLSJJls=_lamDownUp_JPCLSJJ_StatesDec.begin(); itJPCLSJJls!=_lamDownUp_JPCLSJJ_StatesDec.end(); ++itJPCLSJJls){
    (*itJPCLSJJls)->print(os);
    os << std::endl;
  }

  os << "\n******** LS states (lambda(pbar)=-1/2 and lambda(p)=1/2)  ************ " << std::endl;
  for ( itJPCLSJJls=_lamDownDown_JPCLSJJ_StatesDec.begin(); itJPCLSJJls!=_lamDownDown_JPCLSJJ_StatesDec.end(); ++itJPCLSJJls){
    (*itJPCLSJJls)->print(os);
    os << std::endl;
  }
}