add external setter for MC parents list
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALRecParam.h
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
11 // and retrieve it in AliEMCALClusterizerv1, AliEMCALPID,
12 // AliEMCALTracker and use it to configure AliEMCALRawUtils
13 // 
14 // 
15 // Author: Yuri Kharlov
16 //-----------------------------------------------------------------------------
17
18 // --- ROOT system ---
19
20 #include "AliDetectorRecoParam.h" 
21 #include "AliLog.h"
22
23 class AliEMCALRecParam : public AliDetectorRecoParam
24 {
25  public:
26
27   enum AliEMCALClusterizerFlag
28   {
29     kClusterizerv1  = 0,
30     kClusterizerNxN = 1,
31     kClusterizerv2  = 2,
32     kClusterizerFW  = 3
33   };
34   
35   AliEMCALRecParam() ;
36   AliEMCALRecParam(const AliEMCALRecParam& recParam);
37   AliEMCALRecParam& operator = (const AliEMCALRecParam& recParam);
38   virtual ~AliEMCALRecParam() {}
39   
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            ;}
51
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; }
61
62   //PID (Guenole)
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   
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;}
96   
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; }
108
109         
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; }
120
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
129   virtual void Print(Option_t * option="") const;
130   
131   static AliEMCALRecParam* GetDefaultParameters();
132   static AliEMCALRecParam* GetLowFluxParam();
133   static AliEMCALRecParam* GetHighFluxParam();
134   static AliEMCALRecParam* GetCalibParam();
135   static AliEMCALRecParam* GetCosmicParam();
136
137   static const  TObjArray* GetMappings();
138   
139   void    SetClusterizerFlag(Short_t val) { fClusterizerFlag = val;  }
140   Short_t GetClusterizerFlag() const      { return fClusterizerFlag; }
141   
142  private:
143   //Clustering
144   Float_t fClusteringThreshold ; // Minimum energy to seed a EC digit in a cluster
145   Float_t fW0 ;                  // Logarithmic weight for the cluster center of gravity calculation
146   Float_t fMinECut;              // Minimum energy for a digit to be a member of a cluster
147   Bool_t  fUnfold;               // Flag to perform cluster unfolding
148   Float_t fLocMaxCut;            // Minimum energy difference to consider local maxima in a cluster
149   Float_t fTimeCut ;             // Maximum time of digits with respect to EMC cluster max.
150   Float_t fTimeMin ;             // Minimum time of digits
151   Float_t fTimeMax ;             // Maximum time of digits
152   Short_t fClusterizerFlag ;     // Choice of the clusterizer; Default selection (v1) is zero
153   Int_t   fNRowDiff;             // NxN: How many neighbors to consider along row (phi)
154   Int_t   fNColDiff;             // NxN: How many neighbors to consider along col (eta)
155
156   //PID (Guenole)
157   Double_t fGamma[6][6];         // Parameter to Compute PID for photons     
158   Double_t fGamma1to10[6][6];    // Parameter to Compute PID not used
159   Double_t fHadron[6][6];            // Parameter to Compute PID for hadrons     
160   Double_t fHadron1to10[6][6];   // Parameter to Compute PID for hadrons between 1 and 10 GeV    
161   Double_t fHadronEnergyProb[6]; // Parameter to Compute PID for energy ponderation for hadrons          
162   Double_t fPiZeroEnergyProb[6]; // Parameter to Compute PID for energy ponderation for Pi0      
163   Double_t fGammaEnergyProb[6];  // Parameter to Compute PID for energy ponderation for gamma    
164   Double_t fPiZero[6][6];        // Parameter to Compute PID for pi0     
165   
166   
167   //Track-Matching (Alberto; Revised by Rongrong)
168   Double_t  fMthCutEta;            // eta-difference cut for track matching
169   Double_t  fMthCutPhi;            // phi-difference cut for track matching
170   Double_t  fStep;                 // Extrapolate length of each step
171   Double_t  fTrkCutPt;             // Minimum pT cut on tracks. Needed for Pb-Pb runs
172   Double_t  fTrkCutNITS;           // Number of ITS hits for track matching
173   Double_t  fTrkCutNTPC;           // Number of TPC hits for track matching
174   
175   //Raw signal fitting parameters (Jenn)
176   Double_t fHighLowGainFactor;     // gain factor to convert between high and low gain
177   Int_t    fOrderParameter;        // order parameter for raw signal fit
178   Double_t fTau;                   // decay constant for raw signal fit
179   Int_t    fNoiseThreshold;        // threshold to consider signal or noise
180   Int_t    fNPedSamples;           // number of time samples to use in pedestal calculation
181   Bool_t   fRemoveBadChannels;     // select if bad channels are removed before fitting
182   Int_t    fFittingAlgorithm;      // select the fitting algorithm
183   Bool_t   fUseFALTRO;             // get FALTRO (trigger) and put it on trigger digits.
184   Bool_t   fFitLEDEvents;          // fit LED events or not
185         
186   //Shower shape parameters (Adam)
187   Double_t fSSPars[8]; // Unfolding shower shape parameters
188   Double_t fPar5[3];   // UF SSPar nr 5
189   Double_t fPar6[3];   // UF SSPar nr 6
190
191   static TObjArray* fgkMaps;       // ALTRO mappings for RCU0..RCUX
192   
193   ClassDef(AliEMCALRecParam,16)     // Reconstruction parameters
194 };
195
196 #endif //  ALIEMCALRECPARAM_H
197