b4474aa9c97bb01abcec1709c466b27db5328f7c
[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    //Open the background file 
49    TFile *OpenBgrFile(); 
50
51 protected:
52    MergeMode_t  fMerge;         // Merging type kDigitize, kMerge
53    
54    // Background event
55    char         *fFnBgr;        // Background file name
56    TFile        *fBgrFile;      // Pointer to background file
57    Int_t        fNEvBgr;        // Number of events in background file
58    TTree        *fTrHBgr;       // Hits tree for background event
59    TClonesArray *fHitsBgr;      // TClonesArray of background hits
60    TTree        *fTrSDBgr;      // SDigits tree for background event
61    TTree        *fTrDBgr;       // Digits tree for background event
62    Float_t      fImpPar;        // Impact Parameter of the collision
63    Int_t        fSpecn;         // Number of spectator n
64    Int_t        fSpecp;         // Number of spectator p
65
66    // Signal events
67    Int_t        fFreeSpn;       // Signal event number x spectator n
68    Int_t        fFreeSpp;       // Signal event number x spectator p
69
70    char         *fFnSpecn;      // Spectator n file name
71    TFile        *fSpecnFile;    // Pointer to signal file -> spectator n
72    char         *fFnSpecp;      // Spectator p file name
73    TFile        *fSpecpFile;    // Pointer to signal file -> spectator p
74    
75    Int_t        fNMhits;        // Number of Merged hits for background
76    TClonesArray *fMHits;        // TCA for "merged" hits  
77
78 public:   
79   // *** Digits
80   // --- Parameters for conversion of light yield in ADC channels
81   Float_t fPMGain[3][5];      // PM gain
82   Float_t fADCRes;            // ADC conversion factor
83   // --- Digitization parameters setters and getters
84   //  PM gain
85   void SetPMGain(Int_t Det, Int_t PMDet, Int_t PMGain)
86        {fPMGain[Det][PMDet] = PMGain;}
87   Float_t GetPMGain(Int_t Det, Int_t PMDet)
88        {return fPMGain[Det][PMDet];}
89   //  Conversion factor from charge to ADC channels
90   //          F = 1.6E-19 / Resolution [Coulomb/ch]
91   void SetADCRes(Int_t ADCRes) {fADCRes =  ADCRes;}
92   Float_t GetADCRes() {return fADCRes;}
93
94   
95        
96     ClassDef(AliZDCMerger,1)
97 };    
98 #endif