SND@LHC Software
Loading...
Searching...
No Matches
sndAvgSciFiFiducialCut.cxx
Go to the documentation of this file.
1
#include "
sndAvgSciFiFiducialCut.h
"
2
3
#include "TChain.h"
4
5
namespace
snd::analysis_cuts
{
6
avgSciFiFiducialCut::avgSciFiFiducialCut
(
double
vertical_min_cut,
double
vertical_max_cut,
double
horizontal_min_cut,
double
horizontal_max_cut, TChain * ch,
bool
reverseCuts) :
sciFiBaseCut
(ch){
7
8
reversed
= reverseCuts;
9
10
vertical_min
= vertical_min_cut;
11
vertical_max
= vertical_max_cut;
12
horizontal_min
= horizontal_min_cut;
13
horizontal_max
= horizontal_max_cut;
14
15
cutName
=
"Avg SciFi Ver channel in ["
+std::to_string(
vertical_min
)+
","
+std::to_string(
vertical_max
)+
"] Hor in ["
+std::to_string(
horizontal_min
)+
","
+std::to_string(
horizontal_max
)+
"]"
;
16
17
shortName
=
"AvgSFChan"
;
18
nbins
= std::vector<int>{128*2, 128*2};
19
range_start
= std::vector<double>{0, 0};
20
range_end
= std::vector<double>{128*12, 128*12};
21
plot_var
= std::vector<double>{-1, -1};
22
}
23
24
bool
avgSciFiFiducialCut::passCut
(){
25
initializeEvent
();
26
27
double
avg_ver = 0.;
28
unsigned
int
n_ver = 0;
29
double
avg_hor = 0.;
30
unsigned
int
n_hor = 0;
31
32
sndScifiHit
* hit;
33
TIter hitIterator(
scifiDigiHitCollection
);
34
35
while
( (hit = (
sndScifiHit
*) hitIterator.Next()) ){
36
if
(hit->
isValid
()){
37
int
mat = hit->
GetMat
();
38
int
sipm = hit->
GetSiPM
();
39
int
channel = hit->
GetSiPMChan
();
40
41
int
x = channel + sipm*128 + mat*4*128;
42
43
if
(hit->
isVertical
()){
44
avg_ver += x;
45
n_ver++;
46
}
else
{
47
avg_hor += x;
48
n_hor++;
49
}
50
}
51
}
52
53
if
((n_ver+n_hor) == 0) {
54
plot_var
[0] = -1;
55
plot_var
[1] = -1;
56
return
false
;
57
}
58
59
if
(n_ver) {
60
avg_ver /= n_ver;
61
plot_var
[0] = avg_ver;
62
}
else
{
63
plot_var
[0] = -1;
64
}
65
66
if
(n_hor) {
67
avg_hor /= n_hor;
68
plot_var
[1] = avg_hor;
69
}
else
{
70
plot_var
[1] = -1;
71
}
72
73
if
(n_ver == 0)
return
false
;
74
if
(n_hor == 0)
return
false
;
75
76
if
(not
reversed
) {
77
if
(avg_hor <
horizontal_min
)
return
false
;
78
if
(avg_hor >
horizontal_max
)
return
false
;
79
if
(avg_ver <
vertical_min
)
return
false
;
80
if
(avg_ver >
vertical_max
)
return
false
;
81
}
else
{
82
if
((avg_hor >
horizontal_min
) and (avg_hor <
horizontal_max
))
return
false
;
83
if
((avg_ver >
vertical_min
) and (avg_ver <
vertical_max
))
return
false
;
84
}
85
return
true
;
86
}
87
}
sndScifiHit
Definition
sndScifiHit.h:10
sndScifiHit::GetMat
Int_t GetMat()
Definition
sndScifiHit.h:36
sndScifiHit::GetSiPMChan
Int_t GetSiPMChan()
Definition
sndScifiHit.h:38
sndScifiHit::GetSiPM
Int_t GetSiPM()
Definition
sndScifiHit.h:37
sndScifiHit::isValid
bool isValid() const
Definition
sndScifiHit.h:30
sndScifiHit::isVertical
bool isVertical()
Definition
sndScifiHit.h:32
snd::analysis_cuts::avgSciFiFiducialCut::passCut
bool passCut()
Definition
sndAvgSciFiFiducialCut.cxx:24
snd::analysis_cuts::avgSciFiFiducialCut::vertical_max
double vertical_max
Definition
sndAvgSciFiFiducialCut.h:12
snd::analysis_cuts::avgSciFiFiducialCut::horizontal_min
double horizontal_min
Definition
sndAvgSciFiFiducialCut.h:12
snd::analysis_cuts::avgSciFiFiducialCut::reversed
bool reversed
Definition
sndAvgSciFiFiducialCut.h:13
snd::analysis_cuts::avgSciFiFiducialCut::avgSciFiFiducialCut
avgSciFiFiducialCut(double vertical_min_cut, double vertical_max_cut, double horizontal_min_cut, double horizontal_max_cut, TChain *ch, bool reverseCuts=false)
Definition
sndAvgSciFiFiducialCut.cxx:6
snd::analysis_cuts::avgSciFiFiducialCut::horizontal_max
double horizontal_max
Definition
sndAvgSciFiFiducialCut.h:12
snd::analysis_cuts::avgSciFiFiducialCut::vertical_min
double vertical_min
Definition
sndAvgSciFiFiducialCut.h:12
snd::analysis_cuts::baseCut::plot_var
std::vector< double > plot_var
Definition
sndBaseCut.h:14
snd::analysis_cuts::baseCut::shortName
std::string shortName
Definition
sndBaseCut.h:10
snd::analysis_cuts::baseCut::range_end
std::vector< double > range_end
Definition
sndBaseCut.h:13
snd::analysis_cuts::baseCut::cutName
std::string cutName
Definition
sndBaseCut.h:9
snd::analysis_cuts::baseCut::range_start
std::vector< double > range_start
Definition
sndBaseCut.h:12
snd::analysis_cuts::baseCut::nbins
std::vector< int > nbins
Definition
sndBaseCut.h:11
snd::analysis_cuts::sciFiBaseCut
Definition
sndSciFiBaseCut.h:14
snd::analysis_cuts::sciFiBaseCut::scifiDigiHitCollection
static TClonesArray * scifiDigiHitCollection
Definition
sndSciFiBaseCut.h:21
snd::analysis_cuts::sciFiBaseCut::initializeEvent
void initializeEvent()
Definition
sndSciFiBaseCut.cxx:26
snd::analysis_cuts
Definition
sndAvgDSFiducialCut.cxx:5
sndAvgSciFiFiducialCut.h
analysis
cuts
sndAvgSciFiFiducialCut.cxx
Generated by
1.9.8