Added class to read reconstruction parameters from OCDB (Yuri)
[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);
29
30   //assignment operator for coding convention
31   const AliEMCALGeometryOfflineTrd1 & operator = (const AliEMCALGeometryOfflineTrd1 &) {return *this;}
32
33   virtual ~AliEMCALGeometryOfflineTrd1() { /* nothing */ };
34   static   AliEMCALGeometryOfflineTrd1* GetInstance();
35   // positon in SuperModule
36   TVector3&  PosInSuperModule(int nSupMod, int nModule, int nIphi, int nIeta); 
37
38  public:
39   // One Super Module
40   void PositionInSuperModule(int iphi, int ieta, double &lphi, double &leta);
41   void PositionInSuperModule(int nSupMod, int nModule, int nIphi, int nIeta, double &lphi, double &leta);
42   // Position towers(cells)
43   TVector3* CellPosition(int absId); // from 0 to fGeometry->GetNCells()
44   // Global System
45   TRotation* Rotation(Int_t module); // module change from 1 to 12;
46
47   // service methods
48   void    PrintSuperModule();       // *MENU*
49   void    PrintCell(Int_t absId=1); // *MENU*
50   virtual void Browse(TBrowser* b);
51   virtual Bool_t  IsFolder() const;
52
53  private:
54   AliEMCALGeometryOfflineTrd1();
55   void Init();
56
57   static  AliEMCALGeometryOfflineTrd1* fgGeomOfflineTrd1; //!
58   AliEMCALGeometry *fGeometry;                            //!  
59
60   Int_t fMaxInEta;                                        //! max module in ETA direction 
61   AliEMCALShishKebabTrd1Module* fTrd1Modules[26];         //! 
62   // positon in SuperModule
63   Int_t     fSMMaxEta;                                    // = 2*fMaxInEta(52 now)
64   TVector2* fSMPositionEta;                               //! array of TVector2 [fSMMaxEta]
65   TArrayD   fSMPositionPhi;                               //! [24] now; start from 0;
66   Double_t  fShiftOnPhi;                                  //! 
67
68   Int_t fNPhiSuperModule;                                //! number phi position for super modules  
69   TRotation fSuperModuleRotationZ[6];                    //!
70   TString   fNameSuperModuleRotationZ[6];                //!
71   TRotation fSuperModuleRotationX;                       //!
72   TRotation fSuperModuleRotation[12];                    //! 
73   // position of cells in global coordinate system
74   TObjArray *fXYZofCells;                                //! 
75
76   ClassDef(AliEMCALGeometryOfflineTrd1, 0) // EMCAL geometry for offline 
77 };
78
79 #endif // ALIEMCALGEOMETRYOFFLINETRD1_H