#include <SimDataFormats/ValidationFormats/interface/MaterialAccountingTrack.h>
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 MaterialAccountingStep & | summary (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 } |
Definition at line 11 of file MaterialAccountingTrack.h.
anonymous enum [private] |
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 }
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 }
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().
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 }
const G4VPhysicalVolume* MaterialAccountingTrack::m_current_volume [mutable] |
Definition at line 61 of file MaterialAccountingTrack.h.
Referenced by enterDetector(), leaveDetector(), and reset().
Definition at line 62 of file MaterialAccountingTrack.h.
Referenced by enterDetector(), leaveDetector(), and reset().
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().
Definition at line 60 of file MaterialAccountingTrack.h.
Referenced by enterDetector(), leaveDetector(), reset(), TrackingMaterialAnalyser::split(), step(), and summary().