BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnTriggersCheck.cxx
Go to the documentation of this file.
1
#include "
BmnTriggersCheck.h
"
2
3
#include "BmnTrigDigit.h"
4
5
BmnTriggersCheck::BmnTriggersCheck
(
Bool_t
isExp,
Int_t
runP,
Int_t
runN)
6
{
7
fIsExp
= isExp;
8
fRunPeriod
= runP;
9
fRunNumber
= runN;
10
11
fT0Branch
=
"T0"
;
12
fVetoBranch
=
"VC"
;
13
fBC2Branch
=
"BC2"
;
14
fBC1Branch
=
"BC1"
;
15
fBC3Branch
=
"BC3"
;
16
fBDBranch
=
"BD"
;
17
fBmnEventHeaderBranchName
=
"EventHeader"
;
18
fBmnEvQualityBranchName
=
"BmnEventQuality"
;
19
}
20
21
InitStatus
BmnTriggersCheck::Init
()
22
{
23
FairRootManager* ioman = FairRootManager::Instance();
24
25
fBmnEventHeader
= (
TClonesArray
*)ioman->GetObject(
fBmnEventHeaderBranchName
);
26
fT0Array
= (
TClonesArray
*)ioman->GetObject(
fT0Branch
.Data());
27
fVetoArray
= (
TClonesArray
*)ioman->GetObject(
fVetoBranch
.Data());
28
fBC2Array
= (
TClonesArray
*)ioman->GetObject(
fBC2Branch
.Data());
29
fBDArray
= (
TClonesArray
*)ioman->GetObject(
fBDBranch
.Data());
30
fBC1Array
= (
TClonesArray
*)ioman->GetObject(
fBC1Branch
.Data());
31
fBC3Array
= (
TClonesArray
*)ioman->GetObject(
fBC3Branch
.Data());
32
33
fBmnEvQuality
=
new
TClonesArray
(
fBmnEvQualityBranchName
);
34
ioman->Register(
fBmnEvQualityBranchName
,
"QUALITY"
,
fBmnEvQuality
,
true
);
35
36
return
kSUCCESS;
37
}
38
39
void
BmnTriggersCheck::Exec
(
Option_t
* opt)
40
{
41
if
(!
fIsExp
)
42
return
;
43
44
fBmnEvQuality
->Delete();
45
46
BmnEventQuality
* evQual =
new
((*fBmnEvQuality)[
fBmnEvQuality
->GetEntriesFast()])
BmnEventQuality
(
"GOOD"
);
47
48
Int_t
cntr2 = 0;
49
Bool_t
time2 = 0;
50
for
(
Int_t
iDig = 0; iDig <
fBC2Array
->GetEntriesFast(); ++iDig) {
51
BmnTrigDigit
* dig = (
BmnTrigDigit
*)
fBC2Array
->At(iDig);
52
if
(dig->
GetMod
() == 0) {
53
cntr2++;
54
// if (dig->GetTime() < 420 || dig->GetTime() > 600) time2 =1;
55
// cout<<" time BC2 "<<dig->GetTime()<<" time2 "<<time2<<endl;
56
}
57
}
58
if
(cntr2 > 2 || time2 == 1)
59
evQual->
SetIsGoodEvent
(
"BAD"
);
60
61
Int_t
cntr1 = 0;
62
Bool_t
time1 = 0;
63
for
(
Int_t
iDig = 0; iDig <
fBC1Array
->GetEntriesFast(); ++iDig) {
64
BmnTrigDigit
* dig = (
BmnTrigDigit
*)
fBC1Array
->At(iDig);
65
if
(dig->
GetMod
() == 0) {
66
cntr1++;
67
// if (dig->GetTime() < 460 || dig->GetTime() > 600) time1 =1;
68
// cout<<" time BC1 "<<dig->GetTime()<<" time1 "<<time1<<endl;
69
}
70
}
71
if
(cntr1 > 2 || time1 == 1)
72
evQual->
SetIsGoodEvent
(
"BAD"
);
73
74
Int_t
cntr3 = 0;
75
Bool_t
time3 = 0;
76
for
(
Int_t
iDig = 0; iDig <
fBC3Array
->GetEntriesFast(); ++iDig) {
77
BmnTrigDigit
* dig = (
BmnTrigDigit
*)
fBC3Array
->At(iDig);
78
if
(dig->
GetMod
() == 0) {
79
cntr1++;
80
// if (dig->GetTime() < 470 || dig->GetTime() > 620) time3 =1;
81
// cout<<" time BC3 "<<dig->GetTime()<<" time3 "<<time3<<endl;
82
}
83
}
84
if
(cntr3 > 2 || time3 == 1)
85
evQual->
SetIsGoodEvent
(
"BAD"
);
86
87
// if (fVetoArray != NULL){
88
Int_t
cntrv = 0;
89
for
(
Int_t
iDig = 0; iDig <
fVetoArray
->GetEntriesFast(); ++iDig) {
90
BmnTrigDigit
* dig = (
BmnTrigDigit
*)
fVetoArray
->At(iDig);
91
if
(dig->
GetMod
() == 0)
92
cntrv++;
93
}
94
if
(cntrv >= 1)
95
evQual->
SetIsGoodEvent
(
"BAD"
);
96
97
// } else cout<<" fVetoArray not found "<<endl;
98
99
// BmnEventQuality* evQual = new ((*fBmnEvQuality)[fBmnEvQuality->GetEntriesFast()]) BmnEventQuality("GOOD");
100
101
// const Int_t kEnergies = 4;
102
// const Int_t kTargets = 5;
103
// Double_t energies[kEnergies] = {3.5, 4., 4.5, 5.14};
104
// TString targets[kTargets] = {"C", "Al", "Cu", "Pb", "C2H4"};
105
106
// BmnEventHeader* evHeader = (BmnEventHeader*) fBmnEventHeader->UncheckedAt(0);
107
// if (!evHeader)
108
// return;
109
110
// UniRun* runInfo = UniRun::GetRun(fRunPeriod, fRunNumber);
111
112
// BmnTriggerType trigType = evHeader->GetTrig();
113
// if (trigType == kBMNMINBIAS) {
114
// // Setup BD-threshold
115
// // To be read subsequently from the UniDB directly when processing RUN7, FIXME
116
// TString target = *runInfo->GetTargetParticle();
117
// Double_t energy = *runInfo->GetEnergy();
118
// Int_t bdThresh;
119
// if (Abs(energy - energies[0]) < FLT_EPSILON) // 3.5 GeV/n, all targets
120
// bdThresh = 2;
121
// else if (Abs(energy - energies[1]) < FLT_EPSILON && (target == targets[0] || target == targets[4])) // 4
122
// GeV/n, C, C2H4
123
// bdThresh = 2;
124
// else if (Abs(energy - energies[1]) < FLT_EPSILON && target != targets[0] && target != targets[4]) // 4
125
// GeV/n, Al, Cu, Pb
126
// bdThresh = 3;
127
// else if (Abs(energy - energies[2]) < FLT_EPSILON && (target == targets[0] || target == targets[4]))
128
// // 4.5 GeV/n, C, C2H4
129
// bdThresh = 2;
130
// else if (Abs(energy - energies[2]) < FLT_EPSILON && target != targets[0] && target != targets[4]) // 4
131
// GeV/n, Al, Cu, Pb
132
// bdThresh = 3;
133
// else if (Abs(energy - energies[3]) < FLT_EPSILON) // 5.14 GeV/n, all targets
134
// bdThresh = 2;
135
// else
136
// bdThresh = 0;
137
138
// if (fT0Array->GetEntriesFast() != 1 || fBC2Array->GetEntriesFast() != 1 || fVetoArray->GetEntriesFast()
139
// != 0 || fBDArray->GetEntriesFast() < bdThresh)
140
// evQual->SetIsGoodEvent("BAD");
141
// }
142
143
// else if (trigType == kBMNBEAM) {
144
// if (fVetoArray->GetEntriesFast() > 1 || fBDArray->GetEntriesFast() > 0)
145
// evQual->SetIsGoodEvent("BAD");
146
// }
147
148
// else
149
// evQual->SetIsGoodEvent("BAD");
150
}
151
152
void
BmnTriggersCheck::Finish
() {}
Bool_t
bool Bool_t
Int_t
int Int_t
Option_t
const char Option_t
BmnEventQuality
Definition
BmnEventQuality.h:10
BmnEventQuality::SetIsGoodEvent
void SetIsGoodEvent(TString str)
Definition
BmnEventQuality.h:17
BmnTrigDigit
Definition
BmnTrigDigit.h:7
BmnTrigDigit::GetMod
Short_t GetMod() const
Definition
BmnTrigDigit.h:15
BmnTriggersCheck::Finish
virtual void Finish()
Definition
BmnTriggersCheck.cxx:152
BmnTriggersCheck::fBC1Array
TClonesArray * fBC1Array
Definition
BmnTriggersCheck.h:49
BmnTriggersCheck::fIsExp
Bool_t fIsExp
Definition
BmnTriggersCheck.h:32
BmnTriggersCheck::fBC1Branch
TString fBC1Branch
Definition
BmnTriggersCheck.h:39
BmnTriggersCheck::fVetoBranch
TString fVetoBranch
Definition
BmnTriggersCheck.h:37
BmnTriggersCheck::fT0Branch
TString fT0Branch
Definition
BmnTriggersCheck.h:36
BmnTriggersCheck::fBmnEvQualityBranchName
TString fBmnEvQualityBranchName
Definition
BmnTriggersCheck.h:43
BmnTriggersCheck::fBC3Array
TClonesArray * fBC3Array
Definition
BmnTriggersCheck.h:50
BmnTriggersCheck::fVetoArray
TClonesArray * fVetoArray
Definition
BmnTriggersCheck.h:47
BmnTriggersCheck::fRunPeriod
Int_t fRunPeriod
Definition
BmnTriggersCheck.h:33
BmnTriggersCheck::fBmnEventHeaderBranchName
TString fBmnEventHeaderBranchName
Definition
BmnTriggersCheck.h:35
BmnTriggersCheck::Init
virtual InitStatus Init()
Definition
BmnTriggersCheck.cxx:21
BmnTriggersCheck::Exec
virtual void Exec(Option_t *opt)
Definition
BmnTriggersCheck.cxx:39
BmnTriggersCheck::fBDArray
TClonesArray * fBDArray
Definition
BmnTriggersCheck.h:51
BmnTriggersCheck::fBC2Branch
TString fBC2Branch
Definition
BmnTriggersCheck.h:38
BmnTriggersCheck::fBmnEvQuality
TClonesArray * fBmnEvQuality
Definition
BmnTriggersCheck.h:54
BmnTriggersCheck::fBmnEventHeader
TClonesArray * fBmnEventHeader
Definition
BmnTriggersCheck.h:45
BmnTriggersCheck::fBC3Branch
TString fBC3Branch
Definition
BmnTriggersCheck.h:40
BmnTriggersCheck::BmnTriggersCheck
BmnTriggersCheck()
Definition
BmnTriggersCheck.h:21
BmnTriggersCheck::fBC2Array
TClonesArray * fBC2Array
Definition
BmnTriggersCheck.h:48
BmnTriggersCheck::fRunNumber
Int_t fRunNumber
Definition
BmnTriggersCheck.h:34
BmnTriggersCheck::fBDBranch
TString fBDBranch
Definition
BmnTriggersCheck.h:41
BmnTriggersCheck::fT0Array
TClonesArray * fT0Array
Definition
BmnTriggersCheck.h:46
TClonesArray
BmnTriggersCheck.h
reconstruction
globaltracking
BmnTriggersCheck.cxx
Generated on
for BmnRoot by
1.17.0