Transition to NewIO
[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    Float_t      fImpPar;        // Impact Parameter of the collision
61    Int_t        fSpecn;         // Number of spectator n
62    Int_t        fSpecp;         // Number of spectator p
63
64    // Signal events
65    Int_t        fFreeSpn;       // Signal event number x spectator n
66    Int_t        fFreeSpp;       // Signal event number x spectator p
67
68    char         *fFnSpecn;      // Spectator n file name
69    TFile        *fSpecnFile;    // Pointer to signal file -> spectator n
70    char         *fFnSpecp;      // Spectator p file name
71    TFile        *fSpecpFile;    // Pointer to signal file -> spectator p
72    
73    Int_t        fNMhits;        // Number of Merged hits for background
74    TClonesArray *fMHits;        // TCA for "merged" hits  
75
76 public:   
77   // *** Digits
78   // --- Parameters for conversion of light yield in ADC channels
79   Float_t fPMGain[3][5];      // PM gain
80   Float_t fADCRes;            // ADC conversion factor
81   // --- Digitization parameters setters and getters
82   //  PM gain
83   void SetPMGain(Int_t Det, Int_t PMDet, Int_t PMGain)
84        {fPMGain[Det][PMDet] = PMGain;}
85   Float_t GetPMGain(Int_t Det, Int_t PMDet)
86        {return fPMGain[Det][PMDet];}
87   //  Conversion factor from charge to ADC channels
88   //          F = 1.6E-19 / Resolution [Coulomb/ch]
89   void SetADCRes(Int_t ADCRes) {fADCRes =  ADCRes;}
90   Float_t GetADCRes() {return fADCRes;}
91
92   
93        
94     ClassDef(AliZDCMerger,1)
95 };    
96 #endif