/// \class AliMUONGeometryBuilder
/// \brief Manager class for geometry construction via geometry builders.
///
-/// Author: Ivana Hrivnacova, IPN Orsay
+/// \author Ivana Hrivnacova, IPN Orsay
#ifndef ALI_MUON_GEOMETRY_BUILDER_H
#define ALI_MUON_GEOMETRY_BUILDER_H
+#include "AliMUONGeometry.h"
+
#include <TObject.h>
#include <TGeoMatrix.h>
-#include "AliMUONGeometry.h"
-
class TObjArray;
class AliModule;
const TGeoMatrix& m3, const TGeoMatrix& m4);
// methods
+ //
void AddBuilder(AliMUONVGeometryBuilder* geomBuilder);
void CreateGeometry();
void CreateMaterials();
- void InitGeometry(const TString& svmapFileName = "svmap.dat");
- void ReadTransformations(const TString& fileName = "transform.dat");
- void WriteTransformations(const TString& fileName = "transform.dat.out");
- void WriteSVMaps(Bool_t rebuild = true,
- const TString& fileName = "svmap.dat.out");
+
+ void InitGeometry();
+ void InitGeometry(const TString& svmapFileName);
+ void UpdateInternalGeometry();
+
+ void WriteSVMaps();
+ void WriteSVMaps(const TString& fileName,
+ Bool_t rebuild = true, Bool_t writeEnvelopes = true);
// Geometry parametrisation
const AliMUONGeometry* GetGeometry() const;
// Alignement
virtual Bool_t GetAlign() const;
- virtual void SetAlign(Bool_t align);
+ virtual void SetAlign(Bool_t align = true);
+ virtual void SetAlign(const TString& fileName, Bool_t align = true);
protected:
+ /// Not implemented
AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
+ /// Not implemented
AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right);
private:
+ // static methods
+ static const TString& GetDefaultTransformFileName();
+ static const TString& GetDefaultSVMapFileName();
+ static const TString& GetOutFileNameExtension();
+
// method
void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo,
const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
- const char* only) const;
- void FillGlobalTransformations(AliMUONVGeometryBuilder* builder);
- void SetAlign(AliMUONVGeometryBuilder* builder);
+ const char* only, Bool_t makeAssembly = false) const;
+ void CreateGeometryWithTGeo();
+ void CreateGeometryWithoutTGeo();
+ void SetAlignToBuilder(AliMUONVGeometryBuilder* builder) const;
// data members
- AliModule* fModule; // the AliRoot module
- Bool_t fAlign; // option to read transformations
- // from a file
- TGeoCombiTrans fGlobalTransformation;// global transformation
- // applied to the whole geometry
- TObjArray* fGeometryBuilders; // list of Geometry Builders
- AliMUONGeometry* fGeometry; // geometry parametrisation
-
- ClassDef(AliMUONGeometryBuilder,4) // Geometry builder
+ AliModule* fModule; ///< the AliRoot module
+ Bool_t fAlign; ///< \brief option to read transformations
+ /// from a file
+ TString fTransformFileName; ///< transformations file name
+ TString fSVMapFileName; ///< svmaps file name
+ TGeoCombiTrans fGlobalTransformation;///< \brief global transformation
+ /// applied to the whole geometry
+ TObjArray* fGeometryBuilders; ///< list of Geometry Builders
+ AliMUONGeometry* fGeometry; ///< geometry parametrisation
+
+ ClassDef(AliMUONGeometryBuilder,6) // Geometry builder
};
// inline functions
+/// Initialize geometry
+inline void AliMUONGeometryBuilder::InitGeometry()
+{ InitGeometry(fSVMapFileName); }
+
+/// Write sensitive volume maps
+inline void AliMUONGeometryBuilder::WriteSVMaps()
+{ WriteSVMaps(fSVMapFileName + GetOutFileNameExtension()); }
+
+/// Return geometry parametrisation
inline
const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
{ return fGeometry; }
+/// Return geometry transformer
inline
const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
{ return fGeometry->GetTransformer(); }
+/// Return option for reading transformations from a file
inline Bool_t AliMUONGeometryBuilder::GetAlign() const
{ return fAlign; }