Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:20:06

0001 
0002 /***********************************************************************
0003 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors       *
0004 *                                                                      *
0005 * This file is part of EvtGen.                                         *
0006 *                                                                      *
0007 * EvtGen is free software: you can redistribute it and/or modify       *
0008 * it under the terms of the GNU General Public License as published by *
0009 * the Free Software Foundation, either version 3 of the License, or    *
0010 * (at your option) any later version.                                  *
0011 *                                                                      *
0012 * EvtGen is distributed in the hope that it will be useful,            *
0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
0015 * GNU General Public License for more details.                         *
0016 *                                                                      *
0017 * You should have received a copy of the GNU General Public License    *
0018 * along with EvtGen.  If not, see <https://www.gnu.org/licenses/>.     *
0019 ***********************************************************************/
0020 
0021 #ifndef EVTLAMBDACPHH_HH
0022 #define EVTLAMBDACPHH_HH
0023 
0024 #include "EvtGenBase/EvtComplex.hh"
0025 #include "EvtGenBase/EvtDecayAmp.hh"
0026 #include "EvtGenBase/EvtResonance2.hh"
0027 #include "EvtGenBase/EvtVector4R.hh"
0028 
0029 #include <string>
0030 #include <vector>
0031 
0032 class EvtParticle;
0033 
0034 // Description: Decay model for Lambda_c -> K- pi+ p using amplitudes
0035 //              from the Fermilab E791 analysis: arXiv:hep-ex/9912003v1
0036 
0037 class EvtLambdacPHH : public EvtDecayAmp {
0038   public:
0039     EvtLambdacPHH();
0040 
0041     std::string getName() override;
0042     EvtDecayBase* clone() override;
0043 
0044     void init() override;
0045     void initProbMax() override;
0046     void decay( EvtParticle* p ) override;
0047 
0048   protected:
0049     // Resonance enumeration
0050     enum LcResLabel
0051     {
0052         NonReson = 0,
0053         Kstar,
0054         Delta,
0055         Lambda
0056     };
0057 
0058     // Amplitude functions
0059     std::vector<EvtComplex> calcResAmpTerms( EvtLambdacPHH::LcResLabel resIndex,
0060                                              const EvtResonance2& res,
0061                                              double norm ) const;
0062 
0063     EvtComplex DecayAmp3( EvtLambdacPHH::LcResLabel resonance, int m,
0064                           int mprime, double theta_res, double phi_res,
0065                           double theta_prime_daughter_res,
0066                           double phi_prime_daughter_res ) const;
0067 
0068     EvtComplex fampl3( double amplitude_res, double phi_res, int spinMother,
0069                        int m_spinMother, int m_prime_spinMother,
0070                        double theta_res, float spin_res, float m_spin_res,
0071                        float m_prime_spin_res, double theta_daughter_res,
0072                        double phi_prime_daughter_res ) const;
0073 
0074     // Find resonance normalisation factors
0075     void calcNormalisations();
0076 
0077     void getFitFractions();
0078 
0079     // Inverse cos/sin functions that checks for valid arguments
0080     double getACos( double num, double denom ) const;
0081     double getASin( double num, double denom ) const;
0082 
0083   private:
0084     // Daughter ordering for K-, pi+, p
0085     int _d1, _d2, _d3;
0086 
0087     // Resonance parameters
0088     double _Nplusplus, _Nplusminus, _Nminusplus, _Nminusminus;
0089     double _phiNplusplus, _phiNplusminus, _phiNminusplus, _phiNminusminus;
0090     double _E1, _phiE1, _E2, _phiE2, _E3, _phiE3, _E4, _phiE4;
0091     double _F1, _phiF1, _F2, _phiF2, _H1, _phiH1, _H2, _phiH2;
0092 
0093     double _NRNorm, _KstarNorm, _DeltaNorm, _LambdaNorm;
0094     double _KstarM, _KstarW, _KstarR;
0095     double _DeltaM, _DeltaW, _DeltaR;
0096     double _LambdaM, _LambdaW, _LambdaR;
0097     double _Lambda_cR;
0098 
0099     EvtVector4R _zprime, _p4_Lambda_c;
0100     double _zpMag, _p4_Lambdac_Mag;
0101 };
0102 
0103 #endif