ATLAS Offline Software
Loading...
Searching...
No Matches
RHadronPythiaDecayer.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// Header for my class
7
8// The actual decayers. Singleton classes, not toolhandles
9
10
11// For passing things around
12#include "CLHEP/Vector/LorentzVector.h"
13#include "G4Track.hh"
14#include "G4DynamicParticle.hh"
15#include "G4DecayProducts.hh"
16
18 : G4VExtDecayer(s)
19{
20}
21
22G4DecayProducts* RHadronPythiaDecayer::ImportDecayProducts(const G4Track& aTrack){
23 G4DecayProducts * dp = new G4DecayProducts();
24 dp->SetParentParticle( *(aTrack.GetDynamicParticle()) );
25
26 // get properties for later print outs
27 G4double etot = aTrack.GetDynamicParticle()->GetTotalEnergy();
28 G4int pdgEncoding = aTrack.GetDefinition()->GetPDGEncoding();
29
30 // Outgoing particle
31 std::vector<G4DynamicParticle*> particles;
32
33 // Pythia8 decay the particle and import the decay products
34 m_pythia.Py1ent(aTrack, particles);
35
36 G4cout << "Decayed an RHadron with ID " << pdgEncoding << " and momentum " << aTrack.GetMomentum() << " in Pythia. Decay products are:" << G4endl;
37 double totalE=0.0;
38 for (unsigned int i=0; i<particles.size(); ++i){
39 if (particles[i]) {
40 dp->PushProducts(particles[i]);
41 totalE += particles[i]->GetTotalEnergy();
42 }
43 else {
44 G4cout << i << " null pointer!" << G4endl;
45 }
46 }
47
48 G4cout << "Total energy in was "<<etot << G4endl;
49 G4cout << "Total energy out is "<<totalE << G4endl;
50
51 dp->DumpInfo();
52
53 return dp;
54}
RHadronPythiaDecayer(const std::string &s)
virtual G4DecayProducts * ImportDecayProducts(const G4Track &)