CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
TrackingMaterialProducer Class Reference

#include <TrackingMaterialProducer.h>

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

Public Member Functions

 TrackingMaterialProducer (const edm::ParameterSet &)
 
 ~TrackingMaterialProducer () override
 
- Public Member Functions inherited from SimProducer
void registerProducts (edm::ProducesCollector producesCollector)
 
 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 EndOfJob * >
 Observer ()
 
void slotForUpdate (const EndOfJob * 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)
 
bool isSelectedFast (const G4TouchableHistory *touch)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
void update (const BeginOfEvent *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfJob *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfTrack *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const EndOfJob *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const EndOfTrack *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const G4Step *) override
 This routine will be called when the appropriate signal arrives. More...
 

Private Attributes

bool isHFNose
 
bool isHGCal
 
double m_hgcalzfront
 
bool m_primaryTracks
 
std::vector< std::string > m_selectedNames
 
std::vector< const G4LogicalVolume * > m_selectedVolumes
 
MaterialAccountingTrack m_track
 
std::vector< MaterialAccountingTrack > * m_tracks
 
std::string m_txtOutFile
 
TFile * output_file_
 
std::ofstream outVolumeZpositionTxt
 
TProfile * radLen_vs_eta_
 

Static Private Attributes

static constexpr float innerHFnoseEta = 4.
 
static constexpr float innerHGCalEta = 2.4
 
static constexpr float outerHFnoseEta = 3.3
 
static constexpr float outerHGCalEta = 2.0
 

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 33 of file TrackingMaterialProducer.h.

Constructor & Destructor Documentation

◆ TrackingMaterialProducer()

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

Definition at line 80 of file TrackingMaterialProducer.cc.

80  {
81  edm::ParameterSet config = iPSet.getParameter<edm::ParameterSet>("TrackingMaterialProducer");
82  m_selectedNames = config.getParameter<std::vector<std::string> >("SelectedVolumes");
83  m_primaryTracks = config.getParameter<bool>("PrimaryTracksOnly");
84  m_txtOutFile = config.getUntrackedParameter<std::string>("txtOutFile");
85  m_hgcalzfront = config.getParameter<double>("hgcalzfront");
86  m_tracks = nullptr;
87 
88  produces<std::vector<MaterialAccountingTrack> >();
89  output_file_ = new TFile("radLen_vs_eta_fromProducer.root", "RECREATE");
90  output_file_->cd();
91  radLen_vs_eta_ = new TProfile("radLen", "radLen", 250., -5., 5., 0, 10.);
92 
93  //Check if HGCal volumes are selected
94  isHGCal = false;
95  if (std::find(m_selectedNames.begin(), m_selectedNames.end(), "HGCal") != m_selectedNames.end()) {
96  isHGCal = true;
97  }
98  //Check if HFNose volumes are selected
99  isHFNose = false;
100  if (std::find(m_selectedNames.begin(), m_selectedNames.end(), "HFNose") != m_selectedNames.end()) {
101  isHFNose = true;
102  }
103  if (isHGCal or isHFNose) {
105  }
106 }

References spr::find(), edm::ParameterSet::getParameter(), trackingMaterialAnalyser_ForHFNosePhaseII_cfi::isHFNose, trackingMaterialAnalyser_cfi::isHGCal, or, MillePedeFileConverter_cfg::out, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ ~TrackingMaterialProducer()

TrackingMaterialProducer::~TrackingMaterialProducer ( void  )
override

Definition at line 109 of file TrackingMaterialProducer.cc.

109 {}

Member Function Documentation

◆ isSelected()

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

Definition at line 341 of file TrackingMaterialProducer.cc.

341  {
342  for (size_t i = 0; i < m_selectedVolumes.size(); ++i)
343  if (m_selectedVolumes[i]->IsAncestor(touchable->GetVolume()) or
344  m_selectedVolumes[i] == touchable->GetVolume()->GetLogicalVolume())
345  return true;
346 
347  return false;
348 }

References mps_fire::i, and or.

◆ isSelectedFast()

bool TrackingMaterialProducer::isSelectedFast ( const G4TouchableHistory *  touch)
private

Definition at line 184 of file TrackingMaterialProducer.cc.

