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 a 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("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 /// Authors: Ivana Hrivnacova, IPN Orsay
35 #ifndef ALI_MUON_SEG_FACTORY_H
36 #define ALI_MUON_SEG_FACTORY_H
38 #include "AliMpSegFactory.h"
39 #include "AliMpStringObjMap.h"
43 class AliMpVSegmentation;
44 class AliMUONVGeometryDESegmentation;
45 class AliMUONGeometrySegmentation;
46 class AliMUONSegmentation;
47 class AliMUONGeometryTransformer;
49 class AliMUONSegFactory : public TObject {
52 AliMUONSegFactory(const AliMUONGeometryTransformer* geometry);
53 AliMUONSegFactory(const TString& transformsFileName);
55 virtual ~AliMUONSegFactory();
62 CreateMpSegmentation(Int_t detElemId, Int_t cath);
63 // Create mapping segmentation only
65 AliMUONVGeometryDESegmentation*
66 CreateDESegmentation(Int_t detElemId, Int_t cath);
67 // Create DE segmentation, operating in local reference frame
69 AliMUONGeometrySegmentation*
70 CreateModuleSegmentation(Int_t moduleId, Int_t cath);
71 // Create module segmentation, operating in global reference frame
74 CreateSegmentation(const TString& option = "default");
75 // Create segmentations on all levels and return their container.
80 AliMUONSegmentation* GetSegmentation() const;
81 // Returned segmentation contains all the lower level segmentations
82 // created with the factory
85 AliMUONSegFactory(const AliMUONSegFactory& rhs);
86 AliMUONSegFactory& operator=(const AliMUONSegFactory& rhs);
90 Bool_t IsGeometryDefined(Int_t ichamber);
91 AliMUONSegmentation* Segmentation();
93 // Old segmentations (not based on mapping)
100 AliMpSegFactory fMpSegFactory; // Mapping segmentation factory
101 AliMpStringObjMap fDESegmentations;// Map of DE segmentations to DE names
102 AliMUONSegmentation* fSegmentation; // Segmentation container
103 const AliMUONGeometryTransformer* fkTransformer; // Geometry transformer
105 ClassDef(AliMUONSegFactory,0) // MUON Factory for Chambers and Segmentation
108 inline AliMUONSegmentation* AliMUONSegFactory::GetSegmentation() const
109 { return fSegmentation; }
111 #endif //ALI_MUON_SEG_FACTORY_H