CbmRoot
Loading...
Searching...
No Matches
CbmMvdSensorDataSheet.h
Go to the documentation of this file.
1/* Copyright (C) 2014-2015 Institut fuer Kernphysik, Goethe-Universitaet Frankfurt, Frankfurt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Michael Deveaux, Philipp Sitzmann [committer] */
4
5// -------------------------------------------------------------------------
6// ----- CbmMvdSensorDataSheet header file -----
7// ----- Created 02/12/08 by M. Deveaux -----
8// -------------------------------------------------------------------------
9
10
19#ifndef CBMMVDSENSORDATASHEET_H
20#define CBMMVDSENSORDATASHEET_H 1
21
22#include <Rtypes.h> // for ClassDef
23#include <RtypesCore.h> // for Double_t, Int_t, Float_t, Bool_t, Option_t
24#include <TMath.h> // for TMath::Power
25#include <TNamed.h> // for TNamed
26#include <TString.h> // for TString
27
28#include <string> // for string
29class TBuffer;
30class TClass;
31class TMemberInspector;
32
33class CbmMvdSensorDataSheet : public TNamed {
34
35 public:
38 virtual void Print(Option_t* opt = "") const;
39 std::string ToString() const;
40
43
44 protected:
46 TString fMimosaName = "DefaulSensor"; // Clear name of the simulated sensor
47 Double_t fPixelPitchX = 18.4e-4; // Pixel pitch of this sensor
48 Double_t fPixelPitchY = 18.4e-4; // Pixel pitch of this sensor
49 Int_t fNPixelsX = 0; // Number of pixels in row
50 Int_t fNPixelsY = 0; // Number of pixels in col
51 Int_t fNPixels = 0; // Number of pixels in sensor
52 Int_t fPixelSignX = 1; // Direction of the pixel count X.
53 // Defined according to pixelNumberX=fPixelSign * const * x
54 Int_t fPixelSignY = 1; // Direction of the pixel count Y.
55 // Defined according to pixelNumberY=fPixelSign * const * y
56 Int_t fShutterSign = 0; // Direction of the rolling shutter.
57 // 1 => parallel to y-axis, -1 => anti-parallel
58 Double_t fIntegrationTime = 50e3; // Integration time of the pixels
59 Double_t fEpiTh = 25.e-4; // Thickness of the epitaxial layer
60
62
63 Double_t fChargeThreshold = 0.;
64 Double_t fSignalRiseTime = nan("NotSet");
65 Double_t fSignalFallTime = nan("NotSet");
66
67
69 Double_t fNoise = 0.; // Noise of the sensor
70 Double_t fLandauMPV = 8.62131e+02; // Landau for digitizer
71 Double_t fLandauSigma = 2.e+02; // Landau for digitizer
72 Double_t fLandauGain = 1.56; // Landau for digitizer
73 Double_t fLorentzPar0 = 4.12073e+02; // Lorentz for digitizer
74 Double_t fLorentzPar1 = 0.8e+00; // Lorentz for digitizer
75 Double_t fLorentzPar2 = 0.1; // Lorentz for digitizer
76
79 Int_t fAdcDynamic = 150;
80 Int_t fAdcOffset = 0;
81 Int_t fAdcBits = 1;
82 Int_t fAdcSteps = TMath::Power(2, fAdcBits);
84
86 Int_t fStatesPerBank = 0;
87 Int_t fStatesPerLine = 0;
88 Int_t fStatesPerFrame = 0;
89 Int_t fPixelsPerBank = 0;
90
92 Int_t fAnalogThreshold = -1;
93
94
97 Bool_t fValidData = kFALSE;
98
99
100 public:
101 virtual TString* GetSensorName() { return &fMimosaName; };
102 virtual Double_t GetPixelPitchX() { return fPixelPitchX; };
103 virtual Double_t GetPixelPitchY() { return fPixelPitchY; };
104 virtual Int_t GetNPixelsX() { return fNPixelsX; };
105 virtual Int_t GetNPixelsY() { return fNPixelsY; };
106 virtual Int_t GetNPixels() { return fNPixels; };
107 virtual Int_t GetPixelSignX() { return fPixelSignX; };
108 virtual Int_t GetPixelSignY() { return fPixelSignY; };
109 virtual Int_t GetShutterSign() { return fShutterSign; };
110 virtual Double_t GetIntegrationTime() { return fIntegrationTime; };
111 virtual Double_t GetEpiThickness() { return fEpiTh; }
112 virtual Double_t GetNoise() { return fNoise; };
113 virtual Double_t GetSignalRiseTime() { return fSignalRiseTime; };
114 virtual Double_t GetSignalFallTime() { return fSignalFallTime; };
116
118 virtual Double_t GetLandauMPV() { return fLandauMPV; }; // Landau for digitizer
119 virtual Double_t GetLandauSigma() { return fLandauSigma; }; // Landau for digitizer
120 virtual Double_t GetLandauGain() { return fLandauGain; }; // Landau for digitizer
121 virtual Double_t GetLorentzPar0() { return fLorentzPar0; }; // Lorentz for digitizer
122 virtual Double_t GetLorentzPar1() { return fLorentzPar1; }; // Lorentz for digitizer
123 virtual Double_t GetLorentzPar2() { return fLorentzPar2; }; // Lorentz for digitizer
124
125
126 virtual Double_t GetChargeThreshold() { return fChargeThreshold; };
127 virtual Int_t GetAnalogThreshold() { return fAnalogThreshold; };
128
129
130 virtual Double_t ComputeHitDeadTime(Float_t charge)
131 {
132 return charge * 0.;
133 }; // Multiplication only to suppress "variable not used" warning.
134 virtual Double_t ComputeHitDelay(Float_t charge) { return charge * 0.; };
135 virtual Double_t ComputeHitJitter(Float_t charge)
136 {
137 return charge * 0.;
138 }; // Provides jitter for a point (random number)
139 virtual Double_t GetJitter(Float_t charge) { return charge * 0.; }; // Provides jitter (highest plausible value)
140 virtual Double_t GetDelay(Float_t charge) { return charge * 0.; };
141 virtual Double_t GetDelaySigma(Float_t charge) { return charge * 0.; };
142 virtual Double_t ComputeCCE(Float_t chargePointX, Float_t chargePointY, Float_t chargePointZ, Float_t diodeX,
143 Float_t diodeY, Float_t diodeZ);
144 virtual Int_t ComputeAdcCharge(Float_t charge);
145
146
149 virtual Int_t GetAdcDynamic() { return fAdcDynamic; };
150 virtual Int_t GetAdcOffset() { return fAdcOffset; };
151 virtual Int_t GetAdcBits() { return fAdcBits; };
152 virtual Int_t GetAdcSteps() { return fAdcSteps; };
153 virtual Float_t GetAdcStepSize() { return fAdcStepSize; };
154
155
157};
158
159
160#endif
virtual Double_t GetSignalRiseTime()
ClassDef(CbmMvdSensorDataSheet, 1)
virtual Double_t GetEpiThickness()
virtual Double_t GetDelaySigma(Float_t charge)
virtual Float_t GetShaperNormalisationFactor()
virtual Double_t ComputeHitDelay(Float_t charge)
virtual Double_t GetJitter(Float_t charge)
virtual Double_t GetLorentzPar1()
virtual Double_t GetPixelPitchX()
virtual Float_t GetAdcStepSize()
virtual Double_t ComputeCCE(Float_t chargePointX, Float_t chargePointY, Float_t chargePointZ, Float_t diodeX, Float_t diodeY, Float_t diodeZ)
virtual Double_t GetLandauMPV()
virtual Double_t GetPixelPitchY()
virtual Double_t GetLandauSigma()
virtual Double_t ComputeHitDeadTime(Float_t charge)
virtual Double_t GetChargeThreshold()
virtual TString * GetSensorName()
virtual Double_t GetDelay(Float_t charge)
virtual Double_t GetLandauGain()
virtual Int_t ComputeAdcCharge(Float_t charge)
virtual Double_t GetIntegrationTime()
virtual Double_t GetSignalFallTime()
virtual Double_t ComputeHitJitter(Float_t charge)
virtual void Print(Option_t *opt="") const
virtual Double_t GetLorentzPar0()
virtual Double_t GetLorentzPar2()
~CbmMvdSensorDataSheet()=default