CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
TrackingMaterialProducer Class Reference

#include <TrackingMaterialProducer.h>

Inheritance diagram for TrackingMaterialProducer:
SimProducer Observer< const BeginOfJob * > Observer< const BeginOfEvent * > Observer< const BeginOfTrack * > Observer< const G4Step * > Observer< const EndOfTrack * > SimWatcher

Public Member Functions

 TrackingMaterialProducer (const edm::ParameterSet &)
 
virtual ~TrackingMaterialProducer ()
 
- Public Member Functions inherited from SimProducer
void registerProducts (edm::ProducerBase &iProd)
 
 SimProducer ()
 
- Public Member Functions inherited from SimWatcher
 SimWatcher ()
 
virtual ~SimWatcher ()
 
- Public Member Functions inherited from Observer< const BeginOfJob * >
 Observer ()
 
void slotForUpdate (const BeginOfJob *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const BeginOfEvent * >
 Observer ()
 
void slotForUpdate (const BeginOfEvent *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const BeginOfTrack * >
 Observer ()
 
void slotForUpdate (const BeginOfTrack *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const G4Step * >
 Observer ()
 
void slotForUpdate (const G4Step *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const EndOfTrack * >
 Observer ()
 
void slotForUpdate (const EndOfTrack *iT)
 
virtual ~Observer ()
 

Private Member Functions

bool isSelected (const G4VTouchable *touch)
 
void produce (edm::Event &, const edm::EventSetup &)
 
void update (const BeginOfJob *)
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfEvent *)
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfTrack *)
 This routine will be called when the appropriate signal arrives. More...
 
void update (const G4Step *)
 This routine will be called when the appropriate signal arrives. More...
 
void update (const EndOfTrack *)
 This routine will be called when the appropriate signal arrives. More...
 

Private Attributes

bool m_primaryTracks
 
std::vector< std::string > m_selectedNames
 
std::vector< const
G4LogicalVolume * > 
m_selectedVolumes
 
MaterialAccountingTrack m_track
 
std::vector
< MaterialAccountingTrack > * 
m_tracks
 

Additional Inherited Members

- Protected Member Functions inherited from SimProducer
template<class T >
void produces ()
 
template<class T >
void produces (const std::string &instanceName)
 

Detailed Description

Definition at line 24 of file TrackingMaterialProducer.h.

Constructor & Destructor Documentation

TrackingMaterialProducer::TrackingMaterialProducer ( const edm::ParameterSet iPSet)

Definition at line 72 of file TrackingMaterialProducer.cc.

References HDQMDatabaseProducer::config, and edm::ParameterSet::getParameter().

73 {
74  edm::ParameterSet config = iPSet.getParameter<edm::ParameterSet>("TrackingMaterialProducer");
75  m_selectedNames = config.getParameter< std::vector<std::string> >("SelectedVolumes");
76  m_primaryTracks = config.getParameter<bool>("PrimaryTracksOnly");
77  m_tracks = 0;
78 
79  produces< std::vector<MaterialAccountingTrack> >();
80 }
T getParameter(std::string const &) const
std::vector< MaterialAccountingTrack > * m_tracks
std::vector< std::string > m_selectedNames
TrackingMaterialProducer::~TrackingMaterialProducer ( void  )
virtual

Definition at line 83 of file TrackingMaterialProducer.cc.

84 {
85 }

Member Function Documentation

bool TrackingMaterialProducer::isSelected ( const G4VTouchable *  touch)
private

Definition at line 252 of file TrackingMaterialProducer.cc.

References i, and or.

253 {
254  for (size_t i = 0; i < m_selectedVolumes.size(); ++i)
255  if (m_selectedVolumes[i]->IsAncestor( touchable->GetVolume() ) or m_selectedVolumes[i] == touchable->GetVolume()->GetLogicalVolume())
256  return true;
257 
258  return false;
259 }
int i
Definition: DBlmapReader.cc:9
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::vector< const G4LogicalVolume * > m_selectedVolumes
void TrackingMaterialProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Implements SimProducer.

Definition at line 243 of file TrackingMaterialProducer.cc.

References edm::Event::put(), and testEve_cfg::tracks.

244 {
245  // transfer ownership to the Event
246  std::auto_ptr<std::vector<MaterialAccountingTrack> > tracks( m_tracks );
247  iEvent.put( tracks );
248  m_tracks = 0;
249 }
std::vector< MaterialAccountingTrack > * m_tracks
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:113
tuple tracks
Definition: testEve_cfg.py:39
void TrackingMaterialProducer::update ( const BeginOfJob )
privatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfJob * >.

Definition at line 88 of file TrackingMaterialProducer.cc.

References dtNoiseDBValidation_cfg::cerr, gather_cfg::cout, and GetVolume().

Referenced by progressbar.ProgressBar::__next__(), relval_steps.Matrix::__setitem__(), relval_steps.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), relval_steps.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

89 {
90  // INFO
91  std::cout << "TrackingMaterialProducer: List of the selected volumes: " << std::endl;
92  for (std::vector<std::string>::const_iterator volume_name = m_selectedNames.begin(); volume_name != m_selectedNames.end(); ++volume_name) {
93  const G4LogicalVolume* volume = GetVolume(*volume_name);
94  if (volume) {
95  std::cout << '\t' << *volume_name << std::endl;
96  m_selectedVolumes.push_back( volume );
97  } else {
98  // FIXME: throw an exception ?
99  std::cerr << "TrackingMaterialProducer::update(const BeginOfJob*): WARNING: selected volume \"" << *volume_name << "\" not found in geometry " << std::endl;
100  }
101  }
102  std::cout << std::endl;
103 }
std::vector< const G4LogicalVolume * > m_selectedVolumes
static const G4LogicalVolume * GetVolume(const std::string &name)
std::vector< std::string > m_selectedNames
tuple cout
Definition: gather_cfg.py:121
void TrackingMaterialProducer::update ( const BeginOfEvent )
privatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfEvent * >.

Definition at line 107 of file TrackingMaterialProducer.cc.

Referenced by progressbar.ProgressBar::__next__(), relval_steps.Matrix::__setitem__(), relval_steps.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), relval_steps.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

