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

/* $Id$*/
// Revision of includes 07/05/2004
//
/// \ingroup base
/// \class AliMUONConstants
/// \brief MUON global constants

#include <TObject.h>

class AliMUONConstants : public TObject {
 public:
    /// Return number of chambers
  static Int_t    NCh();
    /// Return number of tracking chambers
  static Int_t    NTrackingCh();
    /// Return number of tracking stations
    static Int_t    NTrackingSt() {return fgNTrackingSt;}
    /// Return number of trigger chambers
    static Int_t    NTriggerCh() {return NCh()-NTrackingCh();}
    /// Return number of trigger circuits
    static Int_t    NTriggerCircuit() {return fgNTriggerCircuit;}
    /// Return number of detection element
    static Int_t    NDetElem() {return fgNDetElem;}
    /// Return number of geometry modules
    static Int_t    NGeomModules() {return fgNGeomModules;}
    /// Return position of chamber i
    static Float_t  DefaultChamberZ(Int_t i) {return fgDefaultChamberZ[i];}
    /// Return ratio between trigger chambers
    static Float_t  DefaultRatioTriggerChamber(Int_t i) {return fgDefaultRatioTriggerChamber[i];}
    /// Return Inclination with respect the vertical axis of stations 345
    static Float_t  St345Inclination()       {return fgSt345inclination;}
    /// Return pointer to array of positions
    static Float_t* DefaultChamberZ()        {return fgDefaultChamberZ;}
    /// Return chamber i inner diameter
    static Float_t  Dmin(Int_t i)            {return fgDmin[i];}
    /// Return chamber i inner radius
    static Float_t  Rmin(Int_t i)            {return Dmin(i)/2.0;}
    /// Return chamber i outer diameter
    static Float_t  Dmax(Int_t i)            {return fgDmax[i];}
    /// Return chamber i outer radius
    static Float_t  Rmax(Int_t i)            {return Dmax(i)/2.0;}
    /// Return maximum zoom for event display
    static Int_t    MaxZoom()                {return fgMaxZoom;}
    /// Return half-distance between two half-chambers
    static Float_t  DzCh()                   {return fgDzCh;}
    /// Return half-distance between two slats
    static Float_t  DzSlat()                 {return fgDzSlat;}
    /// Return chamber number according z position of hit.
    static  Int_t ChamberNumber(Float_t z, bool warn = false); 
    /// Return SqrtKx3 for Slat
    static Float_t SqrtKx3()                 {return fgSqrtKx3;}
    /// Return SqrtKy3 for Slat
    static Float_t SqrtKy3()                 {return fgSqrtKy3;}
    /// Return SqrtKx3 for Station 1 & 2
    static Float_t SqrtKx3St1()              {return fgSqrtKx3St1;}
    /// Return SqrtKy3 for Station 1 & 2
    static Float_t SqrtKy3St1()              {return fgSqrtKy3St1;}
    /// Return charge correlation (needed for response and for cluster finder !?)
    static Float_t ChargeCorrel()            {return fgChargeCorrel;}
    /// Return charge correlation for Station 1 & 2 (needed for response and for cluster finder !?)
    static Float_t ChargeCorrelSt1()         {return fgChargeCorrelSt1;}
    /// Return wire pitch
    static Float_t Pitch()    {return fgPitch;}
    /// Return wire pitch for Station 1 & 2
    static Float_t PitchSt1() {return fgPitchSt1;}
    /// Return coil z-position
    static Double_t CoilZ() {return fgCoilZ;}
    /// Return coil lenght
    static Double_t CoilL() {return fgCoilL;}
    /// Return yoke z-position
    static Double_t YokeZ() {return fgYokeZ;}
    /// Return yoke lenght
    static Double_t YokeL() {return fgYokeL;}
    /// Return z-position of absorber begining
    static Double_t AbsZBeg() {return fgkAbsZBeg;}
    /// Return z-position of absorber end
    static Double_t AbsZEnd() {return fgkAbsZEnd;}
    /// Return chamber thickness in X0
    static Double_t ChamberThicknessInX0(Int_t chId) {return (chId >= 0 && chId < 10) ? fgChamberThicknessInX0[chId] : 0.;}
    /// Return Trigger ToF Limit (75 ns)
    static Float_t TriggerTofLimit() {return fgkTriggerTofLimit;}
    /// Return default trigger chamber resolution DUE TO ALIGNMENT ONLY in non bending direction
    static Double_t TriggerNonBendingReso() {return fgkTriggerNonBendingReso;}
    /// Return default trigger chamber resolution DUE TO ALIGNMENT ONLY in bending direction
    static Double_t TriggerBendingReso() {return fgkTriggerBendingReso;}
    /// Return z-position of muon filter begining
    static Double_t MuonFilterZBeg() {return fgkMuonFilterZBeg;}
    /// Return z-position of muon filter end
    static Double_t MuonFilterZEnd() {return fgkMuonFilterZEnd;}
    /// Return radiation length (in cm) of muon filter
    static Double_t MuonFilterX0() {return fgkMuonFilterX0;}

