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