CbmRoot
CbmTrdParModGas.h
Go to the documentation of this file.
1 #ifndef CBMTRDPARMODGAS_H
2 #define CBMTRDPARMODGAS_H
3 
4 #include <Rtypes.h> // for CLRBIT, SETBIT, TESTBIT, THashConsistencyH...
5 #include <RtypesCore.h> // for Double_t, Int_t, Float_t, Char_t, UShort_t
6 #include <TString.h> // for TString
7 
8 #include "CbmTrdParMod.h" // for CbmTrdParMod
9 
10 class TDirectory;
11 class TH2F;
12 
13 #define NSHELLS 3 // no of atomic shells to be considered in the PE effect
14 
16 class CbmTrdParModGas : public CbmTrdParMod {
17 public:
19  kDetType = 0
20  ,
22  ,
23  kPID
24  };
25  CbmTrdParModGas(const char* title = "TRD gas properties definition");
26  virtual ~CbmTrdParModGas();
27 
28  Double_t GetCO2() const { return fPercentCO2; }
29  const Char_t* GetDetName() const { return (GetDetType() ? "MB" : "GSI"); }
30  Int_t GetDetType() const { return TESTBIT(fConfig, kDetType); }
31  Double_t GetDriftTime(Double_t y0, Double_t z0) const;
32  void GetElectricPotential(Int_t& ua, Int_t& ud) const {
33  ua = fUa;
34  ud = fUd;
35  }
40  Float_t GetBindingEnergy(const Char_t shell = 'K', Bool_t main = kTRUE) const;
45  Float_t EkevFC(Float_t ekev) const;
46  TString GetFileName() const { return fFileNamePID; }
47  Double_t GetNobleGas() const { return 1. - fPercentCO2; }
48  const Char_t* GetNobleGasName() const {
49  return (GetNobleGasType() - 1 ? "Ar" : "Xe");
50  }
51  Int_t GetNobleGasType() const {
52  return TESTBIT(fConfig, kNobleGasType) ? 2 : 1;
53  }
57  Float_t GetNonIonizingBR(const Char_t shell = 'K') const;
62  Char_t GetPEshell(Float_t Ex) const;
63  Int_t GetPidType() const { return TESTBIT(fConfig, kPID); }
67  Int_t GetShellId(const Char_t shell) const;
68  UShort_t GetUanode() const { return fUa; }
69  UShort_t GetUdrift() const { return fUd; }
70  virtual void Print(Option_t* opt = "") const;
80  Double_t
81  ScanDriftTime(Double_t y0, Double_t z0, Double_t dzdy, Double_t dy) const;
82 
89  void SetDriftMap(TH2F* hm, TDirectory* d);
90  void SetDw(Double_t dw) { fDw = dw; }
91  void SetGasThick(Double_t sz) { fGasThick = sz; }
92  void SetDetType(Int_t gsi = 0) {
93  gsi ? SETBIT(fConfig, kDetType) : CLRBIT(fConfig, kDetType);
94  }
95  void SetCO2(Double_t p) { fPercentCO2 = p; }
96  void SetFileName(const Char_t* fn) { fFileNamePID = fn; }
97  void SetNobleGas(Double_t p) { fPercentCO2 = 1 - p; }
98  void SetNobleGasType(Int_t ar = 1) {
99  ar ? SETBIT(fConfig, kNobleGasType) : CLRBIT(fConfig, kNobleGasType);
100  }
101  void SetPidType(Int_t like = 1) {
102  like ? SETBIT(fConfig, kPID) : CLRBIT(fConfig, kPID);
103  }
104  void SetElectricPotential(Int_t ua, Int_t ud) {
105  fUa = ua;
106  fUd = ud;
107  }
108 
109 private:
112 
113  Int_t fConfig;
114  UShort_t fUa;
115  UShort_t fUd;
116  Double_t fDw;
117  Double_t fGasThick;
118  Double_t fPercentCO2;
119  TH2F* fDriftMap;
120  TString fFileNamePID;
121 
122  static Float_t fgkBindingEnergy
123  [2]
124  [NSHELLS];
125  static Float_t
127  - 1];
128  static Float_t fgkWi
129  [3];
130  static Float_t fgkGGainUaPar
131  [2];
132  static Float_t fgkE0;
133  ClassDef(CbmTrdParModGas,
134  1) // Definition of gas parameters for one TRD module
135 };
136 
137 #endif
CbmTrdParModGas::fgkBindingEnergy
static Float_t fgkBindingEnergy[2][NSHELLS]
binding energy in keV for first atomic shells of Ar and Xe
Definition: CbmTrdParModGas.h:124
CbmTrdParModGas::fConfig
Int_t fConfig
config TRD gas see CbmTrdParModGasDef
Definition: CbmTrdParModGas.h:113
CbmTrdParModGas::GetBindingEnergy
Float_t GetBindingEnergy(const Char_t shell='K', Bool_t main=kTRUE) const
Get binding energy for the working gas.
Definition: CbmTrdParModGas.cxx:143
CbmTrdParModGas::GetCO2
Double_t GetCO2() const
Definition: CbmTrdParModGas.h:28
CbmTrdParModGas::fgkE0
static Float_t fgkE0
min energy [ADC ch] which can be measured
Definition: CbmTrdParModGas.h:132
CbmTrdParModGas::CbmTrdParModGasDef
CbmTrdParModGasDef
Definition: CbmTrdParModGas.h:18
CbmTrdParModGas::GetDriftTime
Double_t GetDriftTime(Double_t y0, Double_t z0) const
Definition: CbmTrdParModGas.cxx:189
CbmTrdParModGas::GetDetType
Int_t GetDetType() const
Definition: CbmTrdParModGas.h:30
CbmTrdParModGas::GetUdrift
UShort_t GetUdrift() const
Definition: CbmTrdParModGas.h:69
CbmTrdParModGas::GetElectricPotential
void GetElectricPotential(Int_t &ua, Int_t &ud) const
Definition: CbmTrdParModGas.h:32
CbmTrdParModGas::kNobleGasType
@ kNobleGasType
Definition: CbmTrdParModGas.h:21
CbmTrdParModGas::fUa
UShort_t fUa
anode voltage
Definition: CbmTrdParModGas.h:114
CbmTrdParModGas::GetNobleGasType
Int_t GetNobleGasType() const
Definition: CbmTrdParModGas.h:51
CbmTrdParModGas::fgkGGainUaPar
static Float_t fgkGGainUaPar[2]
gas gaian parametrization on Ua for Ar on Buch detector
Definition: CbmTrdParModGas.h:131
CbmTrdParModGas::fFileNamePID
TString fFileNamePID
filename for PID database
Definition: CbmTrdParModGas.h:120
CbmTrdParModGas::SetDw
void SetDw(Double_t dw)
Definition: CbmTrdParModGas.h:90
CbmTrdParModGas::GetUanode
UShort_t GetUanode() const
Definition: CbmTrdParModGas.h:68
CbmTrdParModGas::SetCO2
void SetCO2(Double_t p)
Definition: CbmTrdParModGas.h:95
CbmTrdParModGas::GetNonIonizingBR
Float_t GetNonIonizingBR(const Char_t shell='K') const
Get branching ration for radiative process on the.
Definition: CbmTrdParModGas.cxx:165
CbmTrdParModGas::operator=
const CbmTrdParModGas & operator=(const CbmTrdParModGas &ref)
CbmTrdParModGas::EkevFC
Float_t EkevFC(Float_t ekev) const
Convert Energy debposit in keV to pad-plane charge taking into account the gas gain.
Definition: CbmTrdParModGas.cxx:85
CbmTrdParModGas::GetPidType
Int_t GetPidType() const
Definition: CbmTrdParModGas.h:63
CbmTrdParModGas::SetFileName
void SetFileName(const Char_t *fn)
Definition: CbmTrdParModGas.h:96
CbmTrdParModGas::SetPidType
void SetPidType(Int_t like=1)
Definition: CbmTrdParModGas.h:101
CbmTrdParModGas::~CbmTrdParModGas
virtual ~CbmTrdParModGas()
Definition: CbmTrdParModGas.cxx:80
CbmTrdParModGas::GetShellId
Int_t GetShellId(const Char_t shell) const
Get atomic shell index.
Definition: CbmTrdParModGas.cxx:126
d
double d
Definition: P4_F64vec2.h:24
CbmTrdParModGas::fgkBR
static Float_t fgkBR[2][NSHELLS - 1]
branching ratio for non-ionizing decay of Ar and Xe
Definition: CbmTrdParModGas.h:127
CbmTrdParModGas::kPID
@ kPID
Definition: CbmTrdParModGas.h:23
CbmTrdParMod
Definition of generic parameters for one TRD module.
Definition: CbmTrdParMod.h:9
CbmTrdParModGas::SetGasThick
void SetGasThick(Double_t sz)
Definition: CbmTrdParModGas.h:91
CbmTrdParModGas::GetNobleGas
Double_t GetNobleGas() const
Definition: CbmTrdParModGas.h:47
CbmTrdParModGas::CbmTrdParModGas
CbmTrdParModGas(const CbmTrdParModGas &ref)
CbmTrdParModGas::fGasThick
Double_t fGasThick
gas thickness
Definition: CbmTrdParModGas.h:117
CbmTrdParModGas::fDriftMap
TH2F * fDriftMap
drift time map for one amplification cell
Definition: CbmTrdParModGas.h:119
CbmTrdParModGas::GetNobleGasName
const Char_t * GetNobleGasName() const
Definition: CbmTrdParModGas.h:48
CbmTrdParModGas::fPercentCO2
Double_t fPercentCO2
Percentage of CO2.
Definition: CbmTrdParModGas.h:118
CbmTrdParModGas::GetPEshell
Char_t GetPEshell(Float_t Ex) const
Get first atomic shell which can be excited by PE effect.
Definition: CbmTrdParModGas.cxx:174
CbmTrdParModGas::SetDriftMap
void SetDriftMap(TH2F *hm, TDirectory *d)
Load drift map for current settings from repository.
Definition: CbmTrdParModGas.cxx:265
NSHELLS
#define NSHELLS
Definition: CbmTrdParModGas.h:13
CbmTrdParModGas::fUd
UShort_t fUd
drift voltage
Definition: CbmTrdParModGas.h:115
CbmTrdParModGas::fDw
Double_t fDw
anode wire pitch
Definition: CbmTrdParModGas.h:116
CbmTrdParModGas::SetNobleGas
void SetNobleGas(Double_t p)
Definition: CbmTrdParModGas.h:97
CbmTrdParModGas::ScanDriftTime
Double_t ScanDriftTime(Double_t y0, Double_t z0, Double_t dzdy, Double_t dy) const
Get prompt signal for track segment in the y-z plane.
Definition: CbmTrdParModGas.cxx:210
CbmTrdParModGas::GetDetName
const Char_t * GetDetName() const
Definition: CbmTrdParModGas.h:29
CbmTrdParModGas::GetFileName
TString GetFileName() const
Definition: CbmTrdParModGas.h:46
CbmTrdParModGas::SetNobleGasType
void SetNobleGasType(Int_t ar=1)
Definition: CbmTrdParModGas.h:98
CbmTrdParModGas::CbmTrdParModGas
CbmTrdParModGas(const char *title="TRD gas properties definition")
Definition: CbmTrdParModGas.cxx:38
CbmTrdParMod.h
CbmTrdParModGas::SetDetType
void SetDetType(Int_t gsi=0)
Definition: CbmTrdParModGas.h:92
CbmTrdParModGas::Print
virtual void Print(Option_t *opt="") const
Definition: CbmTrdParModGas.cxx:198
CbmTrdParModGas
Definition of gas parameters for one TRD module.
Definition: CbmTrdParModGas.h:16
CbmTrdParModGas::fgkWi
static Float_t fgkWi[3]
average energy to produce one electron-ion pair for ar, xe and co2
Definition: CbmTrdParModGas.h:129
CbmTrdParModGas::kDetType
@ kDetType
Definition: CbmTrdParModGas.h:19
CbmTrdParModGas::SetElectricPotential
void SetElectricPotential(Int_t ua, Int_t ud)
Definition: CbmTrdParModGas.h:104