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