184  {
185  for (int d = touchable->GetHistoryDepth() - 1; d >= 0; --d) {
186  if (std::find(m_selectedNames.begin(), m_selectedNames.end(), touchable->GetVolume(d)->GetName()) !=
187  m_selectedNames.end())
188  return true;
189  }
190  return false;
191 }

References ztail::d, and spr::find().

◆ produce()

void TrackingMaterialProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements SimProducer.

Definition at line 333 of file TrackingMaterialProducer.cc.

333  {
334  // transfer ownership to the Event
335  std::unique_ptr<std::vector<MaterialAccountingTrack> > tracks(m_tracks);
336  iEvent.put(std::move(tracks));
337  m_tracks = nullptr;
338 }

References iEvent, eostools::move(), and PDWG_EXOHSCP_cff::tracks.

◆ update() [1/6]

void TrackingMaterialProducer::update ( const BeginOfEvent )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfEvent * >.

Definition at line 136 of file TrackingMaterialProducer.cc.

136  {
137  m_tracks = new std::vector<MaterialAccountingTrack>();
138 }

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

◆ update() [2/6]

void TrackingMaterialProducer::update ( const BeginOfJob )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfJob * >.

Definition at line 117 of file TrackingMaterialProducer.cc.

117  {
118  // INFO
119  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: List of the selected volumes: " << std::endl;
120  for (std::vector<std::string>::const_iterator volume_name = m_selectedNames.begin();
121  volume_name != m_selectedNames.end();
122  ++volume_name) {
123  const G4LogicalVolume* volume = GetVolume(*volume_name);
124  if (volume) {
125  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: " << *volume_name << std::endl;
126  m_selectedVolumes.push_back(volume);
127  } else {
128  // FIXME: throw an exception ?
129  std::cerr << "TrackingMaterialProducer::update(const BeginOfJob*): WARNING: selected volume \"" << *volume_name
130  << "\" not found in geometry " << std::endl;
131  }
132  }
133 }

References beam_dqm_sourceclient-live_cfg::cerr, and GetVolume().

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

◆ update() [3/6]

void TrackingMaterialProducer::update ( const BeginOfTrack )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfTrack * >.

Definition at line 141 of file TrackingMaterialProducer.cc.

141  {
142  m_track.reset();
143 
144  // prevent secondary tracks from propagating
145  G4Track* track = const_cast<G4Track*>((*event)());
146  if (m_primaryTracks and track->GetParentID() != 0) {
147  track->SetTrackStatus(fStopAndKill);
148  }
149 
150  //For the HGCal case:
151  //In the beginning of each track, the track will first hit SS and it will
152  //save the upper z volume boundary. So, the low boundary of the first SS
153  //volume is never saved. So, here we give the low boundary hardcoded.
154  //This can be found by running
155  //Geometry/HGCalCommonData/test/testHGCalParameters_cfg.py
156  //on the geometry under study and looking for zFront print out.
157  if (isHGCal && track->GetTrackStatus() != fStopAndKill && fabs(track->GetMomentum().eta()) > outerHGCalEta &&
158  fabs(track->GetMomentum().eta()) < innerHGCalEta) {
159  if (track->GetMomentum().eta() > 0.) {
160  outVolumeZpositionTxt << "StainlessSteel " << m_hgcalzfront << " " << 0 << " " << 0 << " " << 0 << " " << 0
161  << std::endl;
162  } else if (track->GetMomentum().eta() <= 0.) {
163  outVolumeZpositionTxt << "StainlessSteel " << -m_hgcalzfront << " " << 0 << " " << 0 << " " << 0 << " " << 0
164  << std::endl;
165  }
166  }
167 
168  //For the HFnose case:
169  //restrict the outher radius to eta 3.3 since there is HGCAL shadowing
170  //restrict the innner radius to eta 4 since it's non projective
171 
172  if (isHFNose && track->GetTrackStatus() != fStopAndKill && fabs(track->GetMomentum().eta()) > outerHFnoseEta &&
173  fabs(track->GetMomentum().eta()) < innerHFnoseEta) {
174  if (track->GetMomentum().eta() > 0.) {
175  outVolumeZpositionTxt << "Polyethylene " << m_hgcalzfront << " " << 0 << " " << 0 << " " << 0 << " " << 0
176  << std::endl;
177  } else if (track->GetMomentum().eta() <= 0.) {
178  outVolumeZpositionTxt << "Polyethylene " << -m_hgcalzfront << " " << 0 << " " << 0 << " " << 0 << " " << 0
179  << std::endl;
180  }
181  }
182 }

