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
 
const G4VPhysicalVolume * m_track_volume
 
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  m_track_volume = nullptr;
88 
89  produces<std::vector<MaterialAccountingTrack> >();
90  output_file_ = new TFile("radLen_vs_eta_fromProducer.root", "RECREATE");
91  output_file_->cd();
92  radLen_vs_eta_ = new TProfile("radLen", "radLen", 250., -5., 5., 0, 10.);
93 
94  //Check if HGCal volumes are selected
95  isHGCal = false;
96  if (std::find(m_selectedNames.begin(), m_selectedNames.end(), "HGCal") != m_selectedNames.end()) {
97  isHGCal = true;
98  }
99  //Check if HFNose volumes are selected
100  isHFNose = false;
101  if (std::find(m_selectedNames.begin(), m_selectedNames.end(), "HFNose") != m_selectedNames.end()) {
102  isHFNose = true;
103  }
104  if (isHGCal or isHFNose) {
106  }
107 }

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

110 {}

Member Function Documentation

◆ isSelected()

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

Definition at line 356 of file TrackingMaterialProducer.cc.

356  {
357  for (size_t i = 0; i < m_selectedVolumes.size(); ++i)
358  if (m_selectedVolumes[i]->IsAncestor(touchable->GetVolume()) or
359  m_selectedVolumes[i] == touchable->GetVolume()->GetLogicalVolume())
360  return true;
361 
362  return false;
363 }

References mps_fire::i, and or.

◆ isSelectedFast()

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

Definition at line 186 of file TrackingMaterialProducer.cc.

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

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

◆ produce()

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

Implements SimProducer.

Definition at line 348 of file TrackingMaterialProducer.cc.

348  {
349  // transfer ownership to the Event
350  std::unique_ptr<std::vector<MaterialAccountingTrack> > tracks(m_tracks);
351  iEvent.put(std::move(tracks));
352  m_tracks = nullptr;
353 }

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

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

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

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

References EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::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 142 of file TrackingMaterialProducer.cc.

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

References trackingMaterialAnalyser_ForHFNosePhaseII_cfi::isHFNose, trackingMaterialAnalyser_cfi::isHGCal, and HLT_FULL_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 113 of file TrackingMaterialProducer.cc.

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

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

327  {
328  const G4Track* track = (*event)();
329  if (m_primaryTracks and track->GetParentID() != 0)
330  return;
331 
332  radLen_vs_eta_->Fill(track->GetMomentum().eta(), m_track.summary().radiationLengths());
333  m_tracks->push_back(m_track);
334 
335  // LogInfo
336  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: this track took " << m_track.steps().size()
337  << " steps, and passed through " << m_track.detectors().size()
338  << " sensitive detectors" << std::endl;
339  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: track length: " << m_track.summary().length()
340  << " cm" << std::endl;
341  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: radiation lengths: "
342  << m_track.summary().radiationLengths() << std::endl;
343  LogInfo("TrackingMaterialProducer") << "TrackingMaterialProducer: energy loss: "
344  << m_track.summary().energyLoss() << " MeV" << std::endl;
345 }

References HLT_FULL_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 196 of file TrackingMaterialProducer.cc.

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

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

◆ innerHGCalEta

constexpr float TrackingMaterialProducer::innerHGCalEta = 2.4
staticconstexprprivate

Definition at line 69 of file TrackingMaterialProducer.h.

◆ isHFNose

bool TrackingMaterialProducer::isHFNose
private

Definition at line 68 of file TrackingMaterialProducer.h.

◆ isHGCal

bool TrackingMaterialProducer::isHGCal
private

Definition at line 67 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_track_volume

const G4VPhysicalVolume* TrackingMaterialProducer::m_track_volume
private

Definition at line 63 of file TrackingMaterialProducer.h.

◆ m_tracks

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

Definition at line 64 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 72 of file TrackingMaterialProducer.h.

◆ outerHGCalEta

