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