2d22bc7bf0d2b57218d8ba888d9268787640e7f6
[u/mrichter/AliRoot.git] / ITS / AliITSAlignMilleModule.h
1 #ifndef ALIITSALIGNMILLEMODULE_H\r
2 #define ALIITSALIGNMILLEMODULE_H \r
3 /* Copyright(c) 2007-2009 , ALICE Experiment at CERN, All rights reserved. * \r
4  * See cxx source for full Copyright notice                               */  \r
5  \r
6 /// \ingroup rec \r
7 /// \class AliITSAlignMilleModule \r
8 /// \brief Class for alignment of ITS \r
9 // \r
10 // Authors: Marcello Lunardon \r
11 \r
12 /* $Id$  */ \r
13 //#include <TString.h> \r
14 //#include <TObject.h> \r
15 #include <TNamed.h> \r
16 \r
17 #define ITSMILLE_NSENSVOL    2198\r
18 \r
19 class AliAlignObjParams; \r
20 class TGeoHMatrix; \r
21 \r
22 class AliITSAlignMilleModule : public TNamed \r
23\r
24 public: \r
25   AliITSAlignMilleModule(); \r
26   AliITSAlignMilleModule(UShort_t volid); // basic single volume constructor\r
27   AliITSAlignMilleModule(Int_t index, UShort_t volid, char* symname, TGeoHMatrix *m, Int_t nsv=0, UShort_t *volidsv=NULL); // general constructor\r
28 \r
29   AliITSAlignMilleModule(const AliITSAlignMilleModule& rhs); // copy constructor\r
30   AliITSAlignMilleModule& operator=(const AliITSAlignMilleModule& rhs);  \r
31     \r
32   virtual ~AliITSAlignMilleModule(); \r
33    \r
34   // geometry methods  \r
35   Int_t     GetIndex() const {return fIndex;} \r
36   UShort_t  GetVolumeID() const {return fVolumeID;}  \r
37   Int_t     GetNSensitiveVolumes() const {return fNSensVol;} \r
38   TGeoHMatrix *GetMatrix() const {return fMatrix;} \r
39   UShort_t *GetSensitiveVolumeVolumeID() {return fSensVolVolumeID;}\r
40 \r
41   Int_t     Set(Int_t index, UShort_t volid, char* symname, TGeoHMatrix *m, Int_t nsv=0, UShort_t *volidsv=NULL); // initialize a super module\r
42   \r
43   // util\r
44   static Int_t GetIndexFromVolumeID(UShort_t volid);\r
45   static UShort_t GetVolumeIDFromSymname(const Char_t *symname);\r
46   static UShort_t GetVolumeIDFromIndex(Int_t index);\r
47 \r
48   // methods\r
49   Bool_t    IsIn(UShort_t volid) const;\r
50   TGeoHMatrix *GetSensitiveVolumeMatrix(UShort_t voluid);\r
51   TGeoHMatrix *GetSensitiveVolumeOrigGlobalMatrix(UShort_t voluid);\r
52   TGeoHMatrix *GetSensitiveVolumeModifiedMatrix(UShort_t voluid, Double_t *deltalocal); \r
53   AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, AliAlignObjParams *a); \r
54   AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, Double_t *deltalocal); \r
55   void      Print(Option_t*) const; \r
56 \r
57 protected:\r
58   Int_t     SensVolMatrix(UShort_t volid, TGeoHMatrix *m); \r
59   Int_t     SensVolOrigGlobalMatrix(UShort_t volid, TGeoHMatrix *m); \r
60   void      AddSensitiveVolume(UShort_t volid);\r
61 \r
62 private:\r
63   Int_t          fNSensVol; ///\r
64   Int_t          fIndex; ///\r
65   UShort_t       fVolumeID; ///\r
66   // il symname e' il nome del TNamed...\r
67   Int_t          fSensVolIndex[ITSMILLE_NSENSVOL]; ///\r
68   UShort_t       fSensVolVolumeID[ITSMILLE_NSENSVOL]; ///\r
69   TGeoHMatrix   *fMatrix; /// ideal TGeoHMatrix of the supermodule\r
70   TGeoHMatrix   *fSensVolMatrix; ///\r
71   TGeoHMatrix   *fSensVolModifMatrix; ///\r
72   AliAlignObjParams *fTempAlignObj; ///\r
73         \r
74   ClassDef(AliITSAlignMilleModule, 0)\r
75 \r
76 }; \r
77 \r
78 #endif \r