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 */
8 //-----------------------------------------------------------------------------
9 // Container of EMCAL reconstruction parameters
10 // The purpose of this object is to store it to OCDB
11 // and retrieve it in AliEMCALClusterizerv1, AliEMCALPID,
12 // AliEMCALTracker and use it to configure AliEMCALRawUtils
15 // Author: Yuri Kharlov
16 //-----------------------------------------------------------------------------
18 // --- ROOT system ---
20 #include "AliDetectorRecoParam.h"
23 class AliEMCALRecParam : public AliDetectorRecoParam
27 enum AliEMCALClusterizerFlag
36 AliEMCALRecParam(const AliEMCALRecParam& recParam);
37 AliEMCALRecParam& operator = (const AliEMCALRecParam& recParam);
38 virtual ~AliEMCALRecParam() {}
40 //Clustering (Unfolding : Cynthia)
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 ;}
45 Float_t GetTimeCut () const {return fTimeCut ;}
46 Float_t GetTimeMin () const {return fTimeMin ;}
47 Float_t GetTimeMax () const {return fTimeMax ;}
48 Bool_t GetUnfold () const {return fUnfold ;}
49 Int_t GetNRowDiff () const {return fNRowDiff ;}
50 Int_t GetNColDiff () const {return fNColDiff ;}
52 void SetClusteringThreshold(Float_t thrsh) {fClusteringThreshold = thrsh;}
53 void SetW0 (Float_t w0) {fW0 = w0 ;}
54 void SetMinECut (Float_t ecut) {fMinECut = ecut ;}
55 void SetLocMaxCut (Float_t locMaxCut) {fLocMaxCut = locMaxCut ;}
56 void SetTimeCut (Float_t t) {fTimeCut = t ;}
57 void SetTimeMin (Float_t t) {fTimeMin = t ;}
58 void SetTimeMax (Float_t t) {fTimeMax = t ;}
59 void SetUnfold (Bool_t unfold) {fUnfold = unfold ;}
60 void SetNxM(Int_t rdiff, Int_t cdiff) {fNRowDiff=rdiff; fNColDiff = cdiff; }
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];}
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;}
81 //Track Matching (Alberto; Revised by Rongrong)
82 /* track matching cut setters */
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;}
89 /* track matching cut getters */
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;}
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;}
103 void SetNPedSamples(Int_t value) {fNPedSamples = value;}
104 void SetRemoveBadChannels(Bool_t val) {fRemoveBadChannels=val; }
105 void SetFittingAlgorithm(Int_t val) {fFittingAlgorithm=val; }
106 void SetFALTROUsage(Bool_t val) {fUseFALTRO=val; }
107 void SetLEDFit(Bool_t val) {fFitLEDEvents=val; }
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;}
116 Bool_t GetRemoveBadChannels() const {return fRemoveBadChannels;}
117 Int_t GetFittingAlgorithm() const {return fFittingAlgorithm; }
118 Bool_t UseFALTRO() const {return fUseFALTRO; }
119 Bool_t FitLEDEvents() const {return fFitLEDEvents; }
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;}
129 Bool_t GetRejectBelowThreshold() const { return fRejectBelowThreshold; }
130 void SetRejectBelowThreshold(Bool_t reject) { fRejectBelowThreshold = reject; }
132 virtual void Print(Option_t * option="") const;
134 static AliEMCALRecParam* GetDefaultParameters();
135 static AliEMCALRecParam* GetLowFluxParam();
136 static AliEMCALRecParam* GetHighFluxParam();
137 static AliEMCALRecParam* GetCalibParam();
138 static AliEMCALRecParam* GetCosmicParam();
140 static const TObjArray* GetMappings();
142 void SetClusterizerFlag(Short_t val) { fClusterizerFlag = val; }
143 Short_t GetClusterizerFlag() const { return fClusterizerFlag; }
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
149 Float_t fMinECut; // Minimum energy for a digit to be a member of a cluster
150 Bool_t fUnfold; // Flag to perform cluster unfolding
151 Float_t fLocMaxCut; // Minimum energy difference to consider local maxima in a cluster
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
155 Short_t fClusterizerFlag ; // Choice of the clusterizer; Default selection (v1) is zero
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)
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
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
175 Double_t fTrkCutNITS; // Number of ITS hits for track matching
176 Double_t fTrkCutNTPC; // Number of TPC hits for track matching
178 //Raw signal fitting parameters (Jenn)
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
186 Bool_t fUseFALTRO; // get FALTRO (trigger) and put it on trigger digits.
187 Bool_t fFitLEDEvents; // fit LED events or not
189 //Shower shape parameters (Adam)
190 Bool_t fRejectBelowThreshold; // split (false-default) or reject (true) cell energy below threshold after UF
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
195 static TObjArray* fgkMaps; // ALTRO mappings for RCU0..RCUX
197 ClassDef(AliEMCALRecParam,17) // Reconstruction parameters
200 #endif // ALIEMCALRECPARAM_H