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 */
7 /// \class AliITSAlignMilleModule
8 /// \brief Class for alignment of ITS
10 // Authors: Marcello Lunardon
13 //#include <TString.h>
14 //#include <TObject.h>
17 #define ITSMILLENSENSVOL 2198
19 class AliAlignObjParams;
22 class AliITSAlignMilleModule : public TNamed
25 AliITSAlignMilleModule();
26 AliITSAlignMilleModule(UShort_t volid); // basic single volume constructor
27 AliITSAlignMilleModule(Int_t index, UShort_t volid, char* symname, TGeoHMatrix *m, Int_t nsv=0, UShort_t *volidsv=NULL); // general constructor
29 AliITSAlignMilleModule(const AliITSAlignMilleModule& rhs); // copy constructor
30 AliITSAlignMilleModule& operator=(const AliITSAlignMilleModule& rhs);
32 virtual ~AliITSAlignMilleModule();
35 Int_t GetIndex() const {return fIndex;}
36 UShort_t GetVolumeID() const {return fVolumeID;}
37 Int_t GetNSensitiveVolumes() const {return fNSensVol;}
38 TGeoHMatrix *GetMatrix() const {return fMatrix;}
39 const UShort_t *GetSensitiveVolumeVolumeID() const {return fSensVolVolumeID;}
41 Int_t Set(Int_t index, UShort_t volid, char* symname, const TGeoHMatrix * const m, Int_t nsv=0, UShort_t *volidsv=NULL); // initialize a super module
44 static Int_t GetIndexFromVolumeID(UShort_t volid);
45 static UShort_t GetVolumeIDFromSymname(const Char_t *symname);
46 static UShort_t GetVolumeIDFromIndex(Int_t index);
49 Bool_t IsIn(UShort_t volid) const;
50 TGeoHMatrix *GetSensitiveVolumeMatrix(UShort_t voluid);
51 TGeoHMatrix *GetSensitiveVolumeOrigGlobalMatrix(UShort_t voluid);
52 TGeoHMatrix *GetSensitiveVolumeModifiedMatrix(UShort_t voluid, const Double_t * const deltalocal);
53 AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, AliAlignObjParams *a);
54 AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, const Double_t * const deltalocal);
56 AliAlignObjParams *GetSensitiveVolumeGlobalMisalignment(UShort_t voluid, const Double_t * const deltalocal);
57 // mo' proviamo questo
58 AliAlignObjParams *GetSensitiveVolumeTotalMisalignment(UShort_t voluid, const Double_t * const deltalocal);
59 void Print(Option_t*) const;
62 Int_t SensVolMatrix(UShort_t volid, TGeoHMatrix *m);
63 Int_t SensVolOrigGlobalMatrix(UShort_t volid, TGeoHMatrix *m);
64 void AddSensitiveVolume(UShort_t volid);
69 UShort_t fVolumeID; ///
70 // il symname e' il nome del TNamed...
71 Int_t fSensVolIndex[ITSMILLENSENSVOL]; ///
72 UShort_t fSensVolVolumeID[ITSMILLENSENSVOL]; ///
73 TGeoHMatrix *fMatrix; /// ideal TGeoHMatrix of the supermodule
74 TGeoHMatrix *fSensVolMatrix; ///
75 TGeoHMatrix *fSensVolModifMatrix; ///
76 AliAlignObjParams *fTempAlignObj; ///
78 ClassDef(AliITSAlignMilleModule, 0)