References trackingMaterialAnalyser_ForHFNosePhaseII_cfi::isHFNose, trackingMaterialAnalyser_cfi::isHGCal, and HLT_2018_cff::track.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

◆ update() [4/6]

void TrackingMaterialProducer::update ( const EndOfJob *  )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const EndOfJob * >.

Definition at line 112 of file TrackingMaterialProducer.cc.

112  {
113  radLen_vs_eta_->Write();
114  output_file_->Close();
115 }

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

◆ update() [5/6]

void TrackingMaterialProducer::update ( const EndOfTrack )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const EndOfTrack * >.

Definition at line 312 of file TrackingMaterialProducer.cc.

312  {
313  const G4Track* track = (*event)();
314  if (m_primaryTracks and track->GetParentID() != 0)
315  return;
316 
317  radLen_vs_eta_->Fill(track->GetMomentum().eta(), m_track.summary().radiationLengths());
318  m_tracks->push_back(m_track);
319 
320  // LogInfo
321  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: this track took " << m_track.steps().size()
322  << " steps, and passed through " << m_track.detectors().size()
323  << " sensitive detectors" << std::endl;
324  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: track length: " << m_track.summary().length()
325  << " cm" << std::endl;
326  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: radiation lengths: "
327  << m_track.summary().radiationLengths() << std::endl;
328  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: energy loss: "
329  << m_track.summary().energyLoss() << " MeV" << std::endl;
330 }

References HLT_2018_cff::track.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

◆ update() [6/6]

void TrackingMaterialProducer::update ( const G4Step *  )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const G4Step * >.

Definition at line 194 of file TrackingMaterialProducer.cc.