108 {
109  m_tracks = new std::vector<MaterialAccountingTrack>();
110 }
std::vector< MaterialAccountingTrack > * m_tracks
void TrackingMaterialProducer::update ( const BeginOfTrack )
privatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfTrack * >.

Definition at line 114 of file TrackingMaterialProducer.cc.

Referenced by progressbar.ProgressBar::__next__(), relval_steps.Matrix::__setitem__(), relval_steps.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), relval_steps.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

115 {
116  m_track.reset();
117 
118  // prevent secondary tracks from propagating
119  G4Track* track = const_cast<G4Track*>((*event)());
120  if (m_primaryTracks and track->GetParentID() != 0) {
121  track->SetTrackStatus(fStopAndKill);
122  }
123 }
MaterialAccountingTrack m_track
void TrackingMaterialProducer::update ( const G4Step *  )
privatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const G4Step * >.

Definition at line 127 of file TrackingMaterialProducer.cc.

References GetSensitiveVolume(), GetTransform(), testEve_cfg::level, position, create_public_lumi_plots::transform, and X0.

Referenced by progressbar.ProgressBar::__next__(), relval_steps.Matrix::__setitem__(), relval_steps.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), relval_steps.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

128 {
129  const G4TouchableHistory* touchable = (G4TouchableHistory*)(step->GetTrack()->GetTouchable());
130  if (not isSelected( touchable )) {
131  //std::cout << "\t[...] skipping " << touchable->GetVolume()->GetName() << std::endl;
132  return;
133  }
134 
135  // material and step proterties
136  const G4Material* material = touchable->GetVolume()->GetLogicalVolume()->GetMaterial();
137  double length = step->GetStepLength() / cm; // mm -> cm
138  double X0 = material->GetRadlen() / cm; // mm -> cm
139  double Ne = material->GetElectronDensity() * cm3; // 1/mm3 -> 1/cm3
140  double Xi = Ne / 6.0221415e23 * 0.307075 / 2.; // MeV / cm
141  double radiationLengths = length / X0; //
142  double energyLoss = length * Xi; // MeV
143  //double energyLoss = step->GetDeltaEnergy()/MeV; should we use this??
144 
145  G4ThreeVector globalPosPre = step->GetPreStepPoint()->GetPosition();
146  G4ThreeVector globalPosPost = step->GetPostStepPoint()->GetPosition();
147  GlobalPoint globalPositionIn( globalPosPre.x() / cm, globalPosPre.y() / cm, globalPosPre.z() / cm ); // mm -> cm
148  GlobalPoint globalPositionOut( globalPosPost.x() / cm, globalPosPost.y() / cm, globalPosPost.z() / cm ); // mm -> cm
149 
150  // check for a sensitive detector
151  bool enter_sensitive = false;
152  bool leave_sensitive = false;
153  double cosThetaPre = 0.0;
154  double cosThetaPost = 0.0;
155  int level = 0;
156  const G4VPhysicalVolume* sensitive = 0;
158  boost::tuples::tie(sensitive, level) = GetSensitiveVolume(touchable);
159  if (sensitive) {
160  const G4VSolid & solid = *touchable->GetSolid( level );
161  const G4AffineTransform & transform = GetTransform( touchable, level );
162  G4ThreeVector pos = transform.Inverse().TransformPoint( G4ThreeVector( 0., 0., 0. ) );
163  position = GlobalPoint( pos.x() / cm, pos.y() / cm, pos.z() / cm ); // mm -> cm
164 
165  G4ThreeVector localPosPre = transform.TransformPoint( globalPosPre );
166  EInside statusPre = solid.Inside( localPosPre );
167  if (statusPre == kSurface) {
168  enter_sensitive = true;
169  G4ThreeVector globalDirPre = step->GetPreStepPoint()->GetMomentumDirection();
170  G4ThreeVector localDirPre = transform.TransformAxis( globalDirPre );
171  G4ThreeVector normalPre = solid.SurfaceNormal( localPosPre );
172  cosThetaPre = normalPre.cosTheta( -localDirPre );
173  }
174 
175  G4ThreeVector localPosPost = transform.TransformPoint( globalPosPost );
176  EInside statusPost = solid.Inside( localPosPost );
177  if (statusPost == kSurface) {
178  leave_sensitive = true;
179  G4ThreeVector globalDirPost = step->GetPostStepPoint()->GetMomentumDirection();
180  G4ThreeVector localDirPost = transform.TransformAxis( globalDirPost );
181  G4ThreeVector normalPost = solid.SurfaceNormal( localPosPost );
182  cosThetaPost = normalPost.cosTheta( localDirPost );
183  }
184  }
185 
186  // update track accounting
187  if (enter_sensitive)
188  m_track.enterDetector( sensitive, position, cosThetaPre );
189  m_track.step(MaterialAccountingStep( length, radiationLengths, energyLoss, globalPositionIn, globalPositionOut ));
190  if (leave_sensitive)
191  m_track.leaveDetector( sensitive, cosThetaPost );
192 
193  /*
194  for (int i = touchable->GetHistoryDepth(); i > 0; --i)
195  std::cout << touchable->GetVolume(i)->GetName() << "::";
196  std::cout << touchable->GetVolume()->GetName() << std::endl;
197  std::cout << "\tmade of " << material->GetName();
198  if (sensitive) {
199  std::cout << " (inside sensitive " << sensitive->GetName() << ")";
200  if (enter_sensitive)
201  std::cout << " (in: cos(theta) = " << cosThetaPre << ")";
202  if (leave_sensitive)
203  std::cout << " (out: cos(theta) = " << cosThetaPost << ")";
204  }
205  std::cout << std::endl;
206  std::cout << "\tStep length: " << length << " cm" << std::endl;
207  std::cout << "\tRadiation lengths: " << radiationLengths << " \t\t(X0: " << X0 << " cm)" << std::endl;
208  std::cout << "\tEnergy loss: " << energyLoss << " MeV \t(Xi: " << Xi << " MeV/cm)" << std::endl;
209  std::cout << std::endl;
210  */
211 }
MaterialAccountingTrack m_track
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
void step(const MaterialAccountingStep &step)
static const G4AffineTransform & GetTransform(const G4TouchableHistory *touchable, int depth)
boost::tuple< const G4VPhysicalVolume *, int > GetSensitiveVolume(const G4VTouchable *touchable)
void enterDetector(const G4VPhysicalVolume *volume, const GlobalPoint &position, double cosTheta)
static int position[264][3]
Definition: ReadPGInfo.cc:509
tuple level
Definition: testEve_cfg.py:34
static const double X0
void leaveDetector(const G4VPhysicalVolume *volume, double cosTheta)
bool isSelected(const G4VTouchable *touch)
void TrackingMaterialProducer::update ( const EndOfTrack )
privatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const EndOfTrack * >.

