]>
Commit | Line | Data |
---|---|---|
3a8be91c | 1 | #ifndef ALIEMCALRECPARAM_H |
2 | #define ALIEMCALRECPARAM_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | //----------------------------------------------------------------------------- | |
9 | // Container of EMCAL reconstruction parameters | |
10 | // The purpose of this object is to store it to OCDB | |
b4133f05 | 11 | // and retrieve it in AliEMCALClusterizerv1, AliEMCALPID, |
12 | // AliEMCALTracker and use it to configure AliEMCALRawUtils | |
13 | // | |
14 | // | |
3a8be91c | 15 | // Author: Yuri Kharlov |
16 | //----------------------------------------------------------------------------- | |
17 | ||
18 | // --- ROOT system --- | |
19 | ||
413e6b81 | 20 | #include "AliDetectorRecoParam.h" |
225cd96d | 21 | #include "AliLog.h" |
3a8be91c | 22 | |
413e6b81 | 23 | class AliEMCALRecParam : public AliDetectorRecoParam |
3a8be91c | 24 | { |
1e7c9b89 | 25 | public: |
ee08edde | 26 | |
27 | enum AliEMCALClusterizerFlag | |
28 | { | |
29 | kClusterizerv1 = 0, | |
8c0c0f09 | 30 | kClusterizerNxN = 1, |
89504c57 | 31 | kClusterizerv2 = 2, |
3c56da8f | 32 | kClusterizerFW = 3 |
ee08edde | 33 | }; |
3a8be91c | 34 | |
35 | AliEMCALRecParam() ; | |
413e6b81 | 36 | AliEMCALRecParam(const AliEMCALRecParam& recParam); |
37 | AliEMCALRecParam& operator = (const AliEMCALRecParam& recParam); | |
3a8be91c | 38 | virtual ~AliEMCALRecParam() {} |
1e7c9b89 | 39 | |
225cd96d | 40 | //Clustering (Unfolding : Cynthia) |
1e7c9b89 | 41 | Float_t GetClusteringThreshold() const {return fClusteringThreshold ;} |
42 | Float_t GetW0 () const {return fW0 ;} | |
43 | Float_t GetMinECut () const {return fMinECut ;} | |
44 | Float_t GetLocMaxCut () const {return fLocMaxCut ;} | |
a435f763 | 45 | Float_t GetTimeCut () const {return fTimeCut ;} |
829ba234 | 46 | Float_t GetTimeMin () const {return fTimeMin ;} |
47 | Float_t GetTimeMax () const {return fTimeMax ;} | |
1e7c9b89 | 48 | Bool_t GetUnfold () const {return fUnfold ;} |
3c56da8f | 49 | Int_t GetNRowDiff () const {return fNRowDiff ;} |
50 | Int_t GetNColDiff () const {return fNColDiff ;} | |
51 | ||
1e7c9b89 | 52 | void SetClusteringThreshold(Float_t thrsh) {fClusteringThreshold = thrsh;} |
829ba234 | 53 | void SetW0 (Float_t w0) {fW0 = w0 ;} |
54 | void SetMinECut (Float_t ecut) {fMinECut = ecut ;} | |
1e7c9b89 | 55 | void SetLocMaxCut (Float_t locMaxCut) {fLocMaxCut = locMaxCut ;} |
829ba234 | 56 | void SetTimeCut (Float_t t) {fTimeCut = t ;} |
57 | void SetTimeMin (Float_t t) {fTimeMin = t ;} | |
58 | void SetTimeMax (Float_t t) {fTimeMax = t ;} | |
3c56da8f | 59 | void SetUnfold (Bool_t unfold) {fUnfold = unfold ;} |
60 | void SetNxM(Int_t rdiff, Int_t cdiff) {fNRowDiff=rdiff; fNColDiff = cdiff; } | |
61 | ||
8ba062b1 | 62 | //PID (Guenole) |
1e7c9b89 | 63 | Double_t GetGamma(Int_t i, Int_t j) const {return fGamma[i][j];} |
64 | Double_t GetGammaEnergyProb(Int_t i) const {return fGammaEnergyProb[i];} | |
65 | Double_t GetGamma1to10(Int_t i, Int_t j) const {return fGamma1to10[i][j];} // not used | |
66 | Double_t GetHadron(Int_t i, Int_t j) const {return fHadron[i][j];} | |
67 | Double_t GetHadron1to10(Int_t i, Int_t j) const {return fHadron1to10[i][j];} // not used | |
68 | Double_t GetHadronEnergyProb(Int_t i) const {return fHadronEnergyProb[i];} | |
69 | Double_t GetPiZero(Int_t i, Int_t j) const {return fPiZero[i][j];} | |
70 | Double_t GetPiZeroEnergyProb(Int_t i) const {return fPiZeroEnergyProb[i];} | |
71 | ||
72 | void SetGamma(Int_t i, Int_t j,Double_t param ) {fGamma[i][j]=param;} | |
73 | void SetGammaEnergyProb(Int_t i, Double_t param ) {fGammaEnergyProb[i]=param;} | |
74 | void SetGamma1to10(Int_t i, Int_t j,Double_t param ) {fGamma1to10[i][j]=param;} | |
75 | void SetHadron(Int_t i, Int_t j,Double_t param ) {fHadron[i][j]=param;} | |
76 | void SetHadron1to10(Int_t i, Int_t j,Double_t param ) {fHadron1to10[i][j]=param;} | |
77 | void SetHadronEnergyProb(Int_t i,Double_t param ) {fHadronEnergyProb[i]=param;} | |
78 | void SetPiZero(Int_t i, Int_t j,Double_t param) {fPiZero[i][j]=param;} | |
79 | void SetPiZeroEnergyProb(Int_t i,Double_t param) {fPiZeroEnergyProb[i]=param;} | |
80 | ||
5970dfe2 | 81 | //Track Matching (Alberto; Revised by Rongrong) |
8ba062b1 | 82 | /* track matching cut setters */ |
5970dfe2 | 83 | void SetMthCutEta(Double_t value) {fMthCutEta = value;} |
84 | void SetMthCutPhi(Double_t value) {fMthCutPhi = value;} | |
85 | void SetExtrapolateStep(Double_t value) {fStep = value;} | |
86 | void SetTrkCutPt(Double_t value) {fTrkCutPt = value;} | |
87 | void SetTrkCutNITS(Double_t value) {fTrkCutNITS = value;} | |
88 | void SetTrkCutNTPC(Double_t value) {fTrkCutNTPC = value;} | |
8ba062b1 | 89 | /* track matching cut getters */ |
5970dfe2 | 90 | Double_t GetMthCutEta() const {return fMthCutEta;} |
91 | Double_t GetMthCutPhi() const {return fMthCutPhi;} | |
92 | Double_t GetExtrapolateStep() const {return fStep;} | |
93 | Double_t GetTrkCutPt() const {return fTrkCutPt;} | |
94 | Double_t GetTrkCutNITS() const {return fTrkCutNITS;} | |
95 | Double_t GetTrkCutNTPC() const {return fTrkCutNTPC;} | |
1e7c9b89 | 96 | |
b4133f05 | 97 | //Raw signal fitting (Jenn) |
98 | /* raw signal setters */ | |
99 | void SetHighLowGainFactor(Double_t value) {fHighLowGainFactor = value;} | |
100 | void SetOrderParameter(Int_t value) {fOrderParameter = value;} | |
101 | void SetTau(Double_t value) {fTau = value;} | |
102 | void SetNoiseThreshold(Int_t value) {fNoiseThreshold = value;} | |
9f467289 | 103 | void SetNPedSamples(Int_t value) {fNPedSamples = value;} |
104 | void SetRemoveBadChannels(Bool_t val) {fRemoveBadChannels=val; } | |
105 | void SetFittingAlgorithm(Int_t val) {fFittingAlgorithm=val; } | |
46f1d25f | 106 | void SetFALTROUsage(Bool_t val) {fUseFALTRO=val; } |
e853f058 | 107 | void SetLEDFit(Bool_t val) {fFitLEDEvents=val; } |
108 | ||
46f1d25f | 109 | |
b4133f05 | 110 | /* raw signal getters */ |
111 | Double_t GetHighLowGainFactor() const {return fHighLowGainFactor;} | |
112 | Int_t GetOrderParameter() const {return fOrderParameter;} | |
113 | Double_t GetTau() const {return fTau;} | |
114 | Int_t GetNoiseThreshold() const {return fNoiseThreshold;} | |
115 | Int_t GetNPedSamples() const {return fNPedSamples;} | |
9f467289 | 116 | Bool_t GetRemoveBadChannels() const {return fRemoveBadChannels;} |
117 | Int_t GetFittingAlgorithm() const {return fFittingAlgorithm; } | |
46f1d25f | 118 | Bool_t UseFALTRO() const {return fUseFALTRO; } |
e853f058 | 119 | Bool_t FitLEDEvents() const {return fFitLEDEvents; } |
120 | ||
65bec413 | 121 | //Unfolding (Adam) |
122 | Double_t GetSSPars(Int_t i) const {return fSSPars[i];} | |
123 | Double_t GetPar5(Int_t i) const {return fPar5[i];} | |
124 | Double_t GetPar6(Int_t i) const {return fPar6[i];} | |
125 | void SetSSPars(Int_t i, Double_t param ) {fSSPars[i]=param;} | |
126 | void SetPar5(Int_t i, Double_t param ) {fPar5[i]=param;} | |
127 | void SetPar6(Int_t i, Double_t param ) {fPar6[i]=param;} | |
128 | ||
b410dc6a | 129 | Bool_t GetRejectBelowThreshold() const { return fRejectBelowThreshold; } |
130 | void SetRejectBelowThreshold(Bool_t reject) { fRejectBelowThreshold = reject; } | |
131 | ||
3c56da8f | 132 | virtual void Print(Option_t * option="") const; |
1e7c9b89 | 133 | |
413e6b81 | 134 | static AliEMCALRecParam* GetDefaultParameters(); |
f5fc991a | 135 | static AliEMCALRecParam* GetLowFluxParam(); |
136 | static AliEMCALRecParam* GetHighFluxParam(); | |
98cf874d | 137 | static AliEMCALRecParam* GetCalibParam(); |
138 | static AliEMCALRecParam* GetCosmicParam(); | |
ee08edde | 139 | |
feedcab9 | 140 | static const TObjArray* GetMappings(); |
1e7c9b89 | 141 | |
ee08edde | 142 | void SetClusterizerFlag(Short_t val) { fClusterizerFlag = val; } |
143 | Short_t GetClusterizerFlag() const { return fClusterizerFlag; } | |
144 | ||
1e7c9b89 | 145 | private: |
8ba062b1 | 146 | //Clustering |
a435f763 | 147 | Float_t fClusteringThreshold ; // Minimum energy to seed a EC digit in a cluster |
148 | Float_t fW0 ; // Logarithmic weight for the cluster center of gravity calculation | |
3a8be91c | 149 | Float_t fMinECut; // Minimum energy for a digit to be a member of a cluster |
a435f763 | 150 | Bool_t fUnfold; // Flag to perform cluster unfolding |
151 | Float_t fLocMaxCut; // Minimum energy difference to consider local maxima in a cluster | |
829ba234 | 152 | Float_t fTimeCut ; // Maximum time of digits with respect to EMC cluster max. |
153 | Float_t fTimeMin ; // Minimum time of digits | |
154 | Float_t fTimeMax ; // Maximum time of digits | |
ee08edde | 155 | Short_t fClusterizerFlag ; // Choice of the clusterizer; Default selection (v1) is zero |
3c56da8f | 156 | Int_t fNRowDiff; // NxN: How many neighbors to consider along row (phi) |
157 | Int_t fNColDiff; // NxN: How many neighbors to consider along col (eta) | |
a435f763 | 158 | |
8ba062b1 | 159 | //PID (Guenole) |
1e7c9b89 | 160 | Double_t fGamma[6][6]; // Parameter to Compute PID for photons |
161 | Double_t fGamma1to10[6][6]; // Parameter to Compute PID not used | |
162 | Double_t fHadron[6][6]; // Parameter to Compute PID for hadrons | |
163 | Double_t fHadron1to10[6][6]; // Parameter to Compute PID for hadrons between 1 and 10 GeV | |
164 | Double_t fHadronEnergyProb[6]; // Parameter to Compute PID for energy ponderation for hadrons | |
165 | Double_t fPiZeroEnergyProb[6]; // Parameter to Compute PID for energy ponderation for Pi0 | |
166 | Double_t fGammaEnergyProb[6]; // Parameter to Compute PID for energy ponderation for gamma | |
167 | Double_t fPiZero[6][6]; // Parameter to Compute PID for pi0 | |
168 | ||
169 | ||
5970dfe2 | 170 | //Track-Matching (Alberto; Revised by Rongrong) |
171 | Double_t fMthCutEta; // eta-difference cut for track matching | |
172 | Double_t fMthCutPhi; // phi-difference cut for track matching | |
173 | Double_t fStep; // Extrapolate length of each step | |
174 | Double_t fTrkCutPt; // Minimum pT cut on tracks. Needed for Pb-Pb runs | |
1e7c9b89 | 175 | Double_t fTrkCutNITS; // Number of ITS hits for track matching |
176 | Double_t fTrkCutNTPC; // Number of TPC hits for track matching | |
177 | ||
b4133f05 | 178 | //Raw signal fitting parameters (Jenn) |
9f467289 | 179 | Double_t fHighLowGainFactor; // gain factor to convert between high and low gain |
180 | Int_t fOrderParameter; // order parameter for raw signal fit | |
181 | Double_t fTau; // decay constant for raw signal fit | |
182 | Int_t fNoiseThreshold; // threshold to consider signal or noise | |
183 | Int_t fNPedSamples; // number of time samples to use in pedestal calculation | |
184 | Bool_t fRemoveBadChannels; // select if bad channels are removed before fitting | |
185 | Int_t fFittingAlgorithm; // select the fitting algorithm | |
46f1d25f | 186 | Bool_t fUseFALTRO; // get FALTRO (trigger) and put it on trigger digits. |
e853f058 | 187 | Bool_t fFitLEDEvents; // fit LED events or not |
188 | ||
65bec413 | 189 | //Shower shape parameters (Adam) |
b410dc6a | 190 | Bool_t fRejectBelowThreshold; // split (false-default) or reject (true) cell energy below threshold after UF |
65bec413 | 191 | Double_t fSSPars[8]; // Unfolding shower shape parameters |
192 | Double_t fPar5[3]; // UF SSPar nr 5 | |
193 | Double_t fPar6[3]; // UF SSPar nr 6 | |
194 | ||
feedcab9 | 195 | static TObjArray* fgkMaps; // ALTRO mappings for RCU0..RCUX |
1e7c9b89 | 196 | |
b410dc6a | 197 | ClassDef(AliEMCALRecParam,17) // Reconstruction parameters |
3c56da8f | 198 | }; |
3a8be91c | 199 | |
200 | #endif // ALIEMCALRECPARAM_H | |
8ba062b1 | 201 |