Skip to content
Snippets Groups Projects
Select Git revision
  • main
  • 24.0 protected
  • IDPM_Rel25_Run3_v05
  • igrabows-main-patch-22700
  • dev_ISF_ACTS_ITk
  • IDPM_Rel25_Run3_v04
  • averbyts-main-patch-12627
  • linghua-main-patch-0cd2
  • sawyer-24.0-patch-06624
  • dguest-main-patch-56512
  • 24.0.42-patches protected
  • 22.0-mc20 protected
  • 21.0 protected
  • 21.2 protected
  • 23.0.32-patches protected
  • adye-main-patch-69913
  • 23.0.20-patches protected
  • 24.0.88-patches protected
  • 21.0-mc16a protected
  • 21.0-mc16d protected
  • nightly/main/2025-11-07T2100
  • nightly/24.0/2025-11-07T2100
  • nightly/main/2025-11-06T2100
  • release/25.0.45 protected
  • nightly/24.0/2025-11-06T2100
  • release/25.2.73 protected
  • nightly/main/2025-11-05T2100
  • nightly/24.0/2025-11-05T2100
  • nightly/main/2025-11-04T2100
  • nightly/24.0/2025-11-04T2100
  • nightly/main/2025-11-03T2100
  • release/25.2.72 protected
  • nightly/24.0/2025-11-02T2100
  • nightly/24.0/2025-11-03T2100
  • release/24.0.120 protected
  • release/24.0.119 protected
  • nightly/main/2025-11-01T2100
  • nightly/main/2025-11-02T2100
  • nightly/main/2025-10-31T2100
  • nightly/24.0/2025-10-31T2100
40 results

BeamSpotCondAlg.cxx

  • Christos Anastopoulos's avatar
    Christos Anastopoulos authored and Edward Moyse committed
    InDetConditions: clang-tidy related fixes
    2d19a7ba
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    BeamSpotCondAlg.cxx 4.11 KiB
    /*
      Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
    */
    // BeamSpot_ConditionsAlgs includes
    #include "BeamSpotCondAlg.h"
    #include "CoralBase/AttributeListException.h"
    
    const EventIDRange BeamSpotCondAlg::alwaysValid { EventIDBase { 1,
                                                                    EventIDBase::UNDEFEVT,
                                                                    EventIDBase::UNDEFNUM,
                                                                    EventIDBase::UNDEFNUM,
                                                                    0 },
                                                      EventIDBase { EventIDBase::UNDEFNUM - 1,
    	                                                        EventIDBase::UNDEFEVT,
    	                                                        EventIDBase::UNDEFNUM,
    	                                                        EventIDBase::UNDEFNUM,
    	                                                        EventIDBase::UNDEFNUM - 1 }
                                                    };
    
    BeamSpotCondAlg::BeamSpotCondAlg( const std::string& name, ISvcLocator* pSvcLocator ) 
      : AthReentrantAlgorithm( name, pSvcLocator )
    { }
    
    
    BeamSpotCondAlg::~BeamSpotCondAlg() = default;
    
    
    StatusCode BeamSpotCondAlg::initialize() 
    {
      ATH_MSG_DEBUG ("Initializing " << name() << "...");
    
      ATH_CHECK( m_readKey.initialize() );
      ATH_CHECK( m_writeKey.initialize() );
    
      return StatusCode::SUCCESS;
    }
    
    StatusCode BeamSpotCondAlg::execute(const EventContext& ctx) const
    {  
      ATH_MSG_DEBUG ("Executing " << name() << "...");
    
      SG::WriteCondHandle<InDet::BeamSpotData> writeHandle { m_writeKey, ctx };
      if ( writeHandle.isValid() )
      {
        ATH_MSG_DEBUG( "CondHandle " << writeHandle.fullKey() << " is already valid " <<
    		   "Forcing update of Store contents" );
        return StatusCode::SUCCESS;
      }
    
      EventIDRange rangeW;
      InDet::BeamSpotData* writeCdo = nullptr;
    
      if ( !m_useDB )
      {
        rangeW = alwaysValid;
        writeCdo = new InDet::BeamSpotData( m_status, m_posX, m_posY, m_posZ,
    				        m_sigmaX, m_sigmaY, m_sigmaZ,
    				        m_tiltX, m_tiltY, m_sigmaXY );
      }
      else
      {
    
        SG::ReadCondHandle<AthenaAttributeList> readHandle { m_readKey, ctx };
      
        const AthenaAttributeList* raw { *readHandle };
        if ( raw == nullptr )
        {
          ATH_MSG_ERROR("Beam Spot data for key " << m_readKey.fullKey() << " not found");
          return StatusCode::FAILURE;
        }
      
        int status { (*raw)["status"].data<int>() };
        float posX { (*raw)["posX"].data<float>() };
        float posY { (*raw)["posY"].data<float>() };
        float posZ { (*raw)["posZ"].data<float>() };
        float sigmaX { (*raw)["sigmaX"].data<float>() };
        float sigmaY { (*raw)["sigmaY"].data<float>() };
        float sigmaZ { (*raw)["sigmaZ"].data<float>() };
        float tiltX  { (*raw)["tiltX"].data<float>() };
        float tiltY  { (*raw)["tiltY"].data<float>() };
        float sigmaXY { m_sigmaXY };
        try
        {
          sigmaXY = (*raw)["sigmaXY"].data<float>();
        }
        catch (coral::AttributeListException& e)
        {
          ATH_MSG_DEBUG( "No sigmaXY value present in database, using default value of " << sigmaXY );
        }
    
        ATH_MSG_INFO( "Read from condDB"
                   << " status " << status
    	       << " pos (" << posX << "," << posY << "," << posZ << ")"
    	       << " sigma (" << sigmaX << "," << sigmaY << "," << sigmaZ << ")"
    	       << " tilt (" << tiltX << "," << tiltY << ")"
    	       << " sigmaXY " << sigmaXY );
    
        if ( !readHandle.range(rangeW) )
        {
          ATH_MSG_ERROR( "Failed to retrieve validity range for " << readHandle.key() );
          return StatusCode::FAILURE;
        }
    
        writeCdo = new InDet::BeamSpotData( status, posX, posY, posZ,
    				        sigmaX, sigmaY, sigmaZ,
    					tiltX, tiltY, sigmaXY );
      }
    
      if ( writeHandle.record( rangeW, writeCdo ).isFailure() )
      {
        ATH_MSG_ERROR( "Could not record InDet::BeamSpotData " << writeHandle.key() <<
                       " with EventRange " << rangeW << " into conditions store." );
        return StatusCode::FAILURE;
      }
      
      ATH_MSG_INFO( "Recorded new InDet::BeamSpotData to " << writeHandle.key() << " with range " << rangeW <<
    		" into conditions store." );
    
      return StatusCode::SUCCESS;
    }