194  {
195  const G4TouchableHistory* touchable = static_cast<const G4TouchableHistory*>(step->GetTrack()->GetTouchable());
196  if (not isSelectedFast(touchable)) {
197  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer:\t[...] skipping "
198  << touchable->GetVolume()->GetName() << std::endl;
199  return;
200  }
201 
202  // material and step proterties
203  const G4Material* material = touchable->GetVolume()->GetLogicalVolume()->GetMaterial();
204  double length = step->GetStepLength() / cm; // mm -> cm
205  double X0 = material->GetRadlen() / cm; // mm -> cm
206  double Ne = material->GetElectronDensity() * cm3; // 1/mm3 -> 1/cm3
207  double Xi = Ne / 6.0221415e23 * 0.307075 / 2; // MeV / cm
208  double radiationLengths = length / X0; //
209  double energyLoss = length * Xi / 1000.; // GeV
210  //double energyLoss = step->GetDeltaEnergy()/MeV; should we use this??
211 
212  G4ThreeVector globalPosPre = step->GetPreStepPoint()->GetPosition();
213  G4ThreeVector globalPosPost = step->GetPostStepPoint()->GetPosition();
214  GlobalPoint globalPositionIn(globalPosPre.x() / cm, globalPosPre.y() / cm, globalPosPre.z() / cm); // mm -> cm
215  GlobalPoint globalPositionOut(globalPosPost.x() / cm, globalPosPost.y() / cm, globalPosPost.z() / cm); // mm -> cm
216 
217  G4StepPoint* prePoint = step->GetPreStepPoint();
218  G4StepPoint* postPoint = step->GetPostStepPoint();
219  const CLHEP::Hep3Vector& postPos = postPoint->GetPosition();
220  //Go below only in HGCal case
221  if (isHGCal or isHFNose) {
222  //A step never spans across boundaries: geometry or physics define the end points
223  //If the step is limited by a boundary, the post-step point stands on the
224  //boundary and it logically belongs to the next volume.
225  if (postPoint->GetStepStatus() == fGeomBoundary && fabs(postPoint->GetMomentum().eta()) > outerHGCalEta &&
226  fabs(postPoint->GetMomentum().eta()) < innerHGCalEta) {
227  //Post point position is the low z edge of the new volume, or the upper for the prepoint volume.
228  //So, premat - postz - posteta - postR - premattotalenergylossEtable - premattotalenergylossEfull
229  //Observe the two zeros at the end which in the past where set to emCalculator.GetDEDX and
230  //emCalculator.ComputeTotalDEDX but decided not to be used. Will save the structure though for the script.
231  outVolumeZpositionTxt << prePoint->GetMaterial()->GetName() << " " << postPos.z() << " "
232  << postPoint->GetMomentum().eta() << " "
233  << sqrt(postPos.x() * postPos.x() + postPos.y() * postPos.y()) << " " << 0 << " " << 0
234  << std::endl;
235  }
236 
237  if (postPoint->GetStepStatus() == fGeomBoundary && fabs(postPoint->GetMomentum().eta()) > outerHFnoseEta &&
238  fabs(postPoint->GetMomentum().eta()) < innerHFnoseEta) {
239  outVolumeZpositionTxt << prePoint->GetMaterial()->GetName() << " " << postPos.z() << " "
240  << postPoint->GetMomentum().eta() << " "
241  << sqrt(postPos.x() * postPos.x() + postPos.y() * postPos.y()) << " " << 0 << " " << 0
242  << std::endl;
243  }
244 
245  } //end of isHGCal or HFnose if
246 
247  // check for a sensitive detector
248  bool enter_sensitive = false;
249  bool leave_sensitive = false;
250  double cosThetaPre = 0.0;
251  double cosThetaPost = 0.0;
252  int level = 0;
253  const G4VPhysicalVolume* sensitive = nullptr;
255  std::tie(sensitive, level) = GetSensitiveVolume(touchable);
256  if (sensitive) {
257  const G4VSolid& solid = *touchable->GetSolid(level);
258  const G4AffineTransform& transform = GetTransform(touchable, level);
259  G4ThreeVector pos = transform.Inverse().TransformPoint(G4ThreeVector(0., 0., 0.));
260  position = GlobalPoint(pos.x() / cm, pos.y() / cm, pos.z() / cm); // mm -> cm
261 
262  G4ThreeVector localPosPre = transform.TransformPoint(globalPosPre);
263  EInside statusPre = solid.Inside(localPosPre);
264  if (statusPre == kSurface) {
265  enter_sensitive = true;
266  G4ThreeVector globalDirPre = step->GetPreStepPoint()->GetMomentumDirection();
267  G4ThreeVector localDirPre = transform.TransformAxis(globalDirPre);
268  G4ThreeVector normalPre = solid.SurfaceNormal(localPosPre);
269  cosThetaPre = normalPre.cosTheta(-localDirPre);
270  }
271 
272  G4ThreeVector localPosPost = transform.TransformPoint(globalPosPost);
273  EInside statusPost = solid.Inside(localPosPost);
274  if (statusPost == kSurface) {
275  leave_sensitive = true;
276  G4ThreeVector globalDirPost = step->GetPostStepPoint()->GetMomentumDirection();
277  G4ThreeVector localDirPost = transform.TransformAxis(globalDirPost);
278  G4ThreeVector normalPost = solid.SurfaceNormal(localPosPost);
279  cosThetaPost = normalPost.cosTheta(localDirPost);
280  }
281  }
282 
283  // update track accounting
284  if (enter_sensitive)
285  m_track.enterDetector(sensitive, position, cosThetaPre);
286  m_track.step(MaterialAccountingStep(length, radiationLengths, energyLoss, globalPositionIn, globalPositionOut));
287  if (leave_sensitive)
288  m_track.leaveDetector(sensitive, cosThetaPost);
289 
290  if (sensitive)
291  LogInfo("TrackingMaterialProducer") << "Track was near sensitive volume " << sensitive->GetName() << std::endl;
292  else
293  LogInfo("TrackingMaterialProducer") << "Track was near non-sensitive volume " << touchable->GetVolume()->GetName()
294  << std::endl;
295  LogInfo("TrackingMaterialProducer") << "Step length: " << length << " cm\n"
296  << "globalPreStep(r,z): (" << globalPositionIn.perp() << ", "
297  << globalPositionIn.z() << ") cm\n"
298  << "globalPostStep(r,z): (" << globalPositionOut.perp() << ", "
299  << globalPositionOut.z() << ") cm\n"
300  << "position(r,z): (" << position.perp() << ", " << position.z() << ") cm\n"
301  << "Radiation lengths: " << radiationLengths << " \t\t(X0: " << X0
302  << " cm)\n"
303  << "Energy loss: " << energyLoss << " MeV \t(Xi: " << Xi
304  << " MeV/cm)\n"
305  << "Track was " << (enter_sensitive ? "entering " : "in none ")
306  << "sensitive volume\n"
307  << "Track was " << (leave_sensitive ? "leaving " : "in none ")
308  << "sensitive volume\n";
309 }

