FairRoot/PandaRoot
Public Member Functions | Public Attributes | List of all members
PndSdsAdcChargeConversion Class Reference

#include <PndSdsAdcChargeConversion.h>

Inheritance diagram for PndSdsAdcChargeConversion:
PndSdsChargeConversion

Public Member Functions

 PndSdsAdcChargeConversion (Int_t threshold=0, Int_t adcstep=1, Int_t resolution=8, Int_t VerboseLevel=0)
 constructor More...
 
 ~PndSdsAdcChargeConversion ()
 Destructor. More...
 
virtual Double_t ChargeToDigiValue (Double_t charge)
 Converts a given charge in electrons into the electronics answer e.g. ToT [ns]. More...
 
virtual Double_t DigiValueToCharge (Double_t digivalue)
 Converts a given digitized charge into charge in electrons. More...
 
virtual Double_t GetRelativeError (Double_t Charge)
 
virtual Int_t GetTimeStamp (Double_t time)
 
virtual Double_t GetTimeStamp (Double_t tof, Double_t charge, Double_t MCEventTime)
 absolute time stamp of a hit in ns (clock is taken into account) More...
 
Double_t DigitizeTime (Double_t time)
 
 ClassDef (PndSdsAdcChargeConversion, 1)
 
virtual void StartExecute ()
 
virtual void EndExecute ()
 
virtual Double_t DigiValueToCharge (PndSdsDigi &digi)
 
virtual Double_t GetTimeWalk (Double_t)
 
virtual Double_t GetTimeStampErrorAfterCorrection ()
 
virtual Double_t GetTimeStep ()
 
Double_t GetParameter (TString param)
 
void SetParameter (TString param, Double_t value)
 

Public Attributes

Int_t fVerboseLevel
 
Int_t fThreshold
 
Int_t fAdcStep
 
Int_t fResolution
 
Int_t fMaxADC
 
Double_t fTimeStep
 

Detailed Description

Class to calculate the deposited charge in one digi <-> digital channel number and vice versa

Authors
R.Schnell & R. Kliemt (Uni Bonn)

This class calculates the ADC channel number for a given resolution

Open issues: Introduce a possible nonlinear behavior/calibration

Definition at line 19 of file PndSdsAdcChargeConversion.h.

Constructor & Destructor Documentation

PndSdsAdcChargeConversion::PndSdsAdcChargeConversion ( Int_t  threshold = 0,
Int_t  adcstep = 1,
Int_t  resolution = 8,
Int_t  VerboseLevel = 0 
)
PndSdsAdcChargeConversion::~PndSdsAdcChargeConversion ( )
inline

Destructor.

Definition at line 27 of file PndSdsAdcChargeConversion.h.

27 {};

Member Function Documentation

Double_t PndSdsAdcChargeConversion::ChargeToDigiValue ( Double_t  Charge)
virtual

Converts a given charge in electrons into the electronics answer e.g. ToT [ns].

Implements PndSdsChargeConversion.

Definition at line 19 of file PndSdsAdcChargeConversion.cxx.

References fAdcStep, fMaxADC, and fThreshold.

20 {
21  if(charge <= fThreshold) return 0.; //underflow
22  Int_t ADC = (Int_t)floor(double(charge - fThreshold)/double(fAdcStep))+1;
23  if(ADC>fMaxADC) return fMaxADC; //overflow
24  return ADC;
25 }
PndSdsAdcChargeConversion::ClassDef ( PndSdsAdcChargeConversion  ,
 
)
Double_t PndSdsAdcChargeConversion::DigitizeTime ( Double_t  time)

Definition at line 76 of file PndSdsAdcChargeConversion.cxx.

Referenced by GetTimeStamp().

77 {
78  return ceil(time);
79  //Int_t temp = (time) / ftimestep;
80  //time = temp *ftimestep + ftimestep;
81  //if (fVerboseLevel>2) std::cout << "temp " << temp << " time " << time << std::endl;
82  //return time;
83 }
Double_t PndSdsChargeConversion::DigiValueToCharge ( PndSdsDigi digi)
virtualinherited