constexpr float TrackingMaterialProducer::outerHGCalEta = 2.0
staticconstexprprivate

Definition at line 70 of file TrackingMaterialProducer.h.

◆ output_file_

TFile* TrackingMaterialProducer::output_file_
private

Definition at line 65 of file TrackingMaterialProducer.h.

◆ outVolumeZpositionTxt

std::ofstream TrackingMaterialProducer::outVolumeZpositionTxt
private

Definition at line 73 of file TrackingMaterialProducer.h.

◆ radLen_vs_eta_

TProfile* TrackingMaterialProducer::radLen_vs_eta_
private

Definition at line 66 of file TrackingMaterialProducer.h.

personalPlayback.level
level
Definition: personalPlayback.py:22
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
mps_fire.i
i
Definition: mps_fire.py:428
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
TrackingMaterialProducer::isSelectedFast
bool isSelectedFast(const G4TouchableHistory *touch)
Definition: TrackingMaterialProducer.cc:186
step
step
Definition: StallMonitor.cc:94
pos
Definition: PixelAliasList.h:18
TrackingMaterialProducer::isHGCal
bool isHGCal
Definition: TrackingMaterialProducer.h:67
TrackingMaterialProducer::m_tracks
std::vector< MaterialAccountingTrack > * m_tracks
Definition: TrackingMaterialProducer.h:64
MaterialAccountingTrack::step
void step(const MaterialAccountingStep &step)
Definition: MaterialAccountingTrack.h:31
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
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
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
TrackingMaterialProducer::outVolumeZpositionTxt
std::ofstream outVolumeZpositionTxt
Definition: TrackingMaterialProducer.h:73
GetTransform
static const G4AffineTransform & GetTransform(const G4TouchableHistory *touchable, int depth)
Definition: TrackingMaterialProducer.cc:58
TrackingMaterialProducer::outerHFnoseEta
static constexpr float outerHFnoseEta
Definition: TrackingMaterialProducer.h:72
config
Definition: config.py:1
TrackingMaterialProducer::radLen_vs_eta_
TProfile * radLen_vs_eta_
Definition: TrackingMaterialProducer.h:66
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
MaterialAccountingTrack::detectors
const std::vector< MaterialAccountingDetector > & detectors() const
Definition: MaterialAccountingTrack.h:41
TrackingMaterialProducer::outerHGCalEta
static constexpr float outerHGCalEta
Definition: TrackingMaterialProducer.h:70
TrackingMaterialProducer::m_track_volume
const G4VPhysicalVolume * m_track_volume
Definition: TrackingMaterialProducer.h:63
MaterialAccountingTrack::enterDetector
void enterDetector(const GlobalPoint &position, double cosTheta)
Definition: MaterialAccountingTrack.cc:6
MaterialAccountingTrack::summary
const MaterialAccountingStep & summary() const
Definition: MaterialAccountingTrack.h:39
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:71
Point3DBase< float, GlobalTag >
TrackingMaterialProducer::output_file_
TFile * output_file_
Definition: TrackingMaterialProducer.h:65
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ParameterSet
Definition: ParameterSet.h:47
TrackingMaterialProducer::innerHGCalEta
static constexpr float innerHGCalEta
Definition: TrackingMaterialProducer.h:69
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
MaterialAccountingTrack::leaveDetector
void leaveDetector(double cosTheta)
Definition: MaterialAccountingTrack.cc:12
TrackingMaterialProducer::m_txtOutFile
std::string m_txtOutFile
Definition: TrackingMaterialProducer.h:60
TrackingMaterialProducer::isHFNose
bool isHFNose
Definition: TrackingMaterialProducer.h:68
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
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
ztail.d
d
Definition: ztail.py:151
event
Definition: event.py:1
EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.cerr
cerr
Definition: EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.py:8
fastSimProducer_cff.energyLoss
energyLoss
Definition: fastSimProducer_cff.py:55
MaterialAccountingTrack::reset
void reset(void)
Definition: MaterialAccountingTrack.h:21
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:45