Bug fix for HMPID bits in readout list.
[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:
3a8be91c 26
27 AliEMCALRecParam() ;
413e6b81 28 AliEMCALRecParam(const AliEMCALRecParam& recParam);
29 AliEMCALRecParam& operator = (const AliEMCALRecParam& recParam);
3a8be91c 30 virtual ~AliEMCALRecParam() {}
1e7c9b89 31
225cd96d 32 //Clustering (Unfolding : Cynthia)
1e7c9b89 33 Float_t GetClusteringThreshold() const {return fClusteringThreshold ;}
34 Float_t GetW0 () const {return fW0 ;}
35 Float_t GetMinECut () const {return fMinECut ;}
36 Float_t GetLocMaxCut () const {return fLocMaxCut ;}
a435f763 37 Float_t GetTimeCut () const {return fTimeCut ;}
829ba234 38 Float_t GetTimeMin () const {return fTimeMin ;}
39 Float_t GetTimeMax () const {return fTimeMax ;}
1e7c9b89 40 Bool_t GetUnfold () const {return fUnfold ;}
829ba234 41
1e7c9b89 42 void SetClusteringThreshold(Float_t thrsh) {fClusteringThreshold = thrsh;}
829ba234 43 void SetW0 (Float_t w0) {fW0 = w0 ;}
44 void SetMinECut (Float_t ecut) {fMinECut = ecut ;}
1e7c9b89 45 void SetLocMaxCut (Float_t locMaxCut) {fLocMaxCut = locMaxCut ;}
829ba234 46 void SetTimeCut (Float_t t) {fTimeCut = t ;}
47 void SetTimeMin (Float_t t) {fTimeMin = t ;}
48 void SetTimeMax (Float_t t) {fTimeMax = t ;}
1e7c9b89 49 void SetUnfold (Bool_t unfold) {fUnfold = unfold ; if(fUnfold) AliWarning("Cluster Unfolding ON. Implementing only for eta=0 case!!!");}
50
8ba062b1 51 //PID (Guenole)
1e7c9b89 52 Double_t GetGamma(Int_t i, Int_t j) const {return fGamma[i][j];}
53 Double_t GetGammaEnergyProb(Int_t i) const {return fGammaEnergyProb[i];}
54 Double_t GetGamma1to10(Int_t i, Int_t j) const {return fGamma1to10[i][j];} // not used
55 Double_t GetHadron(Int_t i, Int_t j) const {return fHadron[i][j];}
56 Double_t GetHadron1to10(Int_t i, Int_t j) const {return fHadron1to10[i][j];} // not used
57 Double_t GetHadronEnergyProb(Int_t i) const {return fHadronEnergyProb[i];}
58 Double_t GetPiZero(Int_t i, Int_t j) const {return fPiZero[i][j];}
59 Double_t GetPiZeroEnergyProb(Int_t i) const {return fPiZeroEnergyProb[i];}
60
61 void SetGamma(Int_t i, Int_t j,Double_t param ) {fGamma[i][j]=param;}
62 void SetGammaEnergyProb(Int_t i, Double_t param ) {fGammaEnergyProb[i]=param;}
63 void SetGamma1to10(Int_t i, Int_t j,Double_t param ) {fGamma1to10[i][j]=param;}
64 void SetHadron(Int_t i, Int_t j,Double_t param ) {fHadron[i][j]=param;}
65 void SetHadron1to10(Int_t i, Int_t j,Double_t param ) {fHadron1to10[i][j]=param;}
66 void SetHadronEnergyProb(Int_t i,Double_t param ) {fHadronEnergyProb[i]=param;}
67 void SetPiZero(Int_t i, Int_t j,Double_t param) {fPiZero[i][j]=param;}
68 void SetPiZeroEnergyProb(Int_t i,Double_t param) {fPiZeroEnergyProb[i]=param;}
69
8ba062b1 70 //Track Matching (Alberto)
71 /* track matching cut setters */
72 void SetTrkCutX(Double_t value) {fTrkCutX = value;}
73 void SetTrkCutY(Double_t value) {fTrkCutY = value;}
74 void SetTrkCutZ(Double_t value) {fTrkCutZ = value;}
75 void SetTrkCutR(Double_t value) {fTrkCutR = value;}
76 void SetTrkCutAlphaMin(Double_t value) {fTrkCutAlphaMin = value;}
77 void SetTrkCutAlphaMax(Double_t value) {fTrkCutAlphaMax = value;}
78 void SetTrkCutAngle(Double_t value) {fTrkCutAngle = value;}
1e7c9b89 79 void SetTrkCutNITS(Double_t value) {fTrkCutNITS = value;}
80 void SetTrkCutNTPC(Double_t value) {fTrkCutNTPC = value;}
8ba062b1 81 /* track matching cut getters */
82 Double_t GetTrkCutX() const {return fTrkCutX;}
83 Double_t GetTrkCutY() const {return fTrkCutY;}
84 Double_t GetTrkCutZ() const {return fTrkCutZ;}
85 Double_t GetTrkCutR() const {return fTrkCutR;}
86 Double_t GetTrkCutAlphaMin() const {return fTrkCutAlphaMin;}
87 Double_t GetTrkCutAlphaMax() const {return fTrkCutAlphaMax;}
88 Double_t GetTrkCutAngle() const {return fTrkCutAngle;}
1e7c9b89 89 Double_t GetTrkCutNITS() const {return fTrkCutNITS;}
90 Double_t GetTrkCutNTPC() const {return fTrkCutNTPC;}
91
b4133f05 92 //Raw signal fitting (Jenn)
93 /* raw signal setters */
94 void SetHighLowGainFactor(Double_t value) {fHighLowGainFactor = value;}
95 void SetOrderParameter(Int_t value) {fOrderParameter = value;}
96 void SetTau(Double_t value) {fTau = value;}
97 void SetNoiseThreshold(Int_t value) {fNoiseThreshold = value;}
9f467289 98 void SetNPedSamples(Int_t value) {fNPedSamples = value;}
99 void SetRemoveBadChannels(Bool_t val) {fRemoveBadChannels=val; }
100 void SetFittingAlgorithm(Int_t val) {fFittingAlgorithm=val; }
46f1d25f 101 void SetFALTROUsage(Bool_t val) {fUseFALTRO=val; }
e853f058 102 void SetLEDFit(Bool_t val) {fFitLEDEvents=val; }
103
46f1d25f 104
b4133f05 105 /* raw signal getters */
106 Double_t GetHighLowGainFactor() const {return fHighLowGainFactor;}
107 Int_t GetOrderParameter() const {return fOrderParameter;}
108 Double_t GetTau() const {return fTau;}
109 Int_t GetNoiseThreshold() const {return fNoiseThreshold;}
110 Int_t GetNPedSamples() const {return fNPedSamples;}
9f467289 111 Bool_t GetRemoveBadChannels() const {return fRemoveBadChannels;}
112 Int_t GetFittingAlgorithm() const {return fFittingAlgorithm; }
46f1d25f 113 Bool_t UseFALTRO() const {return fUseFALTRO; }
e853f058 114 Bool_t FitLEDEvents() const {return fFitLEDEvents; }
115
9f467289 116 virtual void Print(Option_t * option="") const ;
1e7c9b89 117
413e6b81 118 static AliEMCALRecParam* GetDefaultParameters();
f5fc991a 119 static AliEMCALRecParam* GetLowFluxParam();
120 static AliEMCALRecParam* GetHighFluxParam();
98cf874d 121 static AliEMCALRecParam* GetCalibParam();
122 static AliEMCALRecParam* GetCosmicParam();
1e7c9b89 123
feedcab9 124 static const TObjArray* GetMappings();
1e7c9b89 125
126 private:
8ba062b1 127 //Clustering
a435f763 128 Float_t fClusteringThreshold ; // Minimum energy to seed a EC digit in a cluster
129 Float_t fW0 ; // Logarithmic weight for the cluster center of gravity calculation
3a8be91c 130 Float_t fMinECut; // Minimum energy for a digit to be a member of a cluster
a435f763 131 Bool_t fUnfold; // Flag to perform cluster unfolding
132 Float_t fLocMaxCut; // Minimum energy difference to consider local maxima in a cluster
829ba234 133 Float_t fTimeCut ; // Maximum time of digits with respect to EMC cluster max.
134 Float_t fTimeMin ; // Minimum time of digits
135 Float_t fTimeMax ; // Maximum time of digits
a435f763 136
8ba062b1 137 //PID (Guenole)
1e7c9b89 138 Double_t fGamma[6][6]; // Parameter to Compute PID for photons
139 Double_t fGamma1to10[6][6]; // Parameter to Compute PID not used
140 Double_t fHadron[6][6]; // Parameter to Compute PID for hadrons
141 Double_t fHadron1to10[6][6]; // Parameter to Compute PID for hadrons between 1 and 10 GeV
142 Double_t fHadronEnergyProb[6]; // Parameter to Compute PID for energy ponderation for hadrons
143 Double_t fPiZeroEnergyProb[6]; // Parameter to Compute PID for energy ponderation for Pi0
144 Double_t fGammaEnergyProb[6]; // Parameter to Compute PID for energy ponderation for gamma
145 Double_t fPiZero[6][6]; // Parameter to Compute PID for pi0
146
147
8ba062b1 148 //Track-Matching (Alberto)
149 Double_t fTrkCutX; // X-difference cut for track matching
150 Double_t fTrkCutY; // Y-difference cut for track matching
151 Double_t fTrkCutZ; // Z-difference cut for track matching
152 Double_t fTrkCutR; // cut on allowed track-cluster distance
153 Double_t fTrkCutAlphaMin; // cut on 'alpha' parameter for track matching (min)
154 Double_t fTrkCutAlphaMax; // cut on 'alpha' parameter for track matching (min)
155 Double_t fTrkCutAngle; // cut on relative angle between different track points for track matching
1e7c9b89 156 Double_t fTrkCutNITS; // Number of ITS hits for track matching
157 Double_t fTrkCutNTPC; // Number of TPC hits for track matching
158
b4133f05 159 //Raw signal fitting parameters (Jenn)
9f467289 160 Double_t fHighLowGainFactor; // gain factor to convert between high and low gain
161 Int_t fOrderParameter; // order parameter for raw signal fit
162 Double_t fTau; // decay constant for raw signal fit
163 Int_t fNoiseThreshold; // threshold to consider signal or noise
164 Int_t fNPedSamples; // number of time samples to use in pedestal calculation
165 Bool_t fRemoveBadChannels; // select if bad channels are removed before fitting
166 Int_t fFittingAlgorithm; // select the fitting algorithm
46f1d25f 167 Bool_t fUseFALTRO; // get FALTRO (trigger) and put it on trigger digits.
e853f058 168 Bool_t fFitLEDEvents; // fit LED events or not
169
feedcab9 170 static TObjArray* fgkMaps; // ALTRO mappings for RCU0..RCUX
1e7c9b89 171
e853f058 172 ClassDef(AliEMCALRecParam,12) // Reconstruction parameters
1e7c9b89 173
174 } ;
3a8be91c 175
176#endif // ALIEMCALRECPARAM_H
8ba062b1 177