CMS 3D CMS Logo

MaterialAccountingTrack Class Reference

#include <SimDataFormats/ValidationFormats/interface/MaterialAccountingTrack.h>

List of all members.

Public Member Functions

const std::vector
< MaterialAccountingDetector > & 
detectors ()
void enterDetector (const G4VPhysicalVolume *volume, const GlobalPoint &position, double cosTheta)
void leaveDetector (const G4VPhysicalVolume *volume, double cosTheta)
 MaterialAccountingTrack (void)
void reset (void)
void step (const MaterialAccountingStep &step)
const std::vector
< MaterialAccountingStep > & 
steps ()
const MaterialAccountingStepsummary (void)

Public Attributes

const G4VPhysicalVolume * m_current_volume
MaterialAccountingDetector m_detector
std::vector
< MaterialAccountingDetector
m_detectors
std::vector
< MaterialAccountingStep
m_steps
MaterialAccountingStep m_total

Private Types

enum  { kSteps = 600, kDetectors = 30 }


Detailed Description

Definition at line 11 of file MaterialAccountingTrack.h.


Member Enumeration Documentation

anonymous enum [private]

Enumerator:
kSteps 
kDetectors 

Definition at line 14 of file MaterialAccountingTrack.h.

00014 { kSteps = 600, kDetectors = 30 };


Constructor & Destructor Documentation

MaterialAccountingTrack::MaterialAccountingTrack ( void   )  [inline]

Definition at line 17 of file MaterialAccountingTrack.h.

References kDetectors, kSteps, m_detectors, and m_steps.

00017                                 : 
00018     m_total(),
00019     m_current_volume(0),
00020     m_detector(),
00021     m_steps(), 
00022     m_detectors()
00023   {
00024     m_steps.reserve(kSteps);
00025     m_detectors.reserve(kDetectors);
00026   }


Member Function Documentation

const std::vector<MaterialAccountingDetector>& MaterialAccountingTrack::detectors (  )  [inline]

Definition at line 51 of file MaterialAccountingTrack.h.

References m_detectors.

Referenced by TrackingMaterialProducer::update().

00051                                                             {
00052     return m_detectors;
00053   }

void MaterialAccountingTrack::enterDetector ( const G4VPhysicalVolume *  volume,
const GlobalPoint position,
double  cosTheta 
)

Definition at line 7 of file MaterialAccountingTrack.cc.

References TestMuL1L2Filter_cff::cerr, MaterialAccountingDetector::clear(), lat::endl(), MaterialAccountingStep::length(), MaterialAccountingDetector::m_cosThetaIn, m_current_volume, MaterialAccountingDetector::m_curvilinearIn, m_detector, MaterialAccountingDetector::m_position, and m_total.

Referenced by TrackingMaterialProducer::update().

00007                                                                                                                            {
00008   if (m_current_volume != 0) {
00009     // error: entering a volume while inside an other (or the same) one !
00010     if (m_current_volume != volume)
00011       std::cerr << "MaterialAccountingTrack::leaveDetector(...): ERROR: entering volume (" << volume << ") while inside volume (" << m_current_volume << ")" << std::endl;
00012     else
00013       std::cerr << "MaterialAccountingTrack::leaveDetector(...): ERROR: entering volume (" << volume << ") twice" << std::endl;
00014     m_detector.clear();
00015     return;
00016   } 
00017 
00018   m_current_volume            = volume;
00019   m_detector.m_position       = position;
00020   m_detector.m_curvilinearIn  = m_total.length();
00021   m_detector.m_cosThetaIn     = cosTheta;
00022 }

void MaterialAccountingTrack::leaveDetector ( const G4VPhysicalVolume *  volume,
double  cosTheta 
)

Definition at line 24 of file MaterialAccountingTrack.cc.

References TestMuL1L2Filter_cff::cerr, MaterialAccountingDetector::clear(), lat::endl(), MaterialAccountingStep::length(), MaterialAccountingDetector::m_cosThetaOut, m_current_volume, MaterialAccountingDetector::m_curvilinearOut, m_detector, m_detectors, and m_total.

