]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EMCAL/AliEMCALGeometryOfflineTrd1.h
ca8a3e2fffe19180946609863cdc8e4388d5b48b
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALGeometryOfflineTrd1.h
1 #ifndef ALIEMCALGEOMETRYOFFLINETRD1_H
2 #define ALIEMCALGEOMETRYOFFLINETRD1_H
3 /* Copyright(c) 1998-2004, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //_________________________________________________________________________
9 // GeometryOfflineTrd1 class  for EMCAL : singleton
10 //*-- Author: Aleksei Pavlinov (WSU)
11
12 #include <TNamed.h>
13 #include <TArrayD.h>
14 #include <TRotation.h>
15
16 class TBrowser;
17 class TString;
18 class TVector2;
19 class TVector3;
20 class TObjArray;
21 class AliEMCALGeometry;
22 class AliEMCALShishKebabTrd1Module; 
23 // --- ROOT system ---
24 // --- AliRoot header files ---
25
26 class AliEMCALGeometryOfflineTrd1 : public TNamed {
27  public:
28   AliEMCALGeometryOfflineTrd1(const AliEMCALGeometryOfflineTrd1& geom):TNamed(geom.GetName(),geom.GetTitle()) {
29     // cpy ctor requested by Coding Convention but not yet needed
30     Fatal("Cpy ctor", "Not implemented");
31   }
32
33   virtual ~AliEMCALGeometryOfflineTrd1() { /* nothing */ };
34   static   AliEMCALGeometryOfflineTrd1* GetInstance();
35   // positon in SuperModule
36   TVector3&  PosInSuperModule(const int nSupMod, const int nTower, const int nIphi, const int nIeta); 
37
38  private:
39   AliEMCALGeometryOfflineTrd1();
40   void Init();
41
42   static  AliEMCALGeometryOfflineTrd1* fgGeomOfflineTrd1; //!
43   AliEMCALGeometry *fGeometry;                            //!  
44
45   Int_t fMaxInEta;                                        //! max module in ETA direction 
46   AliEMCALShishKebabTrd1Module* fTrd1Modules[26];         //! 
47   // positon in SuperModule
48   Int_t     fSMMaxEta;                                    // = 2*fMaxInEta(52 now)
49   TVector2* fSMPositionEta;                               //! array of TVector2 [fSMMaxEta]
50   TArrayD   fSMPositionPhi;                               //! [24] now; start from 0;
51   Double_t  fShiftOnPhi;                                  //! 
52
53   Int_t fNPhiSuperModule;                                //! number phi position for super modules  
54   TRotation fSuperModuleRotationZ[6];                    //!
55   TString   fNameSuperModuleRotationZ[6];                //!
56   TRotation fSuperModuleRotationX;                       //!
57   TRotation fSuperModuleRotation[12];                    //! 
58   // position of cells in global coordinate system
59   TObjArray *fXYZofCells;                                //! 
60  public:
61   // One Super Module
62   void PositionInSuperModule(const int iphi, const int ieta, double &lphi, double &leta);
63   void PositionInSuperModule(const int nSupMod, const int nTower, const int nIphi, const int nIeta, double &lphi, double &leta);
64   // Position towers(cells)
65   TVector3* CellPosition(int absId); // from 0 to fGeometry->GetNCells()
66   // Global System
67   TRotation* Rotation(Int_t module); // module change from 1 to 12;
68
69   // service methods
70   void    PrintSuperModule();       // *MENU*
71   void    PrintCell(Int_t absId=1); // *MENU*
72   virtual void Browse(TBrowser* b);
73   virtual Bool_t  IsFolder() const;
74
75   ClassDef(AliEMCALGeometryOfflineTrd1, 0) // EMCAL geometry for offline 
76 };
77
78 #endif // ALIEMCALGEOMETRYOFFLINETRD1_H