Skip to content
Snippets Groups Projects
Commit 2475407e authored by Pascal Scheffels's avatar Pascal Scheffels
Browse files

Merge branch 'master' of tau.ep1.rub.de:/var/www/git/Pawian

parents fa8a9a7f 5fe2cc6b
No related branches found
No related tags found
No related merge requests found
Showing
with 68 additions and 42 deletions
No preview for this file type
...@@ -79,28 +79,28 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa ...@@ -79,28 +79,28 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa
Vector4<float> V4_PipPimPi0_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab); Vector4<float> V4_PipPimPi0_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab);
Vector4<float> V4_KpKm_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_KpKm_Lab); Vector4<float> V4_KpKm_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_KpKm_Lab);
Vector4<float> V4_Pip_HeliPipPimPi0=helicityVec(V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab, V4_pip_Lab); Vector4<float> V4_Pip_HeliPipPimPi0=helicityVec(V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab, V4_pip_Lab);
Vector4<float> V4_Pim_HeliPipPimPi0=helicityVec(V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab, V4_pim_Lab);
Vector4<float> V4_Pi0_HeliPipPimPi0=helicityVec(V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab, V4_pi0_Lab);
Vector4<float> V4_Kp_HeliKpKm=helicityVec(V4_PipPimPi0KpKm_Lab, V4_KpKm_Lab, V4_Kp_Lab); Vector4<float> V4_Kp_HeliKpKm=helicityVec(V4_PipPimPi0KpKm_Lab, V4_KpKm_Lab, V4_Kp_Lab);
Vector4<float> V4_Kp_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_Kp_Lab); Vector4<float> V4_Kp_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_Kp_Lab);
Vector4<float> V4_Km_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_Km_Lab); Vector4<float> V4_Km_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_Km_Lab);
// Vector4<float> V4_normKpKmDecHeliKsKlKpKm
// (0.5*(V4_Kp_HeliKsKlKpKm.T()+V4_Km_HeliKsKlKpKm.T()),
// V4_Km_HeliKsKlKpKm.Y()*V4_Kp_HeliKsKlKpKm.Z()-V4_Km_HeliKsKlKpKm.Z()*V4_Kp_HeliKsKlKpKm.Y(),
// V4_Km_HeliKsKlKpKm.Z()*V4_Kp_HeliKsKlKpKm.X()-V4_Km_HeliKsKlKpKm.X()*V4_Kp_HeliKsKlKpKm.Z(),
// V4_Km_HeliKsKlKpKm.X()*V4_Kp_HeliKsKlKpKm.Y()-V4_Km_HeliKsKlKpKm.Y()*V4_Kp_HeliKsKlKpKm.X());
// Vector4<float> V4_Kl_HeliKsKlKpKm=helicityVec(V4_all_Lab, V4_KsKlKpKm_Lab, V4_Kl_Lab); Vector4<float> V4_omegaDecPlaneNormal_HeliPipPimPi0 ( 0.5*( V4_Pip_HeliPipPimPi0.T()+ V4_Pim_HeliPipPimPi0.T()+ V4_Pi0_HeliPipPimPi0.T() ),
// Vector4<float> V4_Ks_HeliKsKlKpKm=helicityVec(V4_all_Lab, V4_KsKlKpKm_Lab, V4_Ks_Lab); V4_Pim_HeliPipPimPi0.Y()*V4_Pip_HeliPipPimPi0.Z() - V4_Pim_HeliPipPimPi0.Z()*V4_Pip_HeliPipPimPi0.Y(),
V4_Pim_HeliPipPimPi0.Z()*V4_Pip_HeliPipPimPi0.X() - V4_Pim_HeliPipPimPi0.X()*V4_Pip_HeliPipPimPi0.Z(),
V4_Pim_HeliPipPimPi0.X()*V4_Pip_HeliPipPimPi0.Y() - V4_Pim_HeliPipPimPi0.Y()*V4_Pip_HeliPipPimPi0.X() );
double theQ = V4_Pip_HeliPipPimPi0.E()- V4_Pip_HeliPipPimPi0.M() + V4_Pim_HeliPipPimPi0.E()- V4_Pim_HeliPipPimPi0.M() + V4_Pi0_HeliPipPimPi0.E()- V4_Pi0_HeliPipPimPi0.M();
double lambdaNorm=theQ*theQ*(theQ*theQ/108.+ V4_Pim_HeliPipPimPi0.M()*theQ/9.+ V4_Pim_HeliPipPimPi0.M()* V4_Pim_HeliPipPimPi0.M()/3.);
double lambda= V4_omegaDecPlaneNormal_HeliPipPimPi0.P()* V4_omegaDecPlaneNormal_HeliPipPimPi0.P()/lambdaNorm;
// Vector4<float> V4_normKsKlDecHeliKsKlKpKm
// (0.5*(V4_Kl_HeliKsKlKpKm.T()+V4_Ks_HeliKsKlKpKm.T()),
// V4_Ks_HeliKsKlKpKm.Y()*V4_Kl_HeliKsKlKpKm.Z()-V4_Ks_HeliKsKlKpKm.Z()*V4_Kl_HeliKsKlKpKm.Y(),
// V4_Ks_HeliKsKlKpKm.Z()*V4_Kl_HeliKsKlKpKm.X()-V4_Ks_HeliKsKlKpKm.X()*V4_Kl_HeliKsKlKpKm.Z(),
// V4_Ks_HeliKsKlKpKm.X()*V4_Kl_HeliKsKlKpKm.Y()-V4_Ks_HeliKsKlKpKm.Y()*V4_Kl_HeliKsKlKpKm.X());
EvtDataNew* evtData=new EvtDataNew(); EvtDataNew* evtData=new EvtDataNew();
evtData->FourVecsProd[enumProd4V::Psi] = V4_psi; evtData->FourVecsProd[enumProd4V::Psi] = V4_psi;
evtData->FourVecsDec[enumJpsiGamX4V::V4_PipPimPi0KpKm_HeliPsi]=V4_PipPimPi0KpKm_HeliPsi; evtData->FourVecsDec[enumJpsiGamX4V::V4_PipPimPi0KpKm_HeliPsi]=V4_PipPimPi0KpKm_HeliPsi;
...@@ -114,15 +114,19 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa ...@@ -114,15 +114,19 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa
evtData->FourVecsDec[enumJpsiGamX4V::V4_Km_HeliPsi]=V4_Km_HeliPsi; evtData->FourVecsDec[enumJpsiGamX4V::V4_Km_HeliPsi]=V4_Km_HeliPsi;
evtData->FourVecsDec[enumJpsiGamX4V::V4_PipPimPi0_HeliPipPimPi0KpKm]=V4_PipPimPi0_HeliPipPimPi0KpKm; evtData->FourVecsDec[enumJpsiGamX4V::V4_PipPimPi0_HeliPipPimPi0KpKm]=V4_PipPimPi0_HeliPipPimPi0KpKm;
evtData->FourVecsDec[enumJpsiGamX4V::V4_KpKm_HeliPipPimPi0KpKm]=V4_KpKm_HeliPipPimPi0KpKm; evtData->FourVecsDec[enumJpsiGamX4V::V4_KpKm_HeliPipPimPi0KpKm]=V4_KpKm_HeliPipPimPi0KpKm;
evtData->FourVecsDec[enumJpsiGamX4V::V4_Pip_HeliPipPimPi0]=V4_Pip_HeliPipPimPi0;
evtData->FourVecsDec[enumJpsiGamX4V::V4_Kp_HeliKpKm]= V4_Kp_HeliKpKm; evtData->FourVecsDec[enumJpsiGamX4V::V4_Kp_HeliKpKm]= V4_Kp_HeliKpKm;
// evtData->FourVecsDec[enumJpsiGamX4V::V4_normKpKmDecHeliKsKlKpKm]=V4_normKpKmDecHeliKsKlKpKm; evtData->FourVecsDec[enumJpsiGamX4V::V4_Pip_HeliPipPimPi0]=V4_Pip_HeliPipPimPi0;
// evtData->FourVecsDec[enumJpsiGamX4V::V4_normKsKlDecHeliKsKlKpKm]=V4_normKsKlDecHeliKsKlKpKm; evtData->FourVecsDec[enumJpsiGamX4V::V4_Pim_HeliPipPimPi0]=V4_Pim_HeliPipPimPi0;
evtData->FourVecsDec[enumJpsiGamX4V::V4_Pi0_HeliPipPimPi0]=V4_Pi0_HeliPipPimPi0;
evtData->FourVecsDec[enumJpsiGamX4V::V4_omegaDecPlaneNormal_HeliPipPimPi0] =V4_omegaDecPlaneNormal_HeliPipPimPi0;
// calculate and store WignerD functions for Psi -> X gamma (JPC =0-+, 0++, 2++)
evtData->KinematicVariables[enumJpsiGamXKin::OmegaDecLambda]=lambda;
//
// calculate and store WignerD functions for Psi -> X gamma (JPC =0-+, 0++, 2++)
//
Spin jPsi=1; Spin jPsi=1;
for (Spin M=-1; M<=1; M=M+2){ for (Spin M=-1; M<=1; M=M+2){
for (Spin lam=-1; lam<=1; lam++){ for (Spin lam=-1; lam<=1; lam++){
...@@ -131,23 +135,24 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa ...@@ -131,23 +135,24 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa
} }
// //WignerD functions for X -> phi phi // //WignerD functions for X -> phi phi
// for (Spin J_X=0; J_X<=2; J_X++){
// for (Spin lam_X=-J_X; lam_X<=J_X; lam_X++){
// for (Spin lamPhi1mlamPhi2=-J_X; lamPhi1mlamPhi2<=J_X; lamPhi1mlamPhi2++){
// evtData->WignerDsDec[enumJpsiGamXDfunc::Df_XToPhiPhi1][J_X][lam_X][lamPhi1mlamPhi2]
// =Wigner_D(V4_KsKl_HeliKsKlKpKm.Phi(),V4_KsKl_HeliKsKlKpKm.Theta(),0,J_X,lam_X,lamPhi1mlamPhi2);
// evtData->WignerDsDec[enumJpsiGamXDfunc::Df_XToPhiPhi2][J_X][lam_X][lamPhi1mlamPhi2]
// =Wigner_D(V4_KpKm_HeliKsKlKpKm.Phi(),V4_KpKm_HeliKsKlKpKm.Theta(),0,J_X,lam_X,lamPhi1mlamPhi2);
// }
// }
// }
//WignerD function for phi -> K+ K- and phi -> KS KL for (Spin J_X=0; J_X<=2; J_X++){
for (Spin lam_X=-J_X; lam_X<=J_X; lam_X++){
for (Spin lamPhilamOmega=-J_X; lamPhilamOmega<=J_X; lamPhilamOmega++){
evtData->WignerDsDec[enumJpsiGamXDfunc::Df_XToOmegaPhi_KK][J_X][lam_X][lamPhilamOmega]
=Wigner_D(V4_KpKm_HeliPipPimPi0KpKm.Phi(),V4_KpKm_HeliPipPimPi0KpKm.Theta(),0,J_X,lam_X,lamPhilamOmega);
evtData->WignerDsDec[enumJpsiGamXDfunc::Df_XToOmegaPhi_3pi][J_X][lam_X][lamPhilamOmega]
=Wigner_D(V4_PipPimPi0_HeliPipPimPi0KpKm.Phi(), V4_PipPimPi0_HeliPipPimPi0KpKm.Theta(),0,J_X,lam_X,lamPhilamOmega);
}
}
}
//WignerD function for phi -> K+ K- andomega -> pi+ pi- pi0
Spin phiSpin=1; Spin phiSpin=1;
for(Spin M=-phiSpin; M<=phiSpin; M++){ for(Spin M=-phiSpin; M<=phiSpin; M++){
Spin lam=0; Spin lam=0;
evtData->WignerDsDec[enumJpsiGamXDfunc::Df_PhiToKpKm][phiSpin][M][lam] = Wigner_D(V4_Kp_HeliKpKm.Phi(),V4_Kp_HeliKpKm.Theta(), 0,phiSpin,M,lam); evtData->WignerDsDec[enumJpsiGamXDfunc::Df_PhiToKpKm][phiSpin][M][lam] = Wigner_D(V4_Kp_HeliKpKm.Phi(),V4_Kp_HeliKpKm.Theta(), 0,phiSpin,M,lam);
evtData->WignerDsDec[enumJpsiGamXDfunc::Df_OmegaToPipPimPi0][phiSpin][M][lam] = Wigner_D(V4_omegaDecPlaneNormal_HeliPipPimPi0.Phi(), V4_omegaDecPlaneNormal_HeliPipPimPi0.Theta(), 0,phiSpin,M,lam);
} }
evtData->evtWeight=anEvent->Weight(); evtData->evtWeight=anEvent->Weight();
......
...@@ -12,14 +12,20 @@ ...@@ -12,14 +12,20 @@
struct enumJpsiGamX4V{ struct enumJpsiGamX4V{
enum { Psi=0, V4_PipPimPi0KpKm_HeliPsi, V4_PipPimPi0_HeliPsi, V4_KpKm_HeliPsi, V4_gamma_HeliPsi, enum { Psi=0, V4_PipPimPi0KpKm_HeliPsi, V4_PipPimPi0_HeliPsi, V4_KpKm_HeliPsi, V4_gamma_HeliPsi,
V4_Pip_HeliPsi, V4_Pim_HeliPsi, V4_Pi0_HeliPsi, V4_Kp_HeliPsi, V4_Km_HeliPsi, V4_Pip_HeliPsi, V4_Pim_HeliPsi, V4_Pi0_HeliPsi, V4_Kp_HeliPsi, V4_Km_HeliPsi,
V4_PipPimPi0_HeliPipPimPi0KpKm, V4_KpKm_HeliPipPimPi0KpKm, V4_Pip_HeliPipPimPi0, V4_Kp_HeliKpKm, n4Vecs}; V4_PipPimPi0_HeliPipPimPi0KpKm, V4_KpKm_HeliPipPimPi0KpKm,
V4_Pip_HeliPipPimPi0, V4_Pim_HeliPipPimPi0, V4_Pi0_HeliPipPimPi0,
V4_Kp_HeliKpKm,
V4_omegaDecPlaneNormal_HeliPipPimPi0, n4Vecs};
static const std::string& name(unsigned int t) static const std::string& name(unsigned int t)
{ {
static std::string fitName[enumJpsiGamX4V::n4Vecs] static std::string fitName[enumJpsiGamX4V::n4Vecs]
={ "Psi", "PipPimPi0KpKm_HeliPsi", "PipPimPi0_HeliPsi", "KpKm_HeliPsi", "gamma_HeliPsi", ={ "Psi", "PipPimPi0KpKm_HeliPsi", "PipPimPi0_HeliPsi", "KpKm_HeliPsi", "gamma_HeliPsi",
"Pip_HeliPsi", "Pim_HeliPsi", "Pi0_HeliPsi", "Kp_HeliPsi", "Km_HeliPsi", "Pip_HeliPsi", "Pim_HeliPsi", "Pi0_HeliPsi", "Kp_HeliPsi", "Km_HeliPsi",
"PipPimPi0_HeliPipPimPi0KpKm", "KpKm_HeliPipPimPi0KpKm", "Pip_HeliPipPimPi0", "Kp_HeliKpKm" }; "PipPimPi0_HeliPipPimPi0KpKm", "KpKm_HeliPipPimPi0KpKm",
"Pip_HeliPipPimPi0", "Pim_HeliPipPimPi0", "Pi0_HeliPipPimPi0"
"Kp_HeliKpKm",
"V4_omegaDecPlaneNormal_HeliPipPimPi0" };
if (t<0 || t>=enumJpsiGamX4V::n4Vecs) assert(0); if (t<0 || t>=enumJpsiGamX4V::n4Vecs) assert(0);
return fitName[t]; return fitName[t];
...@@ -27,18 +33,29 @@ struct enumJpsiGamX4V{ ...@@ -27,18 +33,29 @@ struct enumJpsiGamX4V{
}; };
struct enumJpsiGamXDfunc{ struct enumJpsiGamXDfunc{
enum {Df_XToPhiPhi1=0, Df_XToPhiPhi2, Df_PhiToKsKl,Df_PhiToKpKm, nDfuncts}; enum {Df_XToOmegaPhi_KK=0, Df_XToOmegaPhi_3pi, Df_OmegaToPipPimPi0, Df_PhiToKpKm, nDfuncts};
static const std::string& name(unsigned int t) static const std::string& name(unsigned int t)
{ {
static std::string fitName[enumJpsiGamXDfunc::nDfuncts] static std::string fitName[enumJpsiGamXDfunc::nDfuncts]
={"XToPhiPhi1", "XToPhiPhi2", "PhiToKsKl", "PhiToKpKm"}; ={"XToOmegaPhi_KK", "XToOmegaPhi_3pi", "OmegaToPipPimPi0", "PhiToKpKm"};
if (t<0 || t>=enumJpsiGamXDfunc::nDfuncts) assert(0); if (t<0 || t>=enumJpsiGamXDfunc::nDfuncts) assert(0);
return fitName[t]; return fitName[t];
} }
}; };
struct enumJpsiGamXKin{
enum {OmegaDecLambda=0, nKinVars};
// static const std::string& name(unsigned int t)
// {
// static std::string fitName[enumJpsiGamXKin::nKinVars]
// ={"OmegaDecLambda"};
// if (t<0 || t>=enumJpsiGamXKin::nKinVars) assert(0);
// return fitName[t];
// }
};
class EventList; class EventList;
......
...@@ -90,7 +90,7 @@ complex<double> XToOmegaPhiDecAmps::XToPhiPhiAmp(Spin lamX, EvtDataNew* theData) ...@@ -90,7 +90,7 @@ complex<double> XToOmegaPhiDecAmps::XToPhiPhiAmp(Spin lamX, EvtDataNew* theData)
complex<double> amp = theXMag*expiphiX*sqrt(2*XState->L+1) complex<double> amp = theXMag*expiphiX*sqrt(2*XState->L+1)
*Clebsch(XState->L, 0, XState->S, lambda, XState->J, lambda) *Clebsch(XState->L, 0, XState->S, lambda, XState->J, lambda)
*Clebsch(1, lambdaPhi1, 1, -lambdaPhi2, XState->S, lambda ) *Clebsch(1, lambdaPhi1, 1, -lambdaPhi2, XState->S, lambda )
*conj( theData->WignerDsDec[enumJpsiGamXDfunc::Df_XToPhiPhi1][XState->J][lamX][lambda]); *conj( theData->WignerDsDec[enumJpsiGamXDfunc::Df_XToOmegaPhi_KK][XState->J][lamX][lambda]);
amp = amp * phiphiTo4KAmp( theData, lambdaPhi1, lambdaPhi2 ); amp = amp * phiphiTo4KAmp( theData, lambdaPhi1, lambdaPhi2 );
...@@ -105,7 +105,9 @@ complex<double> XToOmegaPhiDecAmps::XToPhiPhiAmp(Spin lamX, EvtDataNew* theData) ...@@ -105,7 +105,9 @@ complex<double> XToOmegaPhiDecAmps::XToPhiPhiAmp(Spin lamX, EvtDataNew* theData)
complex<double> XToOmegaPhiDecAmps::phiphiTo4KAmp( EvtDataNew* theData, Spin lambdaPhi1, Spin lambdaPhi2 ){ complex<double> XToOmegaPhiDecAmps::phiphiTo4KAmp( EvtDataNew* theData, Spin lambdaPhi1, Spin lambdaPhi2 ){
complex<double> result(0.,0.); complex<double> result(0.,0.);
result = 3. * conj(theData->WignerDsDec[enumJpsiGamXDfunc::Df_PhiToKsKl][1][lambdaPhi1][0]) double lambda = theData->KinematicVariables[enumJpsiGamXKin::OmegaDecLambda];
result = 3. * conj(theData->WignerDsDec[enumJpsiGamXDfunc::Df_OmegaToPipPimPi0][1][lambdaPhi1][0]) * sqrt(lambda)
* 3.* conj(theData->WignerDsDec[enumJpsiGamXDfunc::Df_PhiToKpKm][1][lambdaPhi2][0]); * 3.* conj(theData->WignerDsDec[enumJpsiGamXDfunc::Df_PhiToKpKm][1][lambdaPhi2][0]);
return result; return result;
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
BIC 4392.52 BIC 14611.8
AICa 4367 AICa 14586.3
AICc 4367.01 AICc 14586.3
logLh 2179.5 logLh 7289.15
free parameter 4 free parameter 4
...@@ -32,6 +32,7 @@ typedef std::map<int, Vector4<double> > mapInt4Vec; ...@@ -32,6 +32,7 @@ typedef std::map<int, Vector4<double> > mapInt4Vec;
typedef std::map<int, map<Spin,map<Spin,map<Spin,complex<double> > > > > mapIntSpinComplex; typedef std::map<int, map<Spin,map<Spin,map<Spin,complex<double> > > > > mapIntSpinComplex;
typedef std::map<std::string, Vector4<double> > mapString4Vec; typedef std::map<std::string, Vector4<double> > mapString4Vec;
typedef std::map<std::string, map<Spin,map<Spin,map<Spin,complex<double> > > > > mapStringSpinComplex; typedef std::map<std::string, map<Spin,map<Spin,map<Spin,complex<double> > > > > mapStringSpinComplex;
typedef std::map<int, double > mapIntDouble;
struct EvtDataNew { struct EvtDataNew {
mapInt4Vec FourVecsProd; mapInt4Vec FourVecsProd;
...@@ -40,6 +41,7 @@ struct EvtDataNew { ...@@ -40,6 +41,7 @@ struct EvtDataNew {
mapIntSpinComplex WignerDsDec; mapIntSpinComplex WignerDsDec;
mapString4Vec FourVecsString; mapString4Vec FourVecsString;
mapStringSpinComplex WignerDsString; mapStringSpinComplex WignerDsString;
mapIntDouble KinematicVariables;
double evtWeight; double evtWeight;
int evtNo; int evtNo;
}; };
......
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