15 #include "GaudiKernel/ISvcLocator.h" 
   16 #include "GaudiKernel/Service.h" 
   27     const std::string& anaTag,
 
   31         m_anaTag( anaTag ) { }
 
   41   return StatusCode::SUCCESS;
 
   50     const std::string& folderOverride, 
 
   51     const std::string& nameOverride )
 const 
   54   ISvcLocator* svcLoc = Gaudi::svcLocator();
 
   55   SmartIF<IPlotsDefinitionSvc> plotsDefSvc(svcLoc->service( 
"PlotsDefSvc"+m_anaTag ));
 
   65   if( not folderOverride.empty() )  sDef.
folder( folderOverride );
 
   68   if( not nameOverride.empty() )  sDef.
name( nameOverride );
 
   83     return StatusCode::FAILURE;
 
  102   return StatusCode::SUCCESS;
 
  112     return StatusCode::FAILURE;
 
  144   return StatusCode::SUCCESS;
 
  154     return StatusCode::FAILURE;
 
  199   return StatusCode::SUCCESS;
 
  209     return StatusCode::FAILURE;
 
  229   return StatusCode::SUCCESS;
 
  239     return StatusCode::FAILURE;
 
  271   return StatusCode::SUCCESS;
 
  281     return StatusCode::FAILURE;
 
  284   pHisto = ( def.
nBinsY() == 0 ) ?
 
  309   return StatusCode::SUCCESS;
 
  322     return StatusCode::FAILURE;
 
  325   if( std::isnan( 
value ) or std::isnan( 
weight ) ) {
 
  326     ATH_MSG_ERROR( 
"Non-valid fill arguments for TH1:" << pTh1->GetName() );
 
  327     return StatusCode::FAILURE;
 
  332   return StatusCode::SUCCESS;
 
  342     return StatusCode::FAILURE;
 
  345   if( std::isnan( 
xval ) or std::isnan( 
yval ) or std::isnan( 
weight ) ) {
 
  346     ATH_MSG_ERROR( 
"Non-valid fill arguments for TH2:" << pTh2->GetName() );
 
  347     return StatusCode::FAILURE;
 
  352   return StatusCode::SUCCESS;
 
  358     TH3* pTh3, 
float xval, 
float yval, 
float zval, 
float weight )
 const 
  362     return StatusCode::FAILURE;
 
  365   if( std::isnan( 
xval ) or std::isnan( 
yval ) or
 
  366       std::isnan( zval ) or std::isnan( 
weight ) ) {
 
  367     ATH_MSG_ERROR( 
"Non-valid fill arguments for TH3:" << pTh3->GetName() );
 
  368     return StatusCode::FAILURE;
 
  374   return StatusCode::SUCCESS;
 
  382   if( not pTprofile ) {
 
  384     return StatusCode::FAILURE;
 
  387   if( std::isnan( 
xval ) or std::isnan( 
yval ) or std::isnan( 
weight ) ) {
 
  388     ATH_MSG_ERROR( 
"Non-valid fill arguments for TProfile:" << pTprofile->GetName() );
 
  389     return StatusCode::FAILURE;
 
  394   return StatusCode::SUCCESS;
 
  400     TProfile2D* pTprofile, 
float xval, 
float yval, 
float zval, 
float weight )
 const 
  402   if( not pTprofile ) {
 
  404     return StatusCode::FAILURE;
 
  407   if( std::isnan( 
xval ) or std::isnan( 
yval ) or
 
  408       std::isnan( zval ) or std::isnan( 
weight ) ) {
 
  409     ATH_MSG_ERROR( 
"Non-valid fill arguments for TProfile2D:" << pTprofile->GetName() );
 
  410     return StatusCode::FAILURE;
 
  415   return StatusCode::SUCCESS;
 
  421     TEfficiency* pTeff, 
float value, 
bool accepted, 
float weight )
 const 
  424     ATH_MSG_ERROR( 
"Trying to fill non-definded 1D TEfficiency" );
 
  425     return StatusCode::FAILURE;
 
  428   if( std::isnan( 
value ) or std::isnan( 
weight ) ) {
 
  429     ATH_MSG_ERROR( 
"Non-valid fill arguments for 1D TEfficiency:" << pTeff->GetName() );
 
  430     return StatusCode::FAILURE;
 
  436   else            pTeff->FillWeighted( accepted, 
weight, 
value );
 
  437   return StatusCode::SUCCESS;
 
  443     TEfficiency* pTeff2d, 
float xvalue, 
float yvalue, 
bool accepted, 
float weight )
 const 
  446     ATH_MSG_ERROR( 
"Trying to fill non-definded 2D TEfficiency" );
 
  447     return StatusCode::FAILURE;
 
  450   if( std::isnan( xvalue ) or std::isnan( yvalue ) or std::isnan( 
weight ) ) {
 
  451     ATH_MSG_ERROR( 
"Non-valid fill arguments for 2D TEfficiency:" << pTeff2d->GetName() );
 
  452     return StatusCode::FAILURE;
 
  457   if( 
weight==1.) pTeff2d->Fill( accepted, xvalue, yvalue );
 
  458   else            pTeff2d->FillWeighted( accepted, 
weight, xvalue, yvalue );
 
  459   return StatusCode::SUCCESS;
 
  465   unsigned int nBins, 
float absMin, 
float absMax, 
bool symmetriseAroundZero )
 
  467   std::vector<float> emptyVec;
 
  469   if( absMin<=0 or absMax<=0 ) {
 
  470     ATH_MSG_WARNING( 
"absMin or absMax argument to getLogLinearBins is out of range" );
 
  472   } 
else if( 
nBins==0 ) {
 
  477   unsigned int asymVecSize = 
nBins + 1; 
 
  478   std::vector<float> theBinning( asymVecSize, 0.);
 
  480   float logStart = 
std::log( absMin );
 
  481   float logDist = 
std::log( absMax ) - logStart;
 
  484   float thisLog{ logStart };
 
  485   for( 
float& thisBin : theBinning ) {
 
  489   if( symmetriseAroundZero ) {