ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::PropResultRootWriterSvc Class Reference

#include <PropResultRootWriterSvc.h>

Inheritance diagram for Trk::PropResultRootWriterSvc:
Collaboration diagram for Trk::PropResultRootWriterSvc:

Public Member Functions

 PropResultRootWriterSvc (const std::string &name, ISvcLocator *svcloc)
 constructor
virtual ~PropResultRootWriterSvc ()
 destructor
virtual StatusCode initialize () override
template<typename T>
void write (const T *initialPerigee, const T *fwdParameters=nullptr, double fwdtime=std::numeric_limits< float >::quiet_NaN(), const T *bkwParameters=nullptr, double bkwtime=std::numeric_limits< float >::quiet_NaN())
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Private Attributes

std::mutex m_writeMutex
ServiceHandle< ITHistSvc > m_thistSvc
TTree * m_tree
Gaudi::Property< std::string > m_ntupleDirName {this, "DirName", "/ExtrapolationStudies/", ""}
Gaudi::Property< std::string > m_treeName {this, "TreeName", "ATLAS", ""}
int m_eventNum = 0
float m_start_d0 = 0.0F
float m_start_z0 = 0.0F
float m_start_phi = 0.0F
float m_start_theta = 0.0F
float m_start_qop = 0.0F
float m_fwd_success = 0.0F
float m_fwd_time = 0.0F
float m_fwd_final_l0 = 0.0F
float m_fwd_final_l1 = 0.0F
float m_fwd_final_x = 0.0F
float m_fwd_final_y = 0.0F
float m_fwd_final_z = 0.0F
float m_fwd_final_phi = 0.0F
float m_fwd_final_theta = 0.0F
float m_fwd_final_qop = 0.0F
float m_fwd_final_sigma_l0 = 0.0F
float m_fwd_final_sigma_l1 = 0.0F
float m_fwd_final_sigma_phi = 0.0F
float m_fwd_final_sigma_theta = 0.0F
float m_fwd_final_sigma_qop = 0.0F
float m_bkw_success = 0.0F
float m_bkw_time = 0.0F
float m_bkw_final_d0 = 0.0F
float m_bkw_final_z0 = 0.0F
float m_bkw_final_phi = 0.0F
float m_bkw_final_theta = 0.0F
float m_bkw_final_qop = 0.0F
float m_bkw_final_sigma_d0 = 0.0F
float m_bkw_final_sigma_z0 = 0.0F
float m_bkw_final_sigma_phi = 0.0F
float m_bkw_final_sigma_theta = 0.0F
float m_bkw_final_sigma_qop = 0.0F

Detailed Description

Definition at line 21 of file PropResultRootWriterSvc.h.

Constructor & Destructor Documentation

◆ PropResultRootWriterSvc()

Trk::PropResultRootWriterSvc::PropResultRootWriterSvc ( const std::string & name,
ISvcLocator * svcloc )

constructor

Definition at line 15 of file PropResultRootWriterSvc.cxx.

16: AthService(name, svc),
17 m_thistSvc("THistSvc", name),
18 m_tree(nullptr) {
19}
ServiceHandle< ITHistSvc > m_thistSvc

◆ ~PropResultRootWriterSvc()

Trk::PropResultRootWriterSvc::~PropResultRootWriterSvc ( )
virtualdefault

destructor

Member Function Documentation

◆ initialize()

StatusCode Trk::PropResultRootWriterSvc::initialize ( )
overridevirtual

Definition at line 23 of file PropResultRootWriterSvc.cxx.

