ATLAS Offline Software
TauJetCnv_p2.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //-----------------------------------------------------------------------------
6 // file: TauJetCnv_p2.cxx
7 // author: Ilija Vukotic
8 // date: April 2008
9 //-----------------------------------------------------------------------------
10 
11 #include "tauEvent/TauJet.h"
14 
18 
19 static const P4ImplEEtaPhiMCnv_p2 momCnv;
20 static const ParticleBaseCnv_p1 partBaseCnv;
25 
26 static void setBit( unsigned char &field, unsigned num, bool val )
27 {
28  if( val )
29  field |= (1 << num);
30  else
31  field &= ~(1 << num);
32 }
33 
34 static bool getBit( unsigned char field, unsigned num )
35 {
36  return (field & (1 << num)) ? true : false;
37 }
38 
40  Analysis :: TauJet *trans,
41  MsgStream &msg ) const
42 {
43  momCnv.persToTrans( &pers->m_momentum, &trans->momentumBase(), msg );
44  partBaseCnv.persToTrans( &pers->m_particleBase, &trans->particleBase(),
45  msg );
46  clusterCnv.persToTrans( &pers->m_cluster, &trans->clusterLink(), msg );
47  clusterCnv.persToTrans( &pers->m_cellCluster, &trans->cellClusterLink(), msg );
48  jetCnv.persToTrans( &pers->m_jet, &trans->jetLink(), msg );
49  tracksCnv.persToTrans( &pers->m_tracks, &trans->trackLinkVector(), msg );
50  detailsCnv.persToTrans( &pers->m_tauDetails, &trans->tauDetailLinkVector(), msg );
51  trans->setNumberOfTracks (pers->m_numberOfTracks);
52  trans->setROIWord (pers->m_roiWord);
53 
54  if( getBit( pers->m_flags, 0 ) )
55  {
56  std::vector<std::pair<TauJetParameters::TauID, double> > params;
57  params.reserve(pers->m_params.size());
58  for (const auto& p : pers->m_params) {
59  params.emplace_back( static_cast<TauJetParameters::TauID>( p.first),
60  p.second);
61 
62  }
63 
64  Analysis::TauPID* tauID = new Analysis::TauPID (std::move(params),
65  std::bitset<32>(),
66  pers->m_vetoFlags);
67  trans->setTauID (tauID);
68  }
69  else
70  trans->setTauID( 0 );
71 
72  if( getBit( pers->m_flags, 2 ) )
73  trans->setAuthor( TauJetParameters :: tauRec );
74  if( getBit( pers->m_flags, 3 ) )
75  trans->setAuthor( TauJetParameters :: tau1P3P );
76 }
77 
79  TauJet_p2 *pers,
80  MsgStream &msg ) const
81 {
82  momCnv.transToPers( &trans->momentumBase(), &pers->m_momentum, msg );
83  partBaseCnv.transToPers( &trans->particleBase(), &pers->m_particleBase,
84  msg );
85  const ElementLink<CaloClusterContainer> clusterLink = trans->clusterLink();
86  clusterCnv.transToPers( &clusterLink, &pers->m_cluster, msg );
87  const ElementLink<CaloClusterContainer> cellClusterLink = trans->cellClusterLink();
88  clusterCnv.transToPers( &cellClusterLink, &pers->m_cellCluster, msg );
89  const ElementLink<JetCollection> jetLink = trans->jetLink();
90  jetCnv.transToPers( &jetLink, &pers->m_jet, msg );
91  tracksCnv.transToPers( &trans->trackLinkVector(), &pers->m_tracks, msg );
92  detailsCnv.transToPers( &trans->tauDetailLinkVector(), &pers->m_tauDetails, msg );
93  pers->m_numberOfTracks = trans->numberOfTracks();
94  pers->m_roiWord = trans->ROIWord();
95  pers->m_params.clear();
96 
97  if( trans->tauID() )
98  {
99  setBit( pers->m_flags, 0, true );
100 
101  pers->m_vetoFlags = trans->tauID()->vetoFlags().to_ulong();
102 
103  pers->m_params.reserve (trans->tauID()->params().size());
104  for (const auto& p : trans->tauID()->params()) {
105  pers->m_params.emplace_back (static_cast<int>( p.first ), p.second);
106  }
107  }
108  else
109  setBit( pers->m_flags, 0, false );
110 
111  if( trans->hasAuthor( TauJetParameters :: tauRec ) )
112  setBit( pers->m_flags, 2, true );
113  if( trans->hasAuthor( TauJetParameters :: tau1P3P ) )
114  setBit( pers->m_flags, 3, true );
115 }
ElementLinkCnv_p1.h
This file contains the class definition for the ElementLinkCnv_p1 class.
P4ImplEEtaPhiMCnv_p2
Definition: P4ImplEEtaPhiMCnv_p2.h:35
Analysis::TauPID
Class containing discriminants produced by identification algorithms.
Definition: TauPID.h:32
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TauJet_p2::m_particleBase
ParticleBase_p1 m_particleBase
Definition: TauJet_p2.h:38
TauJetParameters::tau1P3P
@ tau1P3P
Definition: TauJetParameters.h:36
P4ImplEEtaPhiMCnv_p2.h
TauJet_p2::m_params
std ::vector< std ::pair< int, double > > m_params
Definition: TauJet_p2.h:51
ElementLinkVectorCnv_p1
Definition: ElementLinkVectorCnv_p1.h:28
TauJet_p2::m_tauDetails
ElementLinkIntVector_p1 m_tauDetails
Definition: TauJet_p2.h:43
ElementLinkVectorCnv_p1.h
This file contains the class definition for the ElementLinkVectorCnv_p1 class. NOTE: it should be inc...
ElementLinkVectorCnv_p1::persToTrans
void persToTrans(const PersLinkVect_t &pers, LinkVect_t &trans, MsgStream &log) const
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
TauJetCnv_p2::transToPers
void transToPers(const Analysis ::TauJet *transObj, TauJet_p2 *persObj, MsgStream &msg) const
Definition: TauJetCnv_p2.cxx:78
ParticleBaseCnv_p1::persToTrans
virtual void persToTrans(const ParticleBase_p1 *persObj, ParticleBase *transObj, MsgStream &msg) const final
Method creating the transient representation of ParticleBase from its persistent representation Parti...
Definition: ParticleBaseCnv_p1.cxx:49
TauJetParameters::tauRec
@ tauRec
Definition: TauJetParameters.h:35
TauJet_p2::m_numberOfTracks
unsigned long m_numberOfTracks
Definition: TauJet_p2.h:49
ElementLinkCnv_p1::transToPers
void transToPers(const Link_t &trans, PersLink_t &pers, const SG::ThinningCache *cache, MsgStream &log) const
ParticleBaseCnv_p1.h
TauJet_p2
Definition: TauJet_p2.h:24
TauJet_p2::m_vetoFlags
unsigned long m_vetoFlags
Definition: TauJet_p2.h:48
ElementLinkCnv_p1
Definition: ElementLinkCnv_p1.h:27
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
TauJetParameters::TauID
TauID
Enum for discriminants.
Definition: TauJetParameters.h:44
TauJet_p2::m_momentum
P4EEtaPhiMFloat_p2 m_momentum
Definition: TauJet_p2.h:37
P4ImplEEtaPhiMCnv_p2::transToPers
virtual void transToPers(const P4ImplEEtaPhiM *transObj, P4EEtaPhiMFloat_p2 *persObj, MsgStream &log) const override
Method creating the persistent representation P4EEtaPhiMFloat_p2 from its transient representation P4...
Definition: P4ImplEEtaPhiMCnv_p2.cxx:38
TauJet_p2::m_tracks
ElementLinkIntVector_p1 m_tracks
Definition: TauJet_p2.h:42
ElementLinkCnv_p1::persToTrans
void persToTrans(const PersLink_t &pers, Link_t &trans, MsgStream &log) const
P4ImplEEtaPhiMCnv_p2::persToTrans
virtual void persToTrans(const P4EEtaPhiMFloat_p2 *persObj, P4ImplEEtaPhiM *transObj, MsgStream &log) const override
Method creating the transient representation of P4ImplEEtaPhiM from its persistent representation P4E...
Definition: P4ImplEEtaPhiMCnv_p2.cxx:26
TauJet_p2::m_roiWord
unsigned int m_roiWord
Definition: TauJet_p2.h:50
TauJetCnv_p2::persToTrans
void persToTrans(const TauJet_p2 *persObj, Analysis ::TauJet *transObj, MsgStream &msg) const
Definition: TauJetCnv_p2.cxx:39
TauJet
@ TauJet
Definition: TruthClasses.h:47
ParticleBaseCnv_p1
Definition: ParticleBaseCnv_p1.h:30
TauJet_p2::m_cluster
ElementLinkInt_p1 m_cluster
Definition: TauJet_p2.h:39
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
TauJetCnv_p2.h
TauJet_p2::m_flags
unsigned char m_flags
Definition: TauJet_p2.h:44
ElementLinkVectorCnv_p1::transToPers
void transToPers(const LinkVect_t &trans, PersLinkVect_t &pers, const SG::ThinningCache *cache, MsgStream &log) const
ParticleBaseCnv_p1::transToPers
virtual void transToPers(const ParticleBase *transObj, ParticleBase_p1 *persObj, MsgStream &msg) const final
Method creating the persistent representation ParticleBase_p1 from its transient representation Parti...
Definition: ParticleBaseCnv_p1.cxx:80
PowhegControl_ttFCNC_NLO.params
params
Definition: PowhegControl_ttFCNC_NLO.py:226
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
TauJet.h
TauJet_p2::m_cellCluster
ElementLinkInt_p1 m_cellCluster
Definition: TauJet_p2.h:40
TauJet_p2::m_jet
ElementLinkInt_p1 m_jet
Definition: TauJet_p2.h:41