]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegFactory.h
- Adding option for ownership of sector
[u/mrichter/AliRoot.git] / MUON / AliMUONSegFactory.h
CommitLineData
fc337f2e 1/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3
4/* $Id$ */
5
5398f946 6/// \ingroup base
fc337f2e 7/// \class AliMUONSegFactory
8/// \brief New factory for building segmentations at all levels
13985652 9///
e9b0e655 10/// The factory is associated with the AliMUONGeometryTransformer
fc337f2e 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
17///
18/// Construction:
19/// - AliMUONSegFactory factory(kTransformer);
4f27ddd4 20/// - AliMUONSegFactory factory("volpaths.dat", "transform.dat");
fc337f2e 21/// - AliMUONSegFactory factory(0); \n
22///
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
27///
28/// Factory does not delete the created segmentation objects.
29/// They have to be deleted in the client code via the AliMUONSegmentation
30/// container: \n
31/// delete factory.GetSegmentation();
32///
13985652 33/// \author Ivana Hrivnacova, IPN Orsay
fc337f2e 34
35#ifndef ALI_MUON_SEG_FACTORY_H
36#define ALI_MUON_SEG_FACTORY_H
37
fc337f2e 38#include "AliMpStringObjMap.h"
39
40#include <TObject.h>
41
42class AliMpVSegmentation;
43class AliMUONVGeometryDESegmentation;
44class AliMUONGeometrySegmentation;
45class AliMUONSegmentation;
46class AliMUONGeometryTransformer;
47
48class AliMUONSegFactory : public TObject {
49
50 public:
51 AliMUONSegFactory(const AliMUONGeometryTransformer* geometry);
4f27ddd4 52 AliMUONSegFactory(const TString& volPathsFileName,
53 const TString& transformsFileName);
fc337f2e 54 AliMUONSegFactory();
55 virtual ~AliMUONSegFactory();
56
57 //
58 // Build methods
59 //
60
fc337f2e 61 AliMUONSegmentation*
62 CreateSegmentation(const TString& option = "default");
63 // Create segmentations on all levels and return their container.
64
65 //
66 // Get method
67 //
68 AliMUONSegmentation* GetSegmentation() const;
69 // Returned segmentation contains all the lower level segmentations
70 // created with the factory
71
72 protected:
73 AliMUONSegFactory(const AliMUONSegFactory& rhs);
74 AliMUONSegFactory& operator=(const AliMUONSegFactory& rhs);
75
76 private:
e9b0e655 77 AliMUONVGeometryDESegmentation*
78 CreateDESegmentation(Int_t detElemId, Int_t cath);
79 // Create DE segmentation, operating in local reference frame
80
81 void
82 CreateModuleSegmentations(Int_t chamberId, Int_t cath);
83 // Create module segmentation(s) for a given chamber, operating
84 // in global reference frame
85
fc337f2e 86 // methods
87 Bool_t IsGeometryDefined(Int_t ichamber);
88 AliMUONSegmentation* Segmentation();
89
fc337f2e 90 // data members
18b6b8c7 91 AliMpStringObjMap fDESegmentations;///< Map of DE segmentations to DE names
92 AliMUONSegmentation* fSegmentation; ///< Segmentation container
93 const AliMUONGeometryTransformer* fkTransformer; ///< Geometry transformer
fc337f2e 94
95 ClassDef(AliMUONSegFactory,0) // MUON Factory for Chambers and Segmentation
96};
97
5398f946 98/// Return segmentation
fc337f2e 99inline AliMUONSegmentation* AliMUONSegFactory::GetSegmentation() const
100{ return fSegmentation; }
101
102#endif //ALI_MUON_SEG_FACTORY_H
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117