BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnZdcBScanner.h
Go to the documentation of this file.
1
/*
2
* File: BmnZdcBScanner.cxx
3
* Author: pnaleks <pnaleks@gmail.com>
4
*
5
* Created on 25 октября 2019 г., 12:15
6
*/
7
8
#ifndef BMNZDCBSCANNER_H
9
#define BMNZDCBSCANNER_H
10
11
#include <BmnMath.h>
12
#include <
BmnZDCDigit.h
>
13
#include <
TChain.h
>
14
#include <
TClonesArray.h
>
15
#include <
TH1D.h
>
16
17
class
ZdcMoment
18
{
19
Int_t
fHits
= 0;
20
Double_t
fM
= 0;
21
Double_t
fMX
= 0;
22
Double_t
fMY
= 0;
23
Double_t
fMXX
= 0;
24
Double_t
fMYY
= 0;
25
Double_t
fXc
= 0;
26
Double_t
fYc
= 0;
27
Double_t
fMC
= 0;
28
Double_t
fMD
= 0;
29
30
public
:
31
void
Reset
()
32
{
33
fHits
= 0;
34
fM
=
fMX
=
fMY
=
fMXX
=
fMYY
=
fMC
=
fMD
= 0.;
35
}
36
void
SetCenter
(
Double_t
x
/*mm*/
,
Double_t
y
/*mm*/
)
37
{
38
fXc
= x;
39
fYc
= y;
40
}
41
void
Add
(
BmnZDCDigit
* p,
Double_t
scale = 1.)
42
{
43
Int_t
chan = p->
GetChannel
();
44
Double_t
m
= (scale * p->
GetAmp
()) * 1e-3;
// MeV ->GeV
45
if
(chan > 104 ||
m
== 0)
46
return
;
47
48
Double_t
x = (p->
GetX
() -
fXc
) * 1e-3;
// mm -> m
49
Double_t
y = (p->
GetX
() -
fYc
) * 1e-3;
// mm -> m
50
51
fHits
++;
52
fM
+=
m
;
53
fMX
+=
m
* x;
54
fMY
+=
m
* y;
55
fMXX
+=
m
* x * x;
56
fMYY
+=
m
* y * y;
57
58
if
(chan < 69)
59
fMD
+=
m
;
60
else
61
fMC
+=
m
;
62
}
63
64
Int_t
GetHits
() {
return
fHits
; }
65
Double_t
GetE
() {
return
fM
; }
66
67
Double_t
GetXo
() {
return
fM
== 0. ? 0. :
fMX
/
fM
; }
68
Double_t
GetYo
() {
return
fM
== 0. ? 0. :
fMY
/
fM
; }
69
Double_t
GetR
()
70
{
71
Double_t
x =
GetXo
();
72
Double_t
y =
GetYo
();
73
return
TMath::Sqrt
(x * x + y * y);
74
}
75
76
Double_t
GetIx
()
77
{
/*GeV*m^2*/
78
Double_t
Xo =
GetXo
();
79
return
(
fMXX
- 2.0 * Xo *
fMX
+ Xo * Xo *
fM
);
80
}
81
Double_t
GetIy
()
82
{
/*GeV*m^2*/
83
Double_t
Yo =
GetYo
();
84
return
(
fMYY
- 2.0 * Yo *
fMY
+ Yo * Yo *
fM
);
85
}
86
Double_t
GetI
() {
return
GetIx
() +
GetIy
(); }
/*GeV*m^2*/
87
Double_t
GetIo
() {
return
(
fMXX
+
fMYY
); }
/*GeV*m^2*/
88
Double_t
GetM
() {
return
fM
== 0. ? 0. :
GetI
() /
fM
; }
/*m^2*/
89
Double_t
GetMo
() {
return
fM
== 0. ? 0. :
GetIo
() /
fM
; }
/*m^2*/
90
Double_t
GetA
() {
return
fM
== 0. ? 0. : (
fMC
-
fMD
) /
fM
; }
91
};
92
93
class
BmnZdcBScanner
94
{
95
TChain
fInpChain
;
96
UInt_t
fMaxEntries
= 0;
97
UInt_t
fScanWidth
= 1000;
98
Double_t
fSimScale
= 1.;
99
100
Bool_t
fShowProgress
=
kFALSE
;
101
102
class
ZdcMoment
fEventData
;
103
104
struct
Item
105
{
106
Double_t
index
;
107
Double_t
b
;
108
}*
fIndex
= 0;
109
UInt_t
fIndexSize
= 0;
110
111
static
bool
compareItem
(
Item
i1,
Item
i2) {
return
(i1.
index
< i2.
index
); }
112
113
void
OnEvent
(
TClonesArray
* pArrayOfBmnZDCDigit,
char
mode,
Double_t
b);
114
void
OnScan
(
Int_t
n
,
Double_t
scanValue,
TH1D
* pBH);
115
116
public
:
117
BmnZdcBScanner
()
118
:
fInpChain
(
"cbmsim"
)
119
{}
120
virtual
~BmnZdcBScanner
()
121
{
122
if
(
fIndex
)
123
delete
fIndex
;
124
}
125
126
void
SetShowProgress
(
Bool_t
show) {
fShowProgress
= show; }
127
void
SetEventData
(
TClonesArray
* pArrayOfBmnZDCDigit,
Double_t
scale = 1.);
128
void
AddSimDigit
(
const
char
* fileName) {
fInpChain
.Add(fileName); }
129
void
SetSimScale
(
Double_t
scale) {
fSimScale
= scale; }
130
131
void
SetScanWidth
(
UInt_t
entries) {
fScanWidth
= entries; }
132
133
virtual
TH1D
*
Scan
(
char
mode);
134
};
135
136
#endif
/* BMNZDCBSCANNER_H */
m
__m128 m
Definition
P4_F32vec4.h:27
Bool_t
bool Bool_t
Int_t
int Int_t
UInt_t
unsigned int UInt_t
kFALSE
constexpr Bool_t kFALSE
Double_t
double Double_t
TChain.h
TClonesArray.h
TH1D.h
BmnCaloDigit::GetX
Float_t GetX() const
Definition
BmnCaloDigit.h:31
BmnCaloDigit::GetChannel
UShort_t GetChannel() const
Definition
BmnCaloDigit.h:33
BmnCaloDigit::GetAmp
Float_t GetAmp() const
Definition
BmnCaloDigit.h:34
BmnZDCDigit
Definition
BmnZDCDigit.h:7
BmnZdcBScanner::fEventData
class ZdcMoment fEventData
Definition
BmnZdcBScanner.h:102
BmnZdcBScanner::OnEvent
void OnEvent(TClonesArray *pArrayOfBmnZDCDigit, char mode, Double_t b)
Definition
BmnZdcBScanner.cxx:89
BmnZdcBScanner::BmnZdcBScanner
BmnZdcBScanner()
Definition
BmnZdcBScanner.h:117
BmnZdcBScanner::compareItem
static bool compareItem(Item i1, Item i2)
Definition
BmnZdcBScanner.h:111
BmnZdcBScanner::fSimScale
Double_t fSimScale
Definition
BmnZdcBScanner.h:98
BmnZdcBScanner::fShowProgress
Bool_t fShowProgress
Definition
BmnZdcBScanner.h:100
BmnZdcBScanner::fIndexSize
UInt_t fIndexSize
Definition
BmnZdcBScanner.h:109
BmnZdcBScanner::fScanWidth
UInt_t fScanWidth
Definition
BmnZdcBScanner.h:97
BmnZdcBScanner::~BmnZdcBScanner
virtual ~BmnZdcBScanner()
Definition
BmnZdcBScanner.h:120
BmnZdcBScanner::SetSimScale
void SetSimScale(Double_t scale)
Definition
BmnZdcBScanner.h:129
BmnZdcBScanner::Scan
virtual TH1D * Scan(char mode)
Definition
BmnZdcBScanner.cxx:26
BmnZdcBScanner::SetShowProgress
void SetShowProgress(Bool_t show)
Definition
BmnZdcBScanner.h:126
BmnZdcBScanner::SetEventData
void SetEventData(TClonesArray *pArrayOfBmnZDCDigit, Double_t scale=1.)
Definition
BmnZdcBScanner.cxx:13
BmnZdcBScanner::fIndex
struct BmnZdcBScanner::Item * fIndex
BmnZdcBScanner::fMaxEntries
UInt_t fMaxEntries
Definition
BmnZdcBScanner.h:96
BmnZdcBScanner::OnScan
void OnScan(Int_t n, Double_t scanValue, TH1D *pBH)
Definition
BmnZdcBScanner.cxx:127
BmnZdcBScanner::fInpChain
TChain fInpChain
Definition
BmnZdcBScanner.h:95
BmnZdcBScanner::AddSimDigit
void AddSimDigit(const char *fileName)
Definition
BmnZdcBScanner.h:128
BmnZdcBScanner::SetScanWidth
void SetScanWidth(UInt_t entries)
Definition
BmnZdcBScanner.h:131
TChain
TClonesArray
TH1D
ZdcMoment
Definition
BmnZdcBScanner.h:18
ZdcMoment::fMYY
Double_t fMYY
Definition
BmnZdcBScanner.h:24
ZdcMoment::GetIo
Double_t GetIo()
Definition
BmnZdcBScanner.h:87
ZdcMoment::GetIx
Double_t GetIx()
Definition
BmnZdcBScanner.h:76
ZdcMoment::GetE
Double_t GetE()
Definition
BmnZdcBScanner.h:65
ZdcMoment::fYc
Double_t fYc
Definition
BmnZdcBScanner.h:26
ZdcMoment::GetYo
Double_t GetYo()
Definition
BmnZdcBScanner.h:68
ZdcMoment::GetIy
Double_t GetIy()
Definition
BmnZdcBScanner.h:81
ZdcMoment::GetXo
Double_t GetXo()
Definition
BmnZdcBScanner.h:67
ZdcMoment::fMY
Double_t fMY
Definition
BmnZdcBScanner.h:22
ZdcMoment::GetHits
Int_t GetHits()
Definition
BmnZdcBScanner.h:64
ZdcMoment::GetA
Double_t GetA()
Definition
BmnZdcBScanner.h:90
ZdcMoment::GetR
Double_t GetR()
Definition
BmnZdcBScanner.h:69
ZdcMoment::fMC
Double_t fMC
Definition
BmnZdcBScanner.h:27
ZdcMoment::fMX
Double_t fMX
Definition
BmnZdcBScanner.h:21
ZdcMoment::GetMo
Double_t GetMo()
Definition
BmnZdcBScanner.h:89
ZdcMoment::GetI
Double_t GetI()
Definition
BmnZdcBScanner.h:86
ZdcMoment::GetM
Double_t GetM()
Definition
BmnZdcBScanner.h:88
ZdcMoment::fHits
Int_t fHits
Definition
BmnZdcBScanner.h:19
ZdcMoment::Add
void Add(BmnZDCDigit *p, Double_t scale=1.)
Definition
BmnZdcBScanner.h:41
ZdcMoment::fMXX
Double_t fMXX
Definition
BmnZdcBScanner.h:23
ZdcMoment::fM
Double_t fM
Definition
BmnZdcBScanner.h:20
ZdcMoment::fMD
Double_t fMD
Definition
BmnZdcBScanner.h:28
ZdcMoment::SetCenter
void SetCenter(Double_t x, Double_t y)
Definition
BmnZdcBScanner.h:36
ZdcMoment::fXc
Double_t fXc
Definition
BmnZdcBScanner.h:25
ZdcMoment::Reset
void Reset()
Definition
BmnZdcBScanner.h:31
BmnZDCDigit.h
n
*brief user defined string literal for JSON values *sa std::size_t n
Definition
json.hpp:20362
TMath::Sqrt
Double_t Sqrt(Double_t x)
BmnZdcBScanner::Item
Definition
BmnZdcBScanner.h:105
BmnZdcBScanner::Item::b
Double_t b
Definition
BmnZdcBScanner.h:107
BmnZdcBScanner::Item::index
Double_t index
Definition
BmnZdcBScanner.h:106
detectors
zdc
BmnZdcBScanner.h
Generated on
for BmnRoot by
1.17.0