Update for Ds
[u/mrichter/AliRoot.git] / ITS / AliITSAlignMilleModule.h
CommitLineData
d3603b4d 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
d3603b4d 17
18class AliAlignObjParams;
19class TGeoHMatrix;
20
21class AliITSAlignMilleModule : public TNamed
22{
23public:
24 AliITSAlignMilleModule();
25 AliITSAlignMilleModule(UShort_t volid); // basic single volume constructor
b80c197e 26 AliITSAlignMilleModule(Int_t index, UShort_t volid, char* symname, const TGeoHMatrix *m, Int_t nsv=0, const UShort_t *volidsv=NULL); // general constructor
d3603b4d 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;}
75d480f6 38 const UShort_t *GetSensitiveVolumeVolumeID() const {return fSensVolVolumeID;}
d3603b4d 39
b80c197e 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
d3603b4d 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);
75d480f6 51 TGeoHMatrix *GetSensitiveVolumeModifiedMatrix(UShort_t voluid, const Double_t * const deltalocal);
b80c197e 52 AliAlignObjParams *GetSensitiveVolumeMisalignment(UShort_t voluid, const AliAlignObjParams *a);
75d480f6 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);
d3603b4d 58 void Print(Option_t*) const;
59
60protected:
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
65private:
b80c197e 66 static const Int_t fgkSensModules = 2198; // number of sensors
d3603b4d 67 Int_t fNSensVol; ///
68 Int_t fIndex; ///
69 UShort_t fVolumeID; ///
70 // il symname e' il nome del TNamed...
05275446 71 Int_t fSensVolIndex[fgkSensModules]; ///
72 UShort_t fSensVolVolumeID[fgkSensModules]; ///
d3603b4d 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