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 83 of file TrackingMaterialProducer.cc.

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

84 {
85  edm::ParameterSet config = iPSet.getParameter<edm::ParameterSet>("TrackingMaterialProducer");
86  m_selectedNames = config.getParameter< std::vector<std::string> >("SelectedVolumes");
87  m_primaryTracks = config.getParameter<bool>("PrimaryTracksOnly");
88  m_tracks = 0;
89 
90  produces< std::vector<MaterialAccountingTrack> >();
91 }
T getParameter(std::string const &) const
std::vector< MaterialAccountingTrack > * m_tracks
std::vector< std::string > m_selectedNames
TrackingMaterialProducer::~TrackingMaterialProducer ( void  )
virtual

Definition at line 94 of file TrackingMaterialProducer.cc.

95 {
96 }

Member Function Documentation

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

Definition at line 262 of file TrackingMaterialProducer.cc.

References i, and or.

263 {
264  for (size_t i = 0; i < m_selectedVolumes.size(); ++i)
265  if (m_selectedVolumes[i]->IsAncestor( touchable->GetVolume() )
266  or m_selectedVolumes[i] == touchable->GetVolume()->GetLogicalVolume())
267  return true;
268 
269  return false;
270 }
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 253 of file TrackingMaterialProducer.cc.

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

254 {
255  // transfer ownership to the Event
256  std::auto_ptr<std::vector<MaterialAccountingTrack> > tracks( m_tracks );
257  iEvent.put( tracks );
258  m_tracks = 0;
259 }
std::vector< MaterialAccountingTrack > * m_tracks
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
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 99 of file TrackingMaterialProducer.cc.

References ecal_dqm_sourceclient-live_cfg::cerr, GetVolume(), and LogDebug.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.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(), MatrixUtil.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().

100 {
101  // INFO
102  LogDebug("TrackingMaterialProducer") << "TrackingMaterialProducer: List of the selected volumes: " << std::endl;
103  for (std::vector<std::string>::const_iterator volume_name = m_selectedNames.begin();
104  volume_name != m_selectedNames.end(); ++volume_name) {
105  const G4LogicalVolume* volume = GetVolume(*volume_name);
106  if (volume) {
107  LogDebug("TrackingMaterialProducer") << "TrackingMaterialProducer: " << *volume_name << std::endl;
108  m_selectedVolumes.push_back( volume );
109  } else {
110  // FIXME: throw an exception ?
111  std::cerr << "TrackingMaterialProducer::update(const BeginOfJob*): WARNING: selected volume \"" << *volume_name << "\" not found in geometry " << std::endl;
112  }
113  }
114 }
#define LogDebug(id)
std::vector< const G4LogicalVolume * > m_selectedVolumes
static const G4LogicalVolume * GetVolume(const std::string &name)
std::vector< std::string > m_selectedNames
void TrackingMaterialProducer::update ( const BeginOfEvent )
privatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfEvent * >.

Definition at line 118 of file TrackingMaterialProducer.cc.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.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(), MatrixUtil.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().

119 {
120  m_tracks = new std::vector<MaterialAccountingTrack>();
121 }
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 125 of file TrackingMaterialProducer.cc.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.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(), MatrixUtil.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().

126 {
127  m_track.reset();
128 
129  // prevent secondary tracks from propagating
130  G4Track* track = const_cast<G4Track*>((*event)());
131  if (m_primaryTracks and track->GetParentID() != 0) {
132  track->SetTrackStatus(fStopAndKill);
133  }
134 }
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 138 of file TrackingMaterialProducer.cc.

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

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.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(), MatrixUtil.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().

