]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegFactory.h
Adding CreateIterator(void) and GetNeighbours() pure virtual methods,
[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);
43151827 20/// - AliMUONSegFactory factory("volpath.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"
866c3232 39#include "AliMpCathodType.h"
fc337f2e 40
41#include <TObject.h>
42
43class AliMpVSegmentation;
44class AliMUONVGeometryDESegmentation;
45class AliMUONGeometrySegmentation;
46class AliMUONSegmentation;
47class AliMUONGeometryTransformer;
48
49class AliMUONSegFactory : public TObject {
50
51 public:
52 AliMUONSegFactory(const AliMUONGeometryTransformer* geometry);
4f27ddd4 53 AliMUONSegFactory(const TString& volPathsFileName,
54 const TString& transformsFileName);
fc337f2e 55 AliMUONSegFactory();
56 virtual ~AliMUONSegFactory();
57
58 //
59 // Build methods
60 //
61
c3e6d1f3 62 AliMUONSegmentation* CreateSegmentation();
fc337f2e 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*
866c3232 78 CreateDESegmentation(Int_t detElemId, AliMp::CathodType cath);
e9b0e655 79 // Create DE segmentation, operating in local reference frame
80
81 void
866c3232 82 CreateModuleSegmentations(Int_t chamberId, AliMp::CathodType cath);
e9b0e655 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
ae505e9f 91 AliMpStringObjMap fDESegmentations;///< Map of DE segmentations to DE seg names
18b6b8c7 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