BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnFHCalDigitizer.h
Go to the documentation of this file.
1
#ifndef BMNFHCALDIGITIZER_H
2
#define BMNFHCALDIGITIZER_H
3
4
#include "
BmnFHCalDigit.h
"
5
#include "
BmnFHCalPoint.h
"
6
#include "FairLogger.h"
7
#include "FairTask.h"
8
#include "
TClonesArray.h
"
9
10
#include <
TRandom3.h
>
11
#include <iostream>
12
#include <unordered_map>
13
#include <vector>
14
15
class
BmnFHCalDigitizer
:
public
FairTask
16
{
17
public
:
18
struct
SiPM
19
{
20
int
Npixels
;
// Total number of pixels in SiPM (for saturation)
21
int
pixPerMIP
;
// MIP to N SiPM pixels with PDE taken into account
22
double
noiseMIP
;
// MIP noise level
23
double
gevPerMIP
;
// MIP to GeV conversion factor
24
25
SiPM
() =
default
;
26
27
SiPM
(
int
Npixels_,
int
pixPerMIP_,
double
noiseMIP_,
double
gevPerMIP_)
28
:
Npixels
(Npixels_)
29
,
pixPerMIP
(pixPerMIP_)
30
,
noiseMIP
(noiseMIP_)
31
,
gevPerMIP
(gevPerMIP_)
32
{}
33
34
~SiPM
() =
default
;
35
36
ULong64_t
ModelNpixels
(
double
meanPixels) {
return
gRandom
->Poisson(meanPixels); }
37
38
ULong64_t
ModelSaturation
(
ULong64_t
firedPixels)
39
{
40
return
static_cast<
ULong64_t
>
(
41
std::round(
Npixels
* (1.0 - std::exp(-
static_cast<
double
>
(firedPixels) /
Npixels
))));
42
}
43
44
double
ModelNoise
(
double
meanMIP) {
return
gRandom
->Gaus(meanMIP,
noiseMIP
); }
45
46
double
ModelResponse
(
double
pfELoss)
47
{
48
auto
meanPixels = (pfELoss /
gevPerMIP
) *
pixPerMIP
;
49
auto
firedPixels =
ModelNpixels
(meanPixels);
50
firedPixels =
ModelSaturation
(firedPixels);
51
return
gevPerMIP
*
ModelNoise
(
static_cast<
double
>
(firedPixels) /
pixPerMIP
);
52
}
53
};
54
55
// Constructor and Destructor
56
BmnFHCalDigitizer
(
const
int
period);
57
BmnFHCalDigitizer
(
const
char
* config =
nullptr
);
58
virtual
~BmnFHCalDigitizer
();
59
60
// Overridden FairTask methods
61
virtual
InitStatus
Init
();
62
virtual
void
Exec
(
Option_t
* opt);
63
virtual
void
Finish
();
64
65
// Setter methods
66
InitStatus
LoadConfig
(
const
char
* config);
67
void
SetScale
(
double
scale) {
fScale
= scale; }
68
void
SetThreshold
(
double
setValue) {
fThreshold
= setValue; }
69
void
SetTimeCut
(
double
setValue) {
fTimeCut
= setValue; }
70
void
SetSiPM
(
int
Npixels,
int
pixPerMIP,
double
noiseMIP,
double
gevPerMIP)
71
{
72
fSiPM
.Npixels = Npixels;
73
fSiPM
.pixPerMIP = pixPerMIP;
74
fSiPM
.noiseMIP = noiseMIP;
75
fSiPM
.gevPerMIP = gevPerMIP;
76
}
77
78
private
:
79
double
fScale
;
// Scale factor
80
double
fThreshold
;
// Noise threshold level
81
double
fTimeCut
;
// Cut times above this
82
SiPM
fSiPM
;
// SiPM properties and methods
83
84
TClonesArray
*
fPointArray
;
// Input array of BmnFHCalPoints
85
TClonesArray
*
fDigiArray
;
// Output array of BmnFHCalDigits
86
87
std::unordered_map<uint32_t, std::vector<BmnFHCalPoint*>>
88
fuoHitMap
;
// Physical address (w/o scint) to point vector map
89
void
FillHitMap
();
90
91
float
fworkTime
;
// Accumulated work time for the digitizer
92
ClassDef
(
BmnFHCalDigitizer
, 3);
93
};
94
95
#endif
// BMNFHCALDIGITIZER_H
ULong64_t
unsigned long long ULong64_t
Option_t
const char Option_t
ClassDef
#define ClassDef(name, id)
TClonesArray.h
TRandom3.h
gRandom
R__EXTERN TRandom * gRandom
BmnFHCalDigitizer::fworkTime
float fworkTime
Definition
BmnFHCalDigitizer.h:91
BmnFHCalDigitizer::~BmnFHCalDigitizer
virtual ~BmnFHCalDigitizer()
Definition
BmnFHCalDigitizer.cxx:103
BmnFHCalDigitizer::SetThreshold
void SetThreshold(double setValue)
Definition
BmnFHCalDigitizer.h:68
BmnFHCalDigitizer::Exec
virtual void Exec(Option_t *opt)
Definition
BmnFHCalDigitizer.cxx:136
BmnFHCalDigitizer::fDigiArray
TClonesArray * fDigiArray
Definition
BmnFHCalDigitizer.h:85
BmnFHCalDigitizer::LoadConfig
InitStatus LoadConfig(const char *config)
Definition
BmnFHCalDigitizer.cxx:35
BmnFHCalDigitizer::fuoHitMap
std::unordered_map< uint32_t, std::vector< BmnFHCalPoint * > > fuoHitMap
Definition
BmnFHCalDigitizer.h:88
BmnFHCalDigitizer::Init
virtual InitStatus Init()
Definition
BmnFHCalDigitizer.cxx:112
BmnFHCalDigitizer::SetSiPM
void SetSiPM(int Npixels, int pixPerMIP, double noiseMIP, double gevPerMIP)
Definition
BmnFHCalDigitizer.h:70
BmnFHCalDigitizer::fScale
double fScale
Definition
BmnFHCalDigitizer.h:79
BmnFHCalDigitizer::fTimeCut
double fTimeCut
Definition
BmnFHCalDigitizer.h:81
BmnFHCalDigitizer::BmnFHCalDigitizer
BmnFHCalDigitizer(const int period)
Definition
BmnFHCalDigitizer.cxx:16
BmnFHCalDigitizer::SetTimeCut
void SetTimeCut(double setValue)
Definition
BmnFHCalDigitizer.h:69
BmnFHCalDigitizer::SetScale
void SetScale(double scale)
Definition
BmnFHCalDigitizer.h:67
BmnFHCalDigitizer::fSiPM
SiPM fSiPM
Definition
BmnFHCalDigitizer.h:82
BmnFHCalDigitizer::Finish
virtual void Finish()
Definition
BmnFHCalDigitizer.cxx:211
BmnFHCalDigitizer::fPointArray
TClonesArray * fPointArray
Definition
BmnFHCalDigitizer.h:84
BmnFHCalDigitizer::fThreshold
double fThreshold
Definition
BmnFHCalDigitizer.h:80
BmnFHCalDigitizer::FillHitMap
void FillHitMap()
Definition
BmnFHCalDigitizer.cxx:189
FairTask
TClonesArray
BmnFHCalDigit.h
BmnFHCalPoint.h
BmnFHCalDigitizer::SiPM
Definition
BmnFHCalDigitizer.h:19
BmnFHCalDigitizer::SiPM::noiseMIP
double noiseMIP
Definition
BmnFHCalDigitizer.h:22
BmnFHCalDigitizer::SiPM::~SiPM
~SiPM()=default
BmnFHCalDigitizer::SiPM::SiPM
SiPM()=default
BmnFHCalDigitizer::SiPM::SiPM
SiPM(int Npixels_, int pixPerMIP_, double noiseMIP_, double gevPerMIP_)
Definition
BmnFHCalDigitizer.h:27
BmnFHCalDigitizer::SiPM::ModelNoise
double ModelNoise(double meanMIP)
Definition
BmnFHCalDigitizer.h:44
BmnFHCalDigitizer::SiPM::pixPerMIP
int pixPerMIP
Definition
BmnFHCalDigitizer.h:21
BmnFHCalDigitizer::SiPM::ModelNpixels
ULong64_t ModelNpixels(double meanPixels)
Definition
BmnFHCalDigitizer.h:36
BmnFHCalDigitizer::SiPM::Npixels
int Npixels
Definition
BmnFHCalDigitizer.h:20
BmnFHCalDigitizer::SiPM::gevPerMIP
double gevPerMIP
Definition
BmnFHCalDigitizer.h:23
BmnFHCalDigitizer::SiPM::ModelResponse
double ModelResponse(double pfELoss)
Definition
BmnFHCalDigitizer.h:46
BmnFHCalDigitizer::SiPM::ModelSaturation
ULong64_t ModelSaturation(ULong64_t firedPixels)
Definition
BmnFHCalDigitizer.h:38
detectors
fhcal
BmnFHCalDigitizer.h
Generated on
for BmnRoot by
1.17.0