ATLAS Offline Software
Loading...
Searching...
No Matches
AnalysisConfig_Ntuple.cxx File Reference

Go to the source code of this file.

Macros

#define endmsg   endmsg

Functions

std::string date ()
 sadly, includes a return at the end
HepMC::ConstGenParticlePtr fromParent (int pdg_id, HepMC::ConstGenParticlePtr p, bool printout=false)
template<class T>
void remove_duplicates (std::vector< T > &vec)

Detailed Description

Author
mark sutton

Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration

Definition in file AnalysisConfig_Ntuple.cxx.

Macro Definition Documentation

◆ endmsg

#define endmsg   endmsg

Definition at line 63 of file AnalysisConfig_Ntuple.cxx.

Function Documentation

◆ date()

std::string date ( )

sadly, includes a return at the end

Definition at line 67 of file AnalysisConfig_Ntuple.cxx.

67 {
68 time_t t;
69 time(&t);
70 char buf[26];
71 std::string mtime = ctime_r(&t, buf);
72 mtime.erase( std::remove(mtime.begin(), mtime.end(), '\n'), mtime.end() );
73 return mtime;
74}
time(flags, cells_name, *args, **kw)
DataModel_detail::iterator< DVL > remove(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, const T &value)
Specialization of remove for DataVector/List.

◆ fromParent()

HepMC::ConstGenParticlePtr fromParent ( int pdg_id,
HepMC::ConstGenParticlePtr p,
bool printout = false )

recursive stopping conditions

recursive stopping conditions

recursive stopping conditions

Definition at line 78 of file AnalysisConfig_Ntuple.cxx.

78 {
79
80 if ( p==0 ) return 0;
81 if (std::abs(p->pdg_id())==11 || std::abs(p->pdg_id())==13 ) return 0; //don't want light leptons from tau decays
82 if ( std::abs(p->pdg_id())==pdg_id ) return p;
83
84 auto vertex = p->production_vertex();
85 if ( !vertex) return 0; // has no production vertex !!!
86
87#ifdef HEPMC3
88 if ( vertex->particles_in().size() < 1 ) return 0;
89
91 // if ( printout ) {
92 // TruthParticle t(p);
93 // std::cout << "particle " << *p << " " << t.pdgId() << "\tparent " << p << std::endl;
94 // }
95
96 for ( auto in: vertex->particles_in()) {
97 auto parent = fromParent( pdg_id, in, printout );
98 TruthParticle t(in);
99 if ( parent && std::abs(parent->pdg_id())==pdg_id) {
100 return parent;
101 }
102 }
103#else
104 if ( vertex->particles_in_size() < 1 ) return 0;
105
106 HepMC::GenVertex::particles_in_const_iterator in = vertex->particles_in_const_begin();
107 HepMC::GenVertex::particles_in_const_iterator end = vertex->particles_in_const_end();
108 while ( in!=end ) {
109 const HepMC::GenParticle* parent = fromParent( pdg_id, *in, printout );
110 TruthParticle t(*in);
111 // if ( printout ) std::cout << "\tvalue for particle " << *in << " " << t.pdgId() << "\tparent " << parent << std::endl;
112 if ( parent && std::abs(parent->pdg_id())==pdg_id) {
113 //if ( printout ) std::cout << "found tau! - in parents" << std::endl;
114 return parent;
115 }
116 in++;
117 }
118#endif
119
120 return 0;
121}
HepMC::ConstGenParticlePtr fromParent(int pdg_id, HepMC::ConstGenParticlePtr p, bool printout=false)

◆ remove_duplicates()

template<class T>
void remove_duplicates ( std::vector< T > & vec)

Definition at line 126 of file AnalysisConfig_Ntuple.cxx.

126 {
127 std::sort(vec.begin(), vec.end());
128 vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
129}
std::vector< size_t > vec
DataModel_detail::iterator< DVL > unique(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of unique for DataVector/List.
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.