References fastSimProducer_cff::energyLoss, GetSensitiveVolume(), GetTransform(), trackingMaterialAnalyser_ForHFNosePhaseII_cfi::isHFNose, trackingMaterialAnalyser_cfi::isHGCal, personalPlayback::level, or, position, mathSSE::sqrt(), HcalDetIdTransform::transform(), MonitorAlCaEcalPi0_cfi::X0, and PV3DBase< T, PVType, FrameType >::z().

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

Member Data Documentation

◆ innerHFnoseEta

constexpr float TrackingMaterialProducer::innerHFnoseEta = 4.
staticconstexprprivate

Definition at line 70 of file TrackingMaterialProducer.h.

◆ innerHGCalEta

constexpr float TrackingMaterialProducer::innerHGCalEta = 2.4
staticconstexprprivate

Definition at line 68 of file TrackingMaterialProducer.h.

◆ isHFNose

bool TrackingMaterialProducer::isHFNose
private

Definition at line 67 of file TrackingMaterialProducer.h.

◆ isHGCal

bool TrackingMaterialProducer::isHGCal
private

Definition at line 66 of file TrackingMaterialProducer.h.

◆ m_hgcalzfront

double TrackingMaterialProducer::m_hgcalzfront
private

Definition at line 61 of file TrackingMaterialProducer.h.

◆ m_primaryTracks

bool TrackingMaterialProducer::m_primaryTracks
private

Definition at line 57 of file TrackingMaterialProducer.h.

◆ m_selectedNames

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

Definition at line 58 of file TrackingMaterialProducer.h.

◆ m_selectedVolumes

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

Definition at line 59 of file TrackingMaterialProducer.h.

◆ m_track

MaterialAccountingTrack TrackingMaterialProducer::m_track
private

Definition at line 62 of file TrackingMaterialProducer.h.

◆ m_tracks

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

Definition at line 63 of file TrackingMaterialProducer.h.

◆ m_txtOutFile

std::string TrackingMaterialProducer::m_txtOutFile
private

Definition at line 60 of file TrackingMaterialProducer.h.

◆ outerHFnoseEta

constexpr float TrackingMaterialProducer::outerHFnoseEta = 3.3
staticconstexprprivate

Definition at line 71 of file TrackingMaterialProducer.h.

◆ outerHGCalEta

constexpr float TrackingMaterialProducer::outerHGCalEta = 2.0
staticconstexprprivate

Definition at line 69 of file TrackingMaterialProducer.h.

◆ output_file_

TFile* TrackingMaterialProducer::output_file_
private

Definition at line 64 of file TrackingMaterialProducer.h.

◆ outVolumeZpositionTxt

std::ofstream TrackingMaterialProducer::outVolumeZpositionTxt
private

Definition at line 72 of file TrackingMaterialProducer.h.

◆ radLen_vs_eta_

TProfile* TrackingMaterialProducer::radLen_vs_eta_
private

Definition at line 65 of file TrackingMaterialProducer.h.

