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