For Pythia with tune don't switch off MI in ConfigHeavyFlavor
[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 #define ITSMILLENSENSVOL    2198
18
19 class AliAlignObjParams; 
20 class TGeoHMatrix; 
21
22 class AliITSAlignMilleModule : public TNamed 
23
24 public: 
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
28
29   AliITSAlignMilleModule(const AliITSAlignMilleModule& rhs); // copy constructor
30   AliITSAlignMilleModule& operator=(const AliITSAlignMilleModule& rhs);  
31     
32   virtual ~AliITSAlignMilleModule(); 
33    
34   // geometry methods  
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;}
40
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
42   
43   // util
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);
47
48   // methods
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); 
55   // forse non serve...
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; 
60
61 protected:
62   Int_t     SensVolMatrix(UShort_t volid, TGeoHMatrix *m); 
63   Int_t     SensVolOrigGlobalMatrix(UShort_t volid, TGeoHMatrix *m); 
64   void      AddSensitiveVolume(UShort_t volid);
65
66 private:
67   Int_t          fNSensVol; ///
68   Int_t          fIndex; ///
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; ///
77         
78   ClassDef(AliITSAlignMilleModule, 0)
79
80 }; 
81
82 #endif