X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDSimParam.cxx;h=e6ce23c21d36755739483e7843c958d1639f4939;hb=5c85bc96ca2128c202831bb97fe4139dcd569a27;hp=cd3406675a2e31e47c91136a2fb0d29329473b72;hpb=0a17cc30b1d17d6f4bbd23bab1e1ad8d949c80f8;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDSimParam.cxx b/TRD/AliTRDSimParam.cxx index cd3406675a2..e6ce23c21d3 100644 --- a/TRD/AliTRDSimParam.cxx +++ b/TRD/AliTRDSimParam.cxx @@ -29,6 +29,7 @@ #include "AliRun.h" #include "AliTRDSimParam.h" +#include "AliTRDCommonParam.h" ClassImp(AliTRDSimParam) @@ -94,12 +95,11 @@ AliTRDSimParam::AliTRDSimParam() ,fTRFwid(0.0) ,fCTOn(kFALSE) ,fCTsmp(0) - ,fAnodeWireOffset(0.0) ,fPadCoupling(0.0) ,fTimeCoupling(0.0) ,fTimeStructOn(kFALSE) ,fPRFOn(kFALSE) - ,fGasMixture(0) + ,fNTimeBins(0) { // // Default constructor @@ -122,9 +122,7 @@ void AliTRDSimParam::Init() fNoise = 1250.0; fADCoutRange = 1023.0; // 10-bit ADC fADCinRange = 2000.0; // 2V input range - // Go back to 0 again, just to be consistent with reconstruction - fADCbaseline = 0; - //fADCbaseline = 10; + fADCbaseline = 10; // Diffusion on fDiffusionOn = kTRUE; @@ -147,17 +145,14 @@ void AliTRDSimParam::Init() // The time coupling factor (same number as for the TPC) fTimeCoupling = 0.4; - // Distance of first Anode wire from first pad edge - fAnodeWireOffset = 0.25; - // Use drift time maps fTimeStructOn = kTRUE; // The pad response function fPRFOn = kTRUE; - // The gas mixture, default Xenon - fGasMixture = kXenon; + // The number of time bins + fNTimeBins = 30; ReInit(); @@ -202,12 +197,11 @@ AliTRDSimParam::AliTRDSimParam(const AliTRDSimParam &p) ,fTRFwid(p.fTRFwid) ,fCTOn(p.fCTOn) ,fCTsmp(0) - ,fAnodeWireOffset(p.fAnodeWireOffset) ,fPadCoupling(p.fPadCoupling) ,fTimeCoupling(p.fTimeCoupling) ,fTimeStructOn(p.fTimeStructOn) ,fPRFOn(p.fPRFOn) - ,fGasMixture(p.fGasMixture) + ,fNTimeBins(p.fNTimeBins) { // // Copy constructor @@ -215,20 +209,14 @@ AliTRDSimParam::AliTRDSimParam(const AliTRDSimParam &p) Int_t iBin = 0; - if (((AliTRDSimParam &) p).fTRFsmp) { - delete [] ((AliTRDSimParam &) p).fTRFsmp; - } - ((AliTRDSimParam &) p).fTRFsmp = new Float_t[fTRFbin]; + fTRFsmp = new Float_t[fTRFbin]; for (iBin = 0; iBin < fTRFbin; iBin++) { - ((AliTRDSimParam &) p).fTRFsmp[iBin] = fTRFsmp[iBin]; + fTRFsmp[iBin] = ((AliTRDSimParam &) p).fTRFsmp[iBin]; } - if (((AliTRDSimParam &) p).fCTsmp) { - delete [] ((AliTRDSimParam &) p).fCTsmp; - } - ((AliTRDSimParam &) p).fCTsmp = new Float_t[fTRFbin]; + fCTsmp = new Float_t[fTRFbin]; for (iBin = 0; iBin < fTRFbin; iBin++) { - ((AliTRDSimParam &) p).fCTsmp[iBin] = fCTsmp[iBin]; + fCTsmp[iBin] = ((AliTRDSimParam &) p).fCTsmp[iBin]; } } @@ -275,11 +263,10 @@ void AliTRDSimParam::Copy(TObject &p) const target->fTRFhi = fTRFhi; target->fTRFwid = fTRFwid; target->fCTOn = fCTOn; - target->fAnodeWireOffset = fAnodeWireOffset; target->fPadCoupling = fPadCoupling; target->fTimeCoupling = fTimeCoupling; target->fPRFOn = fPRFOn; - target->fGasMixture = fGasMixture; + target->fNTimeBins = fNTimeBins; if (target->fTRFsmp) { delete[] target->fTRFsmp; @@ -306,7 +293,7 @@ void AliTRDSimParam::ReInit() // Reinitializes the parameter class after a change // - if (fGasMixture == kXenon) { + if (AliTRDCommonParam::Instance()->IsXenon()) { // The range and the binwidth for the sampled TRF fTRFbin = 200; // Start 0.2 mus before the signal @@ -316,7 +303,7 @@ void AliTRDSimParam::ReInit() // Standard gas gain fGasGain = 4000.0; } - else if (fGasMixture == kArgon) { + else if (AliTRDCommonParam::Instance()->IsArgon()) { // The range and the binwidth for the sampled TRF fTRFbin = 50; // Start 0.2 mus before the signal @@ -431,23 +418,23 @@ void AliTRDSimParam::SampleTRF() } fCTsmp = new Float_t[fTRFbin]; - if (fGasMixture == kXenon) { + if (AliTRDCommonParam::Instance()->IsXenon()) { if (fTRFbin != kNpasa) { AliError("Array mismatch (xenon)\n\n"); } } - else if (fGasMixture == kArgon) { + else if (AliTRDCommonParam::Instance()->IsArgon()) { if (fTRFbin != kNpasaAr) { AliError("Array mismatch (argon)\n\n"); } } for (Int_t iBin = 0; iBin < fTRFbin; iBin++) { - if (fGasMixture == kXenon) { + if (AliTRDCommonParam::Instance()->IsXenon()) { fTRFsmp[iBin] = signal[iBin]; fCTsmp[iBin] = xtalk[iBin]; } - else if (fGasMixture == kArgon) { + else if (AliTRDCommonParam::Instance()->IsArgon()) { fTRFsmp[iBin] = signalAr[iBin]; fCTsmp[iBin] = xtalkAr[iBin]; } @@ -463,14 +450,15 @@ Double_t AliTRDSimParam::TimeResponse(Double_t time) const // (We assume a signal rise time of 0.2us = fTRFlo/2. // - Int_t iBin = ((Int_t) ((time - fTRFlo/2.0) / fTRFwid)); - if ((iBin >= 0) && - (iBin < fTRFbin)) { - return fTRFsmp[iBin]; - } + Double_t rt = (time - .5*fTRFlo) / fTRFwid; + Int_t iBin = (Int_t) rt; + Double_t dt = rt - iBin; + if ((iBin >= 0) && (iBin+1 < fTRFbin)) { + return fTRFsmp[iBin] + (fTRFsmp[iBin+1] - fTRFsmp[iBin])*dt; + } else { return 0.0; - } + } } @@ -481,13 +469,14 @@ Double_t AliTRDSimParam::CrossTalk(Double_t time) const // Applies the pad-pad capacitive cross talk // - Int_t iBin = ((Int_t) ((time - fTRFlo) / fTRFwid)); - if ((iBin >= 0) && - (iBin < fTRFbin)) { - return fCTsmp[iBin]; - } + Double_t rt = (time - fTRFlo) / fTRFwid; + Int_t iBin = (Int_t) rt; + Double_t dt = rt - iBin; + if ((iBin >= 0) && (iBin+1 < fTRFbin)) { + return fCTsmp[iBin] + (fCTsmp[iBin+1] - fCTsmp[iBin])*dt; + } else { return 0.0; - } + } }