24{
25 ATH_CHECK( AthService::initialize() );
26
27 CHECK(m_thistSvc.retrieve());
28
29 const std::string treeName = m_treeName;
30 m_tree = new TTree(treeName.data(), "MyStudies");
31
32 std::string fullNtupleName = static_cast<std::string>(m_ntupleDirName) + m_treeName;
33 CHECK(m_thistSvc->regTree(fullNtupleName, m_tree));
34
35 if(m_tree == nullptr) {
36 ATH_MSG_ERROR("Unable to create TTree");
37 return StatusCode::FAILURE;
38 }
39
40 m_tree->Branch("event_nr" , &m_eventNum );
41
42 m_tree->Branch("start_d0" , &m_start_d0 );
43 m_tree->Branch("start_z0" , &m_start_z0 );
44 m_tree->Branch("start_phi" , &m_start_phi );
45 m_tree->Branch("start_theta", &m_start_theta);
46 m_tree->Branch("start_qop" , &m_start_qop );
47
48 m_tree->Branch("fwd_success" , &m_fwd_success );
49 m_tree->Branch("fwd_time" , &m_fwd_time );
50 m_tree->Branch("fwd_final_l0" , &m_fwd_final_l0 );
51 m_tree->Branch("fwd_final_l1" , &m_fwd_final_l1 );
52 m_tree->Branch("fwd_final_x" , &m_fwd_final_x );
53 m_tree->Branch("fwd_final_y" , &m_fwd_final_y );
54 m_tree->Branch("fwd_final_z" , &m_fwd_final_z );
55 m_tree->Branch("fwd_final_phi" , &m_fwd_final_phi );
56 m_tree->Branch("fwd_final_theta", &m_fwd_final_theta);
57 m_tree->Branch("fwd_final_qop" , &m_fwd_final_qop );
58 m_tree->Branch("fwd_final_sigma_l0" , &m_fwd_final_sigma_l0 );
59 m_tree->Branch("fwd_final_sigma_l1" , &m_fwd_final_sigma_l1 );
60 m_tree->Branch("fwd_final_sigma_phi" , &m_fwd_final_sigma_phi );
61 m_tree->Branch("fwd_final_sigma_theta", &m_fwd_final_sigma_theta);
62 m_tree->Branch("fwd_final_sigma_qop" , &m_fwd_final_sigma_qop );
63
64 m_tree->Branch("bkw_success" , &m_bkw_success );
65 m_tree->Branch("bkw_time" , &m_bkw_time );
66 m_tree->Branch("bkw_final_d0" , &m_bkw_final_d0 );
67 m_tree->Branch("bkw_final_z0" , &m_bkw_final_z0 );
68 m_tree->Branch("bkw_final_phi" , &m_bkw_final_phi );
69 m_tree->Branch("bkw_final_theta", &m_bkw_final_theta);
70 m_tree->Branch("bkw_final_qop" , &m_bkw_final_qop );
71 m_tree->Branch("bkw_final_sigma_d0" , &m_bkw_final_sigma_d0 );
72 m_tree->Branch("bkw_final_sigma_z0" , &m_bkw_final_sigma_z0 );
73 m_tree->Branch("bkw_final_sigma_phi" , &m_bkw_final_sigma_phi );
74 m_tree->Branch("bkw_final_sigma_theta", &m_bkw_final_sigma_theta);
75 m_tree->Branch("bkw_final_sigma_qop" , &m_bkw_final_sigma_qop );
76
77 return StatusCode::SUCCESS;
78}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define CHECK(...)
Evaluate an expression and check for errors.
Gaudi::Property< std::string > m_ntupleDirName
Gaudi::Property< std::string > m_treeName

◆ msg()

MsgStream & AthCommonMsg< Service >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Service >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ write()

template<typename T>
void Trk::PropResultRootWriterSvc::write ( const T * initialPerigee,
const T * fwdParameters = nullptr,
double fwdtime = std::numeric_limits<float>::quiet_NaN(),
const T * bkwParameters = nullptr,
double bkwtime = std::numeric_limits<float>::quiet_NaN() )

Definition at line 84 of file PropResultRootWriterSvc.h.

