CMS 3D CMS Logo

TrackingMaterialProducer.h
Go to the documentation of this file.
1 #ifndef TrackingMaterialProducer_h
2 #define TrackingMaterialProducer_h
3 #include <string>
4 #include <vector>
5 
8 
9 #include "G4LogicalVolume.hh"
10 
12 
13 #include "TProfile.h"
14 #include "TFile.h"
15 
16 class BeginOfJob;
17 class EndOfJob;
18 class BeginOfEvent;
19 class BeginOfTrack;
20 class EndOfTrack;
21 class G4Step;
22 
23 class G4StepPoint;
24 class G4VTouchable;
25 class G4VPhysicalVolume;
26 class G4LogicalVolume;
27 class G4TouchableHistory;
28 namespace edm {
29  class ParameterSet;
30 }
31 
33  public Observer<const BeginOfJob*>,
34  public Observer<const EndOfJob*>,
35  public Observer<const BeginOfEvent*>,
36  public Observer<const BeginOfTrack*>,
37  public Observer<const G4Step*>,
38  public Observer<const EndOfTrack*> {
39 public:
41  ~TrackingMaterialProducer() override;
42 
43 private:
44  void update(const BeginOfJob*) override;
45  void update(const BeginOfEvent*) override;
46  void update(const BeginOfTrack*) override;
47  void update(const G4Step*) override;
48  void update(const EndOfTrack*) override;
49  void update(const EndOfJob*) override;
50  void produce(edm::Event&, const edm::EventSetup&) override;
51 
52  bool isSelected(const G4VTouchable* touch);
53  bool isSelectedFast(const G4TouchableHistory* touch);
54 
55 private:
57  std::vector<std::string> m_selectedNames;
58  std::vector<const G4LogicalVolume*> m_selectedVolumes;
60  std::vector<MaterialAccountingTrack>* m_tracks;
61  TFile* output_file_;
62  TProfile* radLen_vs_eta_;
63 };
64 
65 #endif // TrackingMaterialProducer_h
MaterialAccountingTrack m_track
std::vector< MaterialAccountingTrack > * m_tracks
std::vector< std::string > m_selectedNames
HLT enums.
#define update(a, b)
std::vector< const G4LogicalVolume * > m_selectedVolumes