ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TestBeam
TBRec
src
CBNTAA_TBTrack.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
CBNTAA_TBTrack.h
"
6
7
#include "
TBEvent/TBEventInfo.h
"
8
#include "
TBEvent/TBTrack.h
"
9
#include "
PathResolver/PathResolver.h
"
10
#include <fstream>
11
#include <string>
12
13
14
CBNTAA_TBTrack::CBNTAA_TBTrack
(
const
std::string & name, ISvcLocator * pSvcLocator) :
15
CBNT_TBRecBase
(name, pSvcLocator),
16
m_readFileforXcryo
(true),
17
m_nRun
(0),
18
m_beam_coor_x
(0),
19
m_beam_coor_y
(0),
20
m_beam_chi2_x
(0),
21
m_beam_chi2_y
(0),
22
m_beam_intercept_x
(0),
23
m_beam_intercept_y
(0),
24
m_beam_slope_x
(0),
25
m_beam_slope_y
(0)
26
{
27
declareProperty
(
"ReadFileforXcryo"
,
m_readFileforXcryo
);
28
}
29
30
StatusCode
CBNTAA_TBTrack::CBNT_initialize
() {
31
ATH_MSG_DEBUG
(
"in initialize()"
);
32
33
// Add beam track parameters
34
addBranch
(
"bm_x"
,
m_beam_coor_x
,
"bm_x/f"
);
35
addBranch
(
"bm_y"
,
m_beam_coor_y
,
"bm_y/f"
);
36
addBranch
(
"bm_chi2_x"
,
m_beam_chi2_x
,
"bm_chi2_x/f"
);
37
addBranch
(
"bm_chi2_y"
,
m_beam_chi2_y
,
"bm_chi2_y/f"
);
38
addBranch
(
"bm_x0"
,
m_beam_intercept_x
,
"bm_x0/f"
);
39
addBranch
(
"bm_y0"
,
m_beam_intercept_y
,
"bm_y0/f"
);
40
addBranch
(
"bm_slope_x"
,
m_beam_slope_x
,
"bm_slope_x/f"
);
41
addBranch
(
"bm_slope_y"
,
m_beam_slope_y
,
"bm_slope_y/f"
);
42
43
return
StatusCode::SUCCESS;
44
}
45
46
StatusCode
CBNTAA_TBTrack::CBNT_execute
() {
47
ATH_MSG_DEBUG
(
"in execute()"
);
48
49
// Get xcryo and ytable from a file (by A. Minaenko)
50
// Retrieve Event Info
51
const
TBEventInfo
* theEventInfo =
nullptr
;
52
ATH_CHECK
(
evtStore
()->retrieve(theEventInfo,
"TBEventInfo"
) );
53
54
// Fill run header
55
m_nRun
= theEventInfo->
getRunNum
();
56
float
beamMom = theEventInfo->
getBeamMomentum
();
57
float
xCryo = -9999;
58
float
yTable = -9999;
59
if
(
m_readFileforXcryo
) {
60
if
(!this->
getXcryoYtable
(xCryo, yTable, beamMom)) {
61
ATH_MSG_ERROR
(
"xCryo and yTable are not found"
);
62
return
StatusCode::FAILURE;
63
}
64
}
else
{
65
xCryo = theEventInfo->
getCryoX
();
66
yTable = theEventInfo->
getTableY
();
67
}
68
ATH_MSG_VERBOSE
(
"xCryo = "
<< xCryo );
69
ATH_MSG_VERBOSE
(
"yTable = "
<< yTable );
70
ATH_MSG_VERBOSE
(
"m_nRun = "
<<
m_nRun
);
71
ATH_MSG_VERBOSE
(
"beamMom = "
<< beamMom );
72
73
// Get beam coordinates (by A. Mineanko)
74
TBTrack
*track =
nullptr
;
75
ATH_CHECK
(
evtStore
()->retrieve(track,
"Track"
) );
76
77
float
zCalo = 30000.;
// z-coordinate of the calorimeter surface at which beam coordinates calculated
78
m_beam_coor_x
= track->getUslope()*zCalo + track->getUintercept() + xCryo;
79
m_beam_coor_y
= track->getVslope()*zCalo + track->getVintercept();
80
m_beam_chi2_x
= track->getChi2_u();
81
m_beam_chi2_y
= track->getChi2_v();
82
m_beam_intercept_x
= track->getUintercept();
83
m_beam_intercept_y
= track->getVintercept();
84
m_beam_slope_x
= track->getUslope();
85
m_beam_slope_y
= track->getVslope();
86
ATH_MSG_VERBOSE
(
"m_beam_coor_x = "
<<
m_beam_coor_x
);
87
ATH_MSG_VERBOSE
(
"track->getUslope() = "
<< track->getUslope() );
88
ATH_MSG_VERBOSE
(
"zCalo = "
<< zCalo );
89
ATH_MSG_VERBOSE
(
"track->getUintercept() = "
<< track->getUintercept() );
90
ATH_MSG_VERBOSE
(
"xCryo = "
<< xCryo );
91
ATH_MSG_VERBOSE
(
"m_beam_coor_y = "
<<
m_beam_coor_y
);
92
ATH_MSG_VERBOSE
(
"track->getVslope() = "
<< track->getVslope() );
93
ATH_MSG_VERBOSE
(
"m_beam_intercept_x = "
<<
m_beam_intercept_x
);
94
ATH_MSG_VERBOSE
(
"m_beam_intercept_y = "
<<
m_beam_intercept_y
);
95
96
return
StatusCode::SUCCESS;
97
}
98
99
StatusCode
CBNTAA_TBTrack::CBNT_finalize
() {
100
ATH_MSG_DEBUG
(
"in finalize()"
);
101
return
StatusCode::SUCCESS;
102
}
103
104
std::string
CBNTAA_TBTrack::add_name
(
const
char
*
base
,
const
std::string& extension) {
105
std::string retval(
base
);
106
for
(
unsigned
i=0;i<extension.size();i++) {
107
const
char
& ch=extension[i];
108
if
(ch==
'='
|| ch==
':'
|| ch==
'/'
)
109
continue
;
//Ignore these characters
110
else
if
(ch==
'-'
)
111
retval.append(
"m"
);
//replace by letter m
112
else
if
(ch==
'+'
)
113
retval.append(
"p"
);
//replace by letter p
114
else
115
retval.append(1,ch);
116
}
117
return
retval;
118
}
119
120
// by A. Minaenko (necessary for TBTrack information)
121
StatusCode
CBNTAA_TBTrack::getXcryoYtable
(
float
&
x
,
float
&
y
,
float
&e) {
122
123
// not good to put here (just a workaround) - joh
124
std::string txtFileWithXY =
"xcryo_ytable.txt"
;
125
126
ATH_MSG_DEBUG
(
"in getXcryoYtable(float x, float y)"
);
127
std::ifstream xyFile;
128
std::string line;
129
std::string filename =
PathResolver::find_file
(txtFileWithXY,
"DATAPATH"
);
130
xyFile.open(filename.c_str());
131
if
(!xyFile.is_open()) {
132
ATH_MSG_ERROR
(
"File "
<< txtFileWithXY <<
" fail to open in $DATAPATH"
);
133
return
StatusCode::FAILURE;
134
}
135
while
( getline(xyFile, line,
'\n'
) ) {
136
int
run
;
137
std::istringstream buf(line);
138
e = 0;
139
buf >>
run
>>
x
>>
y
>> e;
140
ATH_MSG_DEBUG
(
"m_nRun,run,x,y,e= "
<<
m_nRun
<<
" "
<<
run
<<
" "
<<
x
<<
" "
<<
y
<<
" "
<<e);
141
if
(
run
==
m_nRun
&& xyFile.good())
return
StatusCode::SUCCESS;
142
}
143
return
StatusCode::FAILURE;
144
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CBNTAA_TBTrack.h
PathResolver.h
TBEventInfo.h
TBTrack.h
y
#define y
x
#define x
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
AthCommonAlgorithm< Gaudi::Algorithm >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
Definition
AthCommonDataStore.h:85
CBNTAA_TBTrack::m_beam_chi2_y
float m_beam_chi2_y
Definition
CBNTAA_TBTrack.h:37
CBNTAA_TBTrack::m_beam_slope_y
float m_beam_slope_y
Definition
CBNTAA_TBTrack.h:41
CBNTAA_TBTrack::m_nRun
int m_nRun
Definition
CBNTAA_TBTrack.h:31
CBNTAA_TBTrack::CBNT_initialize
virtual StatusCode CBNT_initialize() override
Definition
CBNTAA_TBTrack.cxx:30
CBNTAA_TBTrack::m_readFileforXcryo
bool m_readFileforXcryo
Get Xcryo and Ytable from a text file.
Definition
CBNTAA_TBTrack.h:29
CBNTAA_TBTrack::m_beam_coor_x
float m_beam_coor_x
Definition
CBNTAA_TBTrack.h:34
CBNTAA_TBTrack::m_beam_coor_y
float m_beam_coor_y
Definition
CBNTAA_TBTrack.h:35
CBNTAA_TBTrack::CBNTAA_TBTrack
CBNTAA_TBTrack(const std::string &name, ISvcLocator *pSvcLocator)
Definition
CBNTAA_TBTrack.cxx:14
CBNTAA_TBTrack::CBNT_finalize
virtual StatusCode CBNT_finalize() override
Definition
CBNTAA_TBTrack.cxx:99
CBNTAA_TBTrack::m_beam_chi2_x
float m_beam_chi2_x
Definition
CBNTAA_TBTrack.h:36
CBNTAA_TBTrack::m_beam_slope_x
float m_beam_slope_x
Definition
CBNTAA_TBTrack.h:40
CBNTAA_TBTrack::m_beam_intercept_y
float m_beam_intercept_y
Definition
CBNTAA_TBTrack.h:39
CBNTAA_TBTrack::add_name
std::string add_name(const char *base, const std::string &extension)
Definition
CBNTAA_TBTrack.cxx:104
CBNTAA_TBTrack::m_beam_intercept_x
float m_beam_intercept_x
Definition
CBNTAA_TBTrack.h:38
CBNTAA_TBTrack::getXcryoYtable
StatusCode getXcryoYtable(float &x, float &y, float &eBeam)
Definition
CBNTAA_TBTrack.cxx:121
CBNTAA_TBTrack::CBNT_execute
virtual StatusCode CBNT_execute() override
Definition
CBNTAA_TBTrack.cxx:46
CBNT_TBRecBase::addBranch
void addBranch(const std::string &branchname, T &obj, const std::string &leaflist)
Definition
CBNT_TBRecBase.h:44
CBNT_TBRecBase::CBNT_TBRecBase
CBNT_TBRecBase(const std::string &name, ISvcLocator *pSvcLocator)
Definition
CBNT_TBRecBase.cxx:12
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)
Definition
PathResolver.cxx:220
TBEventInfo
Definition
TBEventInfo.h:27
TBEventInfo::getBeamMomentum
float getBeamMomentum() const
Definition
TBEventInfo.h:73
TBEventInfo::getTableY
float getTableY() const
Definition
TBEventInfo.h:77
TBEventInfo::getCryoX
float getCryoX() const
Definition
TBEventInfo.h:75
TBEventInfo::getRunNum
unsigned int getRunNum() const
Definition
TBEventInfo.h:72
TBTrack
Definition
TBTrack.h:20
base
std::string base
Definition
hcg.cxx:83
run
int run(int argc, char *argv[])
Definition
ttree2hdf5.cxx:28
Generated on
for ATLAS Offline Software by
1.17.0