    /// Return the most probable bending momentum (GeV/c) (used when B = 0)
    static Double_t GetMostProbBendingMomentum() { return fgkMostProbBendingMomentum; }
      
    /// Return average arrival time to chamber i
    static Float_t  AverageChamberT(Int_t i) {return fgAverageChamberT[i];}
    /// Return a reduced total charge
    static Float_t  ReducedQTot(Float_t qtot, Float_t timeDif);

    // Return conversionfactor fc to adc
    static Float_t FC2ADC();
 
    // Return default a0
    static Float_t DefaultA0() { return fgkDefaultA0; }
    // Return default adc2mv
    static Float_t DefaultADC2MV() { return fgkDefaultADC2MV; }
    // Return default Capa
    static Float_t DefaultCapa() { return fgkDefaultCapa; }

 protected:
    /// Default constructor
    AliMUONConstants() : TObject() {}
    /// Destructor
    virtual ~AliMUONConstants(){}

 private:
    static Int_t  fgNTrackingSt;        ///<  Number of Tracking Stations
    static Int_t  fgNTriggerCircuit;    ///<  Number of Trigger Circuits
    static Int_t  fgNDetElem;           ///<  Number of Detection Elements.
    static Int_t  fgNGeomModules;       ///<  Number of Geometry modules   

    static Float_t  fgDefaultChamberZ[14];		//!< Z-positions of chambers
    static Float_t  fgDefaultChamberMinZ[14];		//!< Minimum z-positions of chambers
    static Float_t  fgDefaultChamberMaxZ[14];		//!< Maximum z-positions of chambers
    static Float_t  fgDefaultRatioTriggerChamber[4];	///< Ratio between trigger chambers
    static Float_t  fgSt345inclination;			//!< Inclination with respect the vertical axis of stations 345
    static Float_t  fgDmin[7];				//!< Inner diameter
    static Float_t  fgDmax[7];				//!< Outer diameter

    static Float_t  fgDzCh;             ///< Half-distance between two half-chambers 
    static Float_t  fgDzSlat;           ///< Half-distance between two slat on the same chamber
    static Float_t  fgSqrtKx3;          ///< SqrtKx3 for St2 & Slat
    static Float_t  fgSqrtKy3;          ///< SqrtKy3 for St2 & Slat
    static Float_t  fgSqrtKx3St1;       ///< SqrtKx3 for Station 1 
    static Float_t  fgSqrtKy3St1;       ///< SqrtKy3 for Station 1 
 
    static Float_t  fgChargeCorrel;      ///< Charge correlation for St2 & Slats
    static Float_t  fgChargeCorrelSt1;   ///< Charge correlation for Station 1

    static Float_t  fgPitch;             ///< Wire pitch for St2 & Slats
    static Float_t  fgPitchSt1;          ///< Wire pitch for Station 1

    static Double_t  fgChamberThicknessInX0[10]; ///< default chamber thickness in X0 for reconstruction
    
    static Double_t fgCoilZ; ///< Coil z-position
    static Double_t fgCoilL; ///< Coil lenght
    static Double_t fgYokeZ; ///< Yoke z-position
    static Double_t fgYokeL; ///< Yoke lenght

    static const Double_t fgkAbsZBeg; ///< z-position of the begining of the absorber
    static const Double_t fgkAbsZEnd; ///< z-position of the end of the absorber
    
    static Int_t    fgMaxZoom;          ///< Maximum Zoom for event display
    static Float_t  fgkTriggerTofLimit; ///< Particle above this threshold are discarded in trigger algorithm
    
    static const Double_t fgkTriggerNonBendingReso; ///< default trigger chamber resolution in the non-bending direction, DUE TO ALIGNMENT ONLY
    static const Double_t fgkTriggerBendingReso; ///< default trigger chamber resolution in the bending direction, DUE TO ALIGNMENT ONLY 
    
    static const Double_t fgkMuonFilterZBeg; ///< z-position of the begining of the muon filter
    static const Double_t fgkMuonFilterZEnd; ///< z-position of the end of the muon filter
    static const Double_t fgkMuonFilterX0; ///< x0 of the muon filter
    
    static const Double_t fgkMostProbBendingMomentum; ///< most probable value (GeV/c) of muon momentum in bending plane (used when B = 0) needed to get some "reasonable" corrections for MCS and E loss even if B = 0

    static Float_t fgAverageChamberT[14]; ///<average arrival time to chamber
  
    static const Float_t fgkDefaultA0;     ///< Default gain A0
    static const Float_t fgkDefaultADC2MV; ///< Default ADC to mv conversion factor 
    static const Float_t fgkDefaultCapa;   ///< Default Capa

    ClassDef(AliMUONConstants, 0) // MUON global constants 
};
	
#endif

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