Page MenuHomeHEPForge

D52.1759190445.diff
No OneTemporary

Size
7 KB
Referenced Files
None
Subscribers
None

D52.1759190445.diff

diff --git a/inc/LauBlattWeisskopfFactor.hh b/inc/LauBlattWeisskopfFactor.hh
--- a/inc/LauBlattWeisskopfFactor.hh
+++ b/inc/LauBlattWeisskopfFactor.hh
@@ -36,12 +36,13 @@
#define LAU_BLATTWEISSKOPFFACTOR
#include "Rtypes.h"
+#include "TString.h"
class LauParameter;
class LauResonanceInfo;
-class LauBlattWeisskopfFactor {
+class LauBlattWeisskopfFactor final {
public:
//! Define the allowed types of barrier factors
@@ -83,8 +84,8 @@
//! Constructor
LauBlattWeisskopfFactor( const LauResonanceInfo& resInfo, const Double_t resRadius, const BarrierType barrierType, const RestFrame restFrame, const BlattWeisskopfCategory category );
- //! Destructor
- virtual ~LauBlattWeisskopfFactor();
+ //! Constructor
+ LauBlattWeisskopfFactor( const Int_t spin, const Double_t resRadius, const BarrierType barrierType, const RestFrame restFrame, const BlattWeisskopfCategory category );
//! Method to create a new factor with cloned radius parameter
/*!
@@ -110,10 +111,6 @@
*/
Double_t calcFormFactor( const Double_t p ) const;
- protected:
- //! Set the name of the radius parameter
- TString setRadiusName( const LauResonanceInfo& resInfo, const BlattWeisskopfCategory category );
-
private:
//! Copy constructor
LauBlattWeisskopfFactor( const LauBlattWeisskopfFactor& other, const UInt_t newSpin, const BarrierType newBarrierType );
@@ -121,6 +118,15 @@
//! Copy assignment operator (not implemented)
LauBlattWeisskopfFactor& operator=( const LauBlattWeisskopfFactor& other );
+ //! Set the name of the radius parameter
+ TString setRadiusName( const LauResonanceInfo& resInfo, const BlattWeisskopfCategory category );
+
+ //! Set the name of the radius parameter
+ TString setRadiusName( const BlattWeisskopfCategory category );
+
+ //! Set the name of the radius parameter
+ TString setRadiusName( const TString& categoryName );
+
//! Resonance spin
const UInt_t spin_;
diff --git a/src/LauBlattWeisskopfFactor.cc b/src/LauBlattWeisskopfFactor.cc
--- a/src/LauBlattWeisskopfFactor.cc
+++ b/src/LauBlattWeisskopfFactor.cc
@@ -58,8 +58,14 @@
std::cout << "INFO in LauBlattWeisskopfFactor constructor : creating radius parameter for category \"" << categoryName << "\", with initial value " << resRadius << std::endl;
}
-LauBlattWeisskopfFactor::~LauBlattWeisskopfFactor()
+LauBlattWeisskopfFactor::LauBlattWeisskopfFactor( const Int_t spin, const Double_t resRadius, const BarrierType barrierType, const RestFrame restFrame, const BlattWeisskopfCategory category ) :
+ spin_(spin),
+ radius_(new LauParameter("NEED_A_GOOD_NAME",resRadius,0.0,10.0,kTRUE)),
+ barrierType_(barrierType),
+ restFrame_(restFrame)
{
+ TString categoryName = this->setRadiusName( category );
+ std::cout << "INFO in LauBlattWeisskopfFactor constructor : creating radius parameter for category \"" << categoryName << "\", with initial value " << resRadius << std::endl;
}
LauBlattWeisskopfFactor::LauBlattWeisskopfFactor( const LauBlattWeisskopfFactor& other, const UInt_t newSpin, const BarrierType newBarrierType ) :
@@ -72,61 +78,61 @@
TString LauBlattWeisskopfFactor::setRadiusName( const LauResonanceInfo& resInfo, const BlattWeisskopfCategory category )
{
- TString name = "BarrierRadius_";
- TString categoryName;
+ switch (category) {
+ case Indep :
+ return this->setRadiusName( resInfo.getSanitisedName() );
+ default :
+ return this->setRadiusName( category );
+ }
+}
+TString LauBlattWeisskopfFactor::setRadiusName( const BlattWeisskopfCategory category )
+{
switch (category) {
- case Parent :
- categoryName = "Parent";
- break;
+ case Default :
+ return this->setRadiusName("Unknown");
case Indep :
- categoryName = resInfo.getSanitisedName();
- break;
+ // We shouldn't ever end up here
+ return this->setRadiusName("Unknown");
+ case Parent :
+ return this->setRadiusName("Parent");
case Light :
- categoryName = "Light";
- break;
+ return this->setRadiusName("Light");
case Kstar :
- categoryName = "Kstar";
- break;
+ return this->setRadiusName("Kstar");
case Charm :
- categoryName = "Charm";
- break;
+ return this->setRadiusName("Charm");
case StrangeCharm :
- categoryName = "StrangeCharm";
- break;
+ return this->setRadiusName("StrangeCharm");
case Charmonium :
- categoryName = "Charmonium";
- break;
+ return this->setRadiusName("Charmonium");
case Beauty :
- categoryName = "Beauty";
- break;
+ return this->setRadiusName("Beauty");
case StrangeBeauty :
- categoryName = "StrangeBeauty";
- break;
+ return this->setRadiusName("StrangeBeauty");
case CharmBeauty :
- categoryName = "CharmBeauty";
- break;
+ return this->setRadiusName("CharmBeauty");
case Custom1 :
- categoryName = "Custom1";
- break;
+ return this->setRadiusName("Custom1");
case Custom2 :
- categoryName = "Custom2";
- break;
+ return this->setRadiusName("Custom2");
case Custom3 :
- categoryName = "Custom3";
- break;
+ return this->setRadiusName("Custom3");
case Custom4 :
- categoryName = "Custom4";
- break;
- default :
- categoryName = "Unknown";
- break;
+ return this->setRadiusName("Custom4");
}
+ // We should never get here but gcc seems to think we can
+ return this->setRadiusName("Unknown");
+}
+
+TString LauBlattWeisskopfFactor::setRadiusName( const TString& categoryName )
+{
+ TString name = "BarrierRadius_";
+ name.Append(categoryName);
- name.Append(categoryName);
- radius_->name(name);
+ radius_->name(name);
- return categoryName;
+ return categoryName;
}
LauBlattWeisskopfFactor* LauBlattWeisskopfFactor::createClone( const UInt_t newSpin, const BarrierType newBarrierType )
diff --git a/src/LauResonanceMaker.cc b/src/LauResonanceMaker.cc
--- a/src/LauResonanceMaker.cc
+++ b/src/LauResonanceMaker.cc
@@ -632,19 +632,38 @@
// Look up the category in the category information map
BWFactorCategoryMap::iterator factor_iter = bwFactors_.find( LauBlattWeisskopfFactor::Parent );
- if ( factor_iter != bwFactors_.end() ) {
+ if ( factor_iter == bwFactors_.end() ) {
+ // If the category is currently undefined we need to create it
+ bwFactor = new LauBlattWeisskopfFactor( resSpin, 4.0, bwBarrierType_, bwRestFrame_, LauBlattWeisskopfFactor::Parent );
+ std::cerr<<"WARNING in LauResonanceMaker::getParentBWFactor : Default radius 4.0 set for Blatt-Weisskopf factor category: Parent"<<std::endl;
+
+ BlattWeisskopfCategoryInfo& categoryInfo = bwFactors_[LauBlattWeisskopfFactor::Parent];
+ categoryInfo.bwFactor_ = bwFactor;
+ categoryInfo.defaultRadius_ = bwFactor->getRadiusParameter()->value();
+ categoryInfo.radiusFixed_ = kTRUE;
+ } else {
// If it exists, we can check if the factor object has been created
BlattWeisskopfCategoryInfo& categoryInfo = factor_iter->second;
if ( categoryInfo.bwFactor_ != 0 ) {
// If so, simply clone it
bwFactor = categoryInfo.bwFactor_->createClone( resSpin, barrierType );
+ } else {
+ // Otherwise we need to create it, using the default value if it has been set
+ if ( categoryInfo.defaultRadius_ >= 0.0 ) {
+ bwFactor = new LauBlattWeisskopfFactor( resSpin, categoryInfo.defaultRadius_, bwBarrierType_, bwRestFrame_, LauBlattWeisskopfFactor::Parent );
+ } else {
+ bwFactor = new LauBlattWeisskopfFactor( resSpin, 4.0, bwBarrierType_, bwRestFrame_, LauBlattWeisskopfFactor::Parent );
+ std::cerr<<"WARNING in LauResonanceMaker::getParentBWFactor : Default radius 4.0 set for Blatt-Weisskopf factor category: Parent"<<std::endl;
+ }
+ categoryInfo.bwFactor_ = bwFactor;
+
+ // Set whether the radius should be fixed/floated
+ LauParameter* radius = bwFactor->getRadiusParameter();
+ radius->fixed( categoryInfo.radiusFixed_ );
}
}
- if ( bwFactor==0 ) {
- std::cerr<<"ERROR in LauResonanceMaker::getParentBWFactor : No parent Blatt-Weisskopf factor found to be cloned for K-matrix."<<std::endl;
- }
return bwFactor;
}

File Metadata

Mime Type
text/plain
Expires
Tue, Sep 30, 1:00 AM (15 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6572428
Default Alt Text
D52.1759190445.diff (7 KB)

Event Timeline