personalPlayback.level
level
Definition: personalPlayback.py:22
MaterialAccountingTrack::enterDetector
void enterDetector(const G4VPhysicalVolume *volume, const GlobalPoint &position, double cosTheta)
Definition: MaterialAccountingTrack.cc:7
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
mps_fire.i
i
Definition: mps_fire.py:355
TrackingMaterialProducer::isSelectedFast
bool isSelectedFast(const G4TouchableHistory *touch)
Definition: TrackingMaterialProducer.cc:184
step
step
Definition: StallMonitor.cc:94
pos
Definition: PixelAliasList.h:18
edm::LogInfo
Definition: MessageLogger.h:254
TrackingMaterialProducer::isHGCal
bool isHGCal
Definition: TrackingMaterialProducer.h:66
TrackingMaterialProducer::m_tracks
std::vector< MaterialAccountingTrack > * m_tracks
Definition: TrackingMaterialProducer.h:63
MaterialAccountingTrack::step
void step(const MaterialAccountingStep &step)
Definition: MaterialAccountingTrack.h:33
MaterialAccountingTrack::leaveDetector
void leaveDetector(const G4VPhysicalVolume *volume, double cosTheta)
Definition: MaterialAccountingTrack.cc:28
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
TrackingMaterialProducer::m_selectedNames
std::vector< std::string > m_selectedNames
Definition: TrackingMaterialProducer.h:58
TrackingMaterialProducer::outVolumeZpositionTxt
std::ofstream outVolumeZpositionTxt
Definition: TrackingMaterialProducer.h:72
GetTransform
static const G4AffineTransform & GetTransform(const G4TouchableHistory *touchable, int depth)
Definition: TrackingMaterialProducer.cc:58
TrackingMaterialProducer::outerHFnoseEta
static constexpr float outerHFnoseEta
Definition: TrackingMaterialProducer.h:71
config
Definition: config.py:1
TrackingMaterialProducer::radLen_vs_eta_
TProfile * radLen_vs_eta_
Definition: TrackingMaterialProducer.h:65
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
MaterialAccountingTrack::detectors
const std::vector< MaterialAccountingDetector > & detectors() const
Definition: MaterialAccountingTrack.h:43
TrackingMaterialProducer::outerHGCalEta
static constexpr float outerHGCalEta
Definition: TrackingMaterialProducer.h:69
MaterialAccountingTrack::summary
const MaterialAccountingStep & summary() const
Definition: MaterialAccountingTrack.h:41
HcalDetIdTransform::transform
unsigned transform(const HcalDetId &id, unsigned transformCode)
Definition: HcalDetIdTransform.cc:7
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
TrackingMaterialProducer::innerHFnoseEta
static constexpr float innerHFnoseEta
Definition: TrackingMaterialProducer.h:70
Point3DBase< float, GlobalTag >
TrackingMaterialProducer::output_file_
TFile * output_file_
Definition: TrackingMaterialProducer.h:64
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ParameterSet
Definition: ParameterSet.h:36
TrackingMaterialProducer::innerHGCalEta
static constexpr float innerHGCalEta
Definition: TrackingMaterialProducer.h:68
beam_dqm_sourceclient-live_cfg.cerr
cerr
Definition: beam_dqm_sourceclient-live_cfg.py:17
GetVolume
static const G4LogicalVolume * GetVolume(const std::string &name)
Definition: TrackingMaterialProducer.cc:41
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
iEvent
int iEvent
Definition: GenABIO.cc:224
MonitorAlCaEcalPi0_cfi.X0
X0
Definition: MonitorAlCaEcalPi0_cfi.py:77
TrackingMaterialProducer::m_track
MaterialAccountingTrack m_track
Definition: TrackingMaterialProducer.h:62
TrackingMaterialProducer::m_txtOutFile
std::string m_txtOutFile
Definition: TrackingMaterialProducer.h:60
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
TrackingMaterialProducer::isHFNose
bool isHFNose
Definition: TrackingMaterialProducer.h:67
MaterialAccountingStep
Definition: MaterialAccountingStep.h:9
eostools.move
def move(src, dest)
Definition: eostools.py:511
MaterialAccountingStep::energyLoss
double energyLoss(void) const
Definition: MaterialAccountingStep.h:36
MaterialAccountingStep::radiationLengths
double radiationLengths(void) const
Definition: MaterialAccountingStep.h:34
MaterialAccountingStep::length
double length(void) const
Definition: MaterialAccountingStep.h:32
TrackingMaterialProducer::m_hgcalzfront
double m_hgcalzfront
Definition: TrackingMaterialProducer.h:61
or
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::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
ztail.d
d
Definition: ztail.py:151
event
Definition: event.py:1
fastSimProducer_cff.energyLoss
energyLoss
Definition: fastSimProducer_cff.py:55
MaterialAccountingTrack::reset
void reset(void)
Definition: MaterialAccountingTrack.h:22
TrackingMaterialProducer::m_primaryTracks
bool m_primaryTracks
Definition: TrackingMaterialProducer.h:57
GetSensitiveVolume
std::tuple< const G4VPhysicalVolume *, int > GetSensitiveVolume(const G4VTouchable *touchable)
Definition: TrackingMaterialProducer.cc:68
TrackingMaterialProducer::m_selectedVolumes
std::vector< const G4LogicalVolume * > m_selectedVolumes
Definition: TrackingMaterialProducer.h:59
MaterialAccountingTrack::steps
const std::vector< MaterialAccountingStep > & steps() const
Definition: MaterialAccountingTrack.h:47