Definition at line 3 of file PndSdsChargeConversion.cxx.

References PndSdsChargeConversion::DigiValueToCharge(), and PndSdsDigi::GetCharge().

3  {
4  return DigiValueToCharge(digi.GetCharge());
5 }
Double_t GetCharge() const
Definition: PndSdsDigi.h:60
virtual Double_t DigiValueToCharge(Double_t digi)=0
Converts a given digitized charge into charge in electrons.
Double_t PndSdsAdcChargeConversion::DigiValueToCharge ( Double_t  digi)
virtual

Converts a given digitized charge into charge in electrons.

Implements PndSdsChargeConversion.

Definition at line 27 of file PndSdsAdcChargeConversion.cxx.

References fAdcStep, fThreshold, and fVerboseLevel.

28 { //returns the charge for the given tot value
29  if (ADC<0){
30  if (fVerboseLevel>0)
31  Error("ConvertDigiValueToELoss(Double_t digi)","charge digitization value not calculated properly");
32  return -1;
33  }
34  if(ADC==0) return 0.5*fThreshold;
35  return (ADC-0.5)*fAdcStep+fThreshold;
36 }
virtual void PndSdsChargeConversion::EndExecute ( )
inlinevirtualinherited

Definition at line 21 of file PndSdsChargeConversion.h.

Referenced by PndSdsHybridHitProducer::Exec().

21 {};
Double_t PndSdsChargeConversion::GetParameter ( TString  param)
inlineinherited

Definition at line 37 of file PndSdsChargeConversion.h.

References PndSdsChargeConversion::fParams, and PndSdsChargeConversion::it.

Referenced by PndSdsTotChargeConversion::ChargeToDigiValue(), PndSdsTotChargeConversion::DigiValueToCharge(), PndSdsTotChargeConversion::GetPileUpTime(), PndSdsTotChargeConversion::GetRelativeError(), PndSdsTotChargeConversion::GetTimeWalk(), and PndSdsTotChargeConversion::PndSdsTotChargeConversion().

37  {
38  it=fParams.find(param);
39  if (it == fParams.end()){
40  Error("GetParameter(TString param)","No parameter named: %s",param.Data());
41  return -1;
42  }
43  return it->second;
44  };
std::map< TString, Double_t >::iterator it
std::map< TString, Double_t > fParams
Double_t PndSdsAdcChargeConversion::GetRelativeError ( Double_t  Charge)
virtual

Implements PndSdsChargeConversion.

Definition at line 39 of file PndSdsAdcChargeConversion.cxx.

References fabs(), and fAdcStep.

40 {
41  // TODO: How is the uncertainty?
42  if(fabs(Charge) < 1e-6) return -1;
43  return fAdcStep/Charge;
44 }
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
Int_t PndSdsAdcChargeConversion::GetTimeStamp ( Double_t  time)
virtual

Definition at line 46 of file PndSdsAdcChargeConversion.cxx.

47 {
48  return (Int_t)time;
49  //Int_t temp = (Int_t)(time / ftimestep); // [clockcycles]
50  //time = temp*ftimestep + ftimestep; //[ns] to the following clock tick
51  //return (Int_t)TMath::Ceil(time); // [ns] with 1 ns number precision, casting cuts trailing digits, like floor()
52 }
Double_t PndSdsAdcChargeConversion::GetTimeStamp ( Double_t  tof,
Double_t  charge,
Double_t  MCEventTime 
)
virtual

absolute time stamp of a hit in ns (clock is taken into account)

Implements PndSdsChargeConversion.

Definition at line 55 of file PndSdsAdcChargeConversion.cxx.

References DigitizeTime(), Double_t, and fVerboseLevel.

