Macro and default object for the new Pb-Pb entry.
[u/mrichter/AliRoot.git] / VZERO / AliVZERO.h
1 #ifndef ALIVZERO_H
2 #define ALIVZERO_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6
7 //////////////////////////////////////////////////
8 //  Manager and hits classes for set : VZERO    //
9 //////////////////////////////////////////////////
10
11 /*
12 #include "AliRun.h"
13 #include "AliMC.h"
14 #include "AliDetector.h"
15 #include "AliVZEROLoader.h"
16  
17 #include <TNamed.h>
18 #include <TTree.h>
19 */
20 #include "AliDetector.h"
21 #include "AliVZEROTrigger.h"
22
23 class TNamed;
24 class TTree;
25 class TF1;
26
27 class AliVZEROLoader;
28 class AliVZEROhit; 
29 class AliVZEROdigit;
30 class AliVZEROCalibData;
31 class AliVZERORecoParam;
32   
33 class AliVZERO : public AliDetector {
34  
35 public:
36
37   AliVZERO();
38   AliVZERO(const char *name, const char *title);
39   virtual       ~AliVZERO();
40
41   virtual void   CreateGeometry();
42   virtual void   CreateMaterials();
43   virtual void   AddAlignableVolumes() const {}
44   virtual Int_t  IsVersion() const = 0;
45   virtual void   Init();
46   virtual AliLoader* MakeLoader(const char* topfoldername);
47   virtual void   Hits2Digits();
48   virtual void   Hits2SDigits();
49   virtual void   Digits2Raw();
50   virtual Bool_t Raw2SDigits(AliRawReader*);
51   virtual void   SetTreeAddress();  
52   virtual void   MakeBranch(Option_t *option) =0;
53   virtual void   StepManager() {};
54 // Trigger 
55   virtual AliTriggerDetector* CreateTriggerDetector() const 
56   { return new AliVZEROTrigger(); }
57   
58   virtual void   SetThickness(Float_t thick)  {fThickness = thick;};
59   virtual void   SetThickness1(Float_t thick) {fThickness1 = thick;};
60 // Set Stepping Parameters
61   virtual void   SetMaxStepQua(Float_t p1);
62   virtual void   SetMaxStepAlu(Float_t p1);
63   virtual void   SetMaxDestepQua(Float_t p1);
64   virtual void   SetMaxDestepAlu(Float_t p1);
65
66   AliDigitizer*  CreateDigitizer(AliRunDigitizer* manager) const;
67
68   void           GetCalibData();
69   Float_t        CorrectLeadingTime(Int_t i, Float_t time, Float_t adc) const;
70   double         SignalShape(double *x, double *par);
71
72 protected:
73
74    Int_t   fIdSens1;      // Sensitive volume  in VZERO
75    Float_t fThickness;    // Total thickness of box holding Right detector V0R i.e. 4.1 cm
76    Float_t fThickness1;   // Thickness of elementary cells i.e. 0.7 cm
77   
78 // Stepping Parameters
79    Float_t fMaxStepQua;   // Maximum step size inside the quartz volumes
80    Float_t fMaxStepAlu;   // Maximum step size inside the  aluminum volumes
81    Float_t fMaxDestepQua; // Maximum relative energy loss in quartz
82    Float_t fMaxDestepAlu; // Maximum relative energy loss in aluminum
83
84 private:
85    AliVZERO(const AliVZERO& /*vzero*/); 
86    AliVZERO& operator = (const AliVZERO& /*vzero*/); 
87
88    AliVZEROCalibData *fCalibData;      //! Pointer to the calibration object
89    Int_t              fNBins[64];      //! Number of bins in each SDigit
90    Float_t            fBinSize[64];    //! Bin size in each SDigit
91    TF1*               fTimeSlewing;    //! Function for time slewing correction
92    TF1*               fSignalShape;    //! Function for signal shape used in Raw->SDigits
93    AliVZERORecoParam *fRecoParam;      //! Reco params used in Raw->SDigits
94
95   ClassDef(AliVZERO,2)  //Class for the VZERO detector
96 };
97
98 //____________________________________________________________
99
100 #endif