Go to the documentation of this file.
3 #include <FairLogger.h>
6 #include <TGenericClassInfo.h>
10 #include <TObjArray.h>
11 #include <TObjString.h>
51 TObjArray* so = s.Tokenize(
"/");
52 for (Int_t ie(0); ie < so->GetEntries(); ie += 2) {
53 name = ((TObjString*) (*so)[ie])->String();
54 if (name.EqualTo(
"Module"))
55 fModuleId = ((TObjString*) (*so)[ie + 1])->String().Atoi();
56 else if (name.EqualTo(
"Ua"))
57 fUa = ((TObjString*) (*so)[ie + 1])->String().Atoi();
58 else if (name.EqualTo(
"Ud"))
59 fUd = ((TObjString*) (*so)[ie + 1])->String().Atoi();
60 else if (name.EqualTo(
"Gas")) {
61 TString gas = ((TObjString*) (*so)[ie + 1])->String();
62 if (gas.EqualTo(
"Ar"))
64 else if (gas.EqualTo(
"Xe"))
67 LOG(warn) << GetName() <<
":: gas type \"" << gas
68 <<
"\" not defined. Default to Xe.";
102 if (gasId == 0) gain *= 0.6;
104 Float_t efC = gain * ekev * 0.16 / wi;
107 " ua[V]=%d gain[%5.2e] wi[eV]=%5.2f :: E[keV]=%6.3f E[fC]=%6.2f\n",
135 LOG(warn) << GetName() <<
"::GetShellId: Atomic shell : " << shell
136 <<
" not defined for gas "
147 if (shellId < 0)
return 0;
155 LOG(warn) << GetName()
156 <<
"::GetBindingEnergy: Request atomic shell : " << shellId + 1
157 <<
" not defined for gas " << (gasId ?
"Ar" :
"Xe");
168 if (shellId < 0)
return 0;
170 return fgkBR[gasId][shellId];
175 const Char_t shellName[
NSHELLS] = {
'K',
'L',
'M'};
177 for (Int_t ishell(0); ishell <
NSHELLS; ishell++) {
179 return shellName[ishell];
181 LOG(debug) << GetName() <<
"::GetPEshell: Ex[keV] " << Ex
182 <<
" less than highes atomic shell binding energy : "
184 << (gasId ?
"Ar" :
"Xe");
191 Int_t by(ay->FindBin(y0)), bz(az->FindBin(z0));
192 Double_t tmin(
fDriftMap->GetBinContent(by, bz));
193 if (
VERBOSE) printf(
"GetDriftTime :: Start @ dt=%3d [ns]\n", Int_t(tmin));
199 printf(
"%s @ %4d ", GetName(),
fModuleId);
201 printf(
"%s[%4.1f%%] Ua[V]=%d Ud[V]=%d ",
214 Double_t y1 = y0 + dy,
z1 = z0 + dzdy * dy, dw(
fDw), dwh(0.5 * dw);
218 printf(
"ScanDriftTime :: Try : [%7.4f %7.4f] => [%7.4f %7.4f] dzdy[%5.2f] "
226 while (y1 < -dwh - 1e-3) {
230 while (y1 > dwh + 1.e-3) {
238 Int_t by(ay->FindBin(y1)), bz(az->FindBin(
z1)), nby(ay->GetNbins()),
240 Float_t dyStep = ay->GetBinWidth(1), tmin(500), tmax(0), tc(0);
241 while (by > 0 && by <= nby && bz <= nbz) {
242 bz = az->FindBin(
z1);
243 tc =
h->GetBinContent(by, bz);
247 if (tc < tmin) tmin = tc;
248 if (tc > tmax) tmax = tc;
250 z1 += TMath::Abs(dzdy) * dyStep;
259 if (
VERBOSE) printf(
"ScanDriftTime :: Start @ dt=%3d [ns]\n", Int_t(tmin));
271 printf(
"CbmTrdParModGas::SetDriftMap : Module[%2d] U[%4d %3d]\n",
static Float_t fgkBindingEnergy[2][NSHELLS]
binding energy in keV for first atomic shells of Ar and Xe
Float_t GetBindingEnergy(const Char_t shell='K', Bool_t main=kTRUE) const
Get binding energy for the working gas.
static Float_t fgkE0
min energy [ADC ch] which can be measured
Double_t GetDriftTime(Double_t y0, Double_t z0) const
UShort_t fUa
anode voltage
Int_t GetNobleGasType() const
static Float_t fgkGGainUaPar[2]
gas gaian parametrization on Ua for Ar on Buch detector
TString fFileNamePID
filename for PID database
Float_t GetNonIonizingBR(const Char_t shell='K') const
Get branching ration for radiative process on the.
Float_t EkevFC(Float_t ekev) const
Convert Energy debposit in keV to pad-plane charge taking into account the gas gain.
Data class with information on a STS local track.
virtual ~CbmTrdParModGas()
Int_t GetShellId(const Char_t shell) const
Get atomic shell index.
static Float_t fgkBR[2][NSHELLS - 1]
branching ratio for non-ionizing decay of Ar and Xe
Definition of generic parameters for one TRD module.
Double_t GetNobleGas() const
ClassImp(CbmConverterManager) InitStatus CbmConverterManager
TH2F * fDriftMap
drift time map for one amplification cell
const Char_t * GetNobleGasName() const
Double_t fPercentCO2
Percentage of CO2.
Char_t GetPEshell(Float_t Ex) const
Get first atomic shell which can be excited by PE effect.
void SetDriftMap(TH2F *hm, TDirectory *d)
Load drift map for current settings from repository.
UShort_t fUd
drift voltage
Double_t fDw
anode wire pitch
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.
const Char_t * GetDetName() const
void SetNobleGasType(Int_t ar=1)
CbmTrdParModGas(const char *title="TRD gas properties definition")
virtual void Print(Option_t *opt="") const
Definition of gas parameters for one TRD module.
static Float_t fgkWi[3]
average energy to produce one electron-ion pair for ar, xe and co2