ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MCTruthTrackingAction.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file MCTruthTrackingAction.cc
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
28 //
29 //
30 //
31 //
32 // --------------------------------------------------------------
33 // GEANT 4 - MCTruthTrackingAction class
34 // --------------------------------------------------------------
35 //
36 // Author: Witold POKORSKI (Witold.Pokorski@cern.ch)
37 //
38 // --------------------------------------------------------------
39 //
40 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
41 
42 #include <iostream>
43 
44 #include "G4Track.hh"
45 #include "G4TrackVector.hh"
46 #include "G4TrackingManager.hh"
47 #include "MCTruthTrackingAction.hh"
49 
50 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
51 
54 {}
55 
56 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
57 
59 {}
60 
61 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
62 
64 {
65  fmom = G4LorentzVector(track->GetMomentum(), track->GetTotalEnergy());
66 
67  if(!track->GetUserInformation())
68  {
71  }
72 }
73 
74 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
75 
77 {
78 
79  G4LorentzVector prodpos(track->GetGlobalTime() - track->GetLocalTime(),
80  track->GetVertexPosition());
81  G4LorentzVector endpos(track->GetGlobalTime(), track->GetPosition());
82 
83  // here (?) make all different checks to decide whether to store the particle
84  //
85  if (TrackToBeStored(track))
86  {
89 
91  AddParticle(fmom, prodpos, endpos,
92  track->GetDefinition()->GetPDGEncoding(),
93  track->GetTrackID(),
94  track->GetParentID(), mcinf->GetDirectParent());
95  }
96  else
97  {
98  // If track is not to be stored, propagate it's parent ID (stored)
99  // to its secondaries
100  //
102 
103  for( unsigned int index = 0 ; index < childrens->size() ; ++index )
104  {
105  G4Track* tr = (*childrens)[index] ;
106  tr->SetParentID( track->GetParentID() );
107 
108  // set the flag saying that the direct mother is not stored
109  //
110  MCTruthTrackInformation* mcinf =
112  if(!mcinf)
114 
115  mcinf->SetDirectParent(false);
116  }
117  }
118 }
119 
120 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
121 
123 {
125 
126  // check energy
127  if (fmom.e() > config->GetMinE()) return true;
128 
129  // particle type
130  std::vector<G4int> types = config->GetParticleTypes();
131 
132  if(std::find( types.begin(), types.end(),
133  track->GetDefinition()->GetPDGEncoding())
134  != types.end()) return true;
135 
136  // creator process
137 
138  // etc...
139 
140  return false;
141 }
142 
143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....