1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
7 /// \class AliMUONSegFactory
8 /// \brief New factory for building segmentations at all levels
10 /// The factory is associated with the AliMUONGeometryTransformer
11 /// object, used in geometry (module) segmentations for performing
12 /// trasformation between the global reference frame and the local DE one.
13 /// This transformer object can be passed by pointer or can be created
14 /// by a factory and filled from the transformations data file.
15 /// The transformer need not to be set if factory is used only
16 /// to create mapping segmentation: \n
19 /// - AliMUONSegFactory factory(kTransformer);
20 /// - AliMUONSegFactory factory("volpath.dat", "transform.dat");
21 /// - AliMUONSegFactory factory(0); \n
23 /// All created objects are registered in the AliMUONSegmentation
24 /// object, which can be accessed via GetSegmentation() method.
25 /// A repetetive call to the same Create.. method does not create
26 /// a new object but returns the existing one. \n
28 /// Factory does not delete the created segmentation objects.
29 /// They have to be deleted in the client code via the AliMUONSegmentation
31 /// delete factory.GetSegmentation();
33 /// \author Ivana Hrivnacova, IPN Orsay
35 #ifndef ALI_MUON_SEG_FACTORY_H
36 #define ALI_MUON_SEG_FACTORY_H
38 #include "AliMpStringObjMap.h"
42 class AliMpVSegmentation;
43 class AliMUONVGeometryDESegmentation;
44 class AliMUONGeometrySegmentation;
45 class AliMUONSegmentation;
46 class AliMUONGeometryTransformer;
48 class AliMUONSegFactory : public TObject {
51 AliMUONSegFactory(const AliMUONGeometryTransformer* geometry);
52 AliMUONSegFactory(const TString& volPathsFileName,
53 const TString& transformsFileName);
55 virtual ~AliMUONSegFactory();
61 AliMUONSegmentation* CreateSegmentation();
62 // Create segmentations on all levels and return their container.
67 AliMUONSegmentation* GetSegmentation() const;
68 // Returned segmentation contains all the lower level segmentations
69 // created with the factory
72 AliMUONSegFactory(const AliMUONSegFactory& rhs);
73 AliMUONSegFactory& operator=(const AliMUONSegFactory& rhs);
76 AliMUONVGeometryDESegmentation*
77 CreateDESegmentation(Int_t detElemId, Int_t cath);
78 // Create DE segmentation, operating in local reference frame
81 CreateModuleSegmentations(Int_t chamberId, Int_t cath);
82 // Create module segmentation(s) for a given chamber, operating
83 // in global reference frame
86 Bool_t IsGeometryDefined(Int_t ichamber);
87 AliMUONSegmentation* Segmentation();
90 AliMpStringObjMap fDESegmentations;///< Map of DE segmentations to DE names
91 AliMUONSegmentation* fSegmentation; ///< Segmentation container
92 const AliMUONGeometryTransformer* fkTransformer; ///< Geometry transformer
94 ClassDef(AliMUONSegFactory,0) // MUON Factory for Chambers and Segmentation
97 /// Return segmentation
98 inline AliMUONSegmentation* AliMUONSegFactory::GetSegmentation() const
99 { return fSegmentation; }
101 #endif //ALI_MUON_SEG_FACTORY_H