86 {
87
88 const auto& ctx = Gaudi::Hive::currentContext();
89
90 m_eventNum = ctx.eventID().event_number();
91
92 if (initialPerigee) {
93 m_start_d0 = initialPerigee->parameters()[0];
94 m_start_z0 = initialPerigee->parameters()[1];
95 m_start_phi = initialPerigee->parameters()[2];
96 m_start_theta= initialPerigee->parameters()[3];
97 m_start_qop = initialPerigee->parameters()[4];
98 } else {
99 m_start_d0 = std::numeric_limits<float>::quiet_NaN();
100 m_start_z0 = std::numeric_limits<float>::quiet_NaN();
101 m_start_phi = std::numeric_limits<float>::quiet_NaN();
102 m_start_theta= std::numeric_limits<float>::quiet_NaN();
103 m_start_qop = std::numeric_limits<float>::quiet_NaN();
104 }
105
106 if (fwdParameters) {
107 m_fwd_success = 1;
108 m_fwd_time = fwdtime;
109 m_fwd_final_l0 = fwdParameters->parameters()[0];
110 m_fwd_final_l1 = fwdParameters->parameters()[1];
111 m_fwd_final_phi = fwdParameters->parameters()[2];
112 m_fwd_final_theta = fwdParameters->parameters()[3];
113 m_fwd_final_qop = fwdParameters->parameters()[4];
114 m_fwd_final_x = fwdParameters->position()[0];
115 m_fwd_final_y = fwdParameters->position()[1];
116 m_fwd_final_z = fwdParameters->position()[2];
117 if (fwdParameters->covariance()) {
118 m_fwd_final_sigma_l0 = (*fwdParameters->covariance())(0,0);
119 m_fwd_final_sigma_l1 = (*fwdParameters->covariance())(1,1);
120 m_fwd_final_sigma_phi = (*fwdParameters->covariance())(2,2);
121 m_fwd_final_sigma_theta = (*fwdParameters->covariance())(3,3);
122 m_fwd_final_sigma_qop = (*fwdParameters->covariance())(4,4);
123 } else {
124 m_fwd_final_sigma_l0 = std::numeric_limits<float>::quiet_NaN();
125 m_fwd_final_sigma_l1 = std::numeric_limits<float>::quiet_NaN();
126 m_fwd_final_sigma_phi = std::numeric_limits<float>::quiet_NaN();
127 m_fwd_final_sigma_theta = std::numeric_limits<float>::quiet_NaN();
128 m_fwd_final_sigma_qop = std::numeric_limits<float>::quiet_NaN();
129 }
130 } else {
131 m_fwd_success = std::numeric_limits<float>::quiet_NaN();
132 m_fwd_time = std::numeric_limits<float>::quiet_NaN();
133 m_fwd_final_l0 = std::numeric_limits<float>::quiet_NaN();
134 m_fwd_final_l1 = std::numeric_limits<float>::quiet_NaN();
135 m_fwd_final_phi = std::numeric_limits<float>::quiet_NaN();
136 m_fwd_final_theta = std::numeric_limits<float>::quiet_NaN();
137 m_fwd_final_qop = std::numeric_limits<float>::quiet_NaN();
138 m_fwd_final_x = std::numeric_limits<float>::quiet_NaN();
139 m_fwd_final_y = std::numeric_limits<float>::quiet_NaN();
140 m_fwd_final_z = std::numeric_limits<float>::quiet_NaN();
141 m_fwd_final_sigma_l0 = std::numeric_limits<float>::quiet_NaN();
142 m_fwd_final_sigma_l1 = std::numeric_limits<float>::quiet_NaN();
143 m_fwd_final_sigma_phi = std::numeric_limits<float>::quiet_NaN();
144 m_fwd_final_sigma_theta = std::numeric_limits<float>::quiet_NaN();
145 m_fwd_final_sigma_qop = std::numeric_limits<float>::quiet_NaN();
146 }
147
148 if (bkwParameters) {
149 m_bkw_success = 1;
150 m_bkw_time = bkwtime;
151 m_bkw_final_d0 = bkwParameters->parameters()[0];
152 m_bkw_final_z0 = bkwParameters->parameters()[1];
153 m_bkw_final_phi = bkwParameters->parameters()[2];
154 m_bkw_final_theta = bkwParameters->parameters()[3];
155 m_bkw_final_qop = bkwParameters->parameters()[4];
156 if (bkwParameters->covariance()) {
157 m_bkw_final_sigma_d0 = (*bkwParameters->covariance())(0,0);
158 m_bkw_final_sigma_z0 = (*bkwParameters->covariance())(1,1);
159 m_bkw_final_sigma_phi = (*bkwParameters->covariance())(2,2);
160 m_bkw_final_sigma_theta = (*bkwParameters->covariance())(3,3);
161 m_bkw_final_sigma_qop = (*bkwParameters->covariance())(4,4);
162 } else {
163 m_bkw_final_sigma_d0 = std::numeric_limits<float>::quiet_NaN();
164 m_bkw_final_sigma_z0 = std::numeric_limits<float>::quiet_NaN();
165 m_bkw_final_sigma_phi = std::numeric_limits<float>::quiet_NaN();
166 m_bkw_final_sigma_theta = std::numeric_limits<float>::quiet_NaN();
167 m_bkw_final_sigma_qop = std::numeric_limits<float>::quiet_NaN();
168 }
169 } else {
170 m_bkw_success = std::numeric_limits<float>::quiet_NaN();
171 m_bkw_time = std::numeric_limits<float>::quiet_NaN();
172 m_bkw_final_d0 = std::numeric_limits<float>::quiet_NaN();
173 m_bkw_final_z0 = std::numeric_limits<float>::quiet_NaN();
174 m_bkw_final_phi = std::numeric_limits<float>::quiet_NaN();
175 m_bkw_final_theta = std::numeric_limits<float>::quiet_NaN();
176 m_bkw_final_qop = std::numeric_limits<float>::quiet_NaN();
177 m_bkw_final_sigma_d0 = std::numeric_limits<float>::quiet_NaN();
178 m_bkw_final_sigma_z0 = std::numeric_limits<float>::quiet_NaN();
179 m_bkw_final_sigma_phi = std::numeric_limits<float>::quiet_NaN();
180 m_bkw_final_sigma_theta = std::numeric_limits<float>::quiet_NaN();
181 m_bkw_final_sigma_qop = std::numeric_limits<float>::quiet_NaN();
182 }
183 m_tree->Fill();
184 }

