934b953e289be2c1c8d8c8130a190db1f2beb3d7
[u/mrichter/AliRoot.git] / ZDC / AliZDCMerger.h
1 #ifndef ALIZDCMERGER_H
2 #define ALIZDCMERGER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 ////////////////////////////////////////////////
7 //              Merger class for ZDC          //
8 ////////////////////////////////////////////////
9
10 class AliZDC;
11 class AliZDCHit;
12 class AliZDCMergedHit;
13 class AliZDCDigit;
14
15 typedef enum {kDigitize=0, kMerge=1} MergeMode_t;
16
17 class AliZDCMerger{
18
19 public:
20    AliZDCMerger();
21    virtual ~AliZDCMerger();
22    
23    void    InitMerging();
24    void    Background(Float_t &b, Int_t &nspecn, Int_t &nspecp);
25    void    Fragmentation(Float_t b, Int_t nspecn, Int_t nspecp,
26                          Int_t &nfreespn, Int_t &nfreespp);
27    void    Mixing();
28    void    ExtractSignal(Int_t SpecType);
29    void    Digitize(Int_t NMhits, TClonesArray *MHits);
30    Int_t   Phe2ADCch(Int_t Detector, Int_t Quadrant, Int_t Light);
31    Int_t   AddPedestal();
32    
33    // Inline functions to return TCA of MergerHits to Hits2SDigits()
34    TClonesArray *MergedHits()   const {return fMHits;}
35    int   GetNMhits()            const {return fNMhits;}
36
37    // Inline function to return background file Hits2SDigits()
38    TFile *BgrFile()             const {return fBgrFile;}
39
40    // Inline function to return event number
41    Int_t EvNum()                const {return fNEvBgr;}
42    
43    // Setters 
44    void SetMode(MergeMode_t mode)         {fMerge = mode;}
45    void SetBackgroundFileName(char* file) {fFnBgr = file;}        
46    void SetBackgroundEventNum(Int_t nev)  {fNEvBgr = nev;}        
47
48 private:
49    //Open the background file 
50    TFile *OpenBgrFile(); 
51
52 protected:
53    MergeMode_t  fMerge;         // Merging type kDigitize, kMerge
54    
55    // Background event
56    char         *fFnBgr;        // Background file name
57    TFile        *fBgrFile;      // Pointer to background file
58    Int_t        fNEvBgr;        // Number of events in background file
59    TTree        *fTrHBgr;       // Hits tree for background event
60    TClonesArray *fHitsBgr;      // TClonesArray of background hits
61    TTree        *fTrSDBgr;      // SDigits tree for background event
62    TTree        *fTrDBgr;       // Digits tree for background event
63    Float_t      fImpPar;        // Impact Parameter of the collision
64    Int_t        fSpecn;         // Number of spectator n
65    Int_t        fSpecp;         // Number of spectator p
66
67    // Signal events
68    Int_t        fFreeSpn;       // Signal event number x spectator n
69    Int_t        fFreeSpp;       // Signal event number x spectator p
70
71    char         *fFnSpecn;      // Spectator n file name
72    TFile        *fSpecnFile;    // Pointer to signal file -> spectator n
73    char         *fFnSpecp;      // Spectator p file name
74    TFile        *fSpecpFile;    // Pointer to signal file -> spectator p
75    
76    Int_t        fNMhits;        // Number of Merged hits for background
77    TClonesArray *fMHits;        // TCA for "merged" hits  
78    
79 //  // *** Digits
80 //  // --- Digitization parameters setters and getters
81 //  //  PM gain
82 //  void SetPMGain(Int_t Det, Int_t PMDet, Int_t PMGain)
83 //       {fPMGain[Det][PMDet] = PMGain;}
84 //  Float_t GetPMGain(Int_t Det, Int_t PMDet)
85 //       {return fPMGain[Det][PMDet];}
86 //  //  Conversion factor from charge to ADC channels
87 //  //          F = 1.6E-19 / Resolution [Coulomb/ch]
88 //  void SetADCRes(Int_t ADCRes) {fADCRes =  ADCRes;}
89 //  Float_t GetADCRes() {return fADCRes;}
90 //
91 //  // --- Parameters for conversion of light yield in ADC channels
92 //  Float_t fPMGain[3][5];      // PM gain
93 //  Float_t fADCRes;            // ADC conversion factor
94   
95        
96     ClassDef(AliZDCMerger,0)
97 };    
98 #endif