Line data Source code
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 "TArrayF.h"
12 : #include "AliDetectorRecoParam.h"
13 :
14 : class AliPHOSRecoParam : public AliDetectorRecoParam {
15 :
16 : public:
17 :
18 : AliPHOSRecoParam();
19 : AliPHOSRecoParam(const AliPHOSRecoParam& recoParam);
20 : AliPHOSRecoParam& operator = (const AliPHOSRecoParam& recoParam);
21 48 : virtual ~AliPHOSRecoParam() {}
22 :
23 16 : Float_t GetEMCClusteringThreshold() const { return fEMCClusteringThreshold; }
24 16 : Float_t GetEMCLocalMaxCut() const { return fEMCLocMaxCut; }
25 8 : Float_t GetEMCRawDigitThreshold() const { return fEMCRawDigitThreshold; }
26 480 : Float_t GetEMCMinE() const { return fEMCMinE; }
27 16 : Float_t GetEMCLogWeight() const { return fEMCW0; }
28 8 : Float_t GetEMCSampleQualityCut() const { return fEMCSampleQualityCut; }
29 16 : Float_t GetEMCEcoreRadius() const { return fEMCEcoreRadius; }
30 20 : const Float_t * GetNonlinearityParams() const { return fNonLinearityParams.GetArray() ;}
31 20 : Bool_t EMCEcore2ESD() const { return fEMCEcore2ESD; }
32 8 : Bool_t EMCSubtractPedestals() const { return fEMCSubtractPedestals; }
33 16 : Bool_t EMCToUnfold() const { return fEMCUnfold; }
34 8 : const char* EMCFitterVersion() const { return fEMCFitterVersion.Data(); }
35 20 : Bool_t GetEMCEnergyCorrectionOn() const { return fEMCEnergyCorrectionOn; }
36 8 : Int_t GetGlobalAltroOffset() const { return fGlobalAltroOffset ; }
37 8 : Int_t GetGlobalAltroThreshold() const { return fGlobalAltroThreshold ; }
38 16 : Float_t GetTimeGateAmpThresh() const { return fTimeGateAmpThresh ; }
39 16 : Float_t GetTimeGateLow() const { return fTimeGateLow ; }
40 16 : Float_t GetTimeGateHigh() const { return fTimeGateHigh ; }
41 8 : Bool_t GetSubtractL1phase() const { return fSubtractL1phase; }
42 :
43 40 : const char* GetNonlinearityCorrectionVersion()const{return fNonlinearityCorrVersion.Data();}
44 :
45 16 : Float_t GetCPVClusteringThreshold() const { return fCPVClusteringThreshold; }
46 16 : Float_t GetCPVLocalMaxCut() const { return fCPVLocMaxCut; }
47 32 : Float_t GetCPVMinE() const { return fCPVMinE; }
48 16 : Float_t GetCPVLogWeight() const { return fCPVW0; }
49 16 : Bool_t CPVToUnfold() const { return fCPVUnfold; }
50 :
51 0 : void SetEMCClusteringThreshold(Float_t cluth) { fEMCClusteringThreshold=cluth; }
52 0 : void SetEMCLocalMaxCut(Float_t cut) { fEMCLocMaxCut =cut; }
53 0 : void SetEMCRawDigitThreshold(Float_t rawDigTh) { fEMCRawDigitThreshold =rawDigTh;}
54 0 : void SetEMCMinE(Float_t minE) { fEMCMinE =minE; }
55 0 : void SetEMCLogWeight(Float_t w) { fEMCW0 =w; }
56 0 : void SetEMCSampleQualityCut(Float_t qu) { fEMCSampleQualityCut =qu; }
57 0 : void SetEMCEcoreRadius(Float_t rCore) { fEMCEcoreRadius =rCore; }
58 0 : void SetEMCEcore2ESD(Bool_t ecore) { fEMCEcore2ESD =ecore; }
59 0 : void SetEMCSubtractPedestals(Bool_t subtract) { fEMCSubtractPedestals =subtract;}
60 0 : void SetEMCFitterVersion(const char* version="v1") { fEMCFitterVersion =version ; }
61 0 : void SetEMCUnfolding(Bool_t toUnfold=kFALSE) { fEMCUnfold =toUnfold;}
62 0 : void SetEMCEnergyCorrectionOn(Bool_t on=kTRUE) { fEMCEnergyCorrectionOn =on; }
63 : //Make sure to set first version and then parameters, otherwise parameters will be overwritten by default ones.
64 0 : void SetNonlinearityParams(Int_t n, Float_t * params){fNonLinearityParams.Set(n,params);}
65 0 : void SetGlobalAltroOffset(Int_t offset=5) { fGlobalAltroOffset =offset ; }
66 0 : void SetGlobalAltroThreshold(Int_t ZSth=5) { fGlobalAltroThreshold =ZSth; }
67 0 : void SetTimeGateAmpThresh(Float_t thrs=10) { fTimeGateAmpThresh = thrs ; }
68 0 : void SetTimeGateLow(Float_t gate=1.e-7) { fTimeGateLow = gate ; }
69 0 : void SetTimeGateHigh(Float_t gate=1.e-8) { fTimeGateHigh = gate; }
70 0 : void SetSubtractL1phase(Bool_t a=kTRUE) { fSubtractL1phase = a ; }
71 :
72 : void SetNonlinearityCorrectionVersion(const char * ver="Gustavo2005");
73 :
74 0 : void SetCPVClusteringThreshold(Float_t cluth) { fCPVClusteringThreshold=cluth; }
75 0 : void SetCPVLocalMaxCut(Float_t cut) { fCPVLocMaxCut =cut; }
76 0 : void SetCPVMinE(Float_t minE) { fCPVMinE =minE; }
77 0 : void SetCPVLogWeight(Float_t w) { fCPVW0 =w; }
78 0 : void SetCPVUnfolding(Bool_t toUnfold=kFALSE) { fCPVUnfold =toUnfold;}
79 :
80 : virtual void Print(const Option_t *option="RecoParam") const;
81 :
82 : static AliPHOSRecoParam* GetDefaultParameters();
83 : static const TObjArray* GetMappings();
84 : static const TObject* GetTriggerParameters();
85 :
86 : protected:
87 :
88 : TArrayF fNonLinearityParams; // EMC: Array of non-linearity correction parameters
89 : Float_t fEMCClusteringThreshold; // EMC: Min.digit energy to start a new cluster, in GeV
90 : Float_t fEMCLocMaxCut; // EMC: Min.energy difference between two local maxima, in GeV
91 : Float_t fEMCRawDigitThreshold; // EMC: Min.amplitude of a digit produced from raw data in ADC
92 : Float_t fEMCMinE; // EMC: Min.E in the digits list associated with rec.point, in GeV
93 : Float_t fEMCW0; // EMC: Log.weight to evaluate a local coordinate of rec.point
94 : Float_t fEMCSampleQualityCut; // EMC: Cut on pulse shape fit quality
95 : Float_t fTimeGateAmpThresh ; // EMC: Threshold for good/bad time calculation
96 : Float_t fTimeGateLow ; // EMC: Time difference between cells in PHOS cluster (bad time estimate)
97 : Float_t fTimeGateHigh ; // EMC: Time difference between cells in PHOS cluster (good time estimate)
98 : Float_t fEMCEcoreRadius; // EMC: Radius within which the core energy is calculated, in cm
99 : Bool_t fEMCEcore2ESD; // EMC: true if Ecore is stored in ESD instead of Etot
100 : Bool_t fEMCSubtractPedestals; // EMC: true if pedestal should be subtracted (in non-ZS)
101 : Bool_t fEMCUnfold; // EMC: true if overlapped clusters should be unfolded
102 : Bool_t fEMCEnergyCorrectionOn; // EMC: if true do non-linear correction of cluster energy
103 : Bool_t fSubtractL1phase; // EMC: should one sabtract L1 phase in time calculation
104 : TString fEMCFitterVersion ; // EMC: AliPHOSRawFitter version
105 : TString fNonlinearityCorrVersion ;// EMC: choose which version of nenlinearity correction
106 : Int_t fGlobalAltroOffset ; // Offset used in ALTRO chips in SZ runs
107 : Int_t fGlobalAltroThreshold ; // Threshold used in ALTRO chips in SZ runs
108 :
109 : Float_t fCPVClusteringThreshold; // CPV: Min.digit energy to start a new cluster, in GeV
110 : Float_t fCPVLocMaxCut; // CPV: Min.energy difference between two local maxima, in GeV
111 : Float_t fCPVMinE; // CPV: Min.E in the digits list associated with rec.point, in GeV
112 : Float_t fCPVW0; // CPV: Log.weight to evaluate a local coordinate of rec.point
113 : Bool_t fCPVUnfold; // CPV: true if overlapped clusters should be unfolded
114 :
115 : static TObjArray* fgkMaps; // ALTRO mappings for RCU0..RCU3
116 : static TObject* fgkTrigParams; // PHOS trigger parameters
117 :
118 58 : ClassDef(AliPHOSRecoParam,13)
119 : };
120 :
121 : #endif
|