Member Data Documentation

◆ m_bkw_final_d0

float Trk::PropResultRootWriterSvc::m_bkw_final_d0 = 0.0F
private

Definition at line 70 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_phi

float Trk::PropResultRootWriterSvc::m_bkw_final_phi = 0.0F
private

Definition at line 72 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_qop

float Trk::PropResultRootWriterSvc::m_bkw_final_qop = 0.0F
private

Definition at line 74 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_sigma_d0

float Trk::PropResultRootWriterSvc::m_bkw_final_sigma_d0 = 0.0F
private

Definition at line 75 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_sigma_phi

float Trk::PropResultRootWriterSvc::m_bkw_final_sigma_phi = 0.0F
private

Definition at line 77 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_sigma_qop

float Trk::PropResultRootWriterSvc::m_bkw_final_sigma_qop = 0.0F
private

Definition at line 79 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_sigma_theta

float Trk::PropResultRootWriterSvc::m_bkw_final_sigma_theta = 0.0F
private

Definition at line 78 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_sigma_z0

float Trk::PropResultRootWriterSvc::m_bkw_final_sigma_z0 = 0.0F
private

Definition at line 76 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_theta

float Trk::PropResultRootWriterSvc::m_bkw_final_theta = 0.0F
private

Definition at line 73 of file PropResultRootWriterSvc.h.

◆ m_bkw_final_z0

float Trk::PropResultRootWriterSvc::m_bkw_final_z0 = 0.0F
private

Definition at line 71 of file PropResultRootWriterSvc.h.

◆ m_bkw_success

float Trk::PropResultRootWriterSvc::m_bkw_success = 0.0F
private

Definition at line 68 of file PropResultRootWriterSvc.h.

◆ m_bkw_time

float Trk::PropResultRootWriterSvc::m_bkw_time = 0.0F
private

Definition at line 69 of file PropResultRootWriterSvc.h.

◆ m_eventNum

int Trk::PropResultRootWriterSvc::m_eventNum = 0
private

Definition at line 44 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_l0

float Trk::PropResultRootWriterSvc::m_fwd_final_l0 = 0.0F
private

Definition at line 54 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_l1

