ROOT logo
#ifndef ALIITSURECOPARAM_H
#define ALIITSURECOPARAM_H
/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: AliITSURecoParam.h 57215 2012-06-17 14:47:08Z masera $ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Class with ITS reconstruction parameters                                  //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

class AliITSUTrackCond;

#include <TObjArray.h>
#include "AliDetectorRecoParam.h"

class AliITSURecoParam : public AliDetectorRecoParam
{
 public: 
  enum {kClus2Tracks,kPropBack,kRefitInw,kNTrackingPhases};   // tracking phases
  //
  AliITSURecoParam();
  AliITSURecoParam(Int_t nLr);
  virtual ~AliITSURecoParam();

  static AliITSURecoParam *GetLowFluxParam();// make reco parameters for low flux env.
  static AliITSURecoParam *GetHighFluxParam();// make reco parameters for high flux env. 
  static AliITSURecoParam *GetCosmicTestParam();// special setting for cosmic  

  Double_t    GetMaxDforV0dghtrForProlongation() const {return fMaxDforV0dghtrForProlongation;}
  Double_t    GetMaxDForProlongation()           const {return fMaxDForProlongation;}
  Double_t    GetMaxDZForProlongation()          const {return fMaxDZForProlongation;}
  Double_t    GetMinPtForProlongation()          const {return fMinPtForProlongation;}
  Double_t    GetTanLorentzAngle(Int_t lr)       const;
  Double_t    GetSigmaY2(Int_t lr)               const;
  Double_t    GetSigmaZ2(Int_t lr)               const;
  Bool_t      GetAllowDiagonalClusterization(Int_t lr) const;
  //
  Double_t    GetTPCITSWallRMin()                const {return fTPCITSWallRMin;}
  Double_t    GetTPCITSWallRMax()                const {return fTPCITSWallRMax;}
  Double_t    GetTPCITSWallZSpanH()              const {return fTPCITSWallZSpanH;}
  Double_t    GetTPCITSWallMaxStep()             const {return fTPCITSWallMaxStep;}
  TObjArray*  GetTrackingConditions()            const {return (TObjArray*)&fTrackingConditions;}
  Int_t       GetNTrackingConditions()           const {return fTrackingConditions.GetEntriesFast();}
  AliITSUTrackCond* GetTrackingCondition(Int_t i) const {return (AliITSUTrackCond*)fTrackingConditions[i];}
  Bool_t      GetUseMatLUT(Int_t step)           const {return (step<0||step>=kNTrackingPhases) ? kFALSE:fUseMatLUT[step];}
  Int_t GetTracker() const {return fTracker;}
  Bool_t GetSAonly() const {return fSAonly;}
  Int_t GetMaxROCycle() const {return fMaxROCycle;}
  //
  void        SetNLayers(Int_t n);
  void        SetTanLorentzAngle(Int_t lr, Double_t v);
  void        SetSigmaY2(Int_t lr, Double_t v);
  void        SetSigmaZ2(Int_t lr, Double_t v);
  void        SetAllowDiagonalClusterization(Int_t lr, Bool_t v);
  //
  void        SetMaxDforV0dghtrForProlongation(Double_t v)            {fMaxDforV0dghtrForProlongation = v;}
  void        SetMaxDForProlongation(Double_t v)                      {fMaxDForProlongation = v;}
  void        SetMaxDZForProlongation(Double_t v)                     {fMaxDZForProlongation = v;}
  void        SetMinPtForProlongation(Double_t v)                     {fMinPtForProlongation = v;}
  //
  void        SetTPCITSWallRMin(double v)                             {fTPCITSWallRMin = v;}
  void        SetTPCITSWallRMax(double v)                             {fTPCITSWallRMax = v;}
  void        SetTPCITSWallZSpanH(double v)                           {fTPCITSWallZSpanH = v;}
  void        SetTPCITSWallMaxStep(double v)                          {fTPCITSWallMaxStep = v;}
  //
  void        SetUseMatLUT(Int_t step, Bool_t v)                      {if (step>=0&&step<kNTrackingPhases) fUseMatLUT[step]=v;}
  void        AddTrackingCondition(AliITSUTrackCond* cond);
  virtual void Print(Option_t *opt="")  const;
  void SetTracker(Int_t opt) {fTracker=opt;}
  void SetSAonly(Bool_t sa=kTRUE) {fSAonly=sa;}
  void SetMaxROCycle(Int_t ro) {fMaxROCycle=ro;}
  //
 protected:
  Int_t          fNLayers;          // number of layers 
  //
  Double_t       fMaxDforV0dghtrForProlongation; // max. rphi imp. par. cut for V0 daughter
  Double_t       fMaxDForProlongation; // max. rphi imp. par. cut
  Double_t       fMaxDZForProlongation; // max. 3D imp. par. cut
  Double_t       fMinPtForProlongation; // min. pt cut
  //
  Double_t       fTPCITSWallRMin;       // minR
  Double_t       fTPCITSWallRMax;       // maxR
  Double_t       fTPCITSWallZSpanH;     // half Z span
  Double_t       fTPCITSWallMaxStep;    // max tracking step
  //
  Bool_t         fUseMatLUT[kNTrackingPhases]; // allow usage of material lookup table at given tracking step
  Bool_t*        fAllowDiagonalClusterization; //[fNLayers] allow clusters of pixels with common corners only
  Double_t*      fTanLorentzAngle;  //[fNLayers] Optional Lorentz angle for each layer
  Double_t*      fSigmaY2;          //[fNLayers] addition to road width^2
  Double_t*      fSigmaZ2;          //[fNLayers] addition to road width^2
  //
  TObjArray      fTrackingConditions; // array of tracking conditions for different iterations
  //
  static const Double_t fgkMaxDforV0dghtrForProlongation;      // default
  static const Double_t fgkMaxDForProlongation;                // default
  static const Double_t fgkMaxDZForProlongation;               // default
  static const Double_t fgkMinPtForProlongation;               // default
  static const Double_t fgkTanLorentzAngle;                    // default
  static const Double_t fgkSigmaRoadY;                         // default
  static const Double_t fgkSigmaRoadZ;                         // default
  //
  // hardwired params for TPC-ITS border layer
  static const Double_t fgkTPCITSWallRMin;                     // fiducial R min   
  static const Double_t fgkTPCITSWallRMax;                     // fiducial R max
  static const Double_t fgkTPCITSWallZSpanH;                   // half Z span
  static const Double_t fgkTPCITSWallMaxStep;                  // max tracking step
  //
  static const Bool_t   fgkUseMatLUT[kNTrackingPhases];        // def. mat. LUT usage 
  static const Bool_t   fgkAllowDiagonalClusterization;        // clusters of pixels with common corners
  //
  Int_t fTracker;  // 0 - global, 1 - cooked, 2 - CA
  Bool_t fSAonly;  // kTRUE, if ITSU standalone tracking only
  Int_t fMaxROCycle; // max RO cycle accepted by the cluster finder  
 private:
  AliITSURecoParam(const AliITSURecoParam & param);
  AliITSURecoParam & operator=(const AliITSURecoParam &param);

