3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice
8 //_________________________________________________________________________
9 // Implementation version v0 of EMCAL Manager class
10 // An object of this class does not produce hits nor digits
11 // It is the one to use if you do not want to produce outputs in TREEH or TREED
12 // This class places a Geometry of the EMCAL in the ALICE Detector as defined in AliEMCALGeometry.cxx
13 //*-- Author: Yves Schutz (SUBATECH)
14 //*-- and : Sahal Yacoob (LBL / UCT)
15 // : Aleksei Pavlinov (WSU) SHASHLYK
17 // --- ROOT system ---
21 class AliEMCALShishKebabTrd1Module;
22 class AliEMCALSpaceFrame;
24 // --- AliRoot header files ---
26 #include "TGeoManager.h"
29 class AliEMCALv0 : public AliEMCAL {
34 AliEMCALv0(const char *name, const char *title="") ;
35 virtual ~AliEMCALv0(){}
37 using AliEMCAL::AddHit;
39 virtual void AddAlignableVolumes() const;
40 virtual void AddAlignableVolumesInALICE() const;
41 virtual void AddAlignableVolumesInWSUC() const;
43 virtual void CreateGeometry() ;// creates the geometry for GEANT
44 virtual void Init(void) ; // does nothing
45 virtual Int_t IsVersion(void) const {
46 // Gives the version number
49 virtual const TString Version(void) const{
51 return TString("v0") ;
54 void CreateShishKebabGeometry();
55 void CreateSmod(const char* mother="XEN1");
56 void CreateEmod(const char* mother="SMOD", const char* child="EMOD");
57 void CreateAlFrontPlate(const char* mother="EMOD", const char* child="ALFP");
59 void Trd1Tower3X3(const double *parSCM0);
60 void Trd1Tower4X4() const;
61 void PbInTrap(const double parTRAP[11], TString n);
62 // 1X1 case - Nov 22, 2006
63 void Trd1Tower1X1(double *parSCM0);
64 void PbInTrd1(const double *parTrd1, TString n);
66 void Scm0InTrd2(const AliEMCALGeometry * g, const Double_t emodPar[5], Double_t parSCM0[5]);
67 void Division2X2InScm0(const AliEMCALGeometry * g, const Double_t parSCM0[5]);
68 void PbInTrapForTrd2(const double *parTRAP, TString name);
70 void PbmoInTrd2(const AliEMCALGeometry * g, const Double_t emodPar[5], Double_t parPBMO[5]);
71 void Division2X2InPbmo(const AliEMCALGeometry * g, const Double_t parPBMO[5]);
73 TList *GetShishKebabModules() const {return fShishKebabModules;}
74 AliEMCALShishKebabTrd1Module *GetShishKebabModule(Int_t neta=0);
77 TList *fShishKebabModules; //! list of modules
79 TArrayF fEnvelop1; //! parameters of EMCAL envelop for TRD1(2) case
80 Int_t fIdRotm; //! number of rotation matrix (working variable)
81 Int_t *fIdTmedArr; //! fIdtmed->GetArray() - 1599;
82 Double_t fSampleWidth; //! sample width = double(g->GetECPbRadThick()+g->GetECScintThick());
83 Double_t fSmodPar0; //! x size of super module
84 Double_t fSmodPar1; //! y size of super module
85 Double_t fSmodPar2; //! z size of super module
86 Double_t fParEMOD[5]; //! parameters of EMCAL module (TRD1,2)
87 AliEMCALSpaceFrame* fCalFrame; //EMCAL Space frame object
89 AliEMCALv0(const AliEMCALv0 & emcal);
90 AliEMCALv0 & operator = (const AliEMCALv0 & /*rvalue*/);
92 ClassDef(AliEMCALv0,4) // Implementation of EMCAL manager class for midrapidity barrel layout between 80 and 180(190) degrees
96 #endif // AliEMCALV0_H