updates for Effective C++ compiler flags
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALv0.h
1 #ifndef ALIEMCALV0_H
2 #define ALIEMCALV0_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                      
5          */
6 /* $Id$ */
7
8 //_________________________________________________________________________
9 // Implementation version v0 of EMCAL Manager class 
10 //*--                  
11 //*-- Author: Yves Schutz (SUBATECH)
12 //*-- and   : Sahal Yacoob (LBL / UCT) 
13 //          : Aleksei Pavlinov (WSU)     SHASHLYK
14
15 // --- ROOT system ---
16
17 class TFile;
18 class TList;
19 class TNode;
20 class AliEMCALShishKebabTrd1Module;
21
22 // --- AliRoot header files ---
23 #include "AliEMCAL.h"
24 #include "TGeoManager.h"
25 #include <TArrayF.h>
26 //class AliEMCALGeometry ; 
27
28 class AliEMCALv0 : public AliEMCAL {
29
30  public:
31
32   AliEMCALv0();
33   AliEMCALv0(const char *name, const char *title="") ;
34   virtual ~AliEMCALv0(){} 
35
36   AliEMCALv0(const AliEMCALv0 & emcal);
37
38   AliEMCALv0 & operator = (const AliEMCALv0  & /*rvalue*/) {
39     // assignement operator requested by coding convention but not needed
40     Fatal("operator =", "not implemented");
41     return *this; 
42   }
43  
44   using AliEMCAL::AddHit;
45
46   virtual void  AddAlignableVolumes() const;
47
48   virtual void BuildGeometry();// creates the geometry for the ROOT display
49   TNode *BuildGeometryOfWSUC();  // WSUC - test environment
50   virtual void CreateGeometry() ;// creates the geometry for GEANT
51   virtual void   Init(void) ;                                       // does nothing
52   virtual Int_t  IsVersion(void) const { 
53     // Gives the version number 
54     return 0 ; 
55   }
56   virtual const TString Version(void) const{ 
57     // As above
58     return TString("v0") ; 
59   }
60   
61   // ShishKebab 
62   void CreateShishKebabGeometry();
63   void CreateSmod(const char* mother="XEN1");
64   void CreateEmod(const char* mother="SMOD", const char* child="EMOD");
65   // TRD1
66   void Trd1Tower3X3(const double parSCM0[5]);
67   void Trd1Tower4X4();
68   void PbInTrap(const double parTRAP[11], TString n);
69   // TRD2 - 1th design
70   void Scm0InTrd2(const AliEMCALGeometry * g, const Double_t emodPar[5], Double_t parSCM0[5]);
71   void Division2X2InScm0(const AliEMCALGeometry * g, const Double_t parSCM0[5]);
72   void PbInTrapForTrd2(const double *parTRAP, TString name);
73   // TRD2 - 2th design
74   void PbmoInTrd2(const AliEMCALGeometry * g, const Double_t emodPar[5], Double_t parPBMO[5]);
75   void Division2X2InPbmo(const AliEMCALGeometry * g, const Double_t parPBMO[5]);
76
77   TList  *GetShishKebabModules() {return fShishKebabModules;}
78   AliEMCALShishKebabTrd1Module *GetShishKebabModule(Int_t neta=0);
79
80  protected:
81   TList   *fShishKebabModules; //! list of modules
82  private:
83   TArrayF  fEnvelop1;          //! parameters of EMCAL envelop for TRD1(2) case 
84   Int_t    fIdRotm;            //! number of rotation matrix (working variable)
85   Int_t   *fIdTmedArr;         //! fIdtmed->GetArray() - 1599;
86   Double_t fSampleWidth;       //! sample width = double(g->GetECPbRadThick()+g->GetECScintThick());
87   Double_t fSmodPar0;          //! x size of super module  
88   Double_t fSmodPar1;          //! y size of super module  
89   Double_t fSmodPar2;          //! z size of super module  
90   Double_t fParEMOD[5];        //! parameters of EMCAL module (TRD1,2)
91
92   ClassDef(AliEMCALv0,3) // Implementation of EMCAL manager class for midrapidity barrel layout between 80 and 180(190) degrees 
93     
94     };
95     
96 #endif // AliEMCALV0_H