  ClassDef(AliITSURecoParam,6) // ITS reco parameters
};

//_____________________________________________________________________________
inline Double_t AliITSURecoParam::GetTanLorentzAngle(Int_t lr) const 
{
  // get tg of Lorentz Angle for the layer
  return (lr<fNLayers)&&fTanLorentzAngle ? fTanLorentzAngle[lr]:0;
}

//_____________________________________________________________________________
inline Double_t AliITSURecoParam::GetSigmaY2(Int_t lr) const 
{
  // get tg of Lorentz Angle for the layer
  return (lr<fNLayers)&&fSigmaY2 ? fSigmaY2[lr]:fgkSigmaRoadY*fgkSigmaRoadY; //0;
}

//_____________________________________________________________________________
inline Double_t AliITSURecoParam::GetSigmaZ2(Int_t lr) const 
{
  // get tg of Lorentz Angle for the layer
  return (lr<fNLayers)&&fSigmaZ2 ? fSigmaZ2[lr]:fgkSigmaRoadZ*fgkSigmaRoadZ;//0;
}

//_____________________________________________________________________________
inline Bool_t AliITSURecoParam::GetAllowDiagonalClusterization(Int_t lr) const
{
  // are diagonal clusters permitted
  return (lr<fNLayers)&&fAllowDiagonalClusterization ? fAllowDiagonalClusterization[lr]:fgkAllowDiagonalClusterization;
}

