Line data Source code
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 0 : Int_t GetIndex() const {return fIndex;}
35 0 : UShort_t GetVolumeID() const {return fVolumeID;}
36 0 : Int_t GetNSensitiveVolumes() const {return fNSensVol;}
37 0 : TGeoHMatrix *GetMatrix() const {return fMatrix;}
38 0 : 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 116 : ClassDef(AliITSAlignMilleModule, 0)
79 :
80 : };
81 :
82 : #endif
|