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