float Trk::PropResultRootWriterSvc::m_fwd_final_l1 = 0.0F
private

Definition at line 55 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_phi

float Trk::PropResultRootWriterSvc::m_fwd_final_phi = 0.0F
private

Definition at line 59 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_qop

float Trk::PropResultRootWriterSvc::m_fwd_final_qop = 0.0F
private

Definition at line 61 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_sigma_l0

float Trk::PropResultRootWriterSvc::m_fwd_final_sigma_l0 = 0.0F
private

Definition at line 62 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_sigma_l1

float Trk::PropResultRootWriterSvc::m_fwd_final_sigma_l1 = 0.0F
private

Definition at line 63 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_sigma_phi

float Trk::PropResultRootWriterSvc::m_fwd_final_sigma_phi = 0.0F
private

Definition at line 64 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_sigma_qop

float Trk::PropResultRootWriterSvc::m_fwd_final_sigma_qop = 0.0F
private

Definition at line 66 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_sigma_theta

float Trk::PropResultRootWriterSvc::m_fwd_final_sigma_theta = 0.0F
private

Definition at line 65 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_theta

float Trk::PropResultRootWriterSvc::m_fwd_final_theta = 0.0F
private

Definition at line 60 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_x

float Trk::PropResultRootWriterSvc::m_fwd_final_x = 0.0F
private

Definition at line 56 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_y

float Trk::PropResultRootWriterSvc::m_fwd_final_y = 0.0F
private

Definition at line 57 of file PropResultRootWriterSvc.h.

◆ m_fwd_final_z

float Trk::PropResultRootWriterSvc::m_fwd_final_z = 0.0F
private

Definition at line 58 of file PropResultRootWriterSvc.h.

◆ m_fwd_success

float Trk::PropResultRootWriterSvc::m_fwd_success = 0.0F
private

Definition at line 52 of file PropResultRootWriterSvc.h.

◆ m_fwd_time

float Trk::PropResultRootWriterSvc::m_fwd_time = 0.0F
private

Definition at line 53 of file PropResultRootWriterSvc.h.

◆ m_ntupleDirName

Gaudi::Property<std::string> Trk::PropResultRootWriterSvc::m_ntupleDirName {this, "DirName", "/ExtrapolationStudies/", ""}
private

Definition at line 41 of file PropResultRootWriterSvc.h.

41{this, "DirName", "/ExtrapolationStudies/", ""};

◆ m_start_d0

float Trk::PropResultRootWriterSvc::m_start_d0 = 0.0F
private

Definition at line 46 of file PropResultRootWriterSvc.h.

◆ m_start_phi

float Trk::PropResultRootWriterSvc::m_start_phi = 0.0F
private

Definition at line 48 of file PropResultRootWriterSvc.h.

◆ m_start_qop

float Trk::PropResultRootWriterSvc::m_start_qop = 0.0F
private

Definition at line 50 of file PropResultRootWriterSvc.h.

◆ m_start_theta

float Trk::PropResultRootWriterSvc::m_start_theta = 0.0F
private

Definition at line 49 of file PropResultRootWriterSvc.h.

◆ m_start_z0

float Trk::PropResultRootWriterSvc::m_start_z0 = 0.0F
private

Definition at line 47 of file PropResultRootWriterSvc.h.

◆ m_thistSvc

ServiceHandle<ITHistSvc> Trk::PropResultRootWriterSvc::m_thistSvc
private

Definition at line 39 of file PropResultRootWriterSvc.h.

◆ m_tree

TTree* Trk::PropResultRootWriterSvc::m_tree
private

Definition at line 40 of file PropResultRootWriterSvc.h.

◆ m_treeName

Gaudi::Property<std::string> Trk::PropResultRootWriterSvc::m_treeName {this, "TreeName", "ATLAS", ""}
private

Definition at line 42 of file PropResultRootWriterSvc.h.

42{this, "TreeName", "ATLAS", ""};

◆ m_writeMutex

std::mutex Trk::PropResultRootWriterSvc::m_writeMutex
private

Definition at line 36 of file PropResultRootWriterSvc.h.


The documentation for this class was generated from the following files: