CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
LocalFieldManager.cc
Go to the documentation of this file.
1 
3 
4 #include "G4ChordFinder.hh"
5 #include "G4Track.hh"
6 
7 #include <iostream>
8 
9 using namespace sim;
10 
12  G4FieldManager* priFM,
13  G4FieldManager* altFM)
14  : G4FieldManager(commonField,0,false),
15  fPrimaryFM(priFM), fAlternativeFM(altFM),
16  fCurrentFM(0),
17  fVerbosity(false)
18 {
19  this->CopyValuesAndChordFinder(priFM);
20  fCurrentFM = priFM ;
21 }
22 
23 void LocalFieldManager::ConfigureForTrack(const G4Track* trk)
24 {
25 
26  int PID = trk->GetDynamicParticle()->GetDefinition()->GetPDGEncoding();
27 
28  if ( abs(PID)!=13 ) // maybe also high energy pions ?... what else ?
29  {
30  if ( fCurrentFM != fAlternativeFM )
31  {
34  if ( fVerbosity) print(trk);
35  }
36  }
37  else
38  {
39  if ( fCurrentFM != fPrimaryFM )
40  {
43  if ( fVerbosity) print(trk);
44  }
45  }
46 
47  return ;
48 
49 }
50 
51 const G4FieldManager* LocalFieldManager::CopyValuesAndChordFinder(G4FieldManager * fm)
52 {
53 
54  SetDeltaIntersection(fm->GetDeltaIntersection());
55  SetDeltaOneStep(fm->GetDeltaOneStep());
56  G4ChordFinder* cf = fm->GetChordFinder();
57  cf->SetDeltaChord(cf->GetDeltaChord());
58  SetChordFinder(cf);
59 
60  return fm;
61 
62 }
63 
64 void LocalFieldManager::print(const G4Track* trk)
65 {
66 
68  {
69  std::cout << " Alternative field manager with";
70  }
71  else
72  {
73  std::cout << " Global field manager with";
74  }
75  std::cout << " DeltaIntersection " << G4FieldManager::GetDeltaIntersection()
76  << ", DeltaOneStep " << G4FieldManager::GetDeltaOneStep()
77  << " and DeltaChord " << G4FieldManager::GetChordFinder()->GetDeltaChord()
78  << " for " << trk->GetDynamicParticle()->GetDefinition()->GetPDGEncoding()
79  << " with " << trk->GetKineticEnergy()/MeV << " MeV in "
80  << trk->GetVolume()->GetName() << std::endl;
81 
82  return ;
83 
84 }
G4FieldManager * fCurrentFM
G4FieldManager * fAlternativeFM
#define abs(x)
Definition: mlp_lapack.h:159
Definition: sim.h:19
virtual void ConfigureForTrack(const G4Track *trk)
const G4FieldManager * CopyValuesAndChordFinder(G4FieldManager *fm)
void print(const G4Track *trk)
G4FieldManager * fPrimaryFM
tuple cout
Definition: gather_cfg.py:121