ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RootVertexAndTracksWriter.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file RootVertexAndTracksWriter.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2019 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #pragma once
10 
11 #include <mutex>
12 
15 
16 class TFile;
17 class TTree;
18 
19 namespace FW {
20 
30  : public WriterT<std::vector<VertexAndTracks>> {
31  public:
33  struct Config {
34  std::string collection;
35  std::string filePath;
36  std::string fileMode = "RECREATE";
37  std::string treeName = "event";
38  TFile* rootFile = nullptr;
39  };
40 
46 
48  ~RootVertexAndTracksWriter() final override;
49 
51  ProcessCode endRun() final override;
52 
53  protected:
58  const std::vector<VertexAndTracks>&
59  vertexAndTracksCollection) final override;
60 
61  private:
64  TFile* m_outputFile{nullptr};
65  TTree* m_outputTree{nullptr};
66  int m_eventNr{0};
67 
69  std::vector<double> m_vx;
70  std::vector<double> m_vy;
71  std::vector<double> m_vz;
72 
74  std::vector<double> m_d0;
75  std::vector<double> m_z0;
76  std::vector<double> m_phi;
77  std::vector<double> m_theta;
78  std::vector<double> m_qp;
79  std::vector<double> m_time;
80  std::vector<int> m_vtxID;
81 
83  std::vector<double> m_cov11;
84  std::vector<double> m_cov12;
85  std::vector<double> m_cov13;
86  std::vector<double> m_cov14;
87  std::vector<double> m_cov15;
88  std::vector<double> m_cov16;
89 
90  std::vector<double> m_cov21;
91  std::vector<double> m_cov22;
92  std::vector<double> m_cov23;
93  std::vector<double> m_cov24;
94  std::vector<double> m_cov25;
95  std::vector<double> m_cov26;
96 
97  std::vector<double> m_cov31;
98  std::vector<double> m_cov32;
99  std::vector<double> m_cov33;
100  std::vector<double> m_cov34;
101  std::vector<double> m_cov35;
102  std::vector<double> m_cov36;
103 
104  std::vector<double> m_cov41;
105  std::vector<double> m_cov42;
106  std::vector<double> m_cov43;
107  std::vector<double> m_cov44;
108  std::vector<double> m_cov45;
109  std::vector<double> m_cov46;
110 
111  std::vector<double> m_cov51;
112  std::vector<double> m_cov52;
113  std::vector<double> m_cov53;
114  std::vector<double> m_cov54;
115  std::vector<double> m_cov55;
116  std::vector<double> m_cov56;
117 
118  std::vector<double> m_cov61;
119  std::vector<double> m_cov62;
120  std::vector<double> m_cov63;
121  std::vector<double> m_cov64;
122  std::vector<double> m_cov65;
123  std::vector<double> m_cov66;
124 
126  std::vector<double>* m_ptrVx = &m_vx;
127  std::vector<double>* m_ptrVy = &m_vy;
128  std::vector<double>* m_ptrVz = &m_vz;
129  std::vector<double>* m_ptrD0 = &m_d0;
130  std::vector<double>* m_ptrZ0 = &m_z0;
131  std::vector<double>* m_ptrPhi = &m_phi;
132  std::vector<double>* m_ptrTheta = &m_theta;
133  std::vector<double>* m_ptrQP = &m_qp;
134  std::vector<double>* m_ptrTime = &m_time;
135  std::vector<int>* m_ptrVtxID = &m_vtxID;
136 
137  std::vector<double>* m_ptrCov11 = &m_cov11;
138  std::vector<double>* m_ptrCov12 = &m_cov12;
139  std::vector<double>* m_ptrCov13 = &m_cov13;
140  std::vector<double>* m_ptrCov14 = &m_cov14;
141  std::vector<double>* m_ptrCov15 = &m_cov15;
142  std::vector<double>* m_ptrCov16 = &m_cov16;
143 
144  std::vector<double>* m_ptrCov21 = &m_cov21;
145  std::vector<double>* m_ptrCov22 = &m_cov22;
146  std::vector<double>* m_ptrCov23 = &m_cov23;
147  std::vector<double>* m_ptrCov24 = &m_cov24;
148  std::vector<double>* m_ptrCov25 = &m_cov25;
149  std::vector<double>* m_ptrCov26 = &m_cov26;
150 
151  std::vector<double>* m_ptrCov31 = &m_cov31;
152  std::vector<double>* m_ptrCov32 = &m_cov32;
153  std::vector<double>* m_ptrCov33 = &m_cov33;
154  std::vector<double>* m_ptrCov34 = &m_cov34;
155  std::vector<double>* m_ptrCov35 = &m_cov35;
156  std::vector<double>* m_ptrCov36 = &m_cov36;
157 
158  std::vector<double>* m_ptrCov41 = &m_cov41;
159  std::vector<double>* m_ptrCov42 = &m_cov42;
160  std::vector<double>* m_ptrCov43 = &m_cov43;
161  std::vector<double>* m_ptrCov44 = &m_cov44;
162  std::vector<double>* m_ptrCov45 = &m_cov45;
163  std::vector<double>* m_ptrCov46 = &m_cov46;
164 
165  std::vector<double>* m_ptrCov51 = &m_cov51;
166  std::vector<double>* m_ptrCov52 = &m_cov52;
167  std::vector<double>* m_ptrCov53 = &m_cov53;
168  std::vector<double>* m_ptrCov54 = &m_cov54;
169  std::vector<double>* m_ptrCov55 = &m_cov55;
170  std::vector<double>* m_ptrCov56 = &m_cov56;
171 
172  std::vector<double>* m_ptrCov61 = &m_cov61;
173  std::vector<double>* m_ptrCov62 = &m_cov62;
174  std::vector<double>* m_ptrCov63 = &m_cov63;
175  std::vector<double>* m_ptrCov64 = &m_cov64;
176  std::vector<double>* m_ptrCov65 = &m_cov65;
177  std::vector<double>* m_ptrCov66 = &m_cov66;
178 
180  void ClearAll();
181 };
182 
183 } // namespace FW