Back to home page

EIC code displayed by LXR

 
 

    


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

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 EVTPARTPROP_HH
0022 #define EVTPARTPROP_HH
0023 
0024 #include "EvtGenBase/EvtAbsLineShape.hh"
0025 #include "EvtGenBase/EvtId.hh"
0026 #include "EvtGenBase/EvtSpinType.hh"
0027 
0028 #include <memory>
0029 #include <string>
0030 
0031 class EvtPartProp {
0032   public:
0033     EvtPartProp();
0034     EvtPartProp( const EvtPartProp& x );
0035 
0036     double getMass() { return _lineShape->getMass(); }
0037     double getMassMin() { return _lineShape->getMassMin(); }
0038     double getMassMax() { return _lineShape->getMassMax(); }
0039     double getMaxRange() { return _lineShape->getMaxRange(); }
0040     double getWidth() { return _lineShape->getWidth(); }
0041 
0042     double getRandMass( EvtId* parId, int nDaug, EvtId* dauId, EvtId* othDauId,
0043                         double maxMass, double* dauMasses )
0044     {
0045         return _lineShape->getRandMass( parId, nDaug, dauId, othDauId, maxMass,
0046                                         dauMasses );
0047     }
0048     double getMassProb( double mass, double massPar, int nDaug, double* massDau )
0049     {
0050         return _lineShape->getMassProb( mass, massPar, nDaug, massDau );
0051     }
0052 
0053     double getctau() { return _ctau; }
0054     void setctau( double tau ) { _ctau = tau; }
0055 
0056     int getChg3() { return _chg3; }
0057     void setChg3( int c3 ) { _chg3 = c3; }
0058 
0059     EvtSpinType::spintype getSpinType() { return _spintype; }
0060     void setSpinType( EvtSpinType::spintype stype ) { _spintype = stype; }
0061 
0062     const std::string& getName() { return _name; }
0063     void setName( std::string pname );
0064 
0065     EvtId getId() { return _id; }
0066     void setId( EvtId id ) { _id = id; }
0067 
0068     EvtId getIdChgConj() { return _idchgconj; }
0069     void setIdChgConj( EvtId idchgconj ) { _idchgconj = idchgconj; }
0070 
0071     int getStdHep() { return _stdhep; }
0072     void setStdHep( int stdhep ) { _stdhep = stdhep; }
0073 
0074     int getLundKC() { return _lundkc; }
0075     void setLundKC( int lundkc ) { _lundkc = lundkc; }
0076 
0077     EvtAbsLineShape* getLineShape() { return _lineShape.get(); }
0078     void initLineShape( double mass, double width, double maxRange );
0079     //  void initLineShape(double mass, double width, double maxRange, double mDaug1, double mDaug2, int l);
0080 
0081     // setLineShape takes ownership of l
0082     void setLineShape( EvtAbsLineShape* l ) { _lineShape.reset( l ); }
0083     double rollMass() { return _lineShape->rollMass(); }
0084 
0085     EvtPartProp& operator=( const EvtPartProp& x );
0086 
0087     void reSetMass( double mass );
0088     void reSetWidth( double width );
0089 
0090     void reSetMassMin( double mass );
0091     void reSetMassMax( double mass );
0092     void reSetBlatt( double blatt );
0093     void reSetBlattBirth( double blatt );
0094     void includeBirthFactor( bool yesno );
0095     void includeDecayFactor( bool yesno );
0096     void newLineShape( std::string type );
0097     void setPWForDecay( int spin, EvtId d1, EvtId d2 );
0098     void setPWForBirthL( int spin, EvtId par, EvtId othD );
0099 
0100   private:
0101     std::unique_ptr<EvtAbsLineShape> _lineShape;
0102 
0103     double _ctau;
0104     EvtId _id;
0105     EvtId _idchgconj;
0106     EvtSpinType::spintype _spintype;
0107     int _chg3;
0108     int _stdhep;
0109     int _lundkc;
0110     std::string _name;
0111 };
0112 
0113 #endif