Back to home page

EIC code displayed by LXR

 
 

    


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

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 #ifndef DD4HEP_DETAIL_SHAPESINTERNA_H
0014 #define DD4HEP_DETAIL_SHAPESINTERNA_H
0015 
0016 // Framework include files
0017 #include <DD4hep/Shapes.h>
0018 
0019 /// Namespace for the AIDA detector description toolkit
0020 namespace dd4hep {
0021 
0022   /// Concrete object implementation for the Header handle
0023   /**
0024    *
0025    *  \author  M.Frank
0026    *  \version 1.0
0027    *  \ingroup DD4HEP_CORE
0028    */
0029   class TwistedTubeObject: public TGeoTubeSeg {
0030   private:
0031     /// Inhibit move constructor
0032     TwistedTubeObject(TwistedTubeObject&&) = delete;
0033     /// Inhibit copy constructor
0034     TwistedTubeObject(const TwistedTubeObject&) = delete;
0035     /// Inhibit move assignment
0036     TwistedTubeObject& operator=(TwistedTubeObject&&) = delete;
0037     /// Inhibit copy assignment
0038     TwistedTubeObject& operator=(const TwistedTubeObject&) = delete;
0039   public:
0040     double fPhiTwist     {0.0};   // Twist angle from -fZHalfLength to fZHalfLength
0041     double fNegativeEndz {0.0};   // -ve z endplate
0042     double fPositiveEndz {0.0};   // +ve z endplate
0043     int    fNsegments    {0};     // Number of segments in totalPhi
0044     
0045   public:
0046     /// Standard constructor
0047     TwistedTubeObject() = default;
0048     /// Initializing constructor
0049     TwistedTubeObject(const char* pName,
0050                       double  twistedangle,  // Twisted angle
0051                       double  endinnerrad,   // Inner radius at endcap 
0052                       double  endouterrad,   // Outer radius at endcap 
0053                       double  negativeEndz,  // -ve z endplate
0054                       double  positiveEndz,  // +ve z endplate
0055                       int     nseg,          // Number of segments in totalPhi
0056                       double  totphi);       // Total angle of all segments
0057     /// Default destructor
0058     virtual ~TwistedTubeObject() = default;
0059     /// Access twist angle
0060     double GetPhiTwist    () const { return fPhiTwist;     }
0061     /// Access the negative z
0062     double GetNegativeEndZ() const { return fNegativeEndz; }
0063     /// Access the positive z
0064     double GetPositiveEndZ() const { return fPositiveEndz; }
0065     /// Access the number of segments
0066     int    GetNsegments()    const { return fNsegments;    }
0067     
0068     /// in case shape has some negative parameters, these has to be computed in order to fit the mother
0069     virtual TGeoShape *GetMakeRuntimeShape(TGeoShape* mother, TGeoMatrix* mat) const  override;
0070     /// print shape parameters
0071     virtual void InspectShape() const  override;
0072 
0073     ClassDefOverride(TwistedTubeObject,0);
0074   };
0075 }      /* End namespace dd4hep           */
0076 #endif // DD4HEP_DETAIL_SHAPESINTERNA_H