Skip to content

Commit

Permalink
fix?
Browse files Browse the repository at this point in the history
  • Loading branch information
VanyaBelyaev committed Dec 7, 2023
1 parent 4f3940e commit 8e7cfde
Showing 1 changed file with 33 additions and 9 deletions.
42 changes: 33 additions & 9 deletions source/src/GetWeight.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@ namespace
AuxDataSet ( const RooDataSet& data ) : RooDataSet ( data ) {};
/// destructor
~AuxDataSet(){}
// ========================================================================
public:
// =======================================================================
// ========================================================================
/// get the weight variable
std::string wgtName () const
{ return RooDataSet::_wgtVar ? RooDataSet::_wgtVar->GetName() : "" ; }
Expand All @@ -54,8 +55,6 @@ namespace
bool storeAsymError () const
{ return RooDataSet::_wgtVar ? RooDataSet::_wgtVar->getAttribute ( "StoreAsymError" ) : false ; }
// ========================================================================
const RooAbsReal* wgtVar () const { return RooDataSet::_wgtVar ; }
// ========================================================================
} ;
// ==========================================================================
#endif
Expand All @@ -74,17 +73,27 @@ namespace
*/
// ============================================================================
const RooAbsReal* Ostap::Utils::getWeightVar ( const RooAbsData* data )
{
{
if ( nullptr == data || !data->isWeighted() ) { return nullptr ; }
const RooDataSet* ds = dynamic_cast<const RooDataSet*>( data ) ;
if ( nullptr == ds ) { return nullptr ; }
//
#if ROOT_VERSION_CODE < ROOT_VERSION ( 6 , 26 , 0 )
//
std::unique_ptr<RooAbsData> cloned { ds->emptyClone() } ;
AuxDataSet aux { *dynamic_cast<RooDataSet*>( cloned.get() ) } ;
const std::string wname = getWeight ( data ) ;
if ( wname.empty() ) { return nullptr ; }
//
return aux.wgtVar() ;
const RooArgSet* set1 = data -> RooAbsData::get() ;
const RooArgSet* set2 = ds -> get() ;
//
if ( nullptr == set1 ||
nullptr == set2 ||
set1->getgSize() != set2->getSize() + 1 ) { return nullptr ; }
//
const RooAbsArg* wvar = set1->find ( wname.c_str() ) ;
if ( nullptr == wvar ) { return nullptr ; }
//
return dynamic_cast<const RooAbsReal*> ( wvar ) ;
//
#else
//
Expand All @@ -101,10 +110,25 @@ const RooAbsReal* Ostap::Utils::getWeightVar ( const RooAbsData* data )
// ============================================================================
std::string Ostap::Utils::getWeight ( const RooAbsData* data )
{
// weight var
const RooAbsReal* wvar = getWeightVar ( data ) ;
if ( nullptr == data || !data->isWeighted() ) { return "" ; }
const RooDataSet* ds = dynamic_cast<const RooDataSet*>( data ) ;
if ( nullptr == ds ) { return "" ; }
//
#if ROOT_VERSION_CODE < ROOT_VERSION ( 6 , 26 , 0 )
//
std::unique_ptr<RooAbsData> cloned { ds->emptyClone() } ;
AuxDataSet aux { *dynamic_cast<RooDataSet*>( cloned.get() ) } ;
//
return aux.wgtName() ;
//
#else
//
const RooAbsReal* wvar = ds->weightVar();
if ( nullptr == wvar ) { return "" ; }
return wvar->GetName() ;
//
#endif
//
}
// ============================================================================
/* weight errors are stored for the weighted data set?
Expand Down

0 comments on commit 8e7cfde

Please sign in to comment.