67b8203ee79688232d9a884bfc98ff5c8e4cb762
[u/mrichter/AliRoot.git] / ZDC / AliZDCv1.h
1 #ifndef ALIZDCV1_H
2 #define ALIZDCV1_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 set:ZDC      //
10 ////////////////////////////////////////////////
11
12 #include "AliZDC.h"
13
14 //____________________________________________________________________________ 
15 class AliZDCv1 : public AliZDC {
16
17 public:
18   AliZDCv1();
19   AliZDCv1(const char *name, const char *title);
20   virtual      ~AliZDCv1() {}
21   virtual void  CreateGeometry();
22   virtual void  CreateBeamLine();
23   virtual void  CreateZDC();
24   virtual void  CreateMaterials();
25   Int_t         Digitize(Int_t Det, Int_t Quad, Int_t Light);
26   virtual void  FinishEvent();
27   virtual void  SDigits2Digits();
28   virtual void  MakeBranch(Option_t* opt, char *file=0);
29   virtual Int_t IsVersion() const {return 1;}
30   virtual void  DrawModule();
31   virtual void  Init();
32   virtual void  InitTables();
33   virtual void  Hits2Digits(Int_t ntracks = 0);
34   virtual void  StepManager();
35   
36   // Switching off the shower development in ZDCs
37   void  NoShower(){fNoShower=1;}
38   void  Shower()  {fNoShower=0;}
39   
40   // Digitization parameters setters and getters
41
42   // ADC pedestal mean value
43   void SetPedMean(Int_t Det, Int_t PMDet, Int_t PedMean)
44        {fPedMean[Det][PMDet] = PedMean;}
45   Float_t GetPedMean(Int_t Det, Int_t PMDet)
46        {return fPedMean[Det][PMDet];} 
47   // ADC pedestal width
48   void SetPedSigma(Int_t Det, Int_t PMDet, Int_t PedSigma)
49        {fPedSigma[Det][PMDet] = PedSigma;}
50   Float_t GetPedSigma(Int_t Det, Int_t PMDet)
51        {return fPedSigma[Det][PMDet];}
52   // PM gain
53   void SetPMGain(Int_t Det, Int_t PMDet, Int_t PMGain)
54        {fPMGain[Det][PMDet] = PMGain;}
55   Float_t GetPMGain(Int_t Det, Int_t PMDet)
56        {return fPMGain[Det][PMDet];}
57   // Conversion factor from charge to ADC channels
58   //   F = 1.6E-19 / Resolution [Coulomb/ch]
59   void SetADCRes(Int_t ADCRes) {fADCRes =  ADCRes;}
60   Float_t GetADCRes() {return fADCRes;}
61  
62 protected:
63   // Sensitive media
64   Int_t   fMedSensF1;         // Sensitive medium F1
65   Int_t   fMedSensF2;         // Sensitive medium F2
66   Int_t   fMedSensZP;         // Sensitive medium for ZP
67   Int_t   fMedSensZN;         // Sensitive medium for ZN
68   Int_t   fMedSensZEM;        // Sensitive medium for EM ZDC
69   Int_t   fMedSensGR;         // Other sensitive medium
70   Int_t   fMedSensPI;         // Beam pipe and magnet coils
71   
72   // Parameters for light tables
73   Int_t   fNalfan;            // Number of Alfa neutrons
74   Int_t   fNalfap;            // Number of Alfa protons
75   Int_t   fNben;              // Number of beta neutrons
76   Int_t   fNbep;              // Number of beta protons
77   Float_t fTablen[4][90][18]; // Neutrons light table
78   Float_t fTablep[4][90][28]; // Protons light table
79   
80   // Parameters for conversion of light yield in ADC channels
81   Float_t fPedMean[3][5];     // ADC pedestal mean value
82   Float_t fPedSigma[3][5];    // ADC pedestal width
83   Float_t fPMGain[3][5];      // PM gain
84   Float_t fADCRes;            // ADC conversion factor
85
86 public:
87   //Flag for fast simulation (no shower)
88   Int_t   fNoShower;
89   
90    ClassDef(AliZDCv1,1)  // Zero Degree Calorimeter version 1
91 }; 
92  
93 #endif