Referenced by TrackingMaterialProducer::update().

00024                                                                                               {
00025   if (m_current_volume != volume) {
00026     // error: leaving the wrong (or no) volume !
00027     if (m_current_volume)
00028       std::cerr << "MaterialAccountingTrack::leaveDetector(...): ERROR: leaving volume (" << volume << ") while inside volume (" << m_current_volume << ")" << std::endl;
00029     else
00030       std::cerr << "MaterialAccountingTrack::leaveDetector(...): ERROR: leaving volume (" << volume << ") while not inside any volume" << std::endl;
00031     m_detector.clear();
00032     return;
00033   } 
00034 
00035   m_current_volume = 0;
00036   m_detector.m_curvilinearOut = m_total.length();
00037   m_detector.m_cosThetaOut    = cosTheta;
00038   m_detectors.push_back( m_detector );
00039   m_detector.clear();
00040 }

void MaterialAccountingTrack::reset ( void   )  [inline]

Definition at line 28 of file MaterialAccountingTrack.h.

References MaterialAccountingDetector::clear(), MaterialAccountingStep::clear(), kDetectors, kSteps, m_current_volume, m_detector, m_detectors, m_steps, and m_total.

Referenced by TrackingMaterialProducer::update().

00028                    {
00029     m_total.clear();
00030     m_current_volume = 0;
00031     m_steps.clear();
00032     m_steps.reserve(kSteps);
00033     m_steps.push_back( m_total );
00034     m_detector.clear();
00035     m_detectors.clear();
00036     m_detectors.reserve(kDetectors);
00037   }

void MaterialAccountingTrack::step ( const MaterialAccountingStep step  )  [inline]

Definition at line 39 of file MaterialAccountingTrack.h.

References m_steps, and m_total.

Referenced by TrackingMaterialProducer::update().

00039                                                    {
00040     m_total += step;
00041     m_steps.push_back( step );
00042   }

const std::vector<MaterialAccountingStep>& MaterialAccountingTrack::steps (  )  [inline]

Definition at line 55 of file MaterialAccountingTrack.h.

References m_steps.

Referenced by TrackingMaterialProducer::update().

00055                                                     {
00056     return m_steps;
00057   }

const MaterialAccountingStep& MaterialAccountingTrack::summary ( void   )  [inline]

Definition at line 47 of file MaterialAccountingTrack.h.

References m_total.

Referenced by TrackingMaterialProducer::update().

00047                                                 {
00048     return m_total;
00049   }


Member Data Documentation

const G4VPhysicalVolume* MaterialAccountingTrack::m_current_volume [mutable]

Definition at line 61 of file MaterialAccountingTrack.h.

Referenced by enterDetector(), leaveDetector(), and reset().

MaterialAccountingDetector MaterialAccountingTrack::m_detector [mutable]

Definition at line 62 of file MaterialAccountingTrack.h.

Referenced by enterDetector(), leaveDetector(), and reset().

std::vector<MaterialAccountingDetector> MaterialAccountingTrack::m_detectors

Definition at line 64 of file MaterialAccountingTrack.h.

Referenced by detectors(), leaveDetector(), MaterialAccountingTrack(), reset(), and TrackingMaterialAnalyser::split().

std::vector<MaterialAccountingStep> MaterialAccountingTrack::m_steps

Definition at line 63 of file MaterialAccountingTrack.h.

Referenced by MaterialAccountingTrack(), reset(), TrackingMaterialAnalyser::split(), step(), and steps().

MaterialAccountingStep MaterialAccountingTrack::m_total

Definition at line 60 of file MaterialAccountingTrack.h.

Referenced by enterDetector(), leaveDetector(), reset(), TrackingMaterialAnalyser::split(), step(), and summary().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:28:02 2009 for CMSSW by  doxygen 1.5.4