#endif


 AliITSURecoParam.h:1
 AliITSURecoParam.h:2
 AliITSURecoParam.h:3
 AliITSURecoParam.h:4
 AliITSURecoParam.h:5
 AliITSURecoParam.h:6
 AliITSURecoParam.h:7
 AliITSURecoParam.h:8
 AliITSURecoParam.h:9
 AliITSURecoParam.h:10
 AliITSURecoParam.h:11
 AliITSURecoParam.h:12
 AliITSURecoParam.h:13
 AliITSURecoParam.h:14
 AliITSURecoParam.h:15
 AliITSURecoParam.h:16
 AliITSURecoParam.h:17
 AliITSURecoParam.h:18
 AliITSURecoParam.h:19
 AliITSURecoParam.h:20
 AliITSURecoParam.h:21
 AliITSURecoParam.h:22
 AliITSURecoParam.h:23
 AliITSURecoParam.h:24
 AliITSURecoParam.h:25
 AliITSURecoParam.h:26
 AliITSURecoParam.h:27
 AliITSURecoParam.h:28
 AliITSURecoParam.h:29
 AliITSURecoParam.h:30
 AliITSURecoParam.h:31
 AliITSURecoParam.h:32
 AliITSURecoParam.h:33
 AliITSURecoParam.h:34
 AliITSURecoParam.h:35
 AliITSURecoParam.h:36
 AliITSURecoParam.h:37
 AliITSURecoParam.h:38
 AliITSURecoParam.h:39
 AliITSURecoParam.h:40
 AliITSURecoParam.h:41
 AliITSURecoParam.h:42
 AliITSURecoParam.h:43
 AliITSURecoParam.h:44
 AliITSURecoParam.h:45
 AliITSURecoParam.h:46
 AliITSURecoParam.h:47
 AliITSURecoParam.h:48
 AliITSURecoParam.h:49
 AliITSURecoParam.h:50
 AliITSURecoParam.h:51
 AliITSURecoParam.h:52
 AliITSURecoParam.h:53
 AliITSURecoParam.h:54
 AliITSURecoParam.h:55
 AliITSURecoParam.h:56
 AliITSURecoParam.h:57
 AliITSURecoParam.h:58
 AliITSURecoParam.h:59
 AliITSURecoParam.h:60
 AliITSURecoParam.h:61
 AliITSURecoParam.h:62
 AliITSURecoParam.h:63
 AliITSURecoParam.h:64
 AliITSURecoParam.h:65
 AliITSURecoParam.h:66
 AliITSURecoParam.h:67
 AliITSURecoParam.h:68
 AliITSURecoParam.h:69
 AliITSURecoParam.h:70
 AliITSURecoParam.h:71
 AliITSURecoParam.h:72
 AliITSURecoParam.h:73
 AliITSURecoParam.h:74
 AliITSURecoParam.h:75
 AliITSURecoParam.h:76
 AliITSURecoParam.h:77
 AliITSURecoParam.h:78
 AliITSURecoParam.h:79
 AliITSURecoParam.h:80
 AliITSURecoParam.h:81
 AliITSURecoParam.h:82
 AliITSURecoParam.h:83
 AliITSURecoParam.h:84
 AliITSURecoParam.h:85
 AliITSURecoParam.h:86
 AliITSURecoParam.h:87
 AliITSURecoParam.h:88
 AliITSURecoParam.h:89
 AliITSURecoParam.h:90
 AliITSURecoParam.h:91
 AliITSURecoParam.h:92
 AliITSURecoParam.h:93
 AliITSURecoParam.h:94
 AliITSURecoParam.h:95
 AliITSURecoParam.h:96
 AliITSURecoParam.h:97
 AliITSURecoParam.h:98
 AliITSURecoParam.h:99
 AliITSURecoParam.h:100
 AliITSURecoParam.h:101
 AliITSURecoParam.h:102
 AliITSURecoParam.h:103
 AliITSURecoParam.h:104
 AliITSURecoParam.h:105
 AliITSURecoParam.h:106
 AliITSURecoParam.h:107
 AliITSURecoParam.h:108
 AliITSURecoParam.h:109
 AliITSURecoParam.h:110
 AliITSURecoParam.h:111
 AliITSURecoParam.h:112
 AliITSURecoParam.h:113
 AliITSURecoParam.h:114
 AliITSURecoParam.h:115
 AliITSURecoParam.h:116
 AliITSURecoParam.h:117
 AliITSURecoParam.h:118
 AliITSURecoParam.h:119
 AliITSURecoParam.h:120
 AliITSURecoParam.h:121
 AliITSURecoParam.h:122
 AliITSURecoParam.h:123
 AliITSURecoParam.h:124
 AliITSURecoParam.h:125
 AliITSURecoParam.h:126
 AliITSURecoParam.h:127
 AliITSURecoParam.h:128
 AliITSURecoParam.h:129
 AliITSURecoParam.h:130
 AliITSURecoParam.h:131
 AliITSURecoParam.h:132
 AliITSURecoParam.h:133
 AliITSURecoParam.h:134
 AliITSURecoParam.h:135
 AliITSURecoParam.h:136
 AliITSURecoParam.h:137
 AliITSURecoParam.h:138
 AliITSURecoParam.h:139
 AliITSURecoParam.h:140
 AliITSURecoParam.h:141
 AliITSURecoParam.h:142
 AliITSURecoParam.h:143
 AliITSURecoParam.h:144
 AliITSURecoParam.h:145
 AliITSURecoParam.h:146
 AliITSURecoParam.h:147
 AliITSURecoParam.h:148
 AliITSURecoParam.h:149
 AliITSURecoParam.h:150
 AliITSURecoParam.h:151
 AliITSURecoParam.h:152
 AliITSURecoParam.h:153
 AliITSURecoParam.h:154