Skip to content
Snippets Groups Projects
Commit 851f0a41 authored by Bertram Kopf's avatar Bertram Kopf
Browse files

added option to fit baryon resonances in res fits

parent 1d82fa2f
No related branches found
No related tags found
No related merge requests found
......@@ -214,6 +214,7 @@ Meson K(1830) K(1830) 0 0 -1 0 0 1 0 0 0 1.830 0.250 relBW [PD
Meson D0 D^0 0 0 -1 0 0 1 0 0 1 1.86486 0.0001 relBW [PDG nonett 1^1S_0]
Meson D+ D^+ 3 0 -1 0 0 1 1 0 1 1.86962 0.0001 relBW [PDG nonett 1^1S_0]
Meson D- D^- -3 0 -1 0 0 1 -1 0 -1 1.86962 0.0001 relBW [PDG nonett 1^1S_0]
# Start c cbar mesons
#
# type name texName 3*Q 2*J P C G I I3 S C mass width dyn.f comment
......@@ -244,3 +245,6 @@ Boson photon0 \gamma_0 0 2 -1 -1 0 0 0 0 0 0.0 0.0 undefined [PD
#
Baryon proton p 3 1 1 0 0 1 1 0 0 0.93827 0.0 undefined [none]
Baryon antiproton \overline{p} -3 1 -1 0 0 1 -1 0 0 0.93827 0.0 undefined [none]
Baryon Lambda_c+ Lambda_c^+ 3 1 1 0 0 0 0 0 1 2.28646 0.0001 relBW [PDG]
Baryon Lambda(1405)0 Lambda(1405)^0 0 1 -1 0 0 0 0 -1 0 1.4051 0.05 relBW [PDG]
Baryon Sigma+ Sigma^+ 3 1 1 0 0 2 1 -1 0 1.18937 0.0001 relBW [PDG]
......@@ -348,13 +348,13 @@ void AbsDecay::fillWignerDs(std::map<std::string, Vector4<double> >& fsMap, Vect
Vector4<double> daughter2HelMother(0.,0.,0.,0.);
Vector4<double> daughter1HelMother(0.,0.,0.,0.);
if(_hasMotherPart){
if(fabs(mother4Vec==all4Vec)){
if(mother4Vec==all4Vec){
daughter2HelMother=daughter2_4Vec;
daughter2HelMother.Boost(daughter2HelMother); //is this correct????
daughter1HelMother=daughter1_4Vec;
daughter1HelMother.Boost(daughter1HelMother); //is this correct????
if( fabs(mother4Vec.P()) > 1.e-9 ){
daughter2HelMother.Boost(mother4Vec);
daughter1HelMother.Boost(mother4Vec);
}
}
// else daughter2HelMother=helicityVec(all4Vec, mother4Vec, daughter2_4Vec);
else{
daughter2HelMother=helicityVec(prodParticle4Vec, mother4Vec, daughter2_4Vec);
daughter1HelMother=helicityVec(prodParticle4Vec, mother4Vec, daughter1_4Vec);
......@@ -362,9 +362,11 @@ void AbsDecay::fillWignerDs(std::map<std::string, Vector4<double> >& fsMap, Vect
}
else{
daughter2HelMother=daughter2_4Vec;
daughter2HelMother.Boost(mother4Vec);
daughter1HelMother=daughter1_4Vec;
daughter1HelMother.Boost(mother4Vec);
if( fabs(mother4Vec.P()) > 1.e-6 ){
daughter2HelMother.Boost(mother4Vec);
daughter1HelMother.Boost(mother4Vec);
}
}
Spin spinMother=_motherIGJPCPtr->J;
......@@ -389,7 +391,6 @@ void AbsDecay::fillWignerDs(std::map<std::string, Vector4<double> >& fsMap, Vect
double thePhi=0.;
if(_hasMotherPart) thePhi=daughter2HelMother.Phi();
Id3StringType IdSpinMotherLamMotherLam12=FunctionUtils::spin3Index(spinMother, lamMother, lam12);
std::map<Id3StringType, complex<double> >::iterator found = evtData->WignerDIdId3[_wigDWigDRefId].find(IdSpinMotherLamMotherLam12);
if(found != evtData->WignerDIdId3[_wigDWigDRefId].end()){
continue;
......@@ -400,13 +401,19 @@ void AbsDecay::fillWignerDs(std::map<std::string, Vector4<double> >& fsMap, Vect
evtData->WignerDIdId3[_wigDWigDRefId][IdSpinMotherLamMotherLam12]=Wigner_D(thePhi,daughter1HelMother.Theta(),0,spinMother,lamMother,lam12);
}
else evtData->WignerDIdId3[_wigDWigDRefId][IdSpinMotherLamMotherLam12]=Wigner_D(thePhi,daughter2HelMother.Theta(),0,spinMother,lamMother,lam12);
if(evtData->WignerDIdId3[_wigDWigDRefId][IdSpinMotherLamMotherLam12] != evtData->WignerDIdId3[_wigDWigDRefId][IdSpinMotherLamMotherLam12]){
DebugMsg << "WignerDIdId nan:\t" << evtData->WignerDIdId3[_wigDWigDRefId][IdSpinMotherLamMotherLam12] << endmsg;
DebugMsg << "daughter2HelMother.Theta():\t" << daughter2HelMother.Theta() << endmsg;
DebugMsg << "thePhi:\t" << thePhi << endmsg;
DebugMsg << "daughter2_4Vec:\t" << daughter2_4Vec << endmsg;
DebugMsg << "daughter2HelMother:\t" << daughter2HelMother << endmsg;
DebugMsg << "mother4Vec:\t" << mother4Vec << "\tP:" << mother4Vec.P() << endmsg;
if(evtData->WignerDIdId3[_wigDWigDRefId][IdSpinMotherLamMotherLam12].real() != evtData->WignerDIdId3[_wigDWigDRefId][IdSpinMotherLamMotherLam12].real()){
Alert << "WignerD function of event No: " << evtData->evtNo << " is nan!!! " << endmsg;
Alert << "Set it manually to complex<double>(1.e-10, 1.e-10)" << endmsg;
evtData->WignerDIdId3[_wigDWigDRefId][IdSpinMotherLamMotherLam12]= complex<double>(1.e-10, 1.e-10);
Alert << "daughter2HelMother phi: " << daughter2HelMother.Phi() << "\ttheta: " << daughter2HelMother.Theta() << endmsg;
Alert << "spinMother: " << spinMother << "\tlam12: " << lam12 << endmsg;
Alert << "daughter2HelMother: Mass: " << daughter2HelMother.Mass()
<< "\tE: " << daughter2HelMother.E()
<< "\tPx: " << daughter2HelMother.Px()
<< "\tPy: " << daughter2HelMother.Py()
<< "\tPz: " << daughter2HelMother.Pz()
<< endmsg;
exit(1);
}
}
}
......
......@@ -182,8 +182,12 @@ void validJPClamlam(std::shared_ptr<const jpcRes> motherRes, Particle* daughter1
for (Spin lam1=Jdaughter1; lam1>=-Jdaughter1; --lam1){
if(isDaughter1Photon && fabs(lam1)!=1) continue;
for (Spin lam2=-lam1; lam2<=Jdaughter2; ++lam2){
if (fabs(lam2)>Jdaughter2) continue;
Spin lam2start=-lam1;
if( Jdaughter1.Denominator() != Jdaughter2.Denominator() ){
lam2start=-lam1+Spin(1,2);
}
for (Spin lam2=lam2start; lam2<=Jdaughter2; ++lam2){
if (fabs(lam2)>Jdaughter2) continue;
if(lam1==0 && lam2==0 && parityFactor <0) continue; //parity conservation
if( identicalDaughters && parityFactor <0 && fabs(lam1)==fabs(lam2)) continue; //parity conservation + identical particles
if(isDaughter2Photon && fabs(lam2)!=1) continue;
......@@ -212,7 +216,7 @@ void validJPClamlam(std::shared_ptr<const jpcRes> motherRes, Particle* daughter1
std::shared_ptr<jpcRes> getJPCPtr(Particle* theParticle){
std::shared_ptr<jpcRes> result(new jpcRes((int) theParticle->J(), theParticle->theParity(), theParticle->theCParity()));
std::shared_ptr<jpcRes> result(new jpcRes(theParticle->J(), theParticle->theParity(), theParticle->theCParity()));
return result;
}
......
......@@ -245,6 +245,7 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs,
Spin lambda1= it->first->lam1;
Spin lambda2= it->first->lam2;
Spin lambda = lambda1-lambda2;
if( fabs(lambda) > it->first->J) continue;
if(_enabledlamFsDaughter1 && lamFs!=lambda1) continue;
......
......@@ -57,6 +57,15 @@ void IsobarHeliDecay::extractStates(){
else validJPClamlam( _motherIGJPCPtr, _daughter1, _daughter2, _JPClamlamDecAmps);
}
else validJPClamlam( _motherIGJPCPtr, _daughter1, _daughter2, _JPClamlamDecAmps);
// Info << "_JPClamlamDecAmps.size(): " << _JPClamlamDecAmps.size() << endmsg;
// std::vector< std::shared_ptr<const JPClamlam> >::iterator it;
// for (it=_JPClamlamDecAmps.begin(); it!=_JPClamlamDecAmps.end(); ++it){
// Info << "JPClamlamDecAmp" << endmsg;
// (*it)->print(std::cout);
// std::cout << std::endl;
// }
print(std::cout);
}
......
......@@ -22,3 +22,4 @@ lib resUtils :
:
: ;
......@@ -135,7 +135,7 @@ void resBaseLh::initialize(){
Alert << "final states with more than 1 particles with J>0 not supported!!!!" << endmsg;
exit(1);
}
_highestJFsp=int(current2J/2);
_highestJFsp=Spin(current2J, 2);
if( (*itParticle)->name() != "photon" ) _isHighestJaPhoton=false;
}
}
......@@ -153,14 +153,6 @@ void resBaseLh::initialize(){
}
// void resBaseLh::fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar){
// AbsLh::fillDefaultParams(fitPar);
// std::vector<std::shared_ptr<AbsXdecAmp> >::iterator itDec;
// for( itDec=_decAmps.begin(); itDec!=_decAmps.end(); ++itDec){
// (*itDec)->fillDefaultParams(fitPar);
// }
// }
......
......@@ -75,7 +75,7 @@ public:
protected:
std::shared_ptr<resReaction> _resReactionPtr;
int _highestJFsp;
Spin _highestJFsp;
bool _isHighestJaPhoton;
Spin _Jmother;
private:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment