Skip to content
Snippets Groups Projects

Adding truth information for dark photon mc samples

Merged Charlotte Cavanagh requested to merge ccavanag/calypso:master into master
2 files
+ 117
9
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -266,6 +266,32 @@ StatusCode NtupleDumperAlg::initialize()
@@ -266,6 +266,32 @@ StatusCode NtupleDumperAlg::initialize()
m_tree->Branch("truthPdg", &m_truthPdg, "truthPdg/I");
m_tree->Branch("truthPdg", &m_truthPdg, "truthPdg/I");
m_tree->Branch("CrossSection", &m_crossSection, "crossSection/D");
m_tree->Branch("CrossSection", &m_crossSection, "crossSection/D");
 
// for mother + daughter particle truth infomation
 
 
m_tree->Branch("truthM_P", &m_truthM_P);
 
m_tree->Branch("truthM_px", &m_truthM_px);
 
m_tree->Branch("truthM_py", &m_truthM_py);
 
m_tree->Branch("truthM_pz", &m_truthM_pz);
 
m_tree->Branch("truthM_x", &m_truthM_x);
 
m_tree->Branch("truthM_y", &m_truthM_y);
 
m_tree->Branch("truthM_z", &m_truthM_z);
 
 
m_tree->Branch("truthd0_P", &m_truthd0_P);
 
m_tree->Branch("truthd0_px", &m_truthd0_px);
 
m_tree->Branch("truthd0_py", &m_truthd0_py);
 
m_tree->Branch("truthd0_pz", &m_truthd0_pz);
 
m_tree->Branch("truthd0_x", &m_truthd0_x);
 
m_tree->Branch("truthd0_y", &m_truthd0_y);
 
m_tree->Branch("truthd0_z", &m_truthd0_z);
 
 
m_tree->Branch("truthd1_P", &m_truthd1_P);
 
m_tree->Branch("truthd1_px", &m_truthd1_px);
 
m_tree->Branch("truthd1_py", &m_truthd1_py);
 
m_tree->Branch("truthd1_pz", &m_truthd1_pz);
 
m_tree->Branch("truthd1_x", &m_truthd1_x);
 
m_tree->Branch("truthd1_y", &m_truthd1_y);
 
m_tree->Branch("truthd1_z", &m_truthd1_z);
 
ATH_CHECK(histSvc()->regTree("/HIST2/tree", m_tree));
ATH_CHECK(histSvc()->regTree("/HIST2/tree", m_tree));
// Register histograms
// Register histograms
@@ -412,20 +438,69 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const
@@ -412,20 +438,69 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const
m_crossSection = m_baseEventCrossSection;
m_crossSection = m_baseEventCrossSection;
}
}
// Find the primary lepton (if any)
// Find the M d0 and d1 truth information
SG::ReadHandle<xAOD::TruthParticleContainer> truthParticleContainer { m_truthParticleContainer, ctx };
SG::ReadHandle<xAOD::TruthParticleContainer> truthParticleContainer { m_truthParticleContainer, ctx };
if (truthParticleContainer.isValid() && truthParticleContainer->size() > 0)
if (truthParticleContainer.isValid() && truthParticleContainer->size() > 0)
{
{
for (auto particle : *truthParticleContainer)
for (auto particle : *truthParticleContainer)
{
{
if ( particle->absPdgId() == 11 || particle->absPdgId() == 13 || particle->absPdgId() == 15 )
if ( particle->barcode() <= 3)
{
{
if (particle->status() == 1 && (particle->nParents() == 0 || particle->nParents() == 2) )
{
if ( particle->barcode() == 1) // mother particle (A')
m_truthLeptonMomentum = particle->p4().P();
{
break;
}
m_truthM_P.push_back(particle->p4().P());
}
m_truthM_px.push_back(particle->p4().X());
 
m_truthM_py.push_back(particle->p4().Y());
 
m_truthM_pz.push_back(particle->p4().Z());
 
 
if ( particle->hasProdVtx()) {
 
m_truthM_x.push_back(particle->prodVtx()->x());
 
m_truthM_y.push_back(particle->prodVtx()->y());
 
m_truthM_z.push_back(particle->prodVtx()->z());
 
} else {
 
m_truthM_x.push_back(-999999);
 
m_truthM_y.push_back(-999999);
 
m_truthM_z.push_back(-999999);
 
}
 
 
}
 
if ( particle->pdgId() == 11) // daughter particle (positron)
 
{
 
m_truthd0_P.push_back(particle->p4().P());
 
m_truthd0_px.push_back(particle->p4().X());
 
m_truthd0_py.push_back(particle->p4().Y());
 
m_truthd0_pz.push_back(particle->p4().Z());
 
 
if ( particle->hasProdVtx()) {
 
m_truthd0_x.push_back(particle->prodVtx()->x());
 
m_truthd0_y.push_back(particle->prodVtx()->y());
 
m_truthd0_z.push_back(particle->prodVtx()->z());
 
} else {
 
m_truthd0_x.push_back(-999999);
 
m_truthd0_y.push_back(-999999);
 
m_truthd0_z.push_back(-999999);
 
}
 
}
 
if ( particle->pdgId() == -11) // daughter particle (electron)
 
{
 
m_truthd1_P.push_back(particle->p4().P());
 
m_truthd1_px.push_back(particle->p4().X());
 
m_truthd1_py.push_back(particle->p4().Y());
 
m_truthd1_pz.push_back(particle->p4().Z());
 
 
if ( particle->hasProdVtx()) {
 
m_truthd1_x.push_back(particle->prodVtx()->x());
 
m_truthd1_y.push_back(particle->prodVtx()->y());
 
m_truthd1_z.push_back(particle->prodVtx()->z());
 
} else {
 
m_truthd1_x.push_back(-999999);
 
m_truthd1_y.push_back(-999999);
 
m_truthd1_z.push_back(-999999);
 
}
 
}
 
}
}
}
}
}
}
}
@@ -1049,4 +1124,4 @@ void NtupleDumperAlg::setNaN() const {
@@ -1049,4 +1124,4 @@ void NtupleDumperAlg::setNaN() const {
m_t_st_z[station].push_back(NaN);
m_t_st_z[station].push_back(NaN);
}
}
m_isFiducial.push_back(false);
m_isFiducial.push_back(false);
}
}
\ No newline at end of file
Loading