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

/* $Id$ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
// Class containing constant simulation parameters                        //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include "TObject.h"

class AliTRDSimParam : public TObject {
  
 public:
  
          enum { kNplan =   6
               , kNcham =   5
               , kNsect =  18
               , kNdet  = 540 };

  static  AliTRDSimParam *Instance();
  static  void     Terminate();
  
  AliTRDSimParam(const AliTRDSimParam &p);   
  AliTRDSimParam &operator=(const AliTRDSimParam &p); 

  virtual void     Copy(TObject &p) const;
  
          void     SetGasGain(Float_t gasgain)               { fGasGain           = gasgain;          }
          void     SetNoise(Float_t noise)                   { fNoise             = noise;            }
          void     SetChipGain(Float_t chipgain)             { fChipGain          = chipgain;         }
          void     SetADCoutRange(Float_t range)             { fADCoutRange       = range;            }
          void     SetADCinRange(Float_t range)              { fADCinRange        = range;            }
          void     SetADCbaseline(Int_t basel)               { fADCbaseline       = basel;            }   
          void     SetDiffusion(Int_t diffOn = 1)            { fDiffusionOn       = diffOn;           }
          void     SetElAttach(Int_t elOn = 1)               { fElAttachOn        = elOn;             }
          void     SetElAttachProp(Float_t prop)             { fElAttachProp      = prop;             }
          void     SetTimeResponse(Int_t trfOn = 1)          { fTRFOn             = trfOn; ReInit();  }  
          void     SetCrossTalk(Int_t ctOn = 1)              { fCTOn              = ctOn; ReInit();   }
          void     SetPadCoupling(Float_t v)                 { fPadCoupling       = v;                }
          void     SetTimeCoupling(Float_t v)                { fTimeCoupling      = v;                }
          void     SetTimeStruct(Bool_t tsOn = 1)            { fTimeStructOn      = tsOn;             }
          void     SetPadResponse(Int_t prfOn = 1)           { fPRFOn             = prfOn;            }
          void     SetNTimeBins(Int_t ntb)                   { fNTimeBins         = ntb;              }
          void     SetNTBoverwriteOCDB(Bool_t over = kTRUE)  { fNTBoverwriteOCDB  = over;             }

          Float_t  GetGasGain() const                        { return fGasGain;                       }
          Float_t  GetNoise() const                          { return fNoise;                         }
          Float_t  GetChipGain() const                       { return fChipGain;                      }
          Float_t  GetADCoutRange() const                    { return fADCoutRange;                   }
          Float_t  GetADCinRange() const                     { return fADCinRange;                    }
          Int_t    GetADCbaseline() const                    { return fADCbaseline;                   }
          Float_t  GetTRFlo() const                          { return fTRFlo;                         }
          Float_t  GetTRFhi() const                          { return fTRFhi;                         }
          Float_t  GetPadCoupling() const                    { return fPadCoupling;                   }
          Float_t  GetTimeCoupling() const                   { return fTimeCoupling;                  }
          Int_t    GetNTimeBins() const                      { return fNTimeBins;                     }
          Bool_t   GetNTBoverwriteOCDB() const               { return fNTBoverwriteOCDB;              }

          Bool_t   DiffusionOn() const                       { return fDiffusionOn;                   }
          Bool_t   ElAttachOn() const                        { return fElAttachOn;                    } 
          Float_t  GetElAttachProp() const                   { return fElAttachProp;                  }
          Bool_t   TRFOn() const                             { return fTRFOn;                         }
          Bool_t   CTOn() const                              { return fCTOn;                          }
          Bool_t   TimeStructOn() const                      { return fTimeStructOn;                  }
          Bool_t   PRFOn() const                             { return fPRFOn;                         }

          Double_t TimeResponse(Double_t time) const;  
          Double_t CrossTalk(Double_t time) const; 

          void     ReInit();
  
 protected:

  static AliTRDSimParam* fgInstance;   //  Instance of this class (singleton implementation)
  static Bool_t          fgTerminated; //  Defines if this class has already been terminated and
                                       //  therefore does not return instances in GetInstance anymore
  
          // Digitization parameter
          Float_t  fGasGain;           //  Gas gain
          Float_t  fNoise;             //  Electronics noise
          Float_t  fChipGain;          //  Electronics gain
  
          Float_t  fADCoutRange;       //  ADC output range (number of channels)
          Float_t  fADCinRange;        //  ADC input range (input charge)
          Int_t    fADCbaseline;       //  ADC intrinsic baseline in ADC channel
  
          Int_t    fDiffusionOn;       //  Switch for the diffusion
  
          Int_t    fElAttachOn;        //  Switch for the electron attachment
          Float_t  fElAttachProp;      //  Propability for electron attachment (for 1m)
  
          Int_t    fTRFOn;             //  Switch for the time response
          Float_t *fTRFsmp;            //! Integrated time response
          Int_t    fTRFbin;            //  Number of bins for the TRF
          Float_t  fTRFlo;             //  Lower boundary of the TRF
          Float_t  fTRFhi;             //  Higher boundary of the TRF
          Float_t  fTRFwid;            //  Bin width of the integrated TRF
  
          Int_t    fCTOn;              //  Switch for cross talk
          Float_t *fCTsmp;             //! Integrated cross talk
  
          Float_t  fPadCoupling;       //  Pad coupling factor
          Float_t  fTimeCoupling;      //  Time coupling factor (image charge of moving ions)
          Int_t    fTimeStructOn;      //  Switch for cell time structure
  
          Int_t    fPRFOn;             //  Switch for the pad response

          Int_t    fNTimeBins;         //  Number of time bins (only used it fNTBoverwriteOCDB = true)
          Bool_t   fNTBoverwriteOCDB;  //  Switch to overwrite number of time bins from PCDB

 private:

  // This is a singleton, constructor is private!  
  AliTRDSimParam();
  virtual ~AliTRDSimParam();

          void Init();
          void SampleTRF();
  
  ClassDef(AliTRDSimParam,6)          // The TRD simulation parameters

};

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