ATLAS Offline Software
Loading...
Searching...
No Matches
TauJetCnv_p5.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
18
19
20#include "tauEvent/TauJet.h"
23
27
29
30//Pre-allocate converters
41
42static void setBit( unsigned char &field, unsigned num, bool val )
43{
44 if ( val )
45 field |= (1 << num);
46 else
47 field &= ~(1 << num);
48}
49
50static bool getBit( unsigned char field, unsigned num )
51{
52 return (field & (1 << num)) ? true : false;
53}
54
56 Analysis::TauJet *trans,
57 MsgStream &msg ) const
58{
59 momCnv.persToTrans( &pers->m_momentum, &trans->momentumBase(), msg );
60 partBaseCnv.persToTrans( &pers->m_particleBase, &trans->particleBase(), msg );
61 clusterCnv.persToTrans( &pers->m_cluster, &trans->clusterLink(), msg );
62 clusterCnv.persToTrans( &pers->m_cellCluster, &trans->cellClusterLink(), msg );
63 jetCnv.persToTrans( &pers->m_jet, &trans->jetLink(), msg );
64 tracksCnv.persToTrans( &pers->m_tracks, &trans->trackLinkVector(), msg );
65 detailsCnv.persToTrans( &pers->m_tauDetails, &trans->tauDetailLinkVector(), msg );
67 trans->setROIWord (pers->m_roiWord);
68
69 if( getBit( pers->m_flags, 0 ) ) {
70 std::vector<std::pair<TauJetParameters::TauID, double> > params;
71 params.reserve(pers->m_params.size());
72 for (const auto& p : pers->m_params) {
73 params.emplace_back( static_cast<TauJetParameters::TauID>( p.first),
74 p.second);
75
76 }
77
78 Analysis::TauPID* tauID = new Analysis::TauPID (std::move(params),
79 pers->m_isTauFlags,
80 pers->m_vetoFlags);
81 trans->setTauID (tauID);
82 } else {
83 trans->setTauID( 0 );
84 }
85
86 if( getBit( pers->m_flags, 2 ) )
88 if( getBit( pers->m_flags, 3 ) )
90 conversionTracksCnv.persToTrans(
91 &pers->m_conversionTracks,
92 &trans->conversionTrackLinkVector(), msg );
93 seedCalo_tracksCnv.persToTrans(
94 &pers->m_seedCalo_tracks,
95 &trans->seedCalo_trackLinkVector(), msg );
96 seedTrk_tracksCnv.persToTrans(
97 &pers->m_seedTrk_tracks,
98 &trans->seedTrk_trackLinkVector(), msg );
99
100// STILL NEED CONDITIONALS
101 /*
102 std::vector<std::pair<int, HepLorentzVector_p1> >::const_iterator it;
103 trans->m_tauHLVStorage.clear();
104 trans->m_tauHLVStorage.reserve(pers->m_tauHLVStorage.size());
105 for( it = pers->m_tauHLVStorage.begin();
106 it != pers->m_tauHLVStorage.end(); ++it )
107 {
108 CLHEP::HepLorentzVector dummy;
109 hepLorentzVectorCnv.persToTrans(&((*it).second), &dummy,msg);
110 std::pair<TauJetParameters::TauCalibType, CLHEP::HepLorentzVector> store;
111 store.first = static_cast<TauJetParameters::TauCalibType>( (*it).first );
112 store.second = dummy;
113 trans->m_tauHLVStorage.push_back( store );
114 }
115 */
116 trans->clearHLV();
117 CLHEP::HepLorentzVector hlv;
118 hepLorentzVectorCnv.persToTrans( &pers->m_tauHLV_jetseed, &hlv,msg);
120 hepLorentzVectorCnv.persToTrans( &pers->m_tauHLV_detaxis, &hlv,msg);
122 hepLorentzVectorCnv.persToTrans( &pers->m_tauHLV_intaxis, &hlv,msg);
124 hepLorentzVectorCnv.persToTrans( &pers->m_tauHLV_tesaxis, &hlv,msg);
126 hepLorentzVectorCnv.persToTrans( &pers->m_tauHLV_etaaxis, &hlv,msg);
128}
129
131 TauJet_p5 *pers,
132 MsgStream &msg ) const
133{
134 momCnv.transToPers( &trans->momentumBase(), &pers->m_momentum, msg );
135 partBaseCnv.transToPers( &trans->particleBase(), &pers->m_particleBase, msg );
136 const ElementLink<CaloClusterContainer> clusterLink = trans->clusterLink();
137 clusterCnv.transToPers( &clusterLink, &pers->m_cluster, msg );
138 const ElementLink<CaloClusterContainer> cellClusterLink = trans->cellClusterLink();
139 clusterCnv.transToPers( &cellClusterLink, &pers->m_cellCluster, msg );
140 const ElementLink<JetCollection> jetLink = trans->jetLink();
141 jetCnv.transToPers( &jetLink, &pers->m_jet, msg );
142 tracksCnv.transToPers( &trans->trackLinkVector(), &pers->m_tracks, msg );
143 detailsCnv.transToPers( &trans->tauDetailLinkVector(), &pers->m_tauDetails, msg );
144 pers->m_numberOfTracks = trans->numberOfTracks();
145 pers->m_roiWord = trans->ROIWord();
146 pers->m_params.clear();
147
148 if( trans->tauID() ) {
149 setBit( pers->m_flags, 0, true );
150
151 pers->m_vetoFlags = trans->tauID()->vetoFlags().to_ulong();
152 pers->m_isTauFlags = trans->tauID()->isTauFlags().to_ulong();
153
154 pers->m_params.reserve (trans->tauID()->params().size());
155 for (const auto& p : trans->tauID()->params()) {
156 pers->m_params.emplace_back (static_cast<int>( p.first ), p.second);
157 }
158 } else {
159 setBit( pers->m_flags, 0, false );
160 }
161 if( trans->hasAuthor( TauJetParameters::tauRec ) )
162 setBit( pers->m_flags, 2, true );
164 setBit( pers->m_flags, 3, true );
165 conversionTracksCnv.transToPers(
166 &trans->conversionTrackLinkVector(),
167 &pers->m_conversionTracks, msg );
168 seedCalo_tracksCnv.transToPers(
169 &trans->seedCalo_trackLinkVector(),
170 &pers->m_seedCalo_tracks, msg );
171 seedTrk_tracksCnv.transToPers(
172 &trans->seedTrk_trackLinkVector(),
173 &pers->m_seedTrk_tracks, msg );
174
175
176// STILL NEED CONDITIONALS
177 /*
178 pers->m_tauHLVStorage.clear();
179 pers->m_tauHLVStorage.reserve (trans->m_tauHLVStorage.size());
180 std::vector<std::pair<TauJetParameters::TauCalibType, CLHEP::HepLorentzVector> >::const_iterator it;
181 for( it = trans->m_tauHLVStorage.begin(); it != trans->m_tauHLVStorage.end(); ++it ) {
182 HepLorentzVector_p1 dummy;
183 hepLorentzVectorCnv.transToPers( &((*it).second), &dummy, msg);
184
185 std::pair<int, HepLorentzVector_p1 > store;
186 store.first = static_cast<int>( (*it).first );
187 store.second = dummy;
188 pers->m_tauHLVStorage.push_back( store );
189 }
190 */
191
192 CLHEP::HepLorentzVector hlv = trans->getHLV(TauJetParameters::JetSeed);
193 hepLorentzVectorCnv.transToPers( &hlv, &pers->m_tauHLV_jetseed, msg);
195 hepLorentzVectorCnv.transToPers( &hlv, &pers->m_tauHLV_detaxis, msg);
197 hepLorentzVectorCnv.transToPers( &hlv, &pers->m_tauHLV_intaxis, msg);
199 hepLorentzVectorCnv.transToPers( &hlv, &pers->m_tauHLV_tesaxis, msg);
201 hepLorentzVectorCnv.transToPers( &hlv, &pers->m_tauHLV_etaaxis, msg);
202}
This file contains the class definition for the ElementLinkCnv_p3 class.
This file contains the class definition for the ElementLinkVectorCnv_p1 class.
static const P4ImplPxPyPzECnv_p1 momCnv
Definition JetCnv_p1.cxx:30
static const JetCnv_p1 jetCnv
static const ClusterLinkCnv_t clusterCnv
static const ParticleBaseCnv_p1 partBaseCnv
Declaration of tau jet transient class.
static const HepLorentzVectorCnv_p1 hepLorentzVectorCnv
Converter for Hep lorentz vector.
static const ElementLinkVectorCnv_p1< ElementLinkVector< Rec::TrackParticleContainer > > tracksCnv
static const ElementLinkVectorCnv_p1< ElementLinkVector< Rec::TrackParticleContainer > > conversionTracksCnv
static void setBit(unsigned char &field, unsigned num, bool val)
static bool getBit(unsigned char field, unsigned num)
static const ElementLinkVectorCnv_p1< ElementLinkVector< Analysis::TauDetailsContainer > > detailsCnv
static const ElementLinkVectorCnv_p1< ElementLinkVector< Rec::TrackParticleContainer > > seedTrk_tracksCnv
static const ElementLinkVectorCnv_p1< ElementLinkVector< Rec::TrackParticleContainer > > seedCalo_tracksCnv
static void setBit(unsigned char &field, unsigned num, bool val)
static bool getBit(unsigned char field, unsigned num)
Implementation of transient<->persistent converter for Analysis::TauJet v5.
Object for taus common for ESD and AOD.
const ElementLink< CaloClusterContainer > cellClusterLink() const
ElementLink to cell CaloCluster, might be invalid the ID variables are calculated from this cluster i...
void setROIWord(unsigned int RoiWord)
Set ROI Word (trigger purposes)
const ElementLinkVector< Rec::TrackParticleContainer > & trackLinkVector() const
Get track link vector.
void setNumberOfTracks(unsigned int numberOfTracks)
Set number of tracks.
const ElementLink< CaloClusterContainer > clusterLink() const
ElementLink to seed CaloCluster, DEPRECATED as of release 13
const ElementLink< JetCollection > jetLink() const
ElementLink to seed Jet, might be invalid if not seeded from a Jet
const ElementLinkVector< Rec::TrackParticleContainer > & seedCalo_trackLinkVector() const
Get seed calo track link vector.
unsigned int ROIWord() const
Retrieve ROI Word (trigger purposes)
void setTauID(TauPID *tauID)
Set TauPID object that contains discriminant values.
void storeHLV(TauJetParameters ::TauCalibType type, CLHEP ::HepLorentzVector hlv)
const ElementLinkVector< Rec::TrackParticleContainer > & conversionTrackLinkVector() const
Get conversion track element link vector (const)
const ElementLinkVector< Rec::TrackParticleContainer > & seedTrk_trackLinkVector() const
Get seed trk track link vector.
unsigned int numberOfTracks() const
Get number of tracks.
CLHEP::HepLorentzVector getHLV(TauJetParameters ::TauCalibType type) const
const TauPID * tauID() const
Get TauPID object containing discriminant values.
ElementLinkVector< TauDetailsContainer > & tauDetailLinkVector()
bool hasAuthor(const TauJetParameters ::Author &author) const
check if this object has Author author (can be more than one)
void setAuthor(const TauJetParameters ::Author &author)
set the author flag to true
Class containing discriminants produced by identification algorithms.
Definition TauPID.h:32
const std::bitset< 32 > & vetoFlags() const
Definition TauPID.cxx:94
const std::vector< std::pair< TauJetParameters::TauID, double > > & params() const
Definition TauPID.cxx:86
const std::bitset< 32 > & isTauFlags() const
Definition TauPID.cxx:90
const momentum_type & momentumBase() const
access to underlying base type (I4Momentum-like)
const particle_type & particleBase() const
access to underlying base type (IParticle-like)
void persToTrans(const TauJet_p5 *pers, Analysis::TauJet *trans, MsgStream &msg) const
Fills a transient object from a persistent object.
void transToPers(const Analysis::TauJet *trans, TauJet_p5 *pers, MsgStream &msg) const
Fills a persistent object from a transient object.
ElementLinkInt_p3 m_cellCluster
Definition TauJet_p5.h:62
ElementLinkInt_p3 m_jet
Definition TauJet_p5.h:63
ElementLinkIntVector_p1 m_seedTrk_tracks
Definition TauJet_p5.h:77
ElementLinkIntVector_p1 m_conversionTracks
Definition TauJet_p5.h:75
unsigned int m_roiWord
Definition TauJet_p5.h:73
unsigned long m_vetoFlags
Definition TauJet_p5.h:70
ElementLinkIntVector_p1 m_seedCalo_tracks
Definition TauJet_p5.h:76
HepLorentzVector_p1 m_tauHLV_etaaxis
Definition TauJet_p5.h:83
HepLorentzVector_p1 m_tauHLV_jetseed
Definition TauJet_p5.h:79
P4EEtaPhiMFloat_p2 m_momentum
Definition TauJet_p5.h:59
ElementLinkIntVector_p1 m_tauDetails
Definition TauJet_p5.h:65
unsigned char m_flags
Definition TauJet_p5.h:66
ElementLinkIntVector_p1 m_tracks
Definition TauJet_p5.h:64
unsigned long m_isTauFlags
Definition TauJet_p5.h:71
HepLorentzVector_p1 m_tauHLV_detaxis
Definition TauJet_p5.h:80
HepLorentzVector_p1 m_tauHLV_tesaxis
Definition TauJet_p5.h:82
unsigned long m_numberOfTracks
Definition TauJet_p5.h:72
ElementLinkInt_p3 m_cluster
Definition TauJet_p5.h:61
std ::vector< std ::pair< int, float > > m_params
Definition TauJet_p5.h:74
ParticleBase_p2 m_particleBase
Definition TauJet_p5.h:60
HepLorentzVector_p1 m_tauHLV_intaxis
Definition TauJet_p5.h:81
TauID
Enum for discriminants.
MsgStream & msg
Definition testRead.cxx:32