Added possibility to choose cluster time gate
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRecoParam.h
1 #ifndef ALIPHOSRECOPARAM_H
2 #define ALIPHOSRECOPARAM_H
3 /* Copyright(c) 2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                          */
5
6 /* $Id$ */
7                                               
8 // Base class for the PHOS reconstruction parameters.
9 // Do not use in the reconstruction; use derivative classes instead.
10
11 #include "AliDetectorRecoParam.h"
12
13 class AliPHOSRecoParam : public AliDetectorRecoParam {
14
15 public:
16
17   AliPHOSRecoParam();
18   AliPHOSRecoParam(const AliPHOSRecoParam& recoParam);
19   AliPHOSRecoParam& operator = (const AliPHOSRecoParam& recoParam);
20   virtual ~AliPHOSRecoParam() {}
21
22   Float_t GetEMCClusteringThreshold() const { return fEMCClusteringThreshold;  }
23   Float_t GetEMCLocalMaxCut()         const { return fEMCLocMaxCut;            }
24   Float_t GetEMCRawDigitThreshold()   const { return fEMCRawDigitThreshold;  }
25   Float_t GetEMCMinE()                const { return fEMCMinE;                 }
26   Float_t GetEMCLogWeight()           const { return fEMCW0;                   }
27   Float_t GetEMCSampleQualityCut()    const { return fEMCSampleQualityCut;     }
28   Float_t GetEMCEcoreRadius()         const { return fEMCEcoreRadius;          }
29   Bool_t  EMCEcore2ESD()              const { return fEMCEcore2ESD;            }
30   Bool_t  EMCSubtractPedestals()      const { return fEMCSubtractPedestals;    }
31   Bool_t  EMCToUnfold()               const { return fEMCUnfold;               }
32   const char* EMCFitterVersion()      const { return fEMCFitterVersion.Data(); }
33   Bool_t  GetEMCEnergyCorrectionOn()  const { return fEMCEnergyCorrectionOn;   }
34   Int_t   GetGlobalAltroOffset()      const { return fGlobalAltroOffset ;      }
35   Int_t   GetGlobalAltroThreshold()   const { return fGlobalAltroThreshold ;   }
36   Float_t GetTimeGateAmpThresh()      const { return fTimeGateAmpThresh ;      }
37   Float_t GetTimeGateLow()            const { return fTimeGateLow ;            }
38   Float_t GetTimeGateHigh()           const { return fTimeGateHigh ;           }
39  
40
41   Float_t GetCPVClusteringThreshold() const { return fCPVClusteringThreshold;  }
42   Float_t GetCPVLocalMaxCut()         const { return fCPVLocMaxCut;            }
43   Float_t GetCPVMinE()                const { return fCPVMinE;                 }
44   Float_t GetCPVLogWeight()           const { return fCPVW0;                   }
45   Bool_t  CPVToUnfold()               const { return fCPVUnfold;               }
46
47   void SetEMCClusteringThreshold(Float_t cluth)      { fEMCClusteringThreshold=cluth;   }
48   void SetEMCLocalMaxCut(Float_t cut)                { fEMCLocMaxCut          =cut;     }
49   void SetEMCRawDigitThreshold(Float_t rawDigTh)     { fEMCRawDigitThreshold  =rawDigTh;}
50   void SetEMCMinE(Float_t minE)                      { fEMCMinE               =minE;    }
51   void SetEMCLogWeight(Float_t w)                    { fEMCW0                 =w;       }
52   void SetEMCSampleQualityCut(Float_t qu)            { fEMCSampleQualityCut   =qu;      }
53   void SetEMCEcoreRadius(Float_t rCore)              { fEMCEcoreRadius        =rCore;   }
54   void SetEMCEcore2ESD(Bool_t ecore)                 { fEMCEcore2ESD          =ecore;   }
55   void SetEMCSubtractPedestals(Bool_t subtract)      { fEMCSubtractPedestals  =subtract;} 
56   void SetEMCFitterVersion(const char* version="v1") { fEMCFitterVersion     =version ; }
57   void SetEMCUnfolding(Bool_t toUnfold=kFALSE)       { fEMCUnfold             =toUnfold;}
58   void SetEMCEnergyCorrectionOn(Bool_t on=kTRUE)     { fEMCEnergyCorrectionOn =on;      }
59   void SetGlobalAltroOffset(Int_t offset=5)          { fGlobalAltroOffset     =offset ; }
60   void SetGlobalAltroThreshold(Int_t ZSth=5)         { fGlobalAltroThreshold  =ZSth;    }
61   void SetTimeGateAmpThresh(Float_t thrs=10)         { fTimeGateAmpThresh     = thrs ;  }
62   void SetTimeGateLow(Float_t gate=1.e-7)            { fTimeGateLow = gate ;            }
63   void SetTimeGateHigh(Float_t gate=1.e-8)           { fTimeGateHigh = gate;            }
64  
65
66   void SetCPVClusteringThreshold(Float_t cluth)      { fCPVClusteringThreshold=cluth;   }
67   void SetCPVLocalMaxCut(Float_t cut)                { fCPVLocMaxCut          =cut;     }
68   void SetCPVMinE(Float_t minE)                      { fCPVMinE               =minE;    }
69   void SetCPVLogWeight(Float_t w)                    { fCPVW0                 =w;       }
70   void SetCPVUnfolding(Bool_t toUnfold=kFALSE)       { fCPVUnfold            =toUnfold;}
71
72   virtual void Print(const Option_t *option="RecoParam") const;
73
74   static AliPHOSRecoParam* GetDefaultParameters();
75   static const  TObjArray* GetMappings();
76
77 protected:
78
79   Float_t fEMCClusteringThreshold; // EMC: Min.digit energy to start a new cluster, in GeV
80   Float_t fEMCLocMaxCut;           // EMC: Min.energy difference between two local maxima, in GeV
81   Float_t fEMCRawDigitThreshold;   // EMC: Min.amplitude of a digit produced from raw data in ADC
82   Float_t fEMCMinE;                // EMC: Min.E in the digits list associated with rec.point, in GeV
83   Float_t fEMCW0;                  // EMC: Log.weight to evaluate a local coordinate of rec.point
84   Float_t fEMCSampleQualityCut;    // EMC: Cut on pulse shape fit quality
85   Float_t fTimeGateAmpThresh ;     // EMC: Threshold for good/bad time calculation
86   Float_t fTimeGateLow ;           // EMC: Time difference between cells in PHOS cluster (bad time estimate)
87   Float_t fTimeGateHigh ;          // EMC: Time difference between cells in PHOS cluster (good time estimate)
88   Float_t fEMCEcoreRadius;         // EMC: Radius within which the core energy is calculated, in cm
89   Bool_t  fEMCEcore2ESD;           // EMC: true if Ecore is stored in ESD instead of Etot
90   Bool_t  fEMCSubtractPedestals;   // EMC: true if pedestal should be subtracted (in non-ZS)
91   Bool_t  fEMCUnfold;              // EMC: true if overlapped clusters should be unfolded
92   Bool_t  fEMCEnergyCorrectionOn;  // EMC: if true do non-linear correction of cluster energy
93   TString fEMCFitterVersion ;      // EMC: AliPHOSRawFitter version
94   Int_t   fGlobalAltroOffset ;     // Offset used in ALTRO chips in SZ runs
95   Int_t   fGlobalAltroThreshold ;  // Threshold used in ALTRO chips in SZ runs
96
97   Float_t fCPVClusteringThreshold; // CPV: Min.digit energy to start a new cluster, in GeV
98   Float_t fCPVLocMaxCut;           // CPV: Min.energy difference between two local maxima, in GeV
99   Float_t fCPVMinE;                // CPV: Min.E in the digits list associated with rec.point, in GeV
100   Float_t fCPVW0;                  // CPV: Log.weight to evaluate a local coordinate of rec.point
101   Bool_t  fCPVUnfold;              // CPV: true if overlapped clusters should be unfolded
102
103   static TObjArray* fgkMaps;       // ALTRO mappings for RCU0..RCU3
104
105   ClassDef(AliPHOSRecoParam,10)
106 };
107
108 #endif