LCOV - code coverage report
Current view: top level - MUON/MUONgeometry - AliMUONVGeometryBuilder.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 5 5 100.0 %
Date: 2016-06-14 17:26:59 Functions: 6 9 66.7 %

          Line data    Source code
       1             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       2             :  * See cxx source for full Copyright notice                               */
       3             : 
       4             : // $Id$
       5             : // Revision of includes 07/05/2004
       6             : 
       7             : /// \ingroup geometry
       8             : /// \class AliMUONVGeometryBuilder
       9             : /// \brief Abstract base class for geometry construction per module(s)
      10             : ///
      11             : /// \author Ivana Hrivnacova, IPN Orsay
      12             : 
      13             : #ifndef ALI_MUONV_GEOMETRY_BUILDER_H
      14             : #define ALI_MUONV_GEOMETRY_BUILDER_H
      15             : 
      16             : #include <fstream>
      17             : 
      18             : #include <TObject.h>
      19             : #include <TObjArray.h>
      20             : #include <TGeoMatrix.h>
      21             : 
      22             : class TGeoTranslation;
      23             : class TGeoRotation;
      24             : class TGeoCombiTrans;
      25             : 
      26             : class AliMUONGeometryModule;
      27             : class AliMUONGeometryEnvelopeStore;
      28             : class AliMUONStringIntMap;
      29             : 
      30             : class AliMUONVGeometryBuilder : public TObject
      31             : {
      32             :   public:
      33             :     AliMUONVGeometryBuilder(Int_t firstModuleId, Int_t nofModules);
      34             :     AliMUONVGeometryBuilder();
      35             :     virtual ~AliMUONVGeometryBuilder();
      36             :   
      37             :     // methods
      38             :     void  SetReferenceFrame(const TGeoCombiTrans& referenceFrame);
      39             :     void  RebuildSVMaps(Bool_t withEnvelopes = true) const;
      40             :     void  UpdateDetElements(Bool_t create) const;
      41             : 
      42             :                   /// Function to be overriden in a concrete chamber/station
      43             :                   /// geometry builder class.
      44             :                   /// Only materials that are not defined in the common
      45             :                   /// functions should be defined here.
      46           6 :     virtual void CreateMaterials() {}  // make = 0; ?
      47             : 
      48             :                   /// Function to be overriden in a concrete chamber/station
      49             :                   /// geometry builder class. \n
      50             :                   /// The geometry built there should not be placed
      51             :                   /// in ALIC; but all volumes going to ALIC
      52             :                   /// have to be added as envelopes to the chamber
      53             :                   /// geometries
      54             :                   /// (They will be then placed automatically 
      55             :                   /// usind the provided transformation.
      56             :     virtual void CreateGeometry() = 0;
      57             : 
      58             :                   /// Function to be overriden in a concrete chamber/station
      59             :                   /// geometry class. \n
      60             :                   /// The volume name for each geometry module, its virtuality
      61             :                   /// and eventually the mother volume name should be defined
      62             :     virtual void SetVolumes() = 0;
      63             : 
      64             :                   /// Function to be overriden in a concrete chamber/station
      65             :                   /// geometry class. \n
      66             :                   /// The transformation of each chamber(s) wrt ALICE
      67             :                   /// should be defined and set to its geometry class. 
      68             :     virtual void SetTransformations() = 0;
      69             : 
      70             :                   /// Function to be overriden in a concrete chamber/station
      71             :                   /// geometry class. \n
      72             :                   /// The sensitive volumes Ids for each chamber
      73             :                   /// should be defined and set to its geometry class. 
      74             :     virtual void SetSensitiveVolumes() = 0;
      75             : 
      76             :                   /// Function to be overriden (and return false) 
      77             :                   /// in the concrete geometry builder classes 
      78             :                   /// which are already defined in the new ALICE
      79             :                   /// coordinate frame
      80          40 :     virtual bool ApplyGlobalTransformation() { return true; }
      81             : 
      82             :     // access to module geometries
      83             :     Int_t  NofGeometries() const;
      84             :     AliMUONGeometryModule* Geometry(Int_t i) const;
      85             :                   // In difference from protected GetGeometry()
      86             :                   // this function access geometry via index and not
      87             :                   // via moduleId
      88             : 
      89             :   protected:
      90             :     // methods
      91             :     AliMUONGeometryModule*         GetGeometry(Int_t moduleId) const;
      92             :     AliMUONGeometryEnvelopeStore*  GetEnvelopes(Int_t moduleId) const;
      93             :     AliMUONStringIntMap*           GetSVMap(Int_t moduleId) const;
      94             :     Int_t                          GetModuleId(const TString& envName) const;
      95             :     
      96             :     // set module transformation
      97             :     void SetTranslation(Int_t moduleId, 
      98             :                         const TGeoTranslation& translation);
      99             :     void SetTransformation(Int_t moduleId, 
     100             :                         const TGeoTranslation& translation,
     101             :                         const TGeoRotation& rotation);
     102             :                         
     103             :     // set volumes 
     104             :     void SetVolume(Int_t moduleId, const TString& volumeName, 
     105             :                    Bool_t isVirtual = false);                   
     106             :     void SetMotherVolume(Int_t moduleId, const TString& volumeName);                        
     107             :     
     108             :   private:
     109             :     //methods
     110             :     
     111             :     /// Not implemented
     112             :     AliMUONVGeometryBuilder(const AliMUONVGeometryBuilder& rhs);
     113             :     /// Not implemented
     114             :     AliMUONVGeometryBuilder& operator = (const AliMUONVGeometryBuilder& rhs);
     115             : 
     116             :     TGeoHMatrix ConvertTransform(const TGeoHMatrix& transform) const;
     117             :     TGeoHMatrix ConvertDETransform(const TGeoHMatrix& transform) const;
     118             :     TString     ComposePath(const TString& volName, Int_t copyNo) const; 
     119             :     void        MapSV(const TString& path0, 
     120             :                       const TString& volName, Int_t detElemId) const;
     121             : 
     122             :     // data members
     123             :     TObjArray*  fGeometryModules;   ///< \brief the modules geometries that will be built
     124             :                                     /// by this builder                             
     125             :     TGeoCombiTrans fReferenceFrame; ///< \brief the transformation from the builder 
     126             :                                     /// reference frame to that of the transform 
     127             :                                     /// data files
     128             :                                         
     129          42 :   ClassDef(AliMUONVGeometryBuilder,4) // MUON chamber geometry base class
     130             : };
     131             : 
     132             : // inline functions
     133             : 
     134             : /// Return the number of geometry modules
     135             : inline Int_t  AliMUONVGeometryBuilder::NofGeometries() const
     136         150 : { return fGeometryModules->GetEntriesFast(); }
     137             : 
     138             : /// Return the \a i th geometry module
     139             : inline AliMUONGeometryModule* AliMUONVGeometryBuilder::Geometry(Int_t i) const
     140         120 : { return (AliMUONGeometryModule*)fGeometryModules->At(i); }
     141             : 
     142             : #endif //ALI_MUONV_GEOMETRY_BUILDER_H

Generated by: LCOV version 1.11