Add ADC offset and change default digitazation parameters
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 13 Dec 2002 13:31:49 +0000 (13:31 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 13 Dec 2002 13:31:49 +0000 (13:31 +0000)
TRD/AliTRDdigitizer.cxx
TRD/AliTRDparameter.cxx
TRD/AliTRDparameter.h

index 681a975c95f54440f02d56f15a3b7166fbc2e1fb..24490c6cd59badf89dadc9ec01f70f344168e70a 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.41  2002/10/21 09:10:32  cblume
+Fix type conversion warnings
+
 Revision 1.40  2002/10/14 14:57:43  hristov
 Merging the VirtualMC branch to the main development branch (HEAD)
 
@@ -1104,11 +1107,18 @@ Bool_t AliTRDdigitizer::MakeDigits()
               Float_t signalAmp = signals->GetDataUnchecked(iRow,iCol,iTime);
               // Pad and time coupling
               signalAmp *= coupling;
-              // Add the noise
-              signalAmp  = TMath::Max((Double_t) gRandom->Gaus(signalAmp,fPar->GetNoise()),0.0);
+              // Add the noise, starting from minus ADC baseline in electrons
+              Double_t baselineEl = fPar->GetADCbaseline() * (fPar->GetADCinRange()
+                                                           / fPar->GetADCoutRange()) 
+                                                           / convert;
+              signalAmp  = TMath::Max((Double_t) gRandom->Gaus(signalAmp,fPar->GetNoise())
+                                     ,-baselineEl);
               // Convert to mV
               signalAmp *= convert;
-             // Convert to ADC counts. Set the overflow-bit fADCoutRange if the 
+              // Add ADC baseline in mV
+              signalAmp += fPar->GetADCbaseline() * (fPar->GetADCinRange()
+                                                   / fPar->GetADCoutRange());
+             // Convert to ADC counts. Set the overflow-bit fADCoutRange if the 
              // signal is larger than fADCinRange
               Int_t adc  = 0;
               if (signalAmp >= fPar->GetADCinRange()) {
@@ -1254,6 +1264,7 @@ Bool_t AliTRDdigitizer::ConvertSDigits()
   Double_t adcInRange   = fPar->GetADCinRange();
   Double_t adcOutRange  = fPar->GetADCoutRange();
   Int_t    adcThreshold = fPar->GetADCthreshold();
+  Int_t    adcBaseline  = fPar->GetADCbaseline();   
 
   AliTRDdataArrayI *digitsIn;
   AliTRDdataArrayI *digitsOut;
@@ -1297,10 +1308,13 @@ Bool_t AliTRDdigitizer::ConvertSDigits()
           signal *= sDigitsScale;
           // Pad and time coupling
           signal *= coupling;
-          // Add the noise
-          signal  = TMath::Max((Double_t) gRandom->Gaus(signal,noise),0.0);
+          // Add the noise, starting from minus ADC baseline in electrons
+          Double_t baselineEl = adcBaseline * (adcInRange / adcOutRange) / convert;
+          signal  = TMath::Max((Double_t) gRandom->Gaus(signal,noise),-baselineEl);
           // Convert to mV
           signal *= convert;
+          // add ADC baseline in mV
+          signal += adcBaseline * (adcInRange / adcOutRange);
          // Convert to ADC counts. Set the overflow-bit adcOutRange if the 
          // signal is larger than adcInRange
           Int_t adc  = 0;
index ac37aff64e6eb36bfe2315175c91dfaee679b261..3f5ae3e7e36145154aa50b61c0f5b771036fdfcd 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.11  2002/11/21 14:34:53  cblume
+Bug fix in SetNRowPad() reposted by Bogdan
+
 Revision 1.10  2002/10/31 17:46:22  cblume
 New padplane (same number of columns in outer plane
 
@@ -82,6 +85,7 @@ AliTRDparameter::AliTRDparameter():TNamed()
   fADCoutRange        = 0.0;
   fADCinRange         = 0.0;
   fADCthreshold       = 0;
+  fADCbaseline        = 0;        
   fDiffusionOn        = 0;
   fDiffusionT         = 0.0;
   fDiffusionL         = 0.0;
@@ -135,6 +139,7 @@ AliTRDparameter::AliTRDparameter(const Text_t *name, const Text_t *title)
   fADCoutRange        = 0.0;
   fADCinRange         = 0.0;
   fADCthreshold       = 0;
+  fADCbaseline        = 0;        
   fDiffusionOn        = 0;
   fDiffusionT         = 0.0;
   fDiffusionL         = 0.0;
@@ -245,6 +250,7 @@ void AliTRDparameter::Copy(TObject &p)
   ((AliTRDparameter &) p).fADCoutRange        = fADCoutRange;
   ((AliTRDparameter &) p).fADCinRange         = fADCinRange;
   ((AliTRDparameter &) p).fADCthreshold       = fADCthreshold;
+  ((AliTRDparameter &) p).fADCbaseline        = fADCbaseline; 
   ((AliTRDparameter &) p).fDiffusionOn        = fDiffusionOn; 
   ((AliTRDparameter &) p).fDiffusionT         = fDiffusionT;
   ((AliTRDparameter &) p).fDiffusionL         = fDiffusionL;
@@ -365,8 +371,10 @@ void AliTRDparameter::Init()
   fChipGain       = 12.4;
   fNoise          = 1000.;
   fADCoutRange    = 1023.;          // 10-bit ADC
-  fADCinRange     = 1000.;          // 1V input range
+  //fADCinRange     = 1000.;          // 1V input range
+  fADCinRange     = 2000.;          // 2V input range
   fADCthreshold   = 1;
+  fADCbaseline    = 0;
 
   // The drift velocity (cm / mus)
   fDriftVelocity  = 1.5;
@@ -375,7 +383,7 @@ void AliTRDparameter::Init()
   fDiffusionOn    = 1;
 
   // E x B effects
-  fExBOn          = 0;
+  fExBOn          = 1;
 
   // Propability for electron attachment
   fElAttachOn     = 0;
@@ -388,7 +396,7 @@ void AliTRDparameter::Init()
   fTRFOn          = 1;
 
   // The cross talk
-  fCTOn           = 0;
+  fCTOn           = 1;
 
   // The tail cancelation
   fTCOn           = 1;
index bac6bd03c487654c8e67c0af6401b6324a6bcb5a..05ffb67d9ddecef68fb9893677ff0092a52f4f31 100644 (file)
@@ -45,6 +45,7 @@ class AliTRDparameter : public TNamed {
   virtual void     SetADCoutRange(Float_t range)                  { fADCoutRange    = range;    };
   virtual void     SetADCinRange(Float_t range)                   { fADCinRange     = range;    };
   virtual void     SetADCthreshold(Int_t thresh)                  { fADCthreshold   = thresh;   };
+  virtual void     SetADCbaseline(Int_t basel)                    { fADCbaseline    = basel;    };   
   virtual void     SetDiffusion(Int_t diffOn = 1)                 { fDiffusionOn    = diffOn;   };
   virtual void     SetElAttach(Int_t elOn = 1)                    { fElAttachOn     = elOn;     };
   virtual void     SetElAttachProp(Float_t prop)                  { fElAttachProp   = prop;     };
@@ -92,6 +93,7 @@ class AliTRDparameter : public TNamed {
           Float_t  GetADCoutRange()                         const { return fADCoutRange;   };
           Float_t  GetADCinRange()                          const { return fADCinRange;    };
           Int_t    GetADCthreshold()                        const { return fADCthreshold;  };
+          Int_t    GetADCbaseline()                         const { return fADCbaseline;   };
           Float_t  GetDiffusionT()                          const { return fDiffusionT;    };
           Float_t  GetDiffusionL()                          const { return fDiffusionL;    };
           Float_t  GetElAttachProp()                        const { return fElAttachProp;  };
@@ -156,6 +158,7 @@ class AliTRDparameter : public TNamed {
   Float_t              fADCoutRange;                        //  ADC output range (number of channels)
   Float_t              fADCinRange;                         //  ADC input range (input charge)
   Int_t                fADCthreshold;                       //  ADC threshold in ADC channel
+  Int_t                fADCbaseline;                        //  ADC baseline in ADC chann
   Int_t                fDiffusionOn;                        //  Switch for the diffusion
   Float_t              fDiffusionT;                         //  Diffusion in transverse direction
   Float_t              fDiffusionL;                         //  Diffusion in longitudinal direction
@@ -200,7 +203,7 @@ class AliTRDparameter : public TNamed {
   virtual void         SampleTRF();
   virtual void         FillLUT();
 
-  ClassDef(AliTRDparameter,2)                               //  TRD parameter class
+  ClassDef(AliTRDparameter,3)                               //  TRD parameter class
 
 };