Definition at line 215 of file TrackingMaterialProducer.cc.

References gather_cfg::cout.

Referenced by progressbar.ProgressBar::__next__(), relval_steps.Matrix::__setitem__(), relval_steps.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), relval_steps.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

216 {
217  const G4Track * track = (*event)();
218  if (m_primaryTracks and track->GetParentID() != 0)
219  return;
220 
221  m_tracks->push_back(m_track);
222 
223  // LogDebug
224  std::cout << "this track took " << m_track.steps().size() << " steps, and passed through " << m_track.detectors().size() << " sensitive detectors" << std::endl;
225  std::cout << "\ttrack length: " << m_track.summary().length() << " cm" << std::endl;
226  std::cout << "\tradiation lengths: " << m_track.summary().radiationLengths() << std::endl;
227  std::cout << "\tenergy loss: " << m_track.summary().energyLoss() << " MeV" << std::endl;
228 
229  /*
230  for (unsigned int i = 0; i < m_track.detectors().size(); ++i) {
231  std::cout << m_track.detectors()[i].volume()->GetName()
232  << "\tR: " << m_track.detectors()[i].position().perp()
233  << "\tZ: " << m_track.detectors()[i].position().z() << std::endl;
234  std::cout << "\tsegment length: " << m_track.detectors()[i].material().length() << " cm" << std::endl;
235  std::cout << "\tradiation lengths: " << m_track.detectors()[i].material().radiationLengths() << std::endl;
236  std::cout << "\tenergy loss: " << m_track.detectors()[i].material().energyLoss() << " MeV" << std::endl;
237  }
238  */
239  std::cout << std::endl;
240 }
const MaterialAccountingStep & summary(void)
MaterialAccountingTrack m_track
double length(void) const
double radiationLengths(void) const
double energyLoss(void) const
std::vector< MaterialAccountingTrack > * m_tracks
const std::vector< MaterialAccountingDetector > & detectors()
tuple cout
Definition: gather_cfg.py:121
const std::vector< MaterialAccountingStep > & steps()

Member Data Documentation

bool TrackingMaterialProducer::m_primaryTracks
private

Definition at line 46 of file TrackingMaterialProducer.h.

std::vector<std::string> TrackingMaterialProducer::m_selectedNames
private

Definition at line 47 of file TrackingMaterialProducer.h.

std::vector<const G4LogicalVolume *> TrackingMaterialProducer::m_selectedVolumes
private

Definition at line 48 of file TrackingMaterialProducer.h.

MaterialAccountingTrack TrackingMaterialProducer::m_track
private

Definition at line 49 of file TrackingMaterialProducer.h.

std::vector<MaterialAccountingTrack>* TrackingMaterialProducer::m_tracks
private

Definition at line 50 of file TrackingMaterialProducer.h.