]>
Commit | Line | Data |
---|---|---|
7b85e477 | 1 | #ifndef ALIITSALIGNMILLE2MODULE_H\r |
2 | #define ALIITSALIGNMILLE2MODULE_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 AliITSAlignMille2Module\r | |
8 | /// \brief Class for alignment of ITS \r | |
9 | // \r | |
10 | // Authors: Marcello Lunardon \r | |
11 | //\r | |
12 | // RS Converted static arrays fSensVolVolumeID and fSensVolIndex\r | |
13 | // to TArrays in user transparent way.\r | |
14 | //\r | |
15 | /* $Id$ */ \r | |
16 | //#include <TString.h> \r | |
17 | //#include <TObject.h> \r | |
18 | #include <TNamed.h> \r | |
19 | #include <TArrayI.h> \r | |
20 | #include <TArrayS.h> \r | |
21 | class AliITSAlignMille2;\r | |
22 | \r | |
23 | class AliAlignObjParams; \r | |
24 | class TGeoHMatrix; \r | |
25 | \r | |
26 | class AliITSAlignMille2Module : public TNamed \r | |
27 | { \r | |
28 | public: \r | |
29 | AliITSAlignMille2Module(); \r | |
30 | AliITSAlignMille2Module(UShort_t volid);\r | |
31 | AliITSAlignMille2Module(Int_t index, UShort_t volid, char* symname, TGeoHMatrix *m, Int_t nsv=0, UShort_t *volidsv=NULL);\r | |
32 | AliITSAlignMille2Module(const AliITSAlignMille2Module& rhs); // copy constructor\r | |
33 | AliITSAlignMille2Module& operator=(const AliITSAlignMille2Module& rhs); \r | |
34 | //\r | |
35 | virtual ~AliITSAlignMille2Module(); \r | |
36 | //\r | |
37 | // geometry methods \r | |
38 | Int_t GetIndex() const {return fIndex;} \r | |
39 | UShort_t GetVolumeID() const {return fVolumeID;} \r | |
40 | Int_t GetNSensitiveVolumes() const {return fNSensVol;} \r | |
41 | Int_t GetSensVolIndex(Int_t at) const {return fSensVolIndex[at];}\r | |
42 | Short_t GetSensVolVolumeID(Int_t at) const {return fSensVolVolumeID[at];}\r | |
43 | TGeoHMatrix *GetMatrix() const {return fMatrix;}\r | |
44 | void GetLocalMatrix(TGeoHMatrix& mat) const;\r | |
45 | UShort_t *GetSensitiveVolumeVolumeID() const {return (UShort_t*)fSensVolVolumeID.GetArray();}\r | |
46 | Float_t GetSigmaFactor(Int_t i) const {return fSigmaFactor[i];}\r | |
47 | Float_t GetSigmaXFactor() const {return fSigmaFactor[0];}\r | |
48 | Float_t GetSigmaYFactor() const {return fSigmaFactor[1];}\r | |
49 | Float_t GetSigmaZFactor() const {return fSigmaFactor[2];}\r | |
50 | Int_t GetNProcessedPoints() const {return fNProcPoints;}\r | |
51 | Bool_t IsFreeDOF(Int_t dof) const {return TestBit(1<<dof);}\r | |
52 | UInt_t GetFreePattern() const {return TestBits(0x3f);}\r | |
53 | Bool_t AreSensorsProvided() const {return TestBit(1<<10);}\r | |
54 | Bool_t IsIn(UShort_t volid) const;\r | |
55 | Bool_t IsAlignable() const;\r | |
56 | Bool_t BelongsTo(AliITSAlignMille2Module* parent) const;\r | |
57 | AliITSAlignMille2Module* GetParent() const {return fParent;}\r | |
58 | void Print(Option_t* opt="") const; \r | |
59 | //\r | |
60 | void SetSigmaFactor(Int_t i,Float_t v) {fSigmaFactor[i]=v;}\r | |
61 | void SetSigmaXFactor(Float_t v) {fSigmaFactor[0]=v;}\r | |
62 | void SetSigmaYFactor(Float_t v) {fSigmaFactor[1]=v;}\r | |
63 | void SetSigmaZFactor(Float_t v) {fSigmaFactor[2]=v;}\r | |
64 | void IncNProcessedPoints(Int_t step=1) {fNProcPoints += step;}\r | |
65 | void SetNProcessedPoints(Int_t v) {fNProcPoints = v;}\r | |
66 | void SetParent(AliITSAlignMille2Module* par) {fParent = par;}\r | |
67 | void SetFreeDOF(Int_t dof,Bool_t free=kTRUE) {SetBit(1<<dof,free);}\r | |
68 | void SetSensorsProvided(Bool_t v=kTRUE) {SetBit(1<<10,v);}\r | |
69 | Int_t Set(Int_t index,UShort_t volid,char* symname,TGeoHMatrix *m,Int_t nsv=0,UShort_t *volidsv=0);\r | |
70 | //\r | |
71 | void AddSensitiveVolume(UShort_t volid);\r | |
72 | void DelSensitiveVolume(Int_t at);\r | |
73 | //\r | |
74 | TGeoHMatrix *GetSensitiveVolumeMatrix(UShort_t voluid);\r | |
75 | TGeoHMatrix *GetSensitiveVolumeOrigGlobalMatrix(UShort_t voluid);\r | |
76 | TGeoHMatrix *GetSensitiveVolumeModifiedMatrix(UShort_t voluid, Double_t *delta,Bool_t local=kTRUE); \r | |
77 | AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, AliAlignObjParams *a); \r | |
78 | AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, Double_t *deltalocal); \r | |
79 | //\r | |
80 | // forse non serve...\r | |
81 | AliAlignObjParams *GetSensitiveVolumeGlobalMisalignment(UShort_t voluid, Double_t *deltalocal); \r | |
82 | // mo' proviamo questo\r | |
83 | AliAlignObjParams *GetSensitiveVolumeTotalMisalignment(UShort_t voluid, Double_t *deltalocal); \r | |
84 | //\r | |
85 | static Int_t GetIndexFromVolumeID(UShort_t volid);\r | |
86 | static UShort_t GetVolumeIDFromSymname(const Char_t *symname);\r | |
87 | static UShort_t GetVolumeIDFromIndex(Int_t index);\r | |
88 | //\r | |
89 | protected:\r | |
90 | //\r | |
91 | Int_t SensVolMatrix(UShort_t volid, TGeoHMatrix *m); \r | |
92 | Int_t SensVolOrigGlobalMatrix(UShort_t volid, TGeoHMatrix *m); \r | |
93 | //\r | |
94 | protected:\r | |
95 | //\r | |
96 | Int_t fNSensVol; // number of sensor it refers to\r | |
97 | Int_t fIndex; // aliroot index\r | |
98 | UShort_t fVolumeID; // aliroot volune ID\r | |
99 | Int_t fNProcPoints; // number of processed points\r | |
100 | Float_t fSigmaFactor[3]; // multiplicative factor for referred sensor X,Y,Z error\r | |
101 | //\r | |
102 | TArrayI fSensVolIndex; // aliroot indices for sensors\r | |
103 | TArrayS fSensVolVolumeID; // aliroot indices for sensors volumes\r | |
104 | TGeoHMatrix *fMatrix; // ideal TGeoHMatrix of the supermodule\r | |
105 | TGeoHMatrix *fSensVolMatrix; // sensor's ideal matrices\r | |
106 | TGeoHMatrix *fSensVolModifMatrix; // sensor's modified matrices\r | |
107 | //\r | |
108 | AliITSAlignMille2Module* fParent; // optional parent pointer\r | |
109 | //\r | |
110 | static AliAlignObjParams fgTempAlignObj; // temp.alignment object used as a buffer \r | |
111 | //\r | |
112 | ClassDef(AliITSAlignMille2Module, 0)\r | |
113 | }; \r | |
114 | \r | |
115 | #endif \r |