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

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Class containing constant common parameters                               //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

/* $Id$ */

#include "TObject.h"

#include "AliTRDSimParam.h"

class TRootIoCtor;

class AliTRDpadPlane;

class AliTRDCommonParam : public TObject
{

  public:
  
    enum { kNlayer  = 6
         , kNstack  = 5
         , kNsector = 18
         , kNdet    = 540 };

    enum { kXenon =   0
	 , kArgon =   1   };
    
    AliTRDCommonParam(TRootIoCtor *);
    AliTRDCommonParam(const AliTRDCommonParam &p);   
    AliTRDCommonParam &operator=(const AliTRDCommonParam &p); 
    virtual        ~AliTRDCommonParam();

    static AliTRDCommonParam *Instance();
    static  void    Terminate();

    virtual void    Copy(TObject &p) const;
    
    void            SetExB(Int_t exbOn = 1)                        { fExBOn             = exbOn;    }
    void            SetSamplingFrequency(Float_t freq)             { fSamplingFrequency = freq;     }
    void            SetXenon()                                     { fGasMixture        = kXenon; 
                                                                     AliTRDSimParam::Instance()->ReInit(); }
    void            SetArgon()                                     { fGasMixture        = kArgon; 
                                                                     AliTRDSimParam::Instance()->ReInit(); }

    Bool_t          ExBOn() const                                  { return fExBOn;                 }
    Bool_t          IsXenon() const                                { return (fGasMixture == kXenon) 
                                                                     ? kTRUE : kFALSE;              }
    Bool_t          IsArgon() const                                { return (fGasMixture == kArgon) 
                                                                     ? kTRUE : kFALSE;              }

    Int_t           GetGasMixture() const                          { return fGasMixture;            }
    Float_t         GetSamplingFrequency() const                   { return fSamplingFrequency;     }

    Float_t         GetOmegaTau(Float_t vdrift);
    Bool_t          GetDiffCoeff(Float_t &dl, Float_t &dt, Float_t vdrift);

    Double_t        TimeStruct(Float_t vdrift, Double_t xd, Double_t z);

  protected:

    void            SampleTimeStruct(Float_t vdrift);

    static AliTRDCommonParam *fgInstance;          //  Instance of this class (singleton implementation)
    static Bool_t             fgTerminated;        //  Defines if this class has already been terminated    

    Int_t                     fExBOn;              //  Switch for the ExB effects

    Float_t                   fDiffusionT;         //  Transverse drift coefficient
    Float_t                   fDiffusionL;         //  Longitudinal drift coefficient
    Float_t                   fDiffLastVdrift;     //  The structures are valid for fLastVdrift (caching)

    Float_t                  *fTimeStruct1;        //! Time Structure of Drift Cells
    Float_t                  *fTimeStruct2;        //! Time Structure of Drift Cells
    Float_t                   fVDlo;               //  Lower drift velocity, for interpolation
    Float_t                   fVDhi;               //  Higher drift velocity, for interpolation
    Float_t                   fTimeLastVdrift;     //  The structures are valid for fLastVdrift (caching)

    Float_t                   fSamplingFrequency;  //  Sampling Frequency in MHz

    Int_t                     fGasMixture;         //  Gas mixture: 0-Xe/C02 1-Ar/CO2. 
  
  private:

    // This is a singleton, constructor is private!  
    AliTRDCommonParam();
  
    ClassDef(AliTRDCommonParam,7)                  // The constant parameters common to simulation and reconstruction

};
#endif
 AliTRDCommonParam.h:1
 AliTRDCommonParam.h:2
 AliTRDCommonParam.h:3
 AliTRDCommonParam.h:4
 AliTRDCommonParam.h:5
 AliTRDCommonParam.h:6
 AliTRDCommonParam.h:7
 AliTRDCommonParam.h:8
 AliTRDCommonParam.h:9
 AliTRDCommonParam.h:10
 AliTRDCommonParam.h:11
 AliTRDCommonParam.h:12
 AliTRDCommonParam.h:13
 AliTRDCommonParam.h:14
 AliTRDCommonParam.h:15
 AliTRDCommonParam.h:16
 AliTRDCommonParam.h:17
 AliTRDCommonParam.h:18
 AliTRDCommonParam.h:19
 AliTRDCommonParam.h:20
 AliTRDCommonParam.h:21
 AliTRDCommonParam.h:22
 AliTRDCommonParam.h:23
 AliTRDCommonParam.h:24
 AliTRDCommonParam.h:25
 AliTRDCommonParam.h:26
 AliTRDCommonParam.h:27
 AliTRDCommonParam.h:28
 AliTRDCommonParam.h:29
 AliTRDCommonParam.h:30
 AliTRDCommonParam.h:31
 AliTRDCommonParam.h:32
 AliTRDCommonParam.h:33
 AliTRDCommonParam.h:34
 AliTRDCommonParam.h:35
 AliTRDCommonParam.h:36
 AliTRDCommonParam.h:37
 AliTRDCommonParam.h:38
 AliTRDCommonParam.h:39
 AliTRDCommonParam.h:40
 AliTRDCommonParam.h:41
 AliTRDCommonParam.h:42
 AliTRDCommonParam.h:43
 AliTRDCommonParam.h:44
 AliTRDCommonParam.h:45
 AliTRDCommonParam.h:46
 AliTRDCommonParam.h:47
 AliTRDCommonParam.h:48
 AliTRDCommonParam.h:49
 AliTRDCommonParam.h:50
 AliTRDCommonParam.h:51
 AliTRDCommonParam.h:52
 AliTRDCommonParam.h:53
 AliTRDCommonParam.h:54
 AliTRDCommonParam.h:55
 AliTRDCommonParam.h:56
 AliTRDCommonParam.h:57
 AliTRDCommonParam.h:58
 AliTRDCommonParam.h:59
 AliTRDCommonParam.h:60
 AliTRDCommonParam.h:61
 AliTRDCommonParam.h:62
 AliTRDCommonParam.h:63
 AliTRDCommonParam.h:64
 AliTRDCommonParam.h:65
 AliTRDCommonParam.h:66
 AliTRDCommonParam.h:67
 AliTRDCommonParam.h:68
 AliTRDCommonParam.h:69
 AliTRDCommonParam.h:70
 AliTRDCommonParam.h:71
 AliTRDCommonParam.h:72
 AliTRDCommonParam.h:73
 AliTRDCommonParam.h:74
 AliTRDCommonParam.h:75
 AliTRDCommonParam.h:76
 AliTRDCommonParam.h:77
 AliTRDCommonParam.h:78
 AliTRDCommonParam.h:79
 AliTRDCommonParam.h:80
 AliTRDCommonParam.h:81
 AliTRDCommonParam.h:82
 AliTRDCommonParam.h:83
 AliTRDCommonParam.h:84
 AliTRDCommonParam.h:85
 AliTRDCommonParam.h:86
 AliTRDCommonParam.h:87
 AliTRDCommonParam.h:88
 AliTRDCommonParam.h:89
 AliTRDCommonParam.h:90
 AliTRDCommonParam.h:91
 AliTRDCommonParam.h:92
 AliTRDCommonParam.h:93
 AliTRDCommonParam.h:94
 AliTRDCommonParam.h:95
 AliTRDCommonParam.h:96
 AliTRDCommonParam.h:97