56 {
57 
58  Double_t totaltime = MCEventTime;// [ns]
59  totaltime += time; // [ns]
60  //ftimewalk=GetTimeWalk(Charge);
61  //totaltime += ftimewalk;
62 
63  Double_t digitizedtime = DigitizeTime(totaltime);
64 
65  if (fVerboseLevel>2){
66  std::cout<<" +++charge: "<< Charge <<" "<<std::endl;
67  std::cout<<" time since event: "<< time <<" "<<std::endl;
68  //std::cout<<" timewalk: "<< ftimewalk <<std::endl;
69  std::cout<<" total time: "<< totaltime <<std::endl;
70  std::cout<<" digitized total time:"<< digitizedtime << "+++"<<std::endl;
71  }
72  return digitizedtime ; //digitalisiert
73 // return totaltime; // nicht digitalisiert
74 }
Double_t DigitizeTime(Double_t time)
Double_t
virtual Double_t PndSdsChargeConversion::GetTimeStampErrorAfterCorrection ( )
inlinevirtualinherited

Reimplemented in PndSdsTotChargeConversion.

Definition at line 31 of file PndSdsChargeConversion.h.

Referenced by PndLmdNoiseProducer::AddDigiPixel(), and PndMvdNoiseProducer::AddDigiPixel().

31  {
32  return 1;
33  }
virtual Double_t PndSdsChargeConversion::GetTimeStep ( )
inlinevirtualinherited

Reimplemented in PndSdsTotChargeConversion.

Definition at line 35 of file PndSdsChargeConversion.h.

Referenced by PndSdsStripHitProducer::AddDigi(), and PndSdsHybridHitProducer::Exec().

35 {return 0;};
virtual Double_t PndSdsChargeConversion::GetTimeWalk ( Double_t  )
inlinevirtualinherited

Reimplemented in PndSdsTotChargeConversion.

Definition at line 27 of file PndSdsChargeConversion.h.

Referenced by PndSdsStripHitProducer::AddDigi(), PndLmdNoiseProducer::AddDigiPixel(), PndMvdNoiseProducer::AddDigiPixel(), and PndSdsHybridHitProducer::Exec().

27 {return 0;}; //charge //[R.K.03/2017] unused variable(s) ///< Time between hit in detector and the time stamp assigned to the hit
void PndSdsChargeConversion::SetParameter ( TString  param,
Double_t  value 
)
inlineinherited

Definition at line 45 of file PndSdsChargeConversion.h.

References PndSdsChargeConversion::fParams.

Referenced by PndSdsTotChargeConversion::ChargeToDigiValue(), PndSdsTotChargeConversion::GetTimeWalk(), and PndSdsTotChargeConversion::PndSdsTotChargeConversion().

45  {
46  if (value < 0 ) Error("SetParameter(TString param, Double_t value)","invalid value for param: %s", param.Data());
47  fParams.insert(std::pair<TString, Double_t>(param, value));
48  };
std::map< TString, Double_t > fParams
virtual void PndSdsChargeConversion::StartExecute ( )
inlinevirtualinherited

Reimplemented in PndSdsTotChargeConversion.

Definition at line 20 of file PndSdsChargeConversion.h.

Referenced by PndSdsHybridHitProducer::Exec().

20 {};

Member Data Documentation

Int_t PndSdsAdcChargeConversion::fAdcStep
Int_t PndSdsAdcChargeConversion::fMaxADC

Definition at line 42 of file PndSdsAdcChargeConversion.h.

Referenced by ChargeToDigiValue(), and PndSdsAdcChargeConversion().

Int_t PndSdsAdcChargeConversion::fResolution

Definition at line 41 of file PndSdsAdcChargeConversion.h.

Referenced by PndSdsAdcChargeConversion().

Int_t PndSdsAdcChargeConversion::fThreshold

Definition at line 39 of file PndSdsAdcChargeConversion.h.

Referenced by ChargeToDigiValue(), and DigiValueToCharge().

Double_t PndSdsAdcChargeConversion::fTimeStep

Definition at line 43 of file PndSdsAdcChargeConversion.h.

Int_t PndSdsAdcChargeConversion::fVerboseLevel

Definition at line 38 of file PndSdsAdcChargeConversion.h.

Referenced by DigiValueToCharge(), and GetTimeStamp().


The documentation for this class was generated from the following files: