]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegFactory.h
Files with manu serial numbers
[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"
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
c3e6d1f3 61 AliMUONSegmentation* CreateSegmentation();
fc337f2e 62 // Create segmentations on all levels and return their container.
63
64 //
65 // Get method
66 //
67 AliMUONSegmentation* GetSegmentation() const;
68 // Returned segmentation contains all the lower level segmentations
69 // created with the factory
70
71 protected:
72 AliMUONSegFactory(const AliMUONSegFactory& rhs);
73 AliMUONSegFactory& operator=(const AliMUONSegFactory& rhs);
74
75 private:
e9b0e655 76 AliMUONVGeometryDESegmentation*
77 CreateDESegmentation(Int_t detElemId, Int_t cath);
78 // Create DE segmentation, operating in local reference frame
79
80 void
81 CreateModuleSegmentations(Int_t chamberId, Int_t cath);
82 // Create module segmentation(s) for a given chamber, operating
83 // in global reference frame
84
fc337f2e 85 // methods
86 Bool_t IsGeometryDefined(Int_t ichamber);
87 AliMUONSegmentation* Segmentation();
88
fc337f2e 89 // data members
ae505e9f 90 AliMpStringObjMap fDESegmentations;///< Map of DE segmentations to DE seg names
18b6b8c7 91 AliMUONSegmentation* fSegmentation; ///< Segmentation container
92 const AliMUONGeometryTransformer* fkTransformer; ///< Geometry transformer
fc337f2e 93
94 ClassDef(AliMUONSegFactory,0) // MUON Factory for Chambers and Segmentation
95};
96
5398f946 97/// Return segmentation
fc337f2e 98inline AliMUONSegmentation* AliMUONSegFactory::GetSegmentation() const
99{ return fSegmentation; }
100
101#endif //ALI_MUON_SEG_FACTORY_H
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116