139 {
140  const G4TouchableHistory* touchable = (G4TouchableHistory*)(step->GetTrack()->GetTouchable());
141  if (not isSelected( touchable )) {
142  LogDebug("TrackingMaterialProducer") << "TrackingMaterialProducer:\t[...] skipping "
143  << touchable->GetVolume()->GetName() << std::endl;
144  return;
145  }
146 
147  // material and step proterties
148  const G4Material* material = touchable->GetVolume()->GetLogicalVolume()->GetMaterial();
149  double length = step->GetStepLength() / cm; // mm -> cm
150  double X0 = material->GetRadlen() / cm; // mm -> cm
151  double Ne = material->GetElectronDensity() * cm3; // 1/mm3 -> 1/cm3
152  double Xi = Ne / 6.0221415e23 * 0.307075 / 2; // MeV / cm
153  double radiationLengths = length / X0; //
154  double energyLoss = length * Xi / 1000.; // GeV
155  //double energyLoss = step->GetDeltaEnergy()/MeV; should we use this??
156 
157  G4ThreeVector globalPosPre = step->GetPreStepPoint()->GetPosition();
158  G4ThreeVector globalPosPost = step->GetPostStepPoint()->GetPosition();
159  GlobalPoint globalPositionIn( globalPosPre.x() / cm, globalPosPre.y() / cm, globalPosPre.z() / cm ); // mm -> cm
160  GlobalPoint globalPositionOut( globalPosPost.x() / cm, globalPosPost.y() / cm, globalPosPost.z() / cm ); // mm -> cm
161 
162  // check for a sensitive detector
163  bool enter_sensitive = false;
164  bool leave_sensitive = false;
165  double cosThetaPre = 0.0;
166  double cosThetaPost = 0.0;
167  int level = 0;
168  const G4VPhysicalVolume* sensitive = 0;
170  boost::tuples::tie(sensitive, level) = GetSensitiveVolume(touchable);
171  if (sensitive) {
172  const G4VSolid & solid = *touchable->GetSolid( level );
173  const G4AffineTransform & transform = GetTransform( touchable, level );
174  G4ThreeVector pos = transform.Inverse().TransformPoint( G4ThreeVector( 0., 0., 0. ) );
175  position = GlobalPoint( pos.x() / cm, pos.y() / cm, pos.z() / cm ); // mm -> cm
176 
177  G4ThreeVector localPosPre = transform.TransformPoint( globalPosPre );
178  EInside statusPre = solid.Inside( localPosPre );
179  if (statusPre == kSurface) {
180  enter_sensitive = true;
181  G4ThreeVector globalDirPre = step->GetPreStepPoint()->GetMomentumDirection();
182  G4ThreeVector localDirPre = transform.TransformAxis( globalDirPre );
183  G4ThreeVector normalPre = solid.SurfaceNormal( localPosPre );
184  cosThetaPre = normalPre.cosTheta( -localDirPre );
185  }
186 
187  G4ThreeVector localPosPost = transform.TransformPoint( globalPosPost );
188  EInside statusPost = solid.Inside( localPosPost );
189  if (statusPost == kSurface) {
190  leave_sensitive = true;
191  G4ThreeVector globalDirPost = step->GetPostStepPoint()->GetMomentumDirection();
192  G4ThreeVector localDirPost = transform.TransformAxis( globalDirPost );
193  G4ThreeVector normalPost = solid.SurfaceNormal( localPosPost );
194  cosThetaPost = normalPost.cosTheta( localDirPost );
195  }
196  }
197 
198  // update track accounting
199  if (enter_sensitive)
200  m_track.enterDetector( sensitive, position, cosThetaPre );
201  m_track.step(MaterialAccountingStep( length, radiationLengths, energyLoss, globalPositionIn, globalPositionOut ));
202  if (leave_sensitive)
203  m_track.leaveDetector( sensitive, cosThetaPost );
204 
205  if (sensitive)
206  LogDebug("TrackingMaterialProducer") << "Track was near sensitive volume "
207  << sensitive->GetName() << std::endl;
208  else
209  LogDebug("TrackingMaterialProducer") << "Track was near non-sensitive volume "
210  << touchable->GetVolume()->GetName() << std::endl;
211  LogDebug("TrackingMaterialProducer") << "Step length: "
212  << length << " cm" << std::endl;
213  LogDebug("TrackingMaterialProducer") << "Radiation lengths: "
214  << radiationLengths << " \t\t(X0: "
215  << X0 << " cm)" << std::endl;
216  LogDebug("TrackingMaterialProducer") << "Energy loss: "
217  << energyLoss << " MeV \t(Xi: "
218  << Xi << " MeV/cm)" << std::endl;
219  LogDebug("TrackingMaterialProducer") << "Track was " << (enter_sensitive ? "entering " : "in none ")
220  << "sensitive volume" << std::endl;
221  LogDebug("TrackingMaterialProducer") << "Track was " << (leave_sensitive ? "leaving " : "in none ")
222  << "sensitive volume" << std::endl;
223 
224 }
#define LogDebug(id)
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 228 of file TrackingMaterialProducer.cc.

References LogDebug.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.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(), MatrixUtil.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().

229 {
230  const G4Track * track = (*event)();
231  if (m_primaryTracks and track->GetParentID() != 0)
232  return;
233 
234  m_tracks->push_back(m_track);
235 
236  // LogDebug
237  LogDebug("TrackingMaterialProducer") << "TrackingMaterialProducer: this track took "
238  << m_track.steps().size()
239  << " steps, and passed through "
240  << m_track.detectors().size()
241  << " sensitive detectors" << std::endl;
242  LogDebug("TrackingMaterialProducer") << "TrackingMaterialProducer: track length: "
243  << m_track.summary().length()
244  << " cm" << std::endl;
245  LogDebug("TrackingMaterialProducer") << "TrackingMaterialProducer: radiation lengths: "
246  << m_track.summary().radiationLengths() << std::endl;
247  LogDebug("TrackingMaterialProducer") << "TrackingMaterialProducer: energy loss: "
248  << m_track.summary().energyLoss()
249  << " MeV" << std::endl;
250 }
#define LogDebug(id)
const std::vector< MaterialAccountingDetector > & detectors() const
const std::vector< MaterialAccountingStep > & steps() const
MaterialAccountingTrack m_track
double length(void) const
double radiationLengths(void) const
double energyLoss(void) const
std::vector< MaterialAccountingTrack > * m_tracks
const MaterialAccountingStep & summary() const

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.