Introduction of the reference to Copyright and cvs Id
[u/mrichter/AliRoot.git] / PHOS / AliPHOSv2.h
1 #ifndef ALIPHOS_H
2 #define ALIPHOS_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 //  Manager and hits classes for PHOS     //
10 //  Version 2                                 //
11 //  Author M. Volkov, RRC KI                  //
12 ////////////////////////////////////////////////
13
14 // --- ROOT system ---
15 #include <TArray.h> 
16 #include <TRandom.h> 
17
18 // --- galice header files ---
19 #include "AliDetector.h"
20 #include "AliHit.h"
21
22 class AliPHOSv2 : public AliDetector{
23
24 protected:
25   Float_t fXtlSize[3]; // PWO crystal dimensions
26   Float_t fWrapThickness; // Thickness of Tyvek wrapper
27   Float_t fPINSize[3]; // PIN diode dimensions
28   Float_t fCPVThickness; // CPV thickness
29   Float_t fPHOSFoam[3]; // Outer foam cover dimensions
30   Float_t fPHOStxwall[3]; // Textolit box dimensions
31   Float_t fPHOSAir[3]; // Inner air filled volume dimensions
32   Float_t fRadius[2]; // Distances from IP to outer cover and to Xtal surface
33   Float_t fPHOSextra[10]; // Assorted geometrical parameters
34   Float_t fNphi; // Number of crystal units in X (phi) direction
35   Float_t fNz; // Number of crystal units in Z direction
36   Float_t fNModules; // Number of modules constituing PHOS
37   Float_t fPHOSAngle[4]; // Position angles of modules
38   
39 public:
40   AliPHOSv2(void);
41   AliPHOSv2(const char *name, const char *title="");
42   virtual ~AliPHOSv2(void);
43
44   virtual Int_t IsVersion(void) const {return 2;}
45
46   virtual void DefPars(void);
47
48   virtual void BuildGeometry(void);
49   virtual void CreateGeometry(void);
50   virtual void CreateMaterials(void);
51
52   virtual void Init(void);
53
54   virtual void StepManager(void);
55
56   virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits);
57
58   virtual Float_t GetCrystalSize(Int_t n) const {return fXtlSize[n];}
59   virtual Float_t GetWrapThickness(void) const {return fWrapThickness;}
60   virtual Float_t GetPINSize(Int_t n) const {return fPINSize[n];}
61   virtual Float_t GetCPVThickness(void) const {return fCPVThickness;}
62   virtual Float_t GetPHOSFoam(Int_t n) const {return fPHOSFoam[n];}
63   virtual Float_t GetPHOStxwall(Int_t n) const {return fPHOStxwall[n];}
64   virtual Float_t GetPHOSAir(Int_t n) const {return fPHOSAir[n];}
65   virtual Float_t GetRadius(Int_t n) const {return fRadius[n];}
66   virtual Float_t GetPHOSextra(Int_t n) const {return fPHOSextra[n];}
67   virtual Float_t GetNphi(void) const {return fNphi;}
68   virtual Float_t GetNz(void) const {return fNz;}
69   virtual Float_t GetNModules(void) const {return fNModules;}
70   virtual Float_t &GetModuleAngle(Int_t n) {return fPHOSAngle[n];}
71
72 ClassDef(AliPHOSv2,1)  // Hits manager for PHOS, version 2
73
74 };
75
76 //////////////////////////////////////////////////////////////////////////////
77
78 class AliPHOShitv2 : public AliHit{
79
80 protected:
81   Int_t     fVolume[4];  //array of volumes. This is not GEANT NUMBV(), it is (BOX,LAYER,ROW,COLUMN) array.
82   Float_t   fELOS;       //Energy deposited
83   
84 public:
85   AliPHOShitv2(void) {;}
86   AliPHOShitv2(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits);
87   AliPHOShitv2(AliPHOShitv2 const &rValue){*this=rValue;}
88   virtual ~AliPHOShitv2(void) {;}
89   
90   Int_t GetVolume(Int_t i) const {return fVolume[i];}
91   Float_t GetEnergy(void) const {return fELOS;}
92   
93   Bool_t operator==(AliPHOShitv2 const &rValue) const;
94   AliPHOShitv2 const operator+(AliPHOShitv2 const &rValue) const;
95
96 ClassDef(AliPHOShitv2,1)  // Hits object for PHOS
97
98 };
99
100 //////////////////////////////////////////////////////////////////////////////
101
102 #endif //#ifndef ALIPHOS_H