ATLAS Offline Software
Loading...
Searching...
No Matches
JetSamplingCnv_p1.cxx
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
5*/
6
7// JetSamplingCnv_p1.cxx
8// Implementation file for class JetSamplingCnv_p1
9// Author: S.Binet<binet@cern.ch>
10// Modified: Belen.Salvachua@cern.ch Dec 2008
11// Updated to latest transient JetSampling
13
14
15// STL includes
16
17// JetEvent includes
19
20// definition of INT_MAX
21#include <limits.h>
22
23// JetEventTPCnv includes
25
26// little MACRO helpers
27#define TPCNV_PERSTOTRANS(p,t,x) t->x = p->x
28#define TPCNV_TRANSTOPERS(t,p,x) p->x = t->x
29
30// statics
32
33
35 JetSampling* trans,
36 MsgStream& msg ) const
37{
38// msg << MSG::DEBUG << "Loading JetSampling from persistent state..."
39// << endmsg;
40
41 CLHEP::HepLorentzVector tmp;
42 m_hlvCnv.persToTrans( &pers->m_pr, &tmp, msg );
43 trans->set_hlv_rec (tmp);
44 m_hlvCnv.persToTrans( &pers->m_pt, &tmp, msg );
45 trans->set_hlv_pic (tmp);
46 m_hlvCnv.persToTrans( &pers->m_pn, &tmp, msg );
47 trans->set_hlv_ntj (tmp);
48
49 // Persistent does not have the data driven jet kinematics m_pd,
50 // so we do not set it in transient, it will be initialize to zero in the constructor
51
52 m_hlvCnv.persToTrans( &pers->m_h1, &tmp, msg );
53 trans->set_hlv_h1 (tmp);
54 m_hlvCnv.persToTrans( &pers->m_pisa, &tmp, msg );
55 trans->set_hlv_pisa (tmp);
56 m_hlvCnv.persToTrans( &pers->m_samp, &tmp, msg );
57 trans->set_hlv_samp (tmp);
58
59 // Jet sampling layer info
60 TPCNV_PERSTOTRANS( pers, trans, m_ejsPreSamplerB );
61 TPCNV_PERSTOTRANS( pers, trans, m_ejsPreSamplerE );
62 TPCNV_PERSTOTRANS( pers, trans, m_ejsEMB1 );
63 TPCNV_PERSTOTRANS( pers, trans, m_ejsEME1 );
64 TPCNV_PERSTOTRANS( pers, trans, m_ejsEMB2 );
65 TPCNV_PERSTOTRANS( pers, trans, m_ejsEME2 );
66 TPCNV_PERSTOTRANS( pers, trans, m_ejsEMB3 );
67 TPCNV_PERSTOTRANS( pers, trans, m_ejsEME3 );
68 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileBar0 );
69 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileExt0 );
70 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileBar1 );
71 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileExt1 );
72 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileBar2 );
73 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileExt2 );
74 TPCNV_PERSTOTRANS( pers, trans, m_ejsHEC0 );
75 TPCNV_PERSTOTRANS( pers, trans, m_ejsHEC1 );
76 TPCNV_PERSTOTRANS( pers, trans, m_ejsHEC2 );
77 TPCNV_PERSTOTRANS( pers, trans, m_ejsHEC3 );
78 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileGap1 );
79 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileGap2 );
80 TPCNV_PERSTOTRANS( pers, trans, m_ejsTileGap3 );
81 TPCNV_PERSTOTRANS( pers, trans, m_ejsFCAL0 );
82 TPCNV_PERSTOTRANS( pers, trans, m_ejsFCAL1 );
83 TPCNV_PERSTOTRANS( pers, trans, m_ejsFCAL2 );
84
85 // Distance to 1st and 2nd NTJ is not present in persistent
86 // representation JetSampling_p1, but it is present in current
87 // transient representation JetSampling.
88 // We fill them to the biggest integer negative number
89 trans->m_dr1 = -1.*INT_MAX;
90 trans->m_dr2 = -1.*INT_MAX;
91
92 TPCNV_PERSTOTRANS( pers, trans, m_tot );
93 TPCNV_PERSTOTRANS( pers, trans, m_ctot );
94 TPCNV_PERSTOTRANS( pers, trans, m_ehad );
95 TPCNV_PERSTOTRANS( pers, trans, m_eem );
96
97 // JetSums does not exist in transient, removed from here
98
99 TPCNV_PERSTOTRANS( pers, trans, m_eCryo );
100 TPCNV_PERSTOTRANS( pers, trans, m_eGap );
101 TPCNV_PERSTOTRANS( pers, trans, m_eScint );
102 TPCNV_PERSTOTRANS( pers, trans, m_eNull );
103
104 // JetECS: Transient has more/finer granularity that can not be rebuilt from old variables
105 // in persistent JetSampling_p1
106 // Those variables will be set to -1.*INT_MAX, largest negative integer value
107 for ( std::size_t i = 0; i != std::tuple_size_v<JetSampling_p1::ECS_t>; ++i ) {
108 TPCNV_PERSTOTRANS( pers, trans, m_ePreSamBCell[i] );
109 TPCNV_PERSTOTRANS( pers, trans, m_ePreSamECell[i] );
110 TPCNV_PERSTOTRANS( pers, trans, m_eEMB1Cell[i] );
111 TPCNV_PERSTOTRANS( pers, trans, m_eEME1Cell[i] );
112
113 // In Transient XXXCell1 is for eta < 0.8
114 // and XXXCell2 is for eta >= 0.8 but in persistent we only have
115 // the sum of both. The converter will store this sum into XXXCell1 and
116 // will set XXXCell2 to the largest negative integer number.
117 trans->m_eEMB2Cell1[i] = pers->m_eEMB2Cell[i];
118 trans->m_eEMB2Cell2[i] = -1.*INT_MAX;
119 trans->m_eEMB3Cell1[i] = pers->m_eEMB3Cell[i];
120 trans->m_eEMB3Cell2[i] = -1.*INT_MAX;
121
122 // In Transient XXXCell1 is for eta < 2.5
123 // and XXXCell2 is for eta >= 2.5 but in persistent we only have
124 // the sum of both. The converter will store this sum into XXXCell1 and
125 // will set XXXCell2 to the largest negative integer number.
126 trans->m_eEME2Cell1[i] = pers->m_eEME2Cell[i];
127 trans->m_eEME2Cell2[i] = -1.*INT_MAX;
128 trans->m_eEME3Cell1[i] = pers->m_eEME3Cell[i];
129 trans->m_eEME3Cell2[i] = -1.*INT_MAX;
130
131 TPCNV_PERSTOTRANS( pers, trans, m_eTileBar0Cell[i] );
132 TPCNV_PERSTOTRANS( pers, trans, m_eTileBar1Cell[i] );
133 TPCNV_PERSTOTRANS( pers, trans, m_eTileBar2Cell[i] );
134 TPCNV_PERSTOTRANS( pers, trans, m_eTileExt0Cell[i] );
135 TPCNV_PERSTOTRANS( pers, trans, m_eTileExt1Cell[i] );
136 TPCNV_PERSTOTRANS( pers, trans, m_eTileExt2Cell[i] );
137
138 // In Transient XXXCell1 is for eta < 2.5
139 // and XXXCell2 is for eta >= 2.5 but in persistent we only have
140 // the sum of both. The converter will store this sum into XXXCell1 and
141 // will set XXXCell2 to the largest negative integer number.
142 trans->m_eHec0Cell1[i] = pers->m_eHec0Cell[i];
143 trans->m_eHec1Cell1[i] = pers->m_eHec1Cell[i];
144 trans->m_eHec2Cell1[i] = pers->m_eHec2Cell[i];
145 trans->m_eHec3Cell1[i] = pers->m_eHec3Cell[i];
146 trans->m_eHec0Cell2[i] = -1.*INT_MAX;
147 trans->m_eHec1Cell2[i] = -1.*INT_MAX;
148 trans->m_eHec2Cell2[i] = -1.*INT_MAX;
149 trans->m_eHec3Cell2[i] = -1.*INT_MAX;
150
151 TPCNV_PERSTOTRANS( pers, trans, m_eFCal0Cell[i] );
152 TPCNV_PERSTOTRANS( pers, trans, m_eFCal1Cell[i] );
153 TPCNV_PERSTOTRANS( pers, trans, m_eFCal2Cell[i] );
154 }
155
156
157 // Energy in cone radii
158 for ( std::size_t i = 0; i != std::tuple_size_v<JetSampling_p1::ERad_t>; ++i ) {
159
160 // Name of energy in cone radii in transient is different from persistent
161 trans->m_erad_cells[i] = pers->m_erad[i];
162
163 // Persistent does not have m_erad_track, set transient value to -INT_MAX
164 trans->m_erad_tracks[i] = -1.*INT_MAX;
165 }
166
167// msg << MSG::DEBUG << "Loaded JetSampling from persistent state [OK]"
168// << endmsg;
169 }
170
172 JetSampling_p1* pers,
173 MsgStream& msg ) const
174{
175// msg << MSG::DEBUG << "Creating persistent state of JetSampling..."
176// << endmsg;
177
178 m_hlvCnv.transToPers( &trans->m_pr, &pers->m_pr, msg );
179 m_hlvCnv.transToPers( &trans->m_pt, &pers->m_pt, msg );
180 m_hlvCnv.transToPers( &trans->m_pn, &pers->m_pn, msg );
181 m_hlvCnv.transToPers( &trans->m_h1, &pers->m_h1, msg );
182 m_hlvCnv.transToPers( &trans->m_pisa, &pers->m_pisa, msg );
183 m_hlvCnv.transToPers( &trans->m_samp, &pers->m_samp, msg );
184
185 // Jet sampling layer info
186 TPCNV_TRANSTOPERS( trans, pers, m_ejsPreSamplerB );
187 TPCNV_TRANSTOPERS( trans, pers, m_ejsPreSamplerE );
188 TPCNV_TRANSTOPERS( trans, pers, m_ejsEMB1 );
189 TPCNV_TRANSTOPERS( trans, pers, m_ejsEME1 );
190 TPCNV_TRANSTOPERS( trans, pers, m_ejsEMB2 );
191 TPCNV_TRANSTOPERS( trans, pers, m_ejsEME2 );
192 TPCNV_TRANSTOPERS( trans, pers, m_ejsEMB3 );
193 TPCNV_TRANSTOPERS( trans, pers, m_ejsEME3 );
194 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileBar0 );
195 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileExt0 );
196 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileBar1 );
197 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileExt1 );
198 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileBar2 );
199 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileExt2 );
200 TPCNV_TRANSTOPERS( trans, pers, m_ejsHEC0 );
201 TPCNV_TRANSTOPERS( trans, pers, m_ejsHEC1 );
202 TPCNV_TRANSTOPERS( trans, pers, m_ejsHEC2 );
203 TPCNV_TRANSTOPERS( trans, pers, m_ejsHEC3 );
204 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileGap1 );
205 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileGap2 );
206 TPCNV_TRANSTOPERS( trans, pers, m_ejsTileGap3 );
207 TPCNV_TRANSTOPERS( trans, pers, m_ejsFCAL0 );
208 TPCNV_TRANSTOPERS( trans, pers, m_ejsFCAL1 );
209 TPCNV_TRANSTOPERS( trans, pers, m_ejsFCAL2 );
210
211 TPCNV_TRANSTOPERS( trans, pers, m_tot );
212 TPCNV_TRANSTOPERS( trans, pers, m_ctot );
213 TPCNV_TRANSTOPERS( trans, pers, m_ehad );
214 TPCNV_TRANSTOPERS( trans, pers, m_eem );
215
216 // JetSums does not exist in transient represtation
217 // however they are still accessible using some functions
218 // that calculate them throught JetECS
219 pers->m_edEMB0Cell[0] = trans->eEMBCell(0); //EMB
220 pers->m_edEMB0Cell[1] = trans->eEMBCell(1);
221 pers->m_edEME0Cell[0] = trans->eEMECell(0); //EME
222 pers->m_edEME0Cell[1] = trans->eEMECell(1);
223 for ( std::size_t i = 0; i != std::tuple_size_v<JetSampling_p1::ECS_t>; ++i ) {
224 pers->m_edEMB1Cell[i] = trans->eEMBCell(0, i); // EMB
225 pers->m_edEMB2Cell[i] = trans->eEMBCell(1, i);
226 pers->m_edEME1Cell[i] = trans->eEMECell(0, i); // EME
227 pers->m_edEME2Cell[i] = trans->eEMECell(1, i);
228 pers->m_edTile1Cell[i] = trans->eTileCell(0, i); // TILE
229 pers->m_edTile2Cell[i] = trans->eTileCell(1, i);
230 pers->m_edHec1Cell[i] = trans->eHecCell(0, i); // HEC
231 pers->m_edHec2Cell[i] = trans->eHecCell(1, i);
232 pers->m_edFCal1Cell[i] = trans->eFCalCell(0, i); // FCAL
233 pers->m_edFCal2Cell[i] = trans->eFCalCell(1, i);
234 }
235
236 TPCNV_TRANSTOPERS( trans, pers, m_eCryo );
237 TPCNV_TRANSTOPERS( trans, pers, m_eGap );
238 TPCNV_TRANSTOPERS( trans, pers, m_eScint );
239 TPCNV_TRANSTOPERS( trans, pers, m_eNull );
240
241 // JetECS: some in persistent are different than in transient
242 for ( std::size_t i = 0; i != std::tuple_size_v<JetSampling_p1::ECS_t>; ++i ) {
243 TPCNV_TRANSTOPERS( trans, pers, m_ePreSamBCell[i] );
244 TPCNV_TRANSTOPERS( trans, pers, m_ePreSamECell[i] );
245 TPCNV_TRANSTOPERS( trans, pers, m_eEMB1Cell[i] );
246 TPCNV_TRANSTOPERS( trans, pers, m_eEME1Cell[i] );
247
248 // Transient has the energy separated in 2 eta bins, for eta < 0.8 and eta >=0.8
249 // the persistent variables is the sum of both
250 pers->m_eEMB2Cell[i] = trans->m_eEMB2Cell1[i] + trans->m_eEMB2Cell2[i];
251 pers->m_eEMB3Cell[i] = trans->m_eEMB3Cell1[i] + trans->m_eEMB3Cell2[i];
252
253 // Transient has the energy separated in 2 eta bins, for eta < 2.5 and eta >=2.5
254 // the persistent variables is the sum of both
255 pers->m_eEME2Cell[i] = trans->m_eEME2Cell1[i] + trans->m_eEME2Cell2[i];
256 pers->m_eEME3Cell[i] = trans->m_eEME3Cell1[i] + trans->m_eEME3Cell2[i];
257
258 TPCNV_TRANSTOPERS( trans, pers, m_eTileBar0Cell[i] );
259 TPCNV_TRANSTOPERS( trans, pers, m_eTileBar1Cell[i] );
260 TPCNV_TRANSTOPERS( trans, pers, m_eTileBar2Cell[i] );
261 TPCNV_TRANSTOPERS( trans, pers, m_eTileExt0Cell[i] );
262 TPCNV_TRANSTOPERS( trans, pers, m_eTileExt1Cell[i] );
263 TPCNV_TRANSTOPERS( trans, pers, m_eTileExt2Cell[i] );
264
265 // Transient has the energy separated in 2 eta bins, for eta < 2.5 and eta >=2.5
266 // the persistent variables is the sum of both
267 pers->m_eHec0Cell[i] = trans->m_eHec0Cell1[i] + trans->m_eHec0Cell2[i];
268 pers->m_eHec1Cell[i] = trans->m_eHec1Cell1[i] + trans->m_eHec1Cell2[i];
269 pers->m_eHec2Cell[i] = trans->m_eHec2Cell1[i] + trans->m_eHec2Cell2[i];
270 pers->m_eHec3Cell[i] = trans->m_eHec3Cell1[i] + trans->m_eHec3Cell2[i];
271
272 TPCNV_TRANSTOPERS( trans, pers, m_eFCal0Cell[i] );
273 TPCNV_TRANSTOPERS( trans, pers, m_eFCal1Cell[i] );
274 TPCNV_TRANSTOPERS( trans, pers, m_eFCal2Cell[i] );
275 }
276
277 // Energy in cone radii
278 for ( std::size_t i = 0; i != std::tuple_size_v<JetSampling_p1::ERad_t>; ++i ) {
279 // Name of energy in cone radii in transient is different from persistent
280 pers->m_erad[i] = trans->m_erad_cells[i];
281
282 // Persistent does not contain m_erad_tracks
283 }
284
285// msg << MSG::DEBUG << "Created persistent state of JetSampling [OK]"
286// << endmsg;
287 }
#define TPCNV_TRANSTOPERS(t, p, x)
#define TPCNV_PERSTOTRANS(p, t, x)
virtual void persToTrans(const JetSampling_p1 *pers, JetSampling *trans, MsgStream &msg) const override
Method creating the transient representation of JetSampling from its persistent representation JetSam...
static const HepLorentzVectorCnv_p1 m_hlvCnv
virtual void transToPers(const JetSampling *trans, JetSampling_p1 *pers, MsgStream &msg) const override
Method creating the persistent representation JetSampling_p1 from its transient representation JetSam...
HepLorentzVector_p1 m_pt
Truth jet kinematics.
HepLorentzVector_p1 m_pisa
Calib jet kinematics (PISA)
HepLorentzVector_p1 m_pr
Reco jet kinematics.
HepLorentzVector_p1 m_h1
Calib jet kinematics (H1)
HepLorentzVector_p1 m_samp
Calib jet kinematics (samplings)
HepLorentzVector_p1 m_pn
Nearest truth jet kinematics.
double_array16 m_eEME3Cell1
double_array16 m_eEME2Cell2
double eEMECell(const int ireg) const
CLHEP::HepLorentzVector m_h1
double_array16 m_eHec0Cell1
double_array16 m_eEME2Cell1
double_array16 m_eEMB3Cell1
void set_hlv_rec(const CLHEP::HepLorentzVector &v)
Set 4-momentum for uncalibrated jet.
Definition JetSampling.h:59
double_array16 m_eHec3Cell2
double eFCalCell(const int ireg, const int ie) const
void set_hlv_h1(const CLHEP::HepLorentzVector &v)
Set 4-momentum for Jets H1.
Definition JetSampling.h:64
double_array16 m_eEME3Cell2
void set_hlv_samp(const CLHEP::HepLorentzVector &v)
Set 4-momentum for Jets Sampling/Layer.
Definition JetSampling.h:66
CLHEP::HepLorentzVector m_pisa
void set_hlv_pisa(const CLHEP::HepLorentzVector &v)
Set 4-momentum for Jets PISA.
Definition JetSampling.h:65
CLHEP::HepLorentzVector m_pt
Particle-In-Cone jet kinematics.
CLHEP::HepLorentzVector m_samp
double_array16 m_eHec1Cell1
void set_hlv_ntj(const CLHEP::HepLorentzVector &v)
Set 4-momentum for Nearest-Truth-Jet.
Definition JetSampling.h:61
double_array16 m_eHec1Cell2
void set_hlv_pic(const CLHEP::HepLorentzVector &v)
Set 4-momentum for Particle-In-Cone jet.
Definition JetSampling.h:60
double_array16 m_eEMB2Cell2
double_array16 m_eEMB3Cell2
CLHEP::HepLorentzVector m_pn
Nearest Truth Jet kinematics.
double_array16 m_eHec2Cell2
double_array10 m_erad_tracks
CLHEP::HepLorentzVector m_pr
Reconstructed Jet at EM scale kinematics.
double_array16 m_eHec2Cell1
double eHecCell(const int ireg, const int ie) const
double eTileCell(const int ireg, const int ie) const
double_array10 m_erad_cells
double_array16 m_eEMB2Cell1
double eEMBCell(const int ireg) const
double_array16 m_eHec0Cell2
double_array16 m_eHec3Cell1
MsgStream & msg
Definition testRead.cxx:32