Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-22 10:32:42

0001 //==========================================================================
0002 //  AIDA Detector description implementation 
0003 //--------------------------------------------------------------------------
0004 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
0005 // All rights reserved.
0006 //
0007 // For the licensing terms see $DD4hepINSTALL/LICENSE.
0008 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
0009 //
0010 // Author     : M.Frank
0011 //
0012 //==========================================================================
0013 //
0014 // NOTE:
0015 //
0016 // This is an internal include file. It should only be included to 
0017 // instantiate code. Otherwise the Alignments include file should be
0018 // sufficient for all practical purposes.
0019 //
0020 //==========================================================================
0021 #ifndef DD4HEP_DETAIL_ALIGNMENTSINTERNA_H
0022 #define DD4HEP_DETAIL_ALIGNMENTSINTERNA_H
0023 
0024 // Framework include files
0025 #include <DD4hep/IOV.h>
0026 #include <DD4hep/Alignments.h>
0027 #include <DD4hep/detail/ConditionsInterna.h>
0028 
0029 // C/C++ include files
0030 #include <map>
0031 
0032 /// Namespace for the AIDA detector description toolkit
0033 namespace dd4hep {
0034 
0035   // Forward declarations
0036   class Alignment;
0037 
0038   /// Alignments internal namespace declaration
0039   /** Internaly defined datastructures are not presented to the
0040    *  user directly, but are used by dedicated views.
0041    *
0042    *  \author  M.Frank
0043    *  \version 1.0
0044    *  \ingroup DD4HEP_ALIGNMENTS
0045    */
0046   namespace detail {
0047 
0048     /// The data class behind an alignments handle.
0049     /**
0050      *  See AlignmentsInterna.cpp for the implementation.
0051      *
0052      *  \author  M.Frank
0053      *  \version 1.0
0054      *  \ingroup DD4HEP_ALIGNMENTS
0055      */
0056     class AlignmentObject : public detail::ConditionObject    {
0057     public:
0058       /// Cached pointer to the bound conditions data, since these may be accessed very frequently
0059       AlignmentData* alignment_data = 0;  //! This variable is internally bound and not ROOT persistent!
0060 
0061     public:
0062       /// Default constructor. Alignment data wuill be bound to the heap.
0063       AlignmentObject();
0064       /// Copy constructor
0065       AlignmentObject(const AlignmentObject& copy) = delete;
0066       /// Standard constructor with user provided payload pointer to bind alignment data
0067       AlignmentObject(const std::string& nam, const std::string& tit, void* payload, size_t len);
0068       /// Standard Destructor
0069       virtual ~AlignmentObject();
0070       /// Assignment operator
0071       AlignmentObject& operator=(const AlignmentObject& copy) = delete;
0072       /// Clear data
0073       void clear();
0074       /// Accessor to the alignment data. Cannot be NULL. Initialized in the constructor(s)
0075       AlignmentData& values()  {  return *alignment_data;  }
0076     };
0077   }       /* End namespace detail                     */
0078 }         /* End namespace dd4hep                      */
0079 #endif // DD4HEP_DETAIL